BitKeeper姻缘了断
April 13, 2005
维持数年的BitKeeper与Linux的关系最终还是落入了好莱坞明星婚姻式的结局。他们曾经相得益彰,最后却走到这个遗憾的地步。kerneltrap这篇Feature: No More Free BitKeeper 做了一个完整的回顾。(与原文有改编)
1999年12月,Linux PowerPC项目首先开始使用BitKeeper--这个非开源但是有条件免费的版本控制工具。到了2002年2月,Linux之父Linus Torvalds已经决定开始用它来管理Linux内核代码主线--Linus对BitKeeper的评价是the best tool for the job--这是个最后在free和open source社区甚至之外都引起了广泛瞩目的举动。
BitMover是BitKeeper的开发厂商,创始人和CEO是Larry McVoy。Larry期望BitKeeper 能帮助Linus 免于陷入不断加重的Linux内核管理工作中--事实上,自从Linus 3年前开始使用BitKeeper之后,Linux的开发步伐加快了两倍。
Free Software这个短语中的Free可以被理解成“自由”,好像Free as in Freedom中的Free--或者仅仅是“免费”,Free as in Free Beer中的Free。BitKeeper是按照后一种定义免费可用的。允许free/open source软件开发者不用付费就能使用这个工具--前提是这样一个协议:这个免费工具的真正使用者不能同时开发其竞争产品。换句话说,这个工具可以免费使用freely used,不过不能被随便克隆freely cloned。当然同时,BitMover还有一个更高级的BitKeeper版本是商业产品,需要购买。这两个版本都是BitMover的知识产权。
也有人一直反对Linus使用BitKeeper--想想看,Linux是free/open source软件的旗舰产品,却在使用一个非free/open source软件--GNU的传奇人物,那个看上去和耶稣有几分相似的大胡子Richard Stallman 就是其中之一。他严厉地批评Linus决定使用非自由(free as in freedom)软件。然而,大多数人都承认,目前也没有哪个free工具具有BitKeeper那样的功能--它提供了真正的分布式开发能力。这些年来,对BitKeeper的一些功能进行反向工程的举动引起了BitMover的多次注意和警告,最近两次这样的动作则最终导致了BitMover决定终止结束免费BitKeeper产品的开发和应用。
--Best Tool For The Job
Linus 使用BitKeeper后不久,他就宣称BitKeeper是Best Tool For The Job。和大多数需要需要中心仓库来保存主副本master copy的版本控制工具不同--我想作者是指CVS,SubVersion等--BitKeeper允许真正的分布式开发,每个人都拥有自己的主副本master copy。此外,大多数版本控制工具把单个文件,甚至同一文件的一个部分看作独立的实体。如果A和B文件都做了修改,它们允许只合并B文件。而在BitKeeper里,这是不允许的--要应用B的变更,你必须也先应用A的变更--这就是BitKeeper的概念,这个设计保证了两个仓库相互间是完全的复制品。
Larry McVoy说Linus刚开始用BitKeeper时也觉得十分不适亦有抱怨。使用BitKeeper之前,Linus的做法是逐条细看每个patch,可能得自己提取出他需要的部分--有了BitKeeper后,这个工作就更困难了。但是,最终结果是,一些子系统的维护者被赋予了更大的信任,而Linus就能一改逐行检查patch为逐个分类地检查了。Linus更信任的维护者只需要很少的审查,而那些信任稍低些的维护者的代码就要多留心。这个过程保证了代码的高质量,同时也成倍地加快了Linux的内核开发进程。
--Free Versus Free
尽管有生产率上的提高,有人仍然坚持反对Linux选用非open source或者非free as in freedom产品--所以,提供一个类BitKeeper的open source产品的动作很严肃地开始了。这又继而导致了Linux内核邮件列表上的激烈争论,Larry 试图解释他很高兴让Linus 和其他开发者在内核开发过程中使用他们的产品--但是谁也不能对其进行反向工程。最近,两个这样的反向工程项目让BitMover 开始怀疑/审视自己商业模式中的free部分。更坏的是,其中一个项目是由OSDL--影响颇大的open source团体同时也是Linus Torvalds 的老板--“无意”间赞助的。
Larry 说,OSDL资助的一个无关项目正在对BitKeeper协议进行反向工程。双方大约7周之前开始讨论如何处理这一状况,他们甚至已经达成了口头约定--涉及反向工程的该项目成员应当停止其举动。然而,那之后,反向工程的行为又开始了。尽管OSDL并没有为反向工程直接买单--他们资助的项目确实是有其明确的,与BitKeeper无关的,目的的--但是事实是,他们也确实雇佣了一个在开发竞争产品的雇员,这是免费的BitKeeper许可所不允许的。Larry说,OSDL本来又机会解决这个问题的,可是他们只是耸耸肩,说it’s not my problem。这成了压垮骆驼的最后一根稻草。考虑到眼下的情况和此前各种举动对每年要花费50万美元进行免费BitKeeper的开发和支持的BieMover造成的伤害,他们最终作出了一个困难的决定,计划逐步停止免费版本的支持和应用。
--What Went Wrong
Larry 在解释这个决定时说“这是open source社区面临的真正问题,没有比这更失败的了”。作为一个长期的open source狂热者和BitMover的CEO,“我们作为一个商业组织已经尽可能地做到了你能想像到的最大程度的open source友好”。那些使BitMover终止免费产品的举动可能也会使其他公司打消让其产品支持Linux的想法。Larry还说,以前在SUN他们有句话’it’s the apps, stupid’,意思是,那些“我的OS比你的OS要好”的争论和梦话都毫无意义,让你的平台上有尽可能比其他平台多的应用才是硬道理--这对Linux也适用。问题的关键是,不会有公司对把他们的应用移植到某个平台感兴趣--如果这个平台上的家伙们的既定目标和已有记录表明他们一发现有用的东西就对它做反向工程的话。从某种程度上说,open source世界需要做出选择:要么接受商业软件并且承认商业公司有资格从自己的劳动中获利的事实,要么组织起来,开始提供“所有”应用程序的open source版本应对挑战。
Larry说,我们的状况是,没有机会改变open source社区的举动。和海军陆战队不同,open source社区更喜欢用‘不是我的问题’来忽视那些坏苹果(鸵鸟?),而海军陆战队则会为几个坏家伙的行为惩罚整个团队,然后很快坏家伙就会不见。可能有一天这种状况会改善,不过到那一天之前我们不得不按照对生意有意义的原则行事--而让open source guys使生意无法继续显然是没有意义的。
有些人会把终止免费BitKeeper视作它的失败,Larry可不这么想。Linus 也说,使用BitKeeper的3年已经对工作流程产生了深远的影响。他不再是关注于逐个patch的变更,而是和其他受信任的开发者一道在更高更有效率的层次上工作。
这不是个容易的决定,Larry说,我想提供帮助,然而部分open source社区的攻击让他感到heartbreaking--只是因为我不能提供一种politically correct的方法来帮助大家。You have no idea how miserable that has been。
--What Next
在此后3个月,BitMover打算逐步终止免费的BitKeeper产品。已经有人提供了一些资]]
>
Tags: BabyBus