一个轻松无聊的晚上突然想到一个问题——在当今这个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黑白终端模式的清晰与简洁……我想这大概算是种沉淀吧,今天看到这帖子特有此感,希望我的这些感触能对看此文的同学有所帮助。

OpenBSD为何还在用CVS之感的更多相关文章

  1. CVS 相关内容

    CVS 基础 cvs 并不是 eclipse 独有, 而是 eclipse 支持 cvs. cvs 是用于几个程序员之间共享程序避免冲突的一个工具, 是 C/S 架构. cvs 是 java 的一个开 ...

  2. Linux 内核的代码仓库太不一样了,光克隆都让我挠头,克隆后居然还丢文件,你肯定也会遇到!!!

    一个肯定能让你节省几个小时的小知识 大家好,我是 小猿来也,一个人称撸(划)码(水)小能手的程序猿. 最近一段时间,每次经过旁边大佬工位,总是发现他在快速的切屏,不知道在搞什么?难道他发现了快乐星球? ...

  3. maven 简介

    本书代码下载 大家可以从我的网站下载本书的代码:http://www.juvenxu.com/mvn-in-action/,也可以通过我的网站与我取得联系,欢迎大家与我交流任何关于本书的问题和关于Ma ...

  4. Maven的安装、配置及使用入门

    Maven的安装.配置及使用入门 本书代码下载 大家可以从我的网站下载本书的代码:http://www.juvenxu.com/mvn-in-action/,也可以通过我的网站与我取得联系,欢迎大家与 ...

  5. jenkins之从0到1利用Git和Ant插件打war包并自动部署到tomcat(第五话):总结以及build.xml文件

    前面基本上把整个配置过程都完整地串起来了,包括可能遇到的难点,按照那个套路应该可以配置好自动打包发布的功能.简单总结下我的学习过程,以及遇到问题是怎样解决的. 准备一个项目源码 刚开始在github和 ...

  6. 持续集成工具hudson

     2008-07-08  一.什么是持续集成 持续集成的核心概念 CI 过程会经常构建软件组件:在许多情况下,每当源代码存储库(比如 Subversion 或 ClearCase)中的代码发生变化时, ...

  7. 转载maven安装,配置,入门

    转载:http://www.cnblogs.com/dcba1112/archive/2011/05/01/2033805.html 本书代码下载 大家可以从我的网站下载本书的代码:http://ww ...

  8. 【AR实验室】ARToolKit之概述篇

    0x00 - 前言 我从去年就开始对AR(Augmented Reality)技术比较关注,但是去年AR行业一直处于偶尔发声的状态,丝毫没有其"异姓同名"的兄弟VR(Virtual ...

  9. OpenCASCADE Root-Finding Algorithm

    OpenCASCADE Root-Finding Algorithm eryar@163.com Abstract. A root-finding algorithm is a numerical m ...

随机推荐

  1. swprintf %s %ws %S 的区别

    http://www.codeproject.com/Articles/20869/D-Fast-Wavelet-Transform-Library-for-Image-Proces该作者提供的源代码 ...

  2. Java 画图

    package com.lf.testproxy; import java.awt.Color; import java.awt.Font; import java.awt.Graphics2D; i ...

  3. php操作Mysql 以及封装常用的函数 用外连接连接3个表的案例

    <?php header("content-type;text/html;charset=utf-8"); //数据库连接define('DB_HOST','localhos ...

  4. android-eclipse-phonegap 2..9以下(包含2.9)的项目配置

    1.搭建android.eclipse环境,下载phonegap 2.9包 2.新建android项目 3.拷贝phonegap-2.9.0\lib\android\cordova-2.9.0.jar ...

  5. Windows下pry安装和配置

    Windows下pry安装和配置 pry是一个增强型的交互式命令行工具,比irb强大. 有自动完成功能,自动缩进,有颜色.有更强大的调试功能. pry 安装很简单. 在终端输入: gem instal ...

  6. DIV 垂直 垂直水平 居中

    DIV 垂直 居中 让div居中对齐 使用margin-left:auto;margin-right:auto; 可以让你的div居中对齐.  .style{margin-left:auto;marg ...

  7. php Windows系统 wamp集成环境下redis的使用

    先说一下我的本地环境,使用的是wamp集成环境,(Apache 2.4.9.PHP 5.5.12.MySQL 5.6.17) windows下安装PHP扩展: 第一步:找到扩展文件(.dll),htt ...

  8. Create Your Tab and LayerTabMenu In Katana

    感谢 http://tool.lu/pyc/ 这个牛逼的网站能反编译pyc...他妈的Katana太他妈无耻了,竟然不让自定义加Node Tab Content....只能反编译他的东西了... 研究 ...

  9. C# XmlSerializer实现序列化浅析

    C# XmlSerializer类是实现序列化的一个类,那么关于C# XmlSerializer的学习我们要掌握怎么样的操作方法呢?那么这里向你详细介绍具体的操作细节情况. C# XmlSeriali ...

  10. CentOS7安装Nginx-1.9.9+PHP5.6

    linux系统CentOS7 Nginx 下载地址http://nginx.org/en/download.html wget下载路径http://nginx.org/download/nginx-1 ...