如何做开源项目——ABC[zt]

Posted by dohkoos on December 30th, 2008 (532 views)

谈开源不能不谈免费,现在国内几乎所有的所谓开源软件,根本不具备任何开源特征,对开源领域及计算机业的奉献甚少。比如Discuz一类的论坛什么的。他们都抓住了人贪婪的本性,一味的将开源同免费划成等号。我们今天就不详细讲述他们的罪过,我们在这里讲讲,假如你想做开源你需要做好什么样的心理和技术的准备。

心理准备:

1、做的时候就要考虑好你的项目要发展10年甚至100年。长期的考虑可以更好的规划你的项目,放下浮躁的心态,认真的做事情。

一个开源项目同一个公司的项目不同。公司的项目是计划式项目,利益为目的,如果公司破产或业务改变那么项目就可能会取消。而开源项目不一定,很多项目都是由爱好者发起维护的,你要准备好即使你离开,这个项目也会继续,一个项目的发展目的不仅仅是为了你个人(当然你出发点可能是为了个人,但是项目能否存活关键一点在于心态)。

2、万事怀着感恩的心。宽待别人,善于倾听别人的意见,但同时也要保证自己的设计思路不被打乱。

一定要倾听别人的意见,但是作为项目的执行者,要以自己的理解为准则。不要怕自己做错了,做的不好。记住你有10年的时间来使项目完善。一个项目如果想发展起来一定是有很多人参与的,所以不要做一言堂。

3、尊重合约。不是要求别人尊重你的合约,而是尊重他人的。不偷窃他人的代码,尊重微软这类公司,对盗版憎恨。这是做开源的基础,如果做不到,恐怕你还需要学习。建议如果有时间请先看过圣经,在圣经中你会学习信用是多么重要的。

开源最大的敌人是谁?不是商业软件,不是微软,是盗版。如果你想别人尊重你的劳动成果你现在就应该尊重微软这类公司。我们现在不是土匪时代(英雄时代),盗版不利于我们的科技进步,人人想着不劳而获,贪婪不要占据你全身。尊重合同,可以得到所有人的尊重,因此请注意,如果你要引入(dohkoos注:原文为抄袭,觉得不妥,用引入替代之)别人代码。请为他们保留版权说明,别啥都是你做的。你也想搞个小汉芯吗?

4、做好心态,不论你是为了盈利还是为了兴趣,做开源就要做好心态,你要允许别人在没给你任何好处的时候利用你的成果获利。

不论你是为了盈利,还是为了兴趣,只要不违背开源的精神,你对这个行业都有贡献。请不要做的太自私,既然开源的就要让大家共同享受知识带来的好处,不然你开源干吗,还是继续去搞“免费软件”吧。

5、不要相信那些说“我愿意参加你的项目,我希望参与工作”的人,真正参与项目的人从来不会表态,他只会给你一个patch然后告诉你你代码有什么问题。

根据多年的经验,以及多次项目的失败总结,基本上热火朝天的跟你说这句话的人,根本对你一点帮助也没有。真正愿意参与做事情的人,是不会说这句话的。这不仅仅在国内,在海外也是有这个特点的。

技术准备:

你可以选择sourceforge.net或是你自己弄服务器做开源,不论怎么样。不是简单有个下载,有个web就叫开源的,你需要一些工具来帮助你:

1、WIKI
你的网站可以采用WIKI,这样可以方便参与者编辑修改页面,尤其是编写文档的时候很重要。当然国内的垃圾广告太厉害了,如果你是中文网站,就做上权限吧。我推荐你可以使用dokuwiki来做。

2、BugTracker
作为一个长期发展的项目,你总得做计划吧,你总得允许别人向你报告错误吧。你需要一个缺陷跟踪系统。如果你系统有什么问题或别人对你系统有什么需求,他可以在bug tracker里发出需求。推荐你使用mantis这个系统,代码是php编写的,很简单容易使用。

3、SVN
你需要协同工作,就一定需要一个SVN,现在几乎所有的项目都有自己的SVN仓,SVN不仅仅可以协同工作。他还可以对你的代码做历史记录。网上可以下载到svn的中文pdf,你搜索一下看看。

