图片 2

开放源码是开源软件吗?

Community
恐怕是人类集体的最小单元了,在这里很多人都可以找到自己的归属感,哪怕它是行政规划出来的区域,又或者是一个自然村,互联网诞生后的在线社区,超越了地域的限制,甚至诞生了开源软件项目这样伟大的人类奇迹,那么一些人选择开源的Community当做自己的归属和生命的意义,是不应该让人感到意外的。

<pre>
开放源码和开源软件的不同是什么?
开放源码不能叫做开源软件吗?
所谓开源,仅仅是指符合OSI定义的Open
Source么?
</pre>

英文作者:Florian Effenberger, 翻译:
开源之道

Open Source的来历

1997年,埃里克·雷蒙(Eric
Raymond)出版其著作《大教堂和市集》,探讨黑客社区与自由软件原则。1998年初,该论文受到极大的关注,为促成网景通讯公司将其受欢迎的互联网套装软件《网景通讯家(Netscape
Communicator)》释放成为自由软件的因素之一。这些代码即为今日大家熟悉的Mozilla
Firefox与Thunderbird。

网景的行动激起雷蒙及其伙伴深入研究如何将自由软件基金会的自由软件概念及优点带入商业软件产业。他们查觉基金会的社会活动不如网景等公司的行动来得吸引人,因而试图重新包装自由软件运动,以强调分享与协作软件源代码的潜在商机。他们选用的新名称为“开放源代码”(open
source),很快地布鲁斯·佩伦斯(Bruce Perens)、出版家提姆·奥莱理(Tim
O’Reilly)、林纳斯·托瓦兹(Linus
Torvalds,)及其他人支持新名称。开放源代码促进会于1998年2月创建,以推动使用新名称,并宣扬开放源代码的原则。

注:以上介绍来源于中文维基百科《开源软件》词条

运作开源项目很容易。所有你需要做的就是让你的源代码可用和开源,对吧?嗯,也许。其实,开源项目是否成功取决于你对项目成功的定义。且不论你是怎么定义的,创建开源项目需要大量的工作。如果你已经有了目标,那么你需要准备投资。虽然开源软件是免费的,但它的创作却不是免费的:你需要往项目中投入时间和精力等宝贵资源。

图片 1

参与开源不仅可以生产制作更好的软件,还可以拥有富足的人生。 ————
Florian Effenberger ,本文作者

OSI对开源的定义

开放源代码的定义由Bruce Perens(Debian的创始人之一)定义如下:

  • 自由再散布(Free
    Distribution):允许获得源代码的人可自由再将此源代码散布。
  • 源代码(Source
    Code):程序的可执行文件在散布时,必需以随附完整源代码或是可让人方便的事后获取源代码。
  • 派生著作(Derived
    Works):让人可依此源代码修改后,在依照同一许可协议的情形下再散布。
  • 原创作者程序源代码的完整性(Integrity of The Author’s Source
    Code):意即修改后的版本,需以不同的版本号码以与原始的代码做分别,保障原始的代码完整性。
  • 不得对任何人或团体有差别待遇(No Discrimination Against Persons or
    Groups):开放源代码软件不得因性别、团体、国家、族群等设置限制,但若是因为法律规定的情形则为例外(如:美国政府限制高加密软件的出口)。
  • 对程序在任何领域内的利用不得有差别待遇(No Discrimination Against
    Fields of Endeavor):意即不得限制商业使用。
  • 散布许可协议(Distribution of
    License):若软件再散布,必需以同一条款散布之。
  • 许可协议不得专属于特定产品(License Must Not Be Specific to a
    Product):若多个程序组合成一套软件,则当某一开放源代码的程序单独散布时,也必需要匹配开放源代码的条件。
  • 许可协议不得限制其他软件(License Must Not Restrict Other
    Software):当某一开放源代码软件与其他非开放源代码软件一起散布时(例如放在同一光盘),不得限制其他软件的授权条件也要遵照开放源代码的授权。
  • 许可协议必须技术中立(License Must Be
    Technology-Neutral):意即许可协议不得限制为电子格式才有效,若是纸本的许可协议也应视为有效。

注:以上介绍同样来源于中文维基百科《开源软件》词条

图片 2

要实现可持续性,项目必需能够负担自身的各项成本。成本包括基础设施成本(如托管和配套服务),以及开发、更新和维护代码库的成本。成本还包含项目产生的治理成本、营销成本和沟通成本。

引言

图片 3

每当我向我的亲友提及我的爱好之时,我就会问及很多的问题,尽管爱好已经成了我的生涯的一部分,作为开放文档基金会执行总监是不是很尴尬?大家问的问题诸如:世界范围的共同体?来自全球的贡献者?一个开源源代码的共同体?它可以吃吗?

好吧,实际上,有时候它确实是可以吃的,讲真,今天我是想和大家分享一下我个人就开源共同体对我来说意味着什么,参与开源不仅有趣而活跃,也有益于整个生活。

从词语分析的角度,讨论“access to the source code”、“open-source”、“开放源代码”、“开源”

在OSI的开源定义的文本中,开宗明义的第一句话就是:“Open source doesn’t
just mean access to the source code.
”甚至在后面的文字里,直接将open-source连接起来,表示这是一个词,而不是2个词组成的词组。

