源代码是大多数计算机用户从未见过的软件的一部分,软件开发人员可以通过修改源代码来改变一个应用程序的工作方式。
开源软件(Open-Source Software,缩写OSS)是一种在开源协议下源代码可以被任意获取和修改的计算机软件,这种软件的作者在软件开源协议的规定下保留一部分权利并允许任何使用者修改和重新发布软件(重新发布的软件也要遵守开源协议),同时任何组织和个人都可以免费使用开源软件。
与开源相对应的闭源软件仅可获取编译后的二进制可执行文件,只有拥有软件著作权的自然人拥有程序的源代码。部分开源软件代码被发布到公共互联网上,被世界各地的开源拥护者合作开发,诞生了很多伟大的软件产品,比如,Linux、Android、TensorFlow等。并且,不是只有软件开发人员才能从中受益,普通用户也可以将开源软件用于任何他们想要的目的。
现在开源软件的开发已经受到了如此多的关注,但是为什么软件开发者要免费向社区提供他们的服务呢?显然,利他主义并不是唯一的答案。
事实上,只有当一个软件开发者能够从软件项目中获得一些净收益时,才会参加到这个软件项目中,这个收益可以是直接的回报(当前的利益减去当前的成本)或者是延迟的回报(延迟的利益减去当前的成本)。
延迟的回报比如有,与开发者未来的职业发展有关,当你开发的软件非常优秀,则更容易被大公司注意到,从而有更好的职业发展平台;或者来源于自我满足,软件开发者所完成的有价值的工作,可以得到同行的肯定等等。
除此之外,营造良好的开源环境,大大有助于开发人员避免重复“造车轮”的低效开发行为。
1. Linux
Linux是一个自由和开放源代码的操作系统,是目前运用领域最广泛、使用人数最多的操作系统。只要遵循GNU协议,任何个人和机构都可以使用Linux的所有源代码,也可以修改和再发布。Linux被看做开源软件发展中最著名的例子,现在其市场占有率也是位居首位,这得益于它的开源。
2. Android
Android是一个基于Linux内核的开源移动终端操作系统,谷歌以Apache License开放源代码许可证的方式授权,发布了Android的源代码。由此,各大手机制造商和运营商纷纷加入到Android阵营中,并通过与运营商、设备制造商、软件开发商结成深层的合作,建立了标准化、开放式的移动终端硬件与软件平台,在移动产业链形成了一个开放式的生态系统。
3. TensorFlow
TensorFlow是一个用于深度学习的开源软件,其提供了Python和Java的接口,用于建立各种机器学习的模型,比如卷积神经网络、循环神经网络等。目前已被超过五十个团队用于研究和开发,许多谷歌商业产品,如语音识别、Gmail、谷歌相册和谷歌搜索都应用到了TensorFlow。
由上述开源软件案例可知,软件开源对行业的发展有着积极的推动作用,开源是信息技术发展引发技术革命所带来的面向未来的方法创新,是以人为本的创新模式在软件行业的具体体现。但是,也并非应该将所有的软件都开源,在软件行业的发展过程中,开源和闭源各有优势,它们将长期共存,共同促进软件行业持续、健康、稳健的发展。
以上观点仅供参考,欢迎大家关注交流!
作为IT行业的 老鸟,这个问题我不断和身边很多朋友交流过,而且我也是很多开源项目的发起者,所以对这个问题还是很有一些发言权的。这个是我发起的开源项目,到目前为止,已经搞了低代码、在线文档、项目管理等多个开源产品,正好借着这个问题做个总结。
开源地址:
从目前的结果来看,国内的开源项目其实缺乏行业的顶层设计, 因为纯粹的开源项目很难持续化的优化迭代,缺乏类似开源基金会的这种 行业投入的扶持,那么国内的开源变成了 商用项目的引流和开源项被迫商用转型2总模式,其实两种模式和纯粹的行业开源促进都不太相符。
所以我其实挺希望能让一些大厂,构建一些对开源项目支持的基金会,这种情况下,才是有利于行业开源的正向发展。