对于很多小白来说,“开源”总是一个让人一知半解的词汇。什么是开源?开源等于免费吗?通过开源软件我们可以做些什么呢?
今天我们就来聊一聊开源!
开源由何而来
其实早在上世纪60年代,计算机的使用并不普遍,主要的使用人群还是学者和研究人员。当时的商业模式以硬件为主,市面上数量不多的软件都是免费的,IBM等公司开发的软件都是提供源代码的,使用者可以根据自己的使用需求进行修改。
直到上世纪70年代末,源代码被制造商作为软件的核心价值,不再公开,大多数商业软件也只售卖二进制的可执行程序而非源代码。制造商不再公开源代码的行为也引起了一些崇尚自由精神的程序员的不满,其中就包括Richard Stallman。
在1983年,曾在MIT AI实验室工作的Stallman出于对企业垄断源代码的不满,公开发起GNU计划,宣布它的目标是创建一套完全自由的操作系统,这标志着“Free Software Movement”(自由软件运动)的开始。
根据Richard Stallman的观点,软件的研发应该是自由传播和共享的,软件的源代码应该向所有人公开,并且允许所有人自由地对软件进行修改和传播。
“自由软件”和“开源”基本上指的是同一范围。然而从定义来看,自由软件的要求更加严格,换句话说,开源软件不一定是自由软件,但是自由软件一定是开源的,不过这并不妨碍我们从中理解“开源-闭源-开源”这一段历史。
开源到底是什么?
从字面意思来看 open source就是“开放源代码”,但是实际上,开源这一个概念包含的远不止这一层含义。
现在,当我们在谈到开源的时候,它包含意义更加广泛,可以看作是“The open source way”(开源的方式)。其中既包含开源项目和产品本身,也包含治理机制,以及透明协作、快速原型、精英管理、以及面向社区的原则。
除了将软件程序和源代码开放,用户还可以不受限地使用软件,根据自己的需求修改源代码甚至发布一系列衍生产品。
但是开源软件并不等于免费软件,这是两个概念。举个例子,微信就是免费的软件,但是并不是开源的,用户可以免费使用,但不可以对软件进行修改并再次发布。而Android 作为一款开源操作系统,被广泛用在多个商业领域,例如手机、平板、汽车、电视等等。
目前关于开源,其中一个业界主流的共识就是开源促进会(Open Source Initiative,简称为 OSI)给出定义,其中包含10个方面:
1. Free Redistribution(传播自由):不能限制任何人或团体将包含开源软件的广义作品进行销售或者赠与;
2. Source Code(源代码):程序必须包含源代码,并且必须允许以源代码和编译形式分发;
3. Derived Works(衍生作品):许可证必须允许修改和衍生作品,并且必须允许它们根据与原始软件的许可证相同的条款进行分发;
4. Integrity of The Author's Source Code(作者源代码的完整性):只有在程序开发是以修改为目的补丁文件和源代码一同发布的情况下(有完整的修改记录),开源软件的许可证才可以限制源代码以修改过的形式发布;
5. No Discrimination Against Persons or Groups(不得歧视任何个人与团体);
6. No Discrimination Against Fields of Endeavor(不歧视任何领域);
7. Distribution of License(许可证的分发):与软件程序相关的权利必须适用于所有接收方,相关方对于这些权利的获得不需要执行任何附加许可条件;
8. License Must Not Be Specific to a Product(许可证必须不能限制其他软件);
9. License Must Not Restrict Other Software(许可证必须不能限制其他软件): 许可证不得对与许可软件一起分发的其他软件施加限制;
10. License Must Be Technology-Neutral(许可证必须是技术中立的): 许可证不能对任何技术或者接口有预设规定。
世界上最大软件开发平台
目前来说,开源的软件有很多,编程语言方面有Java、Python、PHP,还有操作系统Linux、Web服务器软件Apache、关系型数据库MySQL……
在开源软件中,用户除了免费使用,还具有使用自由、修改自由、重新发布自由和创建衍生品自由,这正好与极客精神不谋而合。而在世界最大的软件开发平台——GitHub中,就有着数量庞大的开发者和开源项目。
根据GitHub的2021年度报告,去年全球新增1600万开发者用户,平台用户达到7300万,几乎近60%来自北美之外的地区。其中,来自中国的用户达到755万,位居全球第二。GitHub上的开源项目首次贡献者数量同样在逐年增长,2021年相较于2020年增加了213319名。
根据官方的介绍,作为一个代码托管云服务平台,GitHub可以帮助开发者存储和管理项目源代码,还可以追踪、记录并控制用户对代码的修改。
在GitHub,你还可以找到很多学习资源和书籍分享,如果你在社区里提问和分享,也会引来其他开发者的“围观”和交流,甚至有人把代码分享出来让其他开发者一起来找BUG。此外,GitHub上还有着非常多的开源项目,既包括实用型也包括有趣型。
例如thefuck项目就非常实用,它是一个使用 Python 编写的开源小工具,它可以自动纠正前一个命令的拼写错误,更多实用有趣的项目你可以在GitHub上进行进一步探索。
开源的开放透明让所有人都可以参与到软件优化创新的协作中,而非仅仅意味着免费软件。如果有人再问出开源是不是就是免费这个问题,或许我们可以用Richard Stallman的话来回答:“GUN代表自由的思想,但不是免费的午餐。”