开源软件已经像水和电一样融入到了我们日常的生活中,但我们对开源软件还有很多错误的认知。我尝试站在开源软件作者的角度来进行总结,总共有七大错误认知,今天跟大家分享其中的三个错误认知,分别是:

  • 只要软件开源了,就会有人用;
  • 我又没收你钱,开源软件的漏洞与我无关;
  • 开源软件应当使用最宽松的协议。

首先来看第一个错误认知:只要软件开源了,就会有人用
很多刚开始从事开源软件开发的作者,会有这样的想法。认为我只要把软件开源出来,就会有人来使用。但事实上一个软件有没有人用,首先看它有没有价值,而不是先看它是不是开源软件。开源软件首先是一个软件,开源是其定语。所以从这个角度来讲,开源软件不会超越软件本身的属性限制,要先有用。在这个基础上,再进行开源,可以为用户带来增强的附加属性。

这给我们的提示就是在做开源软件之前,要认真思考软件的定位:

  • 这款软件要解决的问题是什么;
  • 它的目标用户是谁;
  • 和市面上其他软件相比有什么优势;
  • 如何进行宣传推广。

第二个错误认知:我又没收你钱,软件有漏洞、问题跟我没关系
开源软件许可协议通常会包含类似这样的条款,表明作者不对用户使用该软件所造成的任何问题负责。比如GPL V3的第15条款,就是这样的声明:

  1. Disclaimer of Warranty.
    THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM “AS IS” WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.

中文版本:
本程序在适用法律范围内不提供品质担保。除非另作书面声明,版权持有人及其他程序提供者“概”不提供任何显式或隐式的品质担保,品质担保所指包括而不仅限于有经济价值和适合特定用途的保证。全部风险,如程序的质量和性能问题,皆由你承担。若程序出现缺陷,你将承担所有必要的修复和更正服务的费用。

这份协议还特意用了全大写的方式来声明。但是自2017年《中华人民共和国网络安全法》正式实施以来,这样的声明就不再有效了。

《中华人民共和国网络安全法》第二十二条规定:

网络产品、服务应当符合相关国家标准的强制性要求。网络产品、服务的提供者不得设置恶意程序;发现其网络产品、服务存在安全缺陷、漏洞等风险时,应当立即采取补救措施,按照规定及时告知用户并向有关主管部门报告。

网络产品、服务的提供者应当为其产品、服务持续提供安全维护;在规定或者当事人约定的期限内,不得终止提供安全维护。

网络产品、服务具有收集用户信息功能的,其提供者应当向用户明示并取得同意;涉及用户个人信息的,还应当遵守本法和有关法律、行政法规关于个人信息保护的规定。

第六十条规定:
违反本法第二十二条第一款、第二款和第四十八条第一款规定,有下列行为之一的,由有关主管部门责令改正,给予警告;拒不改正或者导致危害网络安全等后果的,处五万元以上五十万元以下罚款,对直接负责的主管人员处一万元以上十万元以下罚款:

(一)设置恶意程序的;

(二)对其产品、服务存在的安全缺陷、漏洞等风险未立即采取补救措施,或者未按照规定及时告知用户并向有关主管部门报告的;

(三)擅自终止为其产品、服务提供安全维护的。

所以各位开源软件的开发者们,一定要认真理解这个法律的条款。我们已经收到过五次公安部下发到青岛市网警的漏洞整改通知。具体细节就不跟大家讲述了。这给到开源软件作者们两点警示:第一个就是一定要及时处理自己产品的相关漏洞,另外一点就是认真思考开源商业化方面。

第三个错误认知:我应当选择最宽松的开源软件协议。
许可协议是开源软件的法律基础,它规定了用户可以如何使用、修改和分发软件。有些人错误地认为,选择最宽松的许可协议可以吸引更多的用户和贡献者。然而,许可协议的选择应该根据具体情况进行权衡,并考虑到软件作者的目标和需求。

比较宽松的许可协议限制比较少,如MIT和BSD许可证。这些许可协议几乎没有限制,允许用户自由地使用、修改和分发软件。然而,这也意味着其他人可以将开源软件用于商业目的,甚至将其更改后的版本作为专有软件发布,而无需向原作者贡献任何代码或修改。对于一些开源软件作者来说,这可能不符合他们的意愿和目标。

相比之下,像GNU通用公共许可证(GPL)这样的许可协议对代码的再分发和修改设置了更严格的限制。它要求任何使用或修改GPL许可的软件的派生作品必须以相同的许可证开放源代码。这样可以保护开源软件的自由性和共享精神,防止将其私有化。

因此,在选择许可协议时,开源软件作者应该考虑到他们的目标、期望用户和社区的需求,并选择合适的许可协议来平衡开放性和保护性的要求。

以上是我总结的关于开源软件的七大错误认知上篇,下周我会接着和大家分享接下来的四个错误认知,分别是:

  • 我应当努力将软件捐献给基金会;
  • 开源之后会有很多人帮我来完善项目;
  • 我开源不是为了钱;
  • 开源软件靠服务和捐助可以赚钱。

敏捷开发
1 声望2 粉丝

致力于分享、推广敏捷开发相关知识及项目管理实践!