世界上最流行的软件,抛弃了Git。

世界上使用最流行的软件是什么?

Windows ? Android? Office ?

都不对!

答案是 SQLite !一个嵌入式数据库。

世界上最流行的软件,抛弃了Git。_第1张图片

你可能没听说过它,但是它就在你身边的:

每一台智能手机中(Android 和iOS),Mac电脑,Windows 10电脑。

每一个主要的浏览器中(Chrome, Firefox, Safari)

大部分的机顶盒当中

每个PHP和Python安装目录中

很多流行的桌面应用(微信、QQ、 DropBox、 Skype、 iMessage、WhatsApp、 Adobe Acrobat Reader....)

......

不信的话可以在电脑中搜索一下 “*.db”,看看能发现多少个。

SQLite的发明人是Richard Hipp。

世界上最流行的软件,抛弃了Git。_第2张图片

Richard不但写了SQLite,他还写了另外一个版本控制软件Fossil

世界上最流行的软件,抛弃了Git。_第3张图片

有趣的是SQLite项目使用Fossil来做版本控制

而Fossil又使用SQLite来存储内容

有点儿鸡生蛋,蛋生鸡的感觉。

我们不仅要问:现在Git已经是源码管理系统中最流行的软件,SQLite为什么不使用Git,而要另起炉灶呢?

Richard写了一篇文章《Why SQLite Does Not Use Git》,解释了其中的原因,几个要点如下:

1. Git的思维模型过于复杂

Git的复杂性分散了人们对于正在开发软件的注意力,Git用户需要牢记一下所有内容

  1. The working directory
  2. The "index" or staging area
  3. The local head
  4. The local copy of the remote head
  5. The actual remote head

Git提供了很多命令和选项在所有这些位置之间进行文件移动和比较。

相比而言,Fossil只需要考虑他们的工作目录和正在处理的check-in,干扰减少了60%,每个开发人员的大脑周期是有限的,Fossil需要的大脑周期更少,从而可以释放智力资源来专注正在开发的软件。

正如一个使用过Git和Fossil的用户在HackerNews上缩写的:

Fossil让我安心,因为我拥有一切......通过一个命令同步到服务器...... 我从来没有通过Git获得过这种安心。

2. Git没有提供良好的态势感知能力

当Richard想看看SQLite最近发生了什么情况时,他可以使用Fossil的Timeline功能,在一个屏幕上看到所有更改的摘要,只需几下点击,就可以看到细节信息,甚至用手机也可以,非常方便。

GitHub和GitLab没有提供类似的功能,最接近的是“Network graph”,但是它渲染起来很慢(除非事先有缓存),并且不提供那么多的细节,移动设备上效果更不好。

GitHub的commit视图不错,有详细信息,速度快,可是每次只能提供显示一个分支,无法轻松知道所有最近的更改。

很多Git用户会使用第三方的Git图形查看器,它们需要单独安装和管理,并且很多是特定平台的(例如仅适用于Mac的GitUp),想用这些图形查看器,首先还得同步本地存储库,很麻烦。

3. Git 不跟踪历史分支名称

Git保留了commit序列完整的DAG,但branch tag是本地信息,它不会同步,不会保留,这使得查看历史分支变得非常乏味。

Richard用一个分支的例子对比了Git和Fossil,Fossil可以清楚地显示Branch开始的位置,什么时候合并回主干,GitHub则不行,除非使用第三方的工具。

世界上最流行的软件,抛弃了Git。_第4张图片

4. Git需要更多的管理支持

Git是个复杂的软件,建立Git服务器并不容易,所以大多数开发人员使用第三方服务如GitHub和GitLab,从而引入额外的依赖项。

相比之下,Fossil是个独立的二进制软件,包含GitHub,GitLab的核心功能,建立一个服务器非常高效,只需几分钟时间就拥有一个带有wiki、错误跟踪和论坛的社区服务器,为用户提供打包下载,登录管理等功能。

Fossil对硬件要求很低,可以在 5 美元/月的 VPS 或 Raspberry Pi 上正常运行。

5.Git提供了糟糕的用户体验

下面这个xkcd 的漫画虽然夸张,但是却切中要害。

世界上最流行的软件,抛弃了Git。_第5张图片

说实话,很少人质疑Git提供的用户界面不理想,很多底层的实现都展示在了和用户交互的接口中,交互接口设计很糟糕,有个网站甚至专门生成假的Git帮助手册:https://git-man-page-generator.lokaltog.net/#ZWR1Y2F0ZSQkaGVh...

Richard的吐槽挺犀利的,但我能感同身受的只有第一点和最后一点:模型复杂,用户体验差

我刚开始接触Git时也有很强的抵触情绪:项目组就这么几个人,为什么要用分布式的系统?搞什么本地仓库,远程仓库,还得记住各种各样烦人的命令......
集中式管理SVN它不香吗?

用得多了,发现有两个好处:

  1. 在本地有个副本,可以自由地修改,并且能提交到本地的代码仓库中,先把版本管理起来,这是很爽的一件事情。等到合适的时候再push,什么事情都不耽误。
  2. Git的分支实在是强,创建分支不像SVN那样得复制目录,很轻量级,新特性开发都可以用分支来搞。

当然,代价就是记住,用熟那些复杂的命令。

Richard是个挺有意思的人,他很喜欢造自己的小工具,喜欢自给自足。

除了SQLite和Fossil之外,他还开发了一个Web服务器althttpd,这是个小巧,简单,安全,低资源占用的Web服务器,现在sqlite.org网站就架在它之上,每天处理50万个Http请求,传输200G的数据。

Richard还开发过一个叫CVSTrac的Bug跟踪系统,也是使用SQLite来存储相关数据。

所以,Richard对Git的吐槽有为自己产品宣传的成分(至少这篇文章在HackerNews中引发了三次大讨论,赚足了眼球,吸尽了流量),但也真的是自己使用觉得觉得不爽的地方。

SQLite选择了Fossil,那是因为对Richard来说,Fossil足够了,并且在某些功能上更好,更能满足自己的需求。

就像他使用自家的althttpd,而不是Apache一样。

但是对于更多的程序员来说,Git和GitHub的生态系统更有效。

这个世界应该是百花齐放的。

关于Masutaa

Masutaa是个互联网从业者自由协作交流平台,链接行业内TOP10%人才!目前平台上已经有将近400名互联网尖端人才,其中近70%的从业者从业年限超3年。加入Masutaa,加入自由生活!

你可能感兴趣的:(世界上最流行的软件,抛弃了Git。)