4、Maillist或是BBS
有这样一个特点,老外是习惯使用Maillist的,而中国人习惯使用BBS。所以根据你自己的需要给项目选择一个沟通方式。

5、QQ或IRC
如果你项目针对国内,建立一个QQ群是很重要的。当然你也可以建立一个IRC房间,上www.freenode.org上去申请一个,所有的大型项目都在freenode上有实时的讨论组。

有了以上,你还需要怎么做?很简单,开始干事情,别记得请别人加入项目。记得你是要发展10年,你的项目只要做的好,做一些简单的宣传,很快就有人找上门来了。

6、GPLv2/LGPL/MPL.....想好用什么协议
你当然可以自己"开创"一些协议,不过我建议你使用一些标准的协议,这些协议经历了时间的磨练,并且在法律和道德的问题上它们更能经的住考验。协议很多,每个厂家比如SUN都有自己的,或APACHE也有自己的。但是目前最流行的还是GPLv2,LGPL,MPL等。

---------------------------------------------------------------------
另外,以下是iredmail作者张煌彬对开源的体会

*) 关于技术:

- 积极主动的宣传。不要等着杂志、论坛来采访你,你必须自己先自问自答写好采访稿,然后投稿给杂志、论坛。因为只有你最了解自己的项目,也只有你在乎你的项目。
- 积极地向软件上游反馈测试结果和bug报告,如果自己制作了补丁,也请及时向上游提交。
- 在项目的初期,请全部用英文,包括网站、文档、svn 修改记录、代码注释。
- QQ永远是吹水的地方,不是聊技术的地方。更重要的是,在 QQ 群里做的技术解答也无法分享给后来者。邮件列表才是最好的选择,即使是论坛也比QQ好。

*) 关于挑选团队成员:

- 不要相信持有类似"如果中国人有足够的钱养活自己和家人,中国的开源肯定很红火。"观点的人,他们不会是开源社区的参与者,他们只是索取者。他们会有各种各样的理由来证明自己没有时间做开源,参与开源。遇到这样的人,请直接"漂过"。
- 当你告诉他,要想加入项目,必须从做测试、做论坛解答开始,他的热情就降了一大半的人,请感谢他。因为他以行动直接告诉你,他不是你要找的项目成员。
- 从那些实实在在做事、制作patch、在论坛帮忙解答问题的朋友中挑选你认为合适的人选作为团队成员。因为他已经在做着项目成员应该做的事情。

*) 关于捐赠:

- 不要期待国人捐赠你的项目。老外如果用了你的项目,并且他认为确实给他带来了便利,他们会很乐意捐赠给你。而国人99.9%不会。因为他们认为用了你的产品,是给公司带来便利,所以应该找公司要捐赠、要赞助。他们丝毫不认为你的项目是在帮助他自己——如果他没干好自己分内的事(也就是你的项目做的事),老板扣的是他的工资。

*) 心态及其它:

- 感谢那些帮助过你的人。
- 调整好心态。不同的阶段会有不同的考虑,但是不管怎样,一定要弄清楚自己要什么,拥有什么。
- 做好长期坚持的准备。如果你希望自己的项目有所成就,请坚持,坚持,再坚持。
- 没有必要公开私人联系方式,有邮件列表就够了。

Related Posts

《商业周刊》:开源软件模式已经濒临崩溃[zt]

Posted by dohkoos on December 2nd, 2008 (469 views)

原文:http://www.businessweek.com/technology/content/nov2008/tc20081130_276152.htm

美国知名杂志《商业周刊》日前刊登了一篇开源开发实验室(Open Source Development Labs)前CEO斯图尔特·科汉(Stuart Cohen)撰写的文章。该文章指出,单纯依靠技术支持和服务获取收入的开源商业模式已经无法满足投资者的预期。这种商业模式已经濒临崩溃。

转变思路

虽然开源软件本身是免费向用户提供的,但是开源厂商通常都会通过向用户提供支持以及附加功能来获取收入。的确有部分厂商获得了成功,但是大部分的企业并未取得进展,有的甚至兵败而归。而且不断恶化的经济环境还会对开源软件造成更加沉重的打击。这就使得更多的厂商不得不重新思考自己的商业模式——将开源看作一种手段而非最终目的。

