如果你看过我的浏览器的博文(参见《自己写一个极简浏览器》),你会发现我现在所用的Github仓库叫EasyBrowserAdvanced
,而我还有一个仓库叫EasyBrowser
,这两个仓库不仅版本号相连,甚至README.md
标题都是“极简浏览器”,这是怎么回事儿呢?
说实话,我写这个浏览器的目的,一是我所说的:
让大家都用Linux可实施性太弱,所以,我只能解决软件问题。
那么,软件中最常用的,莫过于浏览器。考虑到技术难度不算太高,代码量在15000行左右,我决定——自己写一个浏览器!
——引自我的博文《自己写一个极简浏览器》
第二,就是练练手,使自己的WPF技术更加成熟
为了提高自己的技术,我决定——从控件下手,深入研究!
我在Visual Studio的工具箱里找来找去,选中了一个”非常高级“的控件:WebBrowser
!
于是,我以WebBrowser
控件为基础,开发出了我的极简浏览器第一代。正当我准备开发第二代的时候,忽然发现这个WebBrowser
控件,其内核本质是基于Trident 7(IE 7)
的兼容模式!我很懊恼,没调查清楚就用它开发了第一代。
考虑到已经编写了许多代码,如果第二代换成更好的基于Chromium
内核的CefSharp
控件,就需要重构大部分代码,工作量太大,而且这样会使代码出现一段时间的严重混乱。于是,我决定继续使用WebBrowser
控件开发我的第二代。
第二代开发好后,我决定用我自己的浏览器看看我的Github上有多少Star,刚登入Github主页,我差点没被活活气死——这Trident
啊!连个Github都显示不了,一片空白!
本来我对Trident
内核性能低下和陈旧过时的缺点一直忍着,今天给我严重垮掉,我忍无可忍,当机立断——换核!
我宁可让我的代码混乱一段时间,也坚决要用Chromium
替掉它!
于是,我的换核计划产生了
内核更换计划(已成功)
- 创建极简浏览器名叫EasyBrowserAdvanced的副本
(本文引子里的疑问解答了没?)- 删除全部后端
- 更换内核
- 重写后端
经过了3个月的努力,我重写了MainWindow.xaml.cs
和BrowserExtension.cs
两个文件,添加了Api
文件夹里的8个文件,总共新增了5227行代码(是的!你没有看错),并重写了300行代码。这导致我第三代的开发进程严重拖后。
我付出了代价,最终收获了更好用的浏览器。(详情请见我的后续博文《我的换核之路》)
现在我的第三代已经改用以Chromium
为内核的CefSharp
控件来开发,目前已更新到3.3.2.12了。
最近,我发现只要配置浏览器设置时就会崩溃,有时还会产生一些莫名其妙的错误,我不禁开始考虑——要不要换成性能和兼容性更强的Gecko
内核,这样会不会更稳定?
考虑再三,我决定继续使用Chromium
作为内核,因为Chromium
的一些小问题我还可以忍,为这点小问题不值得大动干戈,换成Gecko
。
由换浏览器内核这件事,我想到:人与人之间的合作关系是不是也是这样呢?无论是什么类型的合作,都会存在关系相处中“度”的把握。
作为一个Trident
,你要知道,你不具备Chromium
和Gecko
的能力。
在与别人的合作中,你如果不能稳定地输出仅有的能力和价值,别人就会在“继续忍受你的不稳定输出”和“换掉你”之间权衡。
所以,当别人的忍耐到达了极限时,别人宁可付出一定的代价,也会换掉你。因为对别人来说,寻找一个新的合作伙伴会比继续与你合作要更高效和愉快。
作为一个Chromium
,你虽然比Trident
能力强,但还有比你更强的Gecko
。
在与别人的合作中,如果你状况百出,别人要么继续忍受你,要么把你换成能稳定输出的低一级的Trident
,要么把你换成能力更强的高一级的Gecko
。
所以,即使作为一个比上不足、比下有余的Chromium
,你也不是高枕无忧的,即:不要让你的不良表现把别人逼得忍无可忍。
作为一个Gecko
,你虽然当前处于最高级,但是你需要警惕,一是你能不能在合作中将自己的能力和价值稳定地输出,二是会不会有比你能力更强的人取代你第一的位置。
所以,只有不断地提升实力,才能让自己无法被别人替代。
有鉴于此,人和人之间的合作,应该遵循如下规则:
稳定地输出自己的能力和价值
认清自己所处的位置
不断地提升自己的实力
感谢cv君
,Rex~
,自由学者亻伊宸
,我是小白呀
对我的博文《自己写一个极简浏览器》的评论。
官方:https://github.com/KaiHuaDou/EasyBrowserAdvanced/releases
加速:https://github.com.cnpmjs.org/KaiHuaDou/EasyBrowserAdvanced/releases