所以,与此类似的,在中文里,我们可以认为:“开放源代码”是一个动词+一个名词。而“开源”则是一个特定的词汇。作为动词,我们说将某某软件开源,是一种行为。作为形容词,我们称某某软件是一个开源(的)软件,不仅仅是指我们能够获取到他的源代码。

从严格意义上来说:当我们判断某某软件是否开源时,首先需要检查的,是他的授权协议,是否符合OSI对于开源的定义。最好,他的授权协议已经获得OSI的认证,我们就不必仔细去分析他的条款了。

但是,如果我们看到一个软件,不含任何授权协议的文本,我们可以确定:“这只是一堆代码,虽然我可以获得代码,但是不是可以任意使用,都无法明确。更不要说算是开源软件了。”

那么,你如何投资这些资源?

很多项目的初始成本是由上级机构、赞助商、投资商或者创始开发者的初始投资来支付的。

早年回忆

回首那些20岁(2003~2004)的日子,我也就是一名即兴的开源软件用户,那时宽带的降价,正在让普通老百姓也可以消费的起,这就让全球的相互联系成为了现实。与此同时,越来越多的自由软件(不止于Linux)开始被安装到人们的个人电脑当中,要知道,在我们拥有用于智能手机和物联网的开源操作系统之前,我们需要自行下载开源的电子邮件客户端、浏览器以及其他日常使用的软件。那个时候之所以使用自由软件,我个人和绝大多数人对于价格的敏感是一样的,仅仅就是自由软件不需要我掏腰包就可以使用。虽然当时我注意到了,这些应用程序的开发是由来自
Community
的人们所驱动的,但是我尚不明白这究竟是怎么一回事,另外由于我个人不是一名开发人员,所以访问源代码并不是我使用开放源代码的迫切原因
———— 即使是我开始撰写代码,无论是软件还是个人,并不能获得任何的优势。

开放源码是开源软件吗?。为什么开放源代码,还需要有一个授权协议?

当我将自己的源代码放到某个地方,供人公开下载。接下来会发生什么事情?如果我是一个老手,由于见多识广的原因,我会估计到,也许会发生很多不同的事情。有些事情,我乐于见到。比如某人给我发邮件,提交bug或者patch。有些事情,我无所谓(或者也没办法干涉),比如某人在自己家里修改了代码,然后自己使用。有些事情,我认为侵犯了自己的权益,比如别人拿了我的代码,却号称是自己开发的,并且删除了所有能够证明是我的劳动的证据。还有些事情,我也很在意,比如:虽然没有侵犯我的权益,却潜在的侵害了这个软件的用户的权益等等。

总之,当一个项目的源代码被公开,哪些事情,我希望发生。哪些事情,我不希望发生。这就需要在一个协议里,被明确的规定下来。

如果发布源代码的人,对此毫不在意,甚至由于“根本没仔细思考过会发生什么”,那么我们会认为,这样的“开源”,的确是不够认真。

在我曾经翻译的一篇《开源项目成功的十条准则》里,第二条就明确写到:“以相同方式共享”是开源的安全带。在遇到严重的事故之前,你大可吹嘘自己完全不需要它。一旦出现事故,你就会发现自己满脸污垢,或者‘轻微擦伤’,不要成为一个“伤员”。使用“以相同方式共享”的许可证吧,如果你觉得GPL/LGPL太过于政治化,那就用MPLv2。

老司机的教训,要认真的听啊!

1、定义成功

但当这些钱和资源都用完了,会怎么样呢?

从用户到 Community 成员

也是在这个时候,我发现了 Open Office
套件,这对于我来说实在是一个非常大的诱惑,我当然迫不及待的将之安装到了我自己的电脑上。更进一步,我除了关注项目的计划之外,我还订阅了该项目的邮件列表,其实,作为小白的我,对于他们讨论什么,是模棱两可的,但是由于好奇我还是坚持下来了,持续的一直在关注着开发的动态。

不知不觉,时间过得飞快,转眼就是一个夏天过去了,秋天如约而至,一年一度的贸易展览季来了,我甚至都不知道自己能够做些什么,就盲目的跑去慕尼黑贸易展览会上,为OpenOffice.org帮忙,在对贸易展览会或软件本身都一无所知的情况下,整个过程我都提心吊胆、诚惶诚恐,但是好在顺利的完成了,甚至还达成了记录非常全面的展览,这对大伙来说非常的不容易。

正是在这次会上,我遇到了现在成为我同事的小伙伴,自那以后,我们保持密切的工作伙伴关系,当时正是他把我招致麾下,他从没有给我那种我是没用的“菜鸟”的感觉。相反,从一开始,我就被视为社区中的一员,感到备受尊敬,甚至觉得自己的意见也蛮重要。很快,我就开始负责做一些我原来从来都没有做过的事情,令我颇为惊讶的是,这一切对我来说都非常的有趣,就这样一路走来,它也改变了我的人生。

太过于政治化的许可证,是怎么回事?

在开源(Open Source)之前,其实另外还有一个重要的先驱,自由软件(Free
Software),在自由软件的定义中,维护软件用户的自由是正义的,限制(剥夺)软件用户的自由是非正义的。