事实上,部分厂商已经开始转变思路。两年前,微软与专注于开发开源操作系统Linux的Novell公司建立了伙伴关系。这一事件震惊了业界,因为这两家公司一直以来都在操作系统领域处于竞争关系。在此之前,微软首席执行官史蒂夫·鲍尔默(Steve Ballmer)还曾试图向用户传达一种理念——Linux和开源软件有违美国人的风格,鲍尔默甚至认为它们是软件领域最为严重的毒瘤。与此同时,Novell与微软的合作也让整个开源世界一片哗然。由于微软承诺将不会就专利问题对使用Novell版Linux系统的用户提起诉讼,因此,他们认为Novell与微软的合作只不过是一种老套的妥协而已。

红帽的附加价值

我是少数几个支持Novell和微软合作的开源领域的CEO之一,我甚至参加了双方合作协议的签署仪式。微软与Novell间的合作不仅当初看来有一定的意义,现在仍然如此。有了这一交易,Novell就可以对Linux的内核进行补充,从而增强Windows与Linux之间的互用性。

红帽(Red Hat)被看作是最为成功的开源厂商,除了支持Linux内核之外,它还为用户提供其他的附加价值。为了能够给用户提供更多的附加价值,红帽在Linux 内核的基础上增加了大量的软件层以及一款几乎不需要维护的稳定的软件。如果红帽单纯依靠对Linux内核的技术支持来盈利,那么它的商业模式就很难成型,因为Linux的代码实在是太稳定了。

红帽遵循的是一种看似有些矛盾的原则:开源代码通常都非常优秀,因此基本上不需要进行维护。所以,那些单纯依靠提供技术支持和服务获取收入的开源厂商就无法生存下去。传统的开源商业模式也就无法满足投资者的预期。

Sun的忧虑

想想Sun吧,他们斥资10亿美元收购了开源数据库MySQL。尽管MySQL的代码非常优秀,但是它给Sun带来的收入却非常微薄。MySQL的确为Sun在开源领域赢得了一定的声誉,但是除非能够在MySQL上增加重要的附加价值,否则Sun就很难从中获益。

开源已经成为了达成目的的一种手段,它降低了软件的经济成本,通过这种方式,催生了更多新颖的商业模式。甲骨文、微软和SAP等昔日的软件巨头还会继续存在下去,但是却很难再诞生新的软件巨头。软件是一种商品,除了服务之外,人们还可以从它身上获取更多的商业价值,这也正是软件的魅力所在。

现在好了,协作使得人人都可以使用优秀的软件。协作不仅降低了软件开发的成本,也降低了平台之间的独立性,增强了软件的可持续性。

一起做批萨

尽管开源商业模式有可能会崩溃,但是开源背后所蕴含的理念却会继续为用户带来新的价值,而软件厂商的股东们也将从中获取不菲的回报。但是这种价值来源于协作,而非开源本身。

这就好比与他人一起做批萨。通常情况下,大家所使用的“配料”都大同小异,这就很难获取竞争优势。既然大家都想做一样的批萨,那为什么不共担成本呢?事实上,我们不仅应当共担成本,还应当把所有的配料都聚集起来,一起做批萨。这样一来,我们就能够更好的掌控流程、少犯错误。

双赢策略

这正是协作的益处所在。如今,很多企业都会聚集到一起来建立起集合了多种专业人士的“社区”,以便以更低的成本开发软件。让所有人都从中获益,这种说法看似陈词滥调,但在这里却是事实。最好的开源项目通常也是通过这种方式展开的。

但是现在,开源只是一种手段。这些集合了众多专业人士的“社区”之所以会使用开源软件,原因在于其成本低廉且具有开放性。而至于这种软件最终是通过网络为用户提供服务还是在GPL协议下免费分发,这些都无关紧要。

除非开源厂商能够找到为用户提供附加价值的新方法,否则这些公司将会面临严重的危机。尤其是在当前的经济形势下,这一点尤为重要。

并购应该还会发生。但是可能不会再有Sun并购MySQL那样的大手笔出现。单凭“开源”二字就可以鼓吹商业价值的时代已经一去不复返。不过,幸运的是,客户和厂商都在通力合作,希望能够提取“开源”的优秀基因,建立一批专注于协作的软件厂商。

