嵌入式学习:开源与闭源

开源指的是那些源代码或源设计可以被大众使用、修改发行的软件或设计体,闭源就是不开放源代码。

Linux 无疑是开源软件里最最成功的一个,不管是从它目前的生态建设角度,还是从业界评价来看,包括今天云计算的基础也都倚赖Linux的贡献和基石。当然,像OpenStack、Hadoop 、Spark等也非常成功,这些开源项目都属于底层技术,在支撑今天整个大数据、云计算的发展。

开源并不意味着免费,开源只是说我们做了一个好东西,把它开放给大家使用,目的是希望大家更多地使用它,并反馈使用过程中的问题或者改进方式,使得整个开源项目进步得更快,能够更好地共享给更多有需要的人,目前像 Linux、Hadoop、Spark等等,都是这么做的。但很多时候开源背后还是带有很浓厚的商业背景。

做得比较大的开源项目背后都有商业公司在支撑,如果一个成功的开源项目背后没有商业公司,这是不健康的,我们需要开源和商业之间的互补对称来促进整个社区和技术的不断前进答,这是一方面。

另一方面,从开源用户的角度来看,“开源是不是免费的”其实也是一个伪命题(这里的用户指的是所有使用开源产品的企业或者个人)。开源看上去是不需要花版权的钱,但其实企业用户招聘合适的开发人员、运维人员把这个事情做完,成本可能比买商业版本更高。

从商业价值的角度来说,开源毋庸置疑已经是基础技术领域的必然趋势,没有开源的基础技术是没有生命力的,因为它很难被广泛使用。在商业上,一个开源项目被大范围使用后,可以使得整个技术升级换代成熟起来变得非常迅速,过去可能要经过三年、五年、甚至十年的时间去进化,因为开源的力量,在短短几个月内可能就完成了。从另外一个角度来说,开源的壮大又会反哺支撑商业,毕竟还有很多客户都是希望获得商业的支持和价值。

对于开发者来说,开源与不开源很大的一个区别在于,你是一个孤军奋战的人,还是一个可以跟全世界最优秀的开发者在一起的人。因为如果你做一个闭门的项目,你所能够沟通的、接触的资源受应用场景的限制,会非常有限。但如果你是做开源项目,不管你是自己领导开源还是参与开源,你都可以和全世界最优秀的开发人员一起来玩技术,一起在社区探讨交流,这样对于自己的成长是飞速的

我们想象一下一项任务的开发如果没有开源的话,想要让这个系统的所有的功能得以实现这整个过程都是要由等着它的开发厂商自己来解决的。而系统中自己产生的一些BUG,也只能等着开发厂商来修复,如果开发厂商本身没有发现,这些BUG就会永远的存在。

所以由此看来开源和不开源的区别还是非常大的,它的作用也是很大的,开源最大的魅力就在于不依赖于某个厂商,大众都可以修改代码以满足自己的需要,千万个“自己的需要”就汇聚成了伟大的产品,任何违背这个理念的开源都是“伪开源”。

开源不是简单的公布源代码,如果有个人将自己开发的一款源代码公布到网上之后,并没有通过git、svn等把源码管理起来,而且之后的修改汇总管理也是无人问津的,只能是提供对这个软件感兴趣的人进行下载,然后自己在做进一步的修改,让自己用,这样没有做出贡献的开源,就失去了开源背身的价值。

对嵌入式物联网感兴趣的小伙伴,可以多了解一下相关信息。(看过来)

你可能感兴趣的:(学习,开源,大数据)