自由软件用户的四项自由是指:

  • 自由度0:无论用户出于何种目的,必须可以按照用户意愿,可以随时随处自由地运行该软件。
  • 自由度1:用户可以自由地学习并修改该软件,以此来帮助用户完成用户自己的计算。作为前提,用户必须可以访问到该软件的源代码。
  • 自由度2:用户可以自由地分发该软件的拷贝。
  • 自由度3:用户可以自由地分发该软件修改后的拷贝。借此,用户可以把改进后的软件分享给整个社区令他人也从中受益。作为前提,用户必须可以访问到该软件的源代码。

正如自由软件的官方文档中所说的:“一个软件只有提供了以上所有的自由给它的用户,才可以被成为自由软件。否则,它就是非自由的。尽管我们也可以比较非自由软件为其用户提供的自由度,但是我们认为,无论如何,非自由软件本身是不道德的。
参考链接

是的,自由软件的核心,在于其包含严厉的道德判断。事实上,在绝对的软件用户的自由背后,开发者的自由,被道德绑架了。

再引用一段:“无论在哪种情况下,只有所有用户使用的代码都满足了这四项基本自由,该程序才能被视作自由软件。例如,有两个程序,甲程序运行的时候会自动调用乙程序。发布甲程序意味着用户必须使用到乙程序,那么必须甲乙两个程序都是自由的,甲程序才是自由的。如果通过修改甲程序,使其不再依赖乙程序,那么仅仅以自由软件的形式发布甲程序即可。”

相比之下,开源软件的相关定义是:“许可协议不得限制其他软件(License Must
Not Restrict Other
Software):当某一开放源代码软件与其他非开放源代码软件一起散布时(例如放在同一光盘),不得限制其他软件的授权条件也要遵照开放源代码的授权。”

仔细的阅读开源软件的定义,我们就能发现,较之自由软件,“开源”是道德中立的。虽然RMS非常痛恨这样的行为,但是我们应该承认,更加宽松的、非道德化的开源标准,更加有助于开发出更多、更好的软件。

在考虑运作开源项目之前,你需要明确定义成功的意义。这里有很多因素要考虑。只将代码放入可公开访问的存储库就可以了,还是说你想对你的项目做更多?合作与采用对你来说重要吗?你只是为了打造作为一名软件开发者的声誉吗?你对成功的定义是否包括长期的可行性?你想围绕这个项目发展一个社区吗?你关心商业采用吗?你对这些问题的回答可以帮助你确定接下来你需要采纳的建议有多少。

初期资金作为一种可行的选择并不是无限期的。到了某个阶段,就必须要开源或者节流。一个可持续的开源项目,其收入或节约的成本必须超过持续支持和开发的成本。

赢得信任

在开源 Community
中做事,与那些大型的、组织结构复杂的机构非常的不同,我几乎可以立即开始做我感兴趣的事情。我能够以一种非常轻松和快乐的方式工作,这反过来又让我觉得非常的有趣。

即使在现在,我回想起来我当初在社区赢得信任的历程,仍然是慢慢的回忆和感动,我很荣幸结识了一位非常好的导师和好朋友约翰·麦克雷什(John
McCreesh),正是他开始的时候对我无条件的信任,从而让我获得了一次表现的机会,使得我可以在后面做更多的贡献。我也非常自豪的说和约翰·麦克雷什一起打造了项目的国际市场,即使是在今天,这样的事情也是非常罕见的,虽然它看起来非常的平常,但正是这样的普通才更能感动。

岁月斗转,我接触了更多的领域,除了市场之外,还负责了网络内容分发、合办组织了会议、并共同创立最有可能是第一个专门为开源社区量身定制的德国基金会。

然而,开源同样被罩上了道德的光环

Open-source是一个好词,虽然没有像Free
Software那样标榜自己的道德属性,这同样是一个好词。open-source是一种值得赞赏的行为,即使最终因为开源,企业能够赚得更多,但是在开源的那一刻,企业是放弃了一部分潜在利益的。

至于个人的开源,那就大多数是无利可图,也就更加值得钦佩了。

在这种情况下,不仅仅是社会上对于开源有诸多褒扬,一旦企业决定开源,肯定会加入到歌颂开源,标榜&自我标榜的行列之中。既然都已经放弃了一部分潜在的“利”,当然得在“名”上面努力的赚回来呀。

于是,整个IT圈子里,会有这种一种氛围:只要一个企业愿意开源,就值得称赞。而且,企业开源,也成为这个企业,变得更加开放,更加“尊重社区”的象征。更进一步的,如果大家发现,这个企业,并非真正开源,只不过赚了名声,却完全没有牺牲利益时。一种感情受到伤害的心态,油然而生。

“伪开源”的道德谴责,也由此而生。

2、透明

在软件开发方面的残酷现实,绝大多数项目不能实现可持续性。开源和闭源项目都是这样的。实际上,任何需要资金支持的活动都是如此。现实证明,绝大多数的创意都无法实现可持续性,而只有少数能够做到。

来自全球各地的朋友

多年以来,通过在开源圈内的积极活动,我有幸认识了非常多的有趣的人,不仅仅是身边的同事和朋友,还有来自全球各地的真实的朋友,我们不仅真心热爱自己的Community,彼此还分享了许多私人时刻和精彩的讨论。

