Duing的后台经常收到这样的提问:xxx是不是独立开源的项目?巧的是,基本都是我们从来没听过的项目。

随着优秀的开源项目对开发者的影响越来越显而易见,打着“开源项目”的旗号出来圈钱的垃圾项目也越来越多了,为了防止大家上当受骗,我们梳理了一些判断方法,帮助大家鉴别真假“开源项目”。

这里我们先了解一下参与开源项目的几大理由。

改进代码改善功能

大多数的组织和个人首先参与的是他们正在使用的开源项目,主要目的是想让项目/软件变得更完善,更便于自己使用。当然,开发者也可以自由修改自己需要的功能,而无需将代码反馈给整个社区。

然而,许多人会发现,将这部分的工作继续分享才是能让利益最大化的方式。因为如果他们没有贡献这部分功能的代码,会有一个风险是,当项目发布新版本,这些功能可能不再工作,需重新调试。

获取竞争优势提升品牌形象

许多组织和企业参与开源以获取竞争优势。这听起来似乎有点不合常理,因为将代码开源给任何人都可以,怎么会有优势?

然而,实际情况是,当他们的开发人员为项目编写代码后,会比那些只使用的人更加了解该项目。而且有一些公司还能够利用这些专业知识来获得利润。

此外,这种行为也有助于提高组织和企业的声誉,提升品牌形象,特别是在开发者之间的口碑。带来的好处就是利于招聘和留住人才。

图片源自网络,仅做配文展示

支持开源信仰

有些企业会将开源和自由软件的承诺放在其核心价值观之中,甚至将其包括在使命或愿景中。与公司使命和价值观保持一致,也是开发者为开源项目作贡献的一大理由。有些leader认为,开放和自由会让产品,甚至让世界更美好。

如前所述,这种价值观有时会给企业带来额外的好处,比如更强的品牌声誉,更好的招聘和留住员工等等。

让项目更易用

不是只有开发者才能对开源项目作出贡献。项目还需要技术撰稿人创建文档,翻译人员将文本转换为其他语言,设计人员使界面更直观、更具吸引力等等。

事实上,许多开源项目都在积极寻找有这些技能的贡献者。以这些方式作出贡献可以使项目更易用。更好的可用性通常意味着更大的用户群,吸引更多的贡献者,这也意味着能让项目长期保持高质量。

回馈开源

回馈,也是许多开发者在被问及为什么要贡献代码的时候的答案。他们曾将别人开源的代码用在自己的项目当中,节省了大量的时间和精力。

重复造轮子没有意义,大部分的工作已由他人做好。所以从开源中获益的开发者通常愿意“向前付费”,以便未来其他程序员可以体验到类似的好处。

图片源自网络,仅做配文展示

开源的好处显而易见,开源无处不在,虚假的开源也是如此。开源并不是黑白分明的,它包含了开放、透明、协作和信任的多个维度。

对于一些人来说,开放源码是Github上的任何项目,对于一些人来说,它必须通过OSI的定义,对于一些人来说,它必须遵守不成文但普遍接受的开放源码规范。

那么如何正确评估开源项目呢?

知识产权

关于“开放源码”项目的第一个问题是关于知识产权的所有权。即使不了解这些法律含义,也可以通过一个简单的问题找到答案:这个项目是否属于一个你信任的著名的开源基金会?

例如,如果一个项目属于ASF、LF或类似的基金会,他们通常拥有版权,是项目的商标,你可以放心,他们将作为好的管理者,不会在一夜之间改变一个项目的未来方向。

假如一个项目不属于一个有信誉的软件基金会,而是由一家公司支持,那么问题就是你是否相信拥有该权利的公司是软件供应链的合作伙伴。

如果这些问题的答案是肯定的,那么就进入下一部分。而如果答案是否定的,那么你最好调查并找出谁是这个项目的所有者,他们对项目的长期意图是什么,以及对你的潜在风险。

许可证

商标出现在许可之前的原因是,软件的权利持有者(通常是作者)通过许可授予最终用户使用一个或多个软件副本的权限。自由软件许可证是授予源代码或其二进制形式的接收者修改和重新发布该软件的权利的通知。

如果没有许可,这些行为将被版权法所禁止。这里重要的一点是,权利持有者可以改变他们的想法,改变许可证。

图片源自网络,仅做配文展示

权利持有者可以决定在多个许可证下分发软件,或者在任何时候将许可证更改为非开源许可证。也有可能软件是在公共领域,在这种情况下,它不受版权法的限制。公共领域并不等同于开放源码许可证,这是一种我们可以忽略的不太流行的方法。

这里有一个外行的试金石测试许可证:项目是根据OSI批准的许可证列表许可的吗?

如果答案是肯定的,那么您可以依靠这些基金会的尽职调查来审查、分类许可证并指出任何限制。如果答案是否定的,请您的公司律师审阅并解释许可证上的每个单词以及可能的许可证兼容性含义。

基础架构

拥有开源许可证可以从技术上将一个项目定义为开源项目,但这并不意味着一个项目是以开源方式构建的。有许多例子表明,软件是在OSI许可下发布的,但却是在封闭的基础架构下开发的。

说到基础架构,这里指的是供用户快速提问的聊天频道。在论坛和邮件列表中进行更深入的开发人员讨论。源代码管理系统,在其中审查拉请求,并构建运行测试和创建二进制文件的服务器。

社区和采用

开源软件的主要好处之一是它允许伟大的想法得到开发,并像病毒一样传播开来。你可能拥有最好的技术,最宽松的许可证,和开放式开发,但是如果软件没有一个不断增长的社区和不断增长的采用率,那就是一个调查的信号。

不同的项目会有不同的采用率,有些人可能很快成为主流,或者被其他这样做的人所取代。一些项目可能有一个小但持续的增长率和一个持续数十年的利基社区。社区规模和采用率是开源项目的最终寿命指标。

但其实无论哪种情况,都没有适合所有情况的单一评价标准。你必须在长期商业风险、技术稳定性、最新热点、创新和开发者满意度之间找到平衡。

图片源自网络,仅做配文展示

最后说到开源,我们还不得不谈到的另一个问题:我们该如何评估一款开源项目的好坏呢?

1、看该项目开发者的数量和质量。

显然,一个项目拥有可观的开发者数量,且这些开发者都是当前领域的专家,那这个项目无疑是成功的。反之,该项目则很有可能在短期内失去维护,甚至停止更新。

2、该项目是否容易吸纳新的贡献者。

包括项目源码是否容易获得,新的贡献者能否轻松参与项目贡献,项目维护者是否对外来贡献者持开放态度等等。这将决定该项目是否会在短期内改变开源协议甚至变成闭源软件。

3、项目在世界范围内的使用情况。

根据权威的市场调查报告,判断项目在全球范围的使用人数。

例如Netcraft的Web服务器市场报告显示,自年6月以来,Nginx已经取代更为知名的Apache成为部署最广泛的Web服务器。

4、项目相关技术在业内的流行趋势。

例如4年前人人都知道Docker容器是未来的发展趋势,却不知道如何对容器资源进行安排调度。

而如今人人都知道Kubernetes是容器编排领域的不二之选。你必须要知道你的领域里什么技术是热门,什么不是热门。

图片源自网络,仅做配文展示

当然,要全面了解这些情况,并不是一件容易的事情,这可能会让一个初始技术团队在开源技术选型的过程中耗费大量的时间和精力去查阅相关资料。

假开源最终会失败,只有保持对重要的开源项目的



转载请注明地址:http://www.shuiniujiaoa.com/snjxgpw/7147.html