一个轻松无聊的晚上突然想到一个问题——在当今这个Git大红大紫的时代,OpenBSD为何还在用CVS代码仓库?连他同阵营的FreeBSD都已经改用SVN,宣布逐渐废掉CVS了……问了下google,搜到有人问同样的问题。(btw:本人不善英文,只是按意思简单翻译,可能翻的很蹩脚,英文好的童鞋直接看原文最好。)
http://openbsd.7691.n7.nabble.com/Why-does-OpenBSD-use-CVS-td226952.html
[Alokat]
Hi, first, I don't want to start a flame war about why is CVS better or not better than X - it's just a question.
If you say, we use it because it just works - it's okay. :)
So why does OpenBSD still uses CVS and don't migrate to SVN or something like git as other OSS projekts do?
嗨,首先,我不想引起为什么CVS比其他版本控制系统好坏的论战,我只想知道为什么,哪怕是你说它刚好能工作也行。
那么为什么OpenBSD仍然在使用CVS,而没有迁移到其他开源代码项目使用的SVN或git呢?
[Stuart Henderson]
my 2p: like all version control software CVS has bugs, but between us,
developers have a reasonable idea of how to avoid them in CVS, there's
less knowledge about other version control systems.
Also having the repository stored in human-readable (ish) files is an
advantage if there was ever any repo corruption.
You might also ask why some other OS use source control software which
they don't even include in the base OS ;-)
向其他版本控制系统一样CVS也有bug,但是开发者都有办法能绕开这些问题,并且相比其他版本控制系统,使用CVS并不需要太多的学习成本。
而且使用肉眼能读的文本文件作为版本仓库。
- 简单(Simple),这个就不用解释了……
- 文本化,这正是Unix的哲学之一,不了解的同学可以去看下《Unix编程艺术》中相关的章节。CVS沿用古老的RCS的存储方式,版本库都是文本文件,可以直接用editor打开看,甚至编辑,不得不说这点相对SVN/Git等确实是优点之一(当然缺点亦有)。之前看云风很久以前的博客写到过关于游戏地图数据使用文本方式存储,我大为赞同。经常见有些同学在网上问做socket通信,如何设计协议,文本协议?自定制二进制协议?Protobuf?AMF3?……其实现有常用协议已经给出了这个问题的答案,FTP/HTTP/DNS等协议都是文本协议,已久经历史的证明;除了像网游这种有一定保密性质的情况,用简单的文本协议绝对是明智之选;总之文本化的重要性怎样强调都不为过,可惜的是我见过的很多程序员对此并不知晓,或者将此视是为老古董的教条主义……
[Nick Holland]
* "it works"(够用)
* migrating - and not losing history is difficult.(迁移到其他版本控制系统很难保证不丢失历史记录)
* migrating versioning systems is something you don't want to do every
few weeks (or even every few years)...so you want to make sure it is
really worth it if/when you do. SVN today? GIT next week? something
else next year? Please, no.(迁移版本控制系统需要花费大量精力,没必要追新)
* Tolerable -- and in the case of opencvs, ideal -- license.(License许可证)
* its glitches are hated, but known (the devil you know how to subdue,
vs. the devil who beats the sh*t out of you)
* relatively light weight -- runs fine on a 486, hp300, or on a modern,
fast machine, fits nicely into existing distribution, easy to drop into
a chroot.(轻量,能在486这样的低配机器上运行,并且很容易对其chroot。Btw: 安全对于OpenBSD意味着什么?)
* Infrastructure exists. To change it all would require a really good
reason.(现有的基础设施)
* it fits the OpenBSD development model.(适合OpenBSD的开发模式)
* Many of the "features" of alternatives are not desired in the OpenBSD
development model.(其他替代产品的特性并不是OpenBSD开发模式渴望的)
Obviously, it is possible to build a quality-focused product of
Operating System magnitude using CVS. I don't think one can quite say
CVS is the REASON for OpenBSD's quality, but it obviously hasn't hurt.
很明显,使用CVS是为了构建高质量的操作系统,但是我不认为CVS是OpenBSD高质量的原因,但它显然没有害处。
新技术的更替层出不穷,经常在网上看到某某大型项目从一个工具迁移到另一个工具,比如KDE从GNU Autotools迁移到cmake,于是掀起了废Autotools的争论,大量项目随后效仿迁移到cmake;Linux Kernel自家搞起的git,随后git一发不可收拾,github大火,人人都在学git,再加上网上各种技术*分子之势,似乎现在不用git管代码都不好意思说出口……
看完这些回复突然感觉似乎悟到了些什么。OpenBSD总给人一种很古老、刻板的感觉,但它的代码是那样的整洁,具有美感。我不止一次的向那些想看C库函数如何实现而抱着glibc代码啃的同学推荐OpenBSD/FreeBSD的C库代码实现。在技术浮躁的今下,OpenBSD为我们做出了最好的榜样。只用够用的,没有足够的好处绝对没有改变的必要,理性的看待新事物。很多时候新事物只不过是在旧事物上加了一个美丽的外表而已,但却让你看不到本质了。
自毕业工作几年来自己的最大改变之一也是不再向以前那样知道一个新技术就感觉热血沸腾,总想将其用起来,逐渐学会了分析自己所需的是什么,透过那些新技术华丽的外衣看到它的本质是什么;从最初的autotools/cmake/scons……最终悟到还是手写的makefile最淳朴、实用;从最初的想搞明白C++的所有东西到发现C是那样的淳朴、实用,顺应程序员和机器本该有的思维方式;从最初疯狂定制emacs的各种插件到只设置下tab宽度而已的.emacs;从最初的为editor/IDE挑选各种高亮配色到发现总是没有一个让自己感到十全十美能用一辈子的配色,逐渐发现vt100黑白终端模式的清晰与简洁……我想这大概算是种沉淀吧,今天看到这帖子特有此感,希望我的这些感触能对看此文的同学有所帮助。