由于地理上的原因,Community
中的人们实际见面的机会非常的少,但是这样并不会影响到我们对彼此的相互信赖。其中最令我印象深刻的是:遇到一位来自里约热内卢的朋友,在2000年左右我们就认识了,我曾经帮助他解决过Linux服务的一些个问题,直到2013年,我们在真正的见上了一面,甚至在整个会面期间,我们并没有促膝长谈,甚至有一些语言上的障碍,但这都没有阻挡我们成为非常要好的朋友,到今天,我们依然保持定期的联系。

企业开源,不是一种道德行为,而应该是一种商业行为

我们曾经听过一句话:“免费的其实是最贵的。”同样的理由:“当一家企业跟你谈情怀,最终他还是想赚你的钱。”所以,如果一家企业声称自己的“开源”或者“赞助开源”,完全不是为了自己的商业利益。我反正是不信的。

相反,我宁愿一家企业,真的理解了以开源为基础的商业模式,并且通过成熟、有效运作,借助商业赚取了更多的利益。这种光明正大的赚钱,值得所有人敬佩。包括商业眼光、技术实力与市场手段!

假设真的有企业家,出于情怀而开源。我倒是会内心充满疑虑。这种事情,他们家真的想明白了?真的能持久?他们的开源软件,真的能够放心使用?

这一点很容易理解:我们要使得社区可以观察和了解你正在做的事情:使用易于查找的可公开访问的源代码存储库,使用面向公众的问题跟踪软件,在社区可以找到的地方公布发布计划,以及在公共论坛捕获会议记录(例如归档邮件列表)。

因此,我们有必要探究为何项目没能实现可持续性。某些情况下,这是因为项目未能达到它所设定的目标。所以,人们便期望能够撤销项目。然而,令人担忧的是,很多项目就算达到了最初的目标,却仍然会无法延续。公共资金支持的项目尤其如此。这类失败通常是由规划不当引起的。也就是说,一开始人们并没有就项目初期资金用完时如何维持项目制定计划,因此也就没有为实现可持续性分配资源。

拓展思维

在全球范围内拥有朋友不仅非常的酷,而且能够为你带来令人惊奇的洞见、拓展你的视野,有助于改进自己的观点。在一次参加完在意大利举办的探讨会之后,我们结伴去往梵蒂冈的路上,约翰曾经评论说:自由软件可以带给人们无穷的魅力。

在去国外参加会议的旅行中,我的当地同事帮助我了解了很多其他国家的风俗和文化。我曾经见过来自极度贫困地区的贡献者,他们都有着非常不平凡的故事,甚至也见过在有着巨大语言障碍的情况下,仍然坚持学习参加探讨的同仁,这常常另外非常的感动,也非常钦佩他们为了抓住机会而勇敢前行。

我在Community
的成员们的身上和经历能够常常获得鼓舞,开源项目是对所有人开放,它不会去区分年龄、专业、以及教育程度。显然,所谓的文化,语言和时间障碍仅存在于我们的头脑中
————
即使有,很明显它们也是可以跨越的。这一点至关重要,尤其是我们身处如此复杂的时代。

结识来自其他文化的人们并了解他们的生活,这有助于我以新的方式思考世界。当我阅读到那些正在遭受暴力和战争的国家和地区的新闻时,我会非常担心那些参与到我们Community的成员,担心他们的安危和生活,那一瞬间,我想到的是一张张鲜活的面孔和熟悉的名字,再也不是匿名的苦难,这让我活的更为真实。

开发者(尤其是企业)可以选择任何一种协议开源

如果我们不但承认用户的自由,也承认开发者的自由。如果我们不但支持用户的利益,也支持开发者的利益。如果我们承认不同的软件,面对着不同的技术与市场状况。如果我们承认,应该尊重开发者对于自身利弊的判断。

那么,开发者(尤其是企业)选择以何种协议开源,是首先应该被尊重的自由。无论他选择GPL、Apache
License还是MIT中的任何一种,都不会比选择其他协议,更加道德,或者更加不道德。更明确的表达是:并不是一个企业牺牲得越多,就越道德,反之亦然。

更进一步,如果他选择的不是任何一种已有的开源协议,而是自行草拟了一份协议。并以此来捍卫自己的特别重视的利益。这也同样无可厚非,无可指责。

因此,当我们声称:某某软件并不是符合OSI定义范畴的开源软件。也仅仅是一种事实陈述,而非道德谴责。

3、开放

所以,结论是显而易见的:要实现可持续性,项目的初始目标必须包括实施可持续性计划。其意味着,可持续性计划应该在项目周期的最开始阶段制定出来。而要制定这一计划,您必须了解自己有哪些选择。

人生哲学

对于我来说,开源并不意味着仅仅是许可证模式、或开发模式,它还是相互尊重的开放心态、信任新手、对他人意见的重视、共同的目标、共同的理想等,开源还涉及数据隐私、民权、自由知识
开放标准等等。我将之总结为这是一种生活的哲学。

和人类社会的许多组织一样,开源项目充满了讨论、意见和差异,很多时候,你会遇见非常厉害的角色,甚至电子邮件有其自身的弊病所导致的沟通上的障碍,尽管如此,也不能阻挡Community成员所进行的开放的、积极的、乐观的态度,这就创造了令人难以惊叹的受欢迎和令人舒适的环境,除了技术方面,它还揭示了事物的奇妙和人性的一面。

