谈起开源,我相信各位可以说出目前非常火热的很多开源产品Linux、MYSQL、MangoDB、Memcached、Redis、JQuery、Hadoop、android……,就连曾经对开源持敌对态度的微软都开始拥抱开源:ASP.NetMVC中把开源的JQuery做为默认的JS库、ASP.NetMVC开源、支持Mono(可以看做开源的.Net)的发展、嵌入式系统.NetMF开源。要知道微软曾经把禁止参与任何开源项目做为员工规范的,可见开源的影响力和作用已经越来越大。
但是很多人对开源有着误解:
有人在博客上发布一款自己开发的软件,底下评论就有人喊强烈要求开源;
有人在博客上把自己开发的一个产品的源代码发布出来,标题就是某某某开源啦!;
有人在博客上写一篇一款非开源产品和同类的开源产品对比的时候,底下评论也经常会说开不开源对你有啥影响,所有源代码你都能看到,可你修改过这些源代码?;
有人认为开源就是免费;
有人说开源软件都是网民开发的,质量没有保障,还是商业性大公司开发的软件放心;
有人说不敢用开源的东西,源代码大家都可以看到,那系统的漏洞不也就被人看到了?。
那么什么是开源呢?通俗的讲,开源就是功能大家一起完善,Bug大家一起改的众包协作开发模式。以最著名开源操作系统Linux为例,Linux之父Linus开发出了Linux的初始版本,然后就把Linux以开源的形式交给开源社区去共同维护。没有一个像微软的Windows团队那样的大公司来维护Linux操作系统,都是开源社区的各位爱好者以及厂商去发展和维护Linux:
某个数学牛人A感觉Linux应该有科学计算的功能,因此就自己开发了科学计算的软件包提交到Linux,这样Linux中就有了科学计算的软件包;
另外一个人B用了A开发的这个科学计算软件包,发现还缺少一个自己需要的功能,就把这个功能加到这个科学计算软件包中,然后代码提交到Linux;
微软发现需要给Linux增加访问Windows文件系统的能力,就开发了Linux访问Windows文件系统的功能,提交到Linux,这样我们就可以使用Linux访问Windows文件系统了;
Novell公司想让.Net开发的程序能够运行在Linux平台下,就开发了开源的Mono;
Unity公司使用Mono开发跨平台的游戏引擎Unity3d,他们发现了Mono的改进点,就修改了Mono的代码,并且把修改后的代码提交回Mono;
参与Linux的开发者中,有微软、Novell、RedHat之类的大公司,也有一些小公司及非营利性组织,更有很多的个人爱好者参与;有的贡献者可能贡献了上万行代码,有的贡献者可能仅仅提交了几行代码;有的贡献者增加了重要的功能,有的贡献者也许只是改了几个Bug……也许单个组织或者个人的贡献都不大,但是成千上万的水滴则汇聚成了大海,成就了Linux等这样伟大的开源产品。
如果没有开源,那么系统的所有的功能都要等着它的开发厂商来提供;如果没有开源,系统的Bug只能等着开发厂商来修复;因为Windows不开源,所以除非微软提供,否则我们无法把Windows装到智能电视里;因为Linux开源,所以我们可以把Linux移植到手机中运行;因为.NetFramework不开源(真正的),所以无法在Linux下运行.Net程序;而因为Mono是开源的,我们可以借助Mono来实现使用C#.Net开发Android、IOS应用(MonoTouch是使用C#.Net开发IOS应用的技术,MonoForAndroid是使用C#.Net开发Android应用的技术,而Unity3d则是使用C#开发跨IOS、Android、Windows等平台的游戏开发技术);因为Android开源,所以不需要谷歌提供,就有人把Android移植到X86架构CPU下,这样我们就可以在x86PC机上安装运行Android操作系统。
开源最大的魅力就在于不依赖于某个厂商,大众都可以修改代码以满足自己的需要,千万个自己的需要就汇聚成了伟大的产品,任何违背这个理念的开源都是伪开源。
信息发布:广州名易软件有限公司 http://www.myidp.net