Related Posts

助力开源你所能做的十件事情[zt]

Posted by dohkoos on January 23rd, 2008 (367 views)

作者:Peter Judge ZDNet.co.uk
译者:IT168 东方蜘蛛

原文:http://resources.zdnet.co.uk/articles/features/0,1000002000,39291123,00.htm
译文:http://publish.itpub.net/o/2007-12-05/200712051922115.shtml

开源是一件非常好的事情,这一点大多数人都认同。但是然后呢?你是选择只动口对其称赞?还是真正动手来做些事情为它的发展出一份力?

开源实际上有一个非常大的理想,这个理想可能会让有的人感觉不舒服,但是却会让更多的人拥有被解放的感觉:那就是实现人们之间的协作。实现更多人的参与。让许多人来一起来做出有用的东西:你为开源献出一滴水,开源会回报给你一眼泉。

许多人会一起来发现软件的漏洞、修复漏洞和快速的响应新需求:这就是一个开源的神奇咒语。现在有很多免费提供的伟大软件的原因,就是因为人们分享了其开发过程。

因为这些软件的源代码被提供给所有人,从理论上来说,任何人可以参与其中并为其开发新的功能。这些新功能的代码然后又反馈回开源社区供其他人使用。

如果你只是满足于使用开源软件,那没有问题。但是如果你希望为开源软件做出自己的一些贡献的话,比如你有一个问题是没有其他任何人在修复的,或者你只是想贡献自己的一份力量,但却不知道从哪儿开始的话,下面的十个建议可能对你有所帮助。

1、使用流行的开源软件

使用Linux并不困难。如果你有一个备用的系统,安装一个免费版的Linux操作系统,然后看一下它可以做什么。如果没有其他的软件要求,Linux可以在一个比较老的低配置硬件上运行的非常好。你还会发现它本身带着许多有用的软件,而且让你很少有被舒服的感觉。

但是,可能有一些原因让你不得不继续使用Windows,例如公司的规定,或者必须一直使用一个只支持微软的操作系统的应用软件。如果是这样,不要灰心,现在还有很多Windows下的开源软件可以供你使用。

下载Firefox是非常简单的一件事情,这个浏览器要比微软的IE浏览器更安全。当你使用它的时候,你会发现它支持加入扩展插件,每个扩展插件都具有自己的相应的作者。

还有开源办公软件OpenOffice.org,这是一个与微软的Office竞争的办公软件套装。“有很多机会来使用Linux世界之外的开源软件,” Linux专家Alan Cox表示,“OpenOffice、Firefox、PHP、Perl...许多Windows上的基于Web的编程工作很多是使用开放工具来完成的。”

如果你使用开源软件,你将鼓励和推动别人也来使用它,当越来越多的人来使用开源软件的时候,开源社区也就自然得到了发展。因此即使只是花时间来学习和体验开源软件,也是对开源社区的一个回报。

2、当你的企业选择新系统的时候,确保开源被认为是一个选择

现在是做这件事的最佳时机,因为Windows用户正面临着对Vista巨变的不适应。从历史的角度来看,让大批的用户转向Linux是一件比较困难的事情,因为这将需要对用户进行一个关于使用不同操作系统的培训(尽管许多人认为这已经不是一个障碍)。

但是现在,在Windows Vista中的毫无道理的改变意味着,即使你选择使用下一个版本的Windows,也要付出培训的成本。

Cox表示,即使你不能完全的转向开源,有一点你需要知道的是,几乎你所有你购买的硬件将来都能运行Linux或Solaris,它们不会像Vista那样对硬件有那么苛刻的要求。这样一旦将来计划发生改变,这些设备依然可以被有效的重复利用或使用。

3、参与在线开源讨论社区

你当想发现一个插件或求证问题的时候,你可能发现自己已经被开源在线论坛所深深吸引。通过查看、阅读FAQ和搜索其他人的问题,通常你可以得到你想要的东西。但是,如果一个问题有时没有一个明确的答案的时候,也不要灰心,这时候你与社区互动的机会来了。从网上提问这一问题,通常你可以得到一个友好和有帮助的答案-以后你可以把这个答案再告诉别人。

很快,你会发现这自己也拥有了开源的思想,你可以回答来自比你晚来的人的问题。