是否存在OSI定义之外的开源软件?

这是一个很有趣的话题,我们可以以非常学究的方式来分析,也可以以较为轻松愉快的方式来研究一下。在写这篇文章的时候,我发现了两种许可协议,都非常有趣。

WTFPLDo What The Fuck You Want To Public
License
,中文译名:你他妈的想干嘛就干嘛公共许可证

大概意思是:你他妈的想干嘛就干嘛,以及,如果你改了这个协议,请不要再用这个名字。来源介绍

还有一种协议,叫做BEER-WARE
LICENSE
,你可以使用此软件做任何事。如果我们在某一天相遇了,而且你认为此软件很有价值,你可以为我买一瓶啤酒来答谢。来源介绍

这两种协议,看上去都非常乱来。更加有趣的是:他们都经过了FSF(自由软件基金会)的认证,确认他们是兼容GPL的自由软件许可证。

但是,他们却没有获得OSI的认证。因此,按照OSI的定义,如果有软件使用了这样的许可证,是不能称之为开源软件的。

因此,泛泛而论:我们可以认为存在狭义的(符合OSI定义的)开源软件,与广义的开源软件

但是:我没办法准确的定义“广义的开源软件”。因为太难了!

对于很多开源项目来说,“透明度”和“开放性”意味着同一件事,但其实这两个术语的含义截然不同。开放不仅仅指的是“一目了然”(这与透明本质上是一样的)。对于许多人来说,开源的“开放”意味着开放新思想,或开放参与。参与开源项目的规则对于每个人应该是一样的(“公平的竞争环境”):仅仅接受几个补丁是不够的,你必须对新的思路点子开放。总之,你必须允许别人参与你的项目,放弃对项目的绝对控制。

这里无法列举所有可持续性选择,因为可用的模式和项目创意一样多。以下将简单介绍常见开源软件的可持续模型。

现实生活

在经历了这么多年以来的风风雨雨,开源终于迎来了曙光,这要归功于那些为实现理想而奋斗的人们,并坚持传播自己认为正确的事。在十多年前,在贸易展览会这样的场合中,我们犹如外星人一样被看待,今天已经不存在这样的情况了,开源不仅在开发和许可模式上得到了世界的认可,而且开源已经深深地融入了企业的一个不可或缺的部分。更加令我欣慰的是,越来越多的公司开始了解开源的模式,并为开源做出了积极的贡献,按照Community的原则做事情,因此也成为了开源Community平等的组成部分,一个个的现象说明,开源的模式已经趋于成熟,被世界所接纳。

但是,我对“community”一词的使用越来越多表示怀疑,因为似乎平台上拥有少数用户的任何公司都声称拥有会员资格,哪怕是他们对营销产品比对社区服务更感兴趣。即使这样,我仍然很高兴看到这样的情景,这些公司起码开始关注起来普通的大众。

有中国特色的开源

当开源软件进入中国,当中国的个人与企业,也开始参与开源,甚至发起开源项目的时候,事情变得更加复杂了。

先说说法律问题:在中国,目前“貌似能够”保护开源软件的,是两部法律:《著作权法》与《计算机软件保护条例》,但是在这两部法律中,都没有明确的开源软件的定义。而且,在《计算机软件保护条例》中,还认为“同一计算机程序的源程序和目标程序为同一作品。”但是,发布目标程序与同时发布源程序,明显是两种差异巨大的行为。

在软件著作权人依法享有的权力中,虽然包含修改权。但是,如果在发行或网络传播的时候,不提供源程序,事实上是无法转让或授予他人修改权的。(非编译型的脚本语言,混淆以后的源代码,又是两种需要分析的特殊情况)

再者,“保护条例”中所说的:“软件著作权人可以全部或者部分转让其软件著作权,并有权获得报酬”,其中的部分转让,是否包含“修改权的部分转让”?例如,虽然允许修改源代码,但是代码中关于许可证的注释内容,能不能被删除或修改?

还有就是外国开源软件,包括开源软件的许可协议,是否受到中国法律保护的问题。更进一步,直接采用国外的开源软件的常用许可协议的国产开源软件,是否也能受到中国法律的保护呢?

在我看到的网上的一些分析认为:“将软件开源只是是作者处置自己版权的一种方式,其附带的开源协议只要不与其他法律相违背,当然是合法有效的。开发者将软件源代码发布并附带开源协议的行为,就是向不
特定多数的人作出一个附条件的意思表示,任何人只要使用该软件,就应当理解为使用的行为接受了这样的意思表示,即作者和使用者之间建立了软件授权使用合
同,而开源协议中所约定的条款也就成为了这个授权合同的一部分,使用者应当在该合同项下履行自己的义务。”
参考链接

但是,真正令人困扰的,是一旦侵权行为发生,如何判断?如何寻找证据?是不是开源软件的作者,还需要先去做“著作权登记”?国内虽然的确有一些学术上的研究,但是因为整个法制不够健全,而且也尚未出现“开源相关的真实案件”,因此在执行上还是空白。

在这种现实情况下,一个中国企业选择开源,的确是要冒着“被侵权之后求告无门”的风险的!在放出自己的源代码时,选择更加严格的措辞,更加严格的授权,甚至明明是开源,也先写一句“保留所有权利”,也就可以理解了。

