请选择语言

您会为开源项目贡献代码吗?

正文大纲
  1. 软件是一项有版权的工作
  2. 您是版权持有者吗?
    1. 如果您是版权持有者
    2. 如果您不是版权持有者
  3. 从哪里开始呢?
  4. 一个更好的方法

Randy Metcalfe 写于 2006 年 7 月 3 日,最后一次更新于 2013 年 11 月 8 日 您已经写了一些代码 您为您关注了一段时间的项目写了一些代码。您参与到了用户邮件列表的讨论中,也默默关注着开发者的讨论邮件列表。您也从每日构建仓库中下载了源码,您也在您认为需要调整的某些特性写了些代码。 您是否可以将这些代码片贡献到项目中去呢?

软件是一项有版权的工作

软件的源码是受版权保护的。一旦您的想法出现在固定的媒介上,纸质的或电子的,就会受到版权保护,代码的版权也是如此。

版权持有人可以以自己认为合适的方式处理自己的这些资料,这包括各种不同的授权方式。

开源软件的代码发布前是需要经过 OSI 认证的。如果您想让您的代码在项目中使用,您必须要找到合适的授权方式进行许。有两种方法实现:

  • 将代码的版权移交给项目

  • 通过合适的方式将代码运用到项目中

有些项目会要求指定版权,这样以来,在他们今后有关版权处理的问题会变得容易解决。这也是方案之一。

大多数项目只需要您将代码,以与项目许可相兼容的方式授权许可即可。

以上两种情况存在一个相同的约束:仅有版权持有人拥有重新分配版权和许可他人使用其版权资料的权力。

您是否有权许可这份受版权保护的资料呢?

您是版权持有者吗?

大多数的雇员通常不是其在工作中所编写的代码的版权持有者。当然,这也会因组织或其在组织中的角色不同而不同。请注意:即便是您在家里写的代码,也并不表明您拥有对此代码的版权;有关细节,还是应当以雇佣条款为准。

您是否是版权持有者,用工合同应当做出了相关的说明。如果没有,您应当咨询用工合同中引用的相关机构政策,如知识产权政策。如果您是一名学生,您需要查询相关的助学金协议或大学章程,因为您的学校可能会在这里声明您在校期间的所开发的内容版权属于学校。

在后续操作之前(甚至更早),您应当确定谁是版权持有者。

您是实际版权持有者吗?

如果您是版权持有者

如果您对自己的版权资料拥有实际的版权,那么恭喜您!您可以按照您的意愿处理自己的知识产权了。包括将其授权应用于一个开源项目。您甚至可以将其分配到正在讨论的项目中,或是赞助该项目的上层组织(如自由软件基金会)。

如果愿意,您甚至还可以双重许可您的代码。具体地说,您可以以一种许可方式授权某人或某组织,同时以另一种方式授权另一个人或组织。因为您对自己的版权资料拥有绝对的处理权,所以这也是情理之中。

如果您不是版权持有者

如果您不是版权持有者,您就必须征得您雇佣合同上注明的版权持有者的同意,以处理相关受版权保护的资料。

在我们的例子中,为了将您的代码贡献到开源社区,版权持有者必须明确授权您贡献其所持有的版权。然而,需要指出的是这其本身的版权不会产生影响。

贡献到开源社区的代码通常会保持原著作人的版权。如果需要移交版权,就必须启动一个更正式的程序。这通常会需要交换法律文件,从而将版权移交大另一方。其过程相当繁琐,因为也极为罕见。

但是,即使没有移交版权,在代码贡献到开源项目之前您也必须先获得同意授权。除此之外,您还需通过贡献者许可协议的形式来提供同意授权证明。

您应当如何让您的雇主或机构,同意您向开源项目贡献其版权所属的资料呢?

从哪里开始呢?

通常来说,在您的组织里,会有专人负责知识产权。或是法务部门,或是研发部门,对于小组织来说也可能是某位经理。然而,您最好是先咨询下您的直接领导,请他(她)帮助您将请求转达至有关负责人。

如果运气好,您的经理或部门负责人即有权对此做决定。

如果没那么幸运,您的经理或部门负责人没有直接的权力,但至少可以告诉您所在组织内的一系列的程序,从而帮助您获取相关许可以将代码贡献到开源项目中去。

这可能意味着您要和法务部门打交道。他们通常会讨论这项知识产权的价值以及将其发布后要承担的责任。

遗憾的是这其中涉及到的步骤可能会很多,且各个组织各有不同。并且其结果也是难以预料。

一个更好的方法

具有前瞻性的机构会意识到,代码的贡献,无论是代码片的形式还是重大的模块的形式,是与开源项目展开机构合作的重要环节。那么如何优化这一过程?

例如,当 Open University (英国国家高等教育机构)为其未来的虚拟学习环境(VLE)选择 Moodle(用于制作网络课程或网站的软件包,一个全球性的开源项目)时,也参与到了 Moodle 的可持续发展中,结果为开源开发带来了大笔量化、受控的投资。开放大学在这个项目中的贡献不仅仅是让 Moodle 更加强大,也是机构参与开源社区的典范。

另一个例子是剑桥大学参与到 Sakai(一个自由、开源的在线协作和学习环境)项目中。在 Sakai 的早期阶段,项目侧重于为参与到项目的教育机构创立管理框架。主要的目标在于保证软件及时按照优先级次序进行发布。然而,在 Sakai 的试行期间发现,对于项目的整体可持续性发展而言,统筹各个机构进行项目开发和代码贡献极为重要。剑桥及其成员伙伴认为,创建以共享代码为核心的社区非常重要。随着他们的不懈努力,项目进入了更开放的发展模式

本文由 OSS Watch 原创并经由Creative Commons Attribution-ShareAlike 2.0 England & Wales license许可证发布。