clipboard.png

早在 2019 年的 GitHub Universe 大会上,GitHub 官方就宣布,他们即将推出移动端 App。而近日,GitHub APP 终于问世了。

作为世界上最受欢迎的同性交友网站,在发布之后自然是喜大普奔,但在此之外,也有很多开发者提出功能不太全面,希望可以添加比如代码编辑之类的其他功能。

对此,有热心的开发者留言建议,建议将 GitHub 的移动应用程序开源,大家一起来进行优化。

对于此事,GitHub 的总监给出了回复。

GitHub 的移动应用程序会开源么?

clipboard.png

对于这个问题,GitHub 的工程总监 Ryan Nystrom 给出了两个回复:

"It's not right now。"

"Maybe."

开源是现在的一个大趋势,虽然有很多软件确实是不需要开源的,但作为全球最大的开源软件平台,自己的产品不应该开源么?

当今很多开源项目的开发都是在 GitHub 上或者通过 GitHub 进行的。对于这一开发者用来“吃饭”的工具,改善 GitHub App 的使用体验能有效的改善开发者的工作效率和方式,所以如果该项目真的开源,一定会吸引很多开发者参与其中。

但 Ryan Nystrom 之所以不急于开源或者不“期待”开源的原因,是他认为要想让开源项目蓬勃发展,既要有对其感兴趣的开发者群体,也需要该群体具备足够的能力来为项目作出贡献。

我们可以看一下 Linux。Linux 的开源之所以做的好,是因为每个开发者都需要这样的一个操作系统,并且有相当一部分人有能力对其作出贡献。

但根据业内分析师给出的分析,假如 GitHub 推出一个收费程序,那么开发者的兴趣就会大幅降低;如果 GitHub App 的开源项目只是通过加载项/扩展的方式进行开发,那么 GitHub 项目的开源就没有太大的意义。

所以 GitHub 总监说的“Maybe”,可能真的就是个“Maybe”了,毕竟没有人比他们更了解开源能带来多少价值。

开源的定义

clipboard.png

开源的概念,在电脑诞生前就已经出现了。最早的开源可能是发生在「吃」的领域,为了生存下去、提升食物的品质,人类学会了分享食谱。而目前对于开源比较认可的定义,由 Debian 的创始人 Bruce Perens 提出:

  • 自由再散布(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):

意即许可协议不得限制为电子格式才有效,若是纸本的许可协议也应视为有效。

在软件产业中,免费软件、开源软件与自由软件的概念常常被不同程度地混淆起来,一般人并没有理顺其中的逻辑关系,造成了一定的误解,也引发了不少的错误决策。

但其实简单来说,免费软件不一定必然开源,开源软件不一定必然免费。这点大家都很好理解。

严格地来说,开放源代码软件与自由软件是两个不同的概念,只要符合开源软件定义的软件就能被称为开放源代码软件(开源软件)。自由软件是一个比开源软件更严格的概念,因此所有自由软件都是开放源代码的,但不是所有的开源软件都是“自由”的。

虽说自由的态度就是要激励打破牢笼穿越围墙迎接思想的开放,努力分享展示自己的技术、原理,而不为了蝇头小利而对自己所谓的“技术”沾沾自喜而固步自封,但自由软件是否一定免费呢?

也不能一概而论。

每一位自由软件的贡献者当然是此软件的开发者和免费使用者,但对于普通用户而言,就不那么确定了。普通用户一般需要的不是软件而是服务,软件也许是免费,但是服务就从来都不是免费的了。

开源的价值

对于很多人来说,提到开源想到的就是「免费」和「非专业软件」。但实际上,随着开源的发展,现在的「开源」已经成为技术发展最好的生长模式之一。

可以这么说,如果没有开源,很多的科技企业都不能达到今天的行业高度,比如谷歌、Facebook 和我们前面提到的 Linux。

为了让更多人能够使用优秀的产品、让技术或者项目能够群策群力、快速的发展升级,都离不开开源带来的价值。

美国的科技企业之所以热衷于开源,和文化有很大的关系。如果一家企业没有开源项目,会被质疑这家公司只会一味的索取,而不为行业和生态做出应有的贡献。

所以从企业层面来说,开源一方面可以树立品牌形象,另外还可以通过开源项目吸引人才,招揽员工。往大了说开源对于企业甚至具有一定的战略意义。

比如 Android,最初就是通过开源和病毒式的传播一下就赶上了 iOS。

从个人层面来说,尝试开源也有着两个比较突出的意义。

第一是有助于提升自己的代码水平。既然是开源项目,那么在写代码的时候一定会尽量的展现自身最好的水平,这会逼着自己让代码更简洁、易懂。其次,你的代码开源后,别人也能针对性的给你提出一些建议,帮助你进行代码的优化。

其次可以通过开源项目展示个人的能力。虽然现在 GitHub 已经快被「别有用心的人」给玩坏了,但对于企业招聘来说仍然具有一定的参考价值。如果个人有个不错的开源项目,那么在面试的时候一定是个不错的加分项。

对于开源,你怎么看?

如果你有自己开源项目,可以和我私信进行交流,我们会定期对社区用户的优质开源项目进行推荐。

参考资料:

《GitHub's mobile app to go open source? Definitely "maybe"》:
https://www.techrepublic.com/...
《免费、开源与自由》:
https://www.jianshu.com/p/eab...