4、保持“公平的竞争环境”

注意,只有极少数项目可严格归为以下某种模型。大多数项目能够实现可持续性,是因为它们将各种模型的要素进行了不同方式的组合;同样,各种模型之间也有共通之处。以下部分仅为您开始制定可持续性计划时提供参考。这些信息使您能够接触到像
OSS Watch 这样了解您所面临的机遇的顾问。
产品开发

开放的未来

尽管已经在开源 Community
待了15个年头,对我来说,每一天的旭日初升,都是崭新的一天,充满挑战的一天,也充满了欣喜。总有一些新的东西能够去发现,也总有更多的机会尝试更多的挑战!

我对开源所带来的一切都充满了好奇和兴奋,这不仅仅是在项目和代码,而且也有用户和决策者们的想法和思考,还有那些我目前无法用语言所表达的东西。我们所有人都是受益者,至少是间接的,这都得益于项目自身所达到的成就,以及项目背后驱动它们的人。

我确信开源 community
将继续带动我走进新的领域,也会为我带来更多有趣的人。能够在过去的这些年参与到开源,我为此感到非常的骄傲,也感到非常的快乐,尤其是置身其中:大家相互尊重、彼此信任、有共同的理想,并致力于推动事情的发展。

正面回答问题

关于文章开头提出的问题,我的回答如下:

  1. 从严格意义上来说:开源软件是一个专有名词,特指选择了符合OSI定义的授权协议的软件。
  2. 另外还有大量的未选择明确的授权协议,或者自行拟定开源授权协议,并开放源代码的软件,同样也是广义的开源生态圈的一部分。
  3. 在国内的法律环境对于开源软件的保护,逐步健全起来之前,盲目要求个人或企业,严格按照OSI的定义开源,甚至严格按照FSF的定义开源,并不妥当。以是否道德来绑架,更不应该!
  4. 无论当前的法制环境如何,选择经过反复锤炼的,成熟的开源协议,其实是对自身开源行为,更加审慎的态度。(如果它保护不了你,你的条款再严格,它也保护不了。但是,如果你自己发明的条款有漏洞,国家法制就算健全也帮不了你。)
  5. 将开源与道德脱钩,既不以道德相标榜,也不以道德相指责。这是对于开源软件,最好的态度!

这并不一定意味着你必须让任何人加入项目,而是要确保每个人适用同样的规则(环境可能是公平的,因此你需要用自己的方法胜出)。英才制度意味着你需要用自己的方式脱颖而出。有些项目实施英才制度,例如,在邀请开发者加入项目团队之前,通过要求他们作出一些贡献,以表明他们了解项目的代码、规则和文化。确保增加新的开发人员到项目中的过程是众所周知的,并且这些流程是透明的(例如公开投票)。

一个从事开源产品业务的公司和其它公司并没有什么区别。就是说,它必须将一部分收入投入到产品研发中。四大类公司有能力从事商业性开源软件开发:

关于作者

图片 4 Florian
Effenberger,自称是一位骄傲的大叔,热爱音乐,一名乐观的巴伐利亚人,自由软件爱好者,拥有14年的从业经历,是开放文档基金会的创始人之一,开放文档基金会是著名项目LibreOffice背后的慈善机构。

本文由作者Florian
Effenberger 发表在Opensource.com上:What
the open source community means to
me,开源之道精心翻译共享。本文在Creative
Commons BY-SA
4.0许可证下发布。欢迎转载!

转载地址:http://ocselected.org/posts/opensource_leader/what-open-source-community-means-me

 

5、供应商中立

为最大限度扩大其付费产品市场而开源软件的服务公司,如支持、培训、定制、搜索引擎和电子商务公司等
想拓展潜在硬件市场的硬件公司,如打印机或手机制造商
使用开源组件的软件公司
采用双重授权模型,同时发行产品的专有版本和开源版本的软件公司

为了实现真正的开放,开发者需要大家认可他们的贡献。如果项目是供应商中立的,那么这更容易实现。供应商中立的项目不由任何组织或机构主导;英才制度应以个人的贡献为基础,不能基于任何特定组织的目标或招聘方法。在供应商中立的基础上托管是实现此目标的一种方式。

一个公司的活动不仅限于以上某一种;同样,每个开源项目的商业化也可由多个公司参与完成。

6、有良好的定义和文件标准

对于服务或硬件公司来说,主要营利方式不是出售软件本身。这样,这些公司就有可能发行受开源许可控制的软件,以便从第三方的贡献中受益。

文档化项目的代码格式规则(使代码格式化预设易于访问),对测试覆盖面、开发方法、软件和所需工具的期望,与项目团队联系的渠道以及针对潜在贡献者的其他重要信息。抓取所有这些信息,使其尽可能容易被发现。在项目源代码存储库的根目录中包含一个贡献指南是一个很好的做法(通过DVCS,潜在的贡献者将找到存储库副本的副本;存储库中的贡献指南可以让潜在的贡献者轻松找对致力于项目的途径)。

