目前最先进的网站建设技术,中国设计网站导航,做网站开发用笔记本要什么配置,天津网站建设怎么样从头构建一个新浏览器#xff1f;这如果是不是个天大的“伪需求”#xff0c;便是一场开发者的噩梦#xff01; 要知道#xff0c;如果没有上百亿的资金和数百名研发工程师的投入#xff0c;从头开始构建一个新的浏览器引擎#xff0c;几乎是不可能的。然而SerenityOS系统…从头构建一个新浏览器这如果是不是个天大的“伪需求”便是一场开发者的噩梦 要知道如果没有上百亿的资金和数百名研发工程师的投入从头开始构建一个新的浏览器引擎几乎是不可能的。然而SerenityOS系统的作者Andreas Kling却带领着一支仅有数十人且几乎没有资金支持的开源项目小队仅花两个月便完成了这项任务——从0到1构建了一款跨平台Web浏览器Ladybird瓢虫。截至目前瓢虫已实现了在Linux、macOS、WindowsWSL和Android等系统上运行。本文就带领大家一探此事的究竟。
一、“轮子之王”两个月实现小目标
起初Andreas希望将瓢虫作为 SerenityOS 系统的“LibWeb”浏览器引擎随后Andreas Kling为其构建了一个简单的GUI。随着瓢虫项目的不断完善在启动仅两个月后它已经成为一个跨平台的Web浏览器。
在此之前Andreas Kling曾有过Qt和WebKit项目的开发经验而除了Qt整个Ladybird浏览器的组件包括LibWeb和LibJS等渲染组件几乎全是Andreas Kling一手打造的这也使其在圈内拥有了“轮子之王”的绰号。 在完成这项难以置信的壮举后Andreas Kling收到了不少来自圈内朋友的赞誉和提问而其中重复度最高的一个问题便是“你的团队为何能在构建瓢虫浏览器方面取得如此快速的进展这从表明看起来是完全不可能的。”
二、也许不能复制的五个秘诀
近期Andreas Kling也正式通过一篇博客回应了这个问题并将这次成功归结为了五个方面。
1.更强的网页规范
在启动Ladybird项目前我们已经在HTML4和CSS2.1的模糊时代走了很长一段路。今天的ECMAScript、HTML和CSS规范(在大多数情况下)都拥有一流的技术文档与过去相比它们的算法可以用更少的工作和测试来实现。
瓢虫在体系结构层面会尽可能地匹配在各种网络规范中所描述的体系结构。这使得新加入项目的开发人员更容易适应因为他们在参与开发前只需要学习一种架构而不是几种。
然而尽管如此这与理想情况仍然存在差距一些较为独特且不常见的特性给研发工作带来了一定困难。但值得庆幸的是W3C有一个活跃的编辑社区致力于改善这些问题。我们在Ladybird上所做的大量工作包括使我们的代码库都能够适应这些规范编辑器所进行的更新。
我们也在努力改进规范瓢虫的开发人员经常会报告规范错误有时甚至还会提交pr来直接改进规范。但归根结底在一个全新的浏览器引擎中实现一个规范可以很好地验证该规范的完整性及可靠性。
2.专注于垂直领域
虽然今天的网页规范确实比以往任何时候都好但许多特性仍然跨越多个规范通常在子系统之间有细微的交互实现者必须理解这些交互。如果开发人员试图一次只构建一个规范的浏览器甚至一次只构建一个特性那么其很可能会失去动力并因繁杂的工作而失去兴趣。
因此我们倾向于专注于构建功能的“垂直切片”。这意味着需要设定实际的、交叉的目标比如“让我们加载twitter.com/awesomekling”“让我们登录discord.com”以及其他类似的目标。在垂直切片上工作有助于保持开发者的动力随着网站的进步每一位参与者都能看到实际的变化这会给大家带来极大的动力。
这种方法在一定程度上是可行的因为web本身是围绕优雅降级设计的这意味着浏览器可以呈现web内容同时只支持站点使用的一些功能。你可能认为这种方法会产生一个“兼容网站”的小集合和一大堆无法运作的代码但实际情况是水涨船高的当我们专注于改进一个网站时成千上万的其他网站也会得到改进。
3.后置性能优化
我们目前并没有花太多精力优化瓢虫的性能。相反我们的主要关注点是解决与正确性和兼容性相关的问题。这种方法能帮助我们在深入优化之前专注于确保浏览器按预期工作。当然这并不是说我们不关心浏览器性能。我们希望瓢虫浏览器最终能够实现快速响应。
这是一个遵循一定规律的选择不要花太多时间优化一个还不能正常工作的产品。例如虽然我们几乎可以确定将会优化JavaScript执行或渲染速度的区域但我们会有意识地选择优先修复渲染错误或与流行网站的兼容性问题。
但有时我们也确实会为慢得难以忍受的事情破例。毕竟对于一个开源项目而言我们不想让开发者的贡献过程变得不愉快。在遇到这种情况时我们会花一定时间解决最重要的性能瓶颈以保持相对良好的开发体验。但在这个阶段我们并没有跟踪基准分数之类的东西。不过一旦我们在正确性和兼容性方面取得了坚实的基础那么下一步要做的便是优化性能。
4.强大的团队文化
在Ladybird开发团队一起工作的时间里我们形成了强大的团队文化。这里的文化是高度乐观的每个人都抱有“我能行”的态度。虽然由于采取开源协作的工作模式Ladybird团队分布在世界各地但我们都会在Discord上见面聊天互相激励。团队中的开发人员也经常合作参与彼此的项目。每个在Ladybird团队中工作的人都被鼓励在项目中探索自己的个人兴趣而不是被指定任务。团队中的大多数人在加入我们之前都从未接触过浏览器代码但在加入项目后他们会迅速成为世界级的浏览器开发人员这也使得每一个项目的参与者能够收获足够的获得感。此外由于瓢虫是SerenityOS项目的一个分支它具有与SerenityOS同样的责任感和自力更生的文化。我们在开发瓢虫浏览器时几乎避免了所有的第三方依赖由开发人员自己构建一切。这样做的一部分原因是由于从0开始是一件很有趣的事情此外也正因如此这种开发模式为我们的软件创建了全面的责任制每个人都会尽力对自己所写的代码负责在出现问题时也能更快的进行响应而无需等待第三方的反馈。5.拥有一位经验丰富的领导在比较复杂的项目中一位经验丰富的领导可以发挥重要作用。我曾有机会在产品浏览器领域工作多年(在苹果和诺基亚)这让我对浏览器的构建以及各组件的组成方面有着比较深刻的理解。当没有这方面经验的开发者看到需要组合一个浏览器的大量技术和规范时可能会感到不知所措但我能够清楚地知道如何将它们合理的组合在一起并使其工作。在瓢虫浏览器的开发过程中参与其中的开发者不需要过多考虑自己的想法或所写的代码是否可行而是可以直接在与团队进行简单沟通后便开始工作这会为整个项目省了大量时间参与者也不会因为过多的意见分歧而产生不良情绪。在更实际的情况下我真正负责的工作通常是在各组件的链接与交互之间-浏览器的部分没有严格指定(例如布局和渲染)。对于缺乏经验的浏览器开发人员来说他们可以更专注自己所擅长的领域而不必过多担心其他问题。
三、关于再造浏览器杠精之间的讨论
既然有了Chrome、Firefox浏览器为什么还要再造一个呢这当然不是个好主意。 一位Reddit用户对于之所以会出现“再造浏览器”的情况是因为历史上所有的浏览器都构建了自己的“怪癖”库或者超出了标准范围的功能或者干脆不符合标准。他还举例说IE、Chromium、Safari一直都是“越界”来满足用户的需求并期待自己的实现版本能成为标准。这位用户还吐槽Safari是唯一一个给我带来真正麻烦的浏览器。 简言之用户所期望的域浏览器的标准本身就存在差距。即便再造一个也可能只会是制造适用于某些站点的浏览器。因为有的网站只支持Chrome。很多用户在遇到类似的情况下只能选择它而放弃Firefox。 有网友进一步分析这个浏览器跟Chrome相比是不需要完美的像素渲染的。并指出“如果排名前100的网站能在其上正常运行那这个项目才是成功的”。 有网友反驳道这个浏览器是为开发人员自己准备的不应吹毛求疵。
四、写在最后
虽然时至今日Ladybird浏览器中的部分功能依然存在一些错误甚至一些功能还需要很长时间才能真正投入日常使用。但目前这只小瓢虫已经震动双翅飞向了天空。Ladybird 的出现增加了浏览器和浏览器引擎的多样性不少开发者也表示了对项目的赞许“这是一项令人难以置信的艰巨任务虽然一个小型的非商业项目不太可提供一个可行的替代浏览器平台。但这只小瓢虫成功击碎了‘不可能’的标签。”对此Andreas Kling也表示我们依然在努力让Ladybird变得更好、更快我们会持续关注关注Ladybird各类功能的正确性和功能支持并对整体新能进行优化。在博客末尾Andreas Kling提到尽管我不确定我们的工作方式可以直接转移到其他软件项目上(除非它们也是浏览器)并给其他团队带来帮助但是通过一个由聪明、专注的个人组成的小团队和一个知识渊博的领导者来指导他们你可以尝试构建任何你想要的软件。你当然可以做到即使没有数十亿美元和数百名员工没必要听取那些从未开发过浏览器的失败主义者的纸上谈兵。