4、学习编程

对大多数人来说,这可能是一个比较大的跨越,学会很好的编程可能需要花费比较长的时间。但是这是一个开源的世界,这里充满了帮助,举个例子来说,对于内核程序员来讲,可以查看kernelnewbies.com网站。对你所感兴趣的任何类型的编程,在开源世界中你都会找到相应的帮助,你只需要在搜索引擎中输入“teach yourself”和语言的名称,然后就可以选择最适合你的方式。

不过,你需要知道,软件开发和实现中除了编程之外还有很多需要做的工作。Cox表示,“像翻译者、设计者和可用性的工作都是非常重要的。”

5、写帮助文档和调试工作

为软件编写文档是另一个你肯定可以贡献力量的地方。在这个领域开源社区特别希望得到来自志愿者的帮助,而且也是志愿者可以轻松提供帮助,但是目前却是一个非常薄弱的环节。作为某个软件的一个用户,而且是一个不得不去论坛寻求问题答案的用户,你可能已经意识到,如果你能做出一个解释它如何运行的文档,这是一件多么有意义的工作,甚至比编写这个软件的人所带来的工作更大。Cox表示,“开源的文档编订是一件非常公开的工作,也是我们特别薄弱的一个工作环节。”

6、参加开源活动

在网上与开源社区的朋友进行交流非常不错,但是和他们面对面的交流则更有益处。现在到处都有开源活动,你可以选择其中你感兴趣的领域去参加。你越多的从各个层次参与到这个社区中,你就越能发现更多的运用你的技能的方式,而且你会发现你可以更容易得到所需要的帮助、思想和创造性的解决方案。

7、少点空洞的赞扬,来点更实际的赞助

许多开源软件是在半志愿(semi-voluntary)基础上开发的,请求捐款绝不是作者在和你开玩笑,他们确实需要资金来进行继续开发。如果你使用了一个软件并且非常喜欢它,为什么不从它为你省下的钱中分出来一点合理的费用捐献给开发者呢?这样他们或许更会有动力来让这款软件变得更完美。

但是这是一个开源世界,钱不代表一切:“我认为许多人更喜欢编程而不是金钱,在志愿者项目中处理金钱关系需要慎重,”Cox表示。“你用来购买一听啤酒或披萨的一点钱就可以让一款软件变的更好。”而且你的名字将永远在软件的“感谢你(thank you)”中被提到。

另外,付费参加开源活动,或加入那些资助推动开发发展的组织,这些都对开源的发展有积极的作用。

8、寻找使用开源模式的其他方式

举个例子来说,Wikipedia创建了通向知识的开源之路,它正在创建一个任何人可以查阅和任何人可以增加的知识库。

这些方式有自己的弱点和优势,下次你使用一个开源知识库的时候,为什么不考虑来帮助完善这些文章的内容呢?你可能有专业建议,或者你拥有一双可以挑错的眼睛,而别人没有这些。

看一下Groklaw,它创造性的使用了开源概念,来有助于使复杂的法律问题变得可以理解。许多公司正在搭建内部的wikis和论坛,以了解它们的员工的真实的想法。

9、报告漏洞——不要仅仅是抱怨它们

我们经常听到有的人使用一个软件的失败经历。只有人们报告软件中存在的漏洞,它们才会被迅速的解决,一个好的漏洞报告是非常有价值的,Cox表示。

需要慎重处理的是,你不得不做一些工作来锁定一个漏洞,理解它,确信它真的是一个漏洞,然后对它进行解释。你这样做的好处是,一旦你提交了这个工作,这个漏洞对软件维护者来说就更容易修复,这样许多人将会受益。

10、全面考虑问题,而且要忠诚

与其他人分享成功的经验,分享你的最佳实践经验和成功。但是伪装成一切都是美好的做法,对开源的发展并不益处,Cox表示:“也要分享失败和具有争论的事情。它可以帮助开源社区知道问题何在,并帮助用户能更清楚的知道何时何地选择开源的效果会更好。”

开源的发展就是基于社区对个人工作的汇集上,在你可以做出贡献的各个层面做一些你关心的某些事情,这将为开源社区中的所有人带来好处。

Related Posts

People who read this, also read...