对于服务型公司来说,开放软件源代码的动机是相同的。提供咨询和定制服务的公司希望尽可能扩大对其服务的需求,因此发布核心产品的开源版本是一种市场培育方法。此外,提供软件驱动的服务(如搜索引擎、Web
2.0服务或电商运营)的公司有充分的理由来开源他们的软件套件中不具竞争性的部分。这样就可以通过共享开发成本的形式,在初期开发、运营开发和持续维护中节约成本。例如,亚马逊、IBM、雅虎、易趣、Facebook和越来越多的公司在使用
Apache HTTPD Web服务器和GNU/Linux,并为它们作出贡献。

7、确保项目代码始终可构建

至于硬件公司,开源的动力可能来自于拓展硬件市场或降低产品开发成本。例如,打印机制造商可能会开源驱动程序,允许驱动程序被定制到不同的平台,以便扩大其硬件市场。又如,手机制造商可能将开源软件作为核心操作系统,以便与其它制造商共享公共功能的开发成本。

项目代码包含构建脚本和说明。使其尽可能容易地构建成功和测试项目代码。

通过销售软件营利的软件公司有两种可用模型。但每种模型只在特定的开源许可下有效。希望在专有产品中嵌入开源软件的公司可使用所谓“宽松”开源许可(一般称为BSD许可)来实现这一点。与此相反,其它公司对其软件产品采用双重许可授权模式,即采用所谓“公共”许可(如GPL),同时在专有许可方式下销售软件。
非营利性开放开发

8、与用户社区联系

很多时候,由某一组织开发的软件其本身并不创造收益。在这种情况下,该组织可通过开放源代码来降低开发成本。此时,可以考虑成立非营利性组织来管理软件的开发。这样做有两种作用:首先,基础设施成本和管理成本的很大一部分可被此非营利组织吸收。这些成本由使用非营利性组织管理的产品的公司出资维持。其次,这将鼓励更多的组织参与到项目中来,因为他们相信,他们始终可以使用项目产品,并以符合所有贡献者利益的方式管理项目产品。就是说,不存在与项目战略相“冲突”的商业利益,也没有被“买断”的席位能够掌控开发。

用户社区是使用开源项目产品的一群人。用户社区很少直接向项目代码贡献任何东西,但却往往会提出很多问题。确保这些问题得到回答。健康的用户社区可以为采用者社区提供信息。

此类组织的最好例证可能就是 Apache 软件基金会 (ASF),一个领导着如Apache
Web服务器 (HTTPD) 和许多基于 XML 和 Java 的项目的非营利性组织。ASF
由来自公司和个人的慈善资金支持,为 Apache
项目开发人员提供工作所需的基础设施。ASF
的工作由个人来完成,这些人通常是使用 Apache
代码作为内部开发代码或销售定制版本的公司的雇员。

9、与采用者社区联系

例如,Apache Rave 门户框架最初是由学术界和商业伙伴作为 Apache
孵化器的一个项目提出的,后续又成功吸引了大量开发者,并于 2012 年晋级为
ASF 顶级项目。

开源项目取得成功的一个明显迹象是,其他组织开始在他们自己的产品中使用或构建扩展你的开源项目。此社区更有意愿反馈项目,这将是项目最好的贡献来源。有些贡献者甚至将是加入项目团队的绝佳候选人。开发采用者和扩展者的生态系统是延长项目使用寿命的好方法。

非营利基金会的其它例子还包括:

10、与开发社区联系

自由软件基金会
Eclipse 基金会(注意,该组织最初是一个联合会,见下文)
Gnome 基金会
Mozilla 基金会
Python 基金会

开发社区由项目团队成员和贡献者组成。为社区内的沟通提供众所周知的渠道。明确的沟通渠道将有助于开发人员的合作。

联盟

11、有计划

当组织的核心团队就某一项目合作时,可能形成软件维护联合会。这与创建非营利性组织类似(见上文)。联合会与非营利性组织的主要区别是,联合会成员比非营利性组织发起者对项目拥有更多的控制权。非营利性组织会以有利于所有人的方式管理软件,而联合会则以对其成员(和共同利益者)有利的方式管理软件。

很容易就会陷入只专注软件开发的模式,但和任何进程(特别是软件开发过程)一样,有些极致的方法至关重要。确保你的项目采用开发方法,并且有人拥有该流程(例如项目负责人)。制定计划可以帮助开发人员知道他们在哪里可以贡献最大的价值,并使采纳者和扩展者更容易实现他们自己的计划(从而取得成功)。像对待任何其他软件开发项目一样地对待你的开源项目。

联合会模式的一个优势在于,联合会能够通过决定如何使用资源(时间和金钱)来更密切地控制项目。然而,这一事实将减弱项目对非核心团队成员的吸引力。考虑到今日的用户会成为明日的开发者,因而应鼓励用户早期参与,这一点就显得尤为重要。遗憾的是,联合会模式往往使用户感到被排除在外,因为他们不是项目成员。

12、管理品牌

有意思的是,许多以种子资金创立的项目常常以贤明君主模式(benevolent
dictatorship)或联合会模式启动,而当种子资金用完时不得不转变为其它模式。这种转型非常难于控制。

你的项目将有一个品牌。项目的名称是其身份;项目logo以及任何产品的名称也是如此(开源项目的产品通常与项目共享名称,但有些项目会生产多个产品)。声明项目的品牌为商标,并考虑注册商标。制定商标使用指南,以便采用者知道如何使用此品牌。这是一个与开源软件基金会合作可以增值的领域。基金会可以代表社区持有和捍卫项目的商标。这可以避免任何特定的个人或组织劫持开源项目的名称。

DSpace
项目是教育系统中一个成功的联合会项目的例子。联合会模式的其它例子还包括
Apereo 基金会和Kuali 基金会。而 DSpace 和 Apereo
都在转向更开放的模式。
对降低成本的贡献

13、管理知识产权和版权

一个组织选择开源软件产品可能出于多方面的原因。某些情况下,他们这样做是为了实施新流程、提高现有流程效率或者降低软件许可费用。已经采用了开源软件产品的组织可能也会选择向开源项目贡献代码,以获得更多的收益。例如,加入新功能以进一步简化内部流程,或者修复
bug 以提高员工的使用效率。

为项目作出贡献的代码、文档和其他工件都是知识产权。谁是这些知识产权的拥有者呢?作者保留所有权还是指派给了另一个实体?确保所有的贡献者理解贡献者的权利和责任。考虑让贡献者签署开发者原产地证书(DCO)或贡献者许可证协议(CLA)。确保版权声明包含在源代码和通知中。

在这种情况下,回馈项目的主要动机有两点。首先,通过回馈项目,该组织可确保所依赖的软件保持活跃。其次,通过回馈项目,该组织可确保未来的升级尽可能顺利,即升级后不必重复进行本地修改。

请注意,项目本身不可能作为持有版权的法律实体。这是另一个开源基金会可以提供有价值的服务的地方。

例如,APLAWS
开源内容管理系统就是为帮助英国地方政府提供在线服务而开发的。
教育和研究资金

14、选择OSI认可的开源许可证

英国以及世界许多其他地方鼓励教育机构在开源许可下开发软件。大专院校的开源项目资金可能来自投资机构或学校自身。只要机构可以获得直接利益,投资,即便不是全额,也很可能会一直持续下去。

不要创建你自己的自定义许可证;这将为任何想要使用你代码的人增加法律障碍。确保你选择的许可证与你打算使用代码的方式兼容。此外,请确保许可证与你的项目代码所需的任何第三方内容(例如库)兼容。在所有源文件的标题中包含许可证的SPDX代码。

机构可以多方面受益。最大的好处可能就是,内部成本的降低和在为更广泛的教育界做出贡献方面提升声誉。此类项目的一个例子是剑桥大学的
Exim 项目。菲利普•黑兹尔自 1995 年 Exim
项目开创起即负责此项目,在剑桥大学计算机系任职期间他持续服务此项目,直到
2007 年退休。这类项目的另一个例子是南安普敦大学的 MailScanner
项目,大学雇员朱利安•菲尔德是该项目的“贤明君主”。

15、将项目移到开源基金会

开放开发已证明是具有不同利益和专长的各方的有效合作方式,尤其适合于开源软件开发。在商业领域,我们看到人们对“开放式创新”这一理念具有广泛兴趣,认为这是开发新产品和现有产品的有效方法。通过精心规划和管理,开放式创新提供了一种可控、可管理的流程,鼓励商业开发和社会推广,而项目学术研发团队只需专注于局部问题,而非商业计划。例如,Apache
Wookie 由博尔顿大学开发,却吸引了大量其它学术外领域的开发者,并于 2012
年成为 Apache 顶级项目。
慈善家和其他基金组织

前面已经提到过几次基金会。基金会首先可以帮助你保持项目供应商中立,这将有助于采用:开源软件的魅力大多是因为采用者可以避免被某个特定组织所关注。基金会可以坚持和保卫项目的商标,建立治理模式,帮助你管理品牌,提供知识产权管理服务,并为运营成功的开源项目提供常用的帮助和建议。成为开源基金会的一部分可以提供有价值的反馈循环。基金会可以为你的开源项目提供可信度,然后,开源项目反过来可以为基金会提供公信力。

多个慈善组织是开源项目的重要投资者。这些组织包括:

运作开源项目包含很多工作。但是,正如我们所建议的,它所需要的工作量取决于你对项目成功的定义。总而言之,开放源码开发的核心原则:透明度,开放性和英才制度。其他一切都由此衍生。

梅隆基金会 – 主要资助图书馆领域的重要工作
Google Summer of Code – 由 Google 运作的项目,用于资助学生参与开源项目
自由软件协会 – 为免费和开源软件项目募集资金的慈善机构

【编辑推荐】

志愿者

参与开源软件项目很有教育意义,更不必说其乐趣了。因此,在业余时间为开源作贡献的人并不少见。除以上模式之外,志愿者的工作也是很重要的,大多数开源项目都有志愿者参与。

目前,项目可通过多种方式使用免费基础设施获得托管和相关功能(如问题跟踪和社区参与),此类资源有
SourceForge 和
GitHub。这意味着,只要项目能得到来自可靠社区的开发和发布支持,便可以零成本可持续发展。

(志愿者)用户对于开源项目同样很重要,因为用户会提出需求并进行测试。只要您能够管理用户对特定版本的期望,就能发行开源软件试用版或早期采用者版本用于测试,这便可以大大降低稳定版本发行前的成本。

OSS Watch
文档如何建立开源社区切实地介绍了如何实际创建一个包容、多元的开源社区。