查看原文
其他

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

脚本之家 2023-12-27

The following article is from 码农翻身 Author liuxin

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


Windows ? Android?  Office ?


都不对!


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




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


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


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

大部分的机顶盒当中


每个PHP和Python安装目录中


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


......


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


SQLite的发明人是Richard Hipp。




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




有趣的是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则不行,除非使用第三方的工具。




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


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


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


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


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


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



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


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的生态系统更有效。


这个世界应该是百花齐放的。
本文作者刘欣,著有畅销书《码农翻身》,《半小时漫画计算机》,前IBM架构师,领导过多个企业应用架构设计和开发工作;洞察技术本质,擅长用故事去讲解复杂技术。
  推荐阅读:
  1. Mojo编程语言开放下载,声称比Python快68000倍
  2. 2024届秋招直接让我破防
  3. 看完这位小哥的GitHub,我沉默了
  4. 为什么学编程都建议不要用拼音命名?
  5. 电话背调,我给他打了8分
继续滑动看下一个

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存