“开源软件”的实质?

“开源软件”下个粗浅的定义:任何人都能获取源代码而自行修改、使用的软件。嗯,只谈我自己的理解。

1)粗略的历史
早期的软件流行源码“分享”模式,当然microsoft终止了这一切,“Bill Gates”称使用拷贝软件的人为“贼”。“Richard Stallman”是一个类似“宗教信仰”一样执着的人,发布了“GPL”让“源码分享”模式“旗帜鲜明”的延续了下来。GPL之所以成功,是因为包含了GCC等一批“基础”构件,同时也因为GPL本身类似病毒的传染模式。当前最著名的使用GPLv2的软件吗就是“Linux Kernel”。

2)成功的案例
a) Linux kernel
采用GPLv2,世界上开发人数最多的(我猜的)的开源软件,是现代很多“基础产业”的基石,比如Android和90%以上的服务器系统。
b) MySQL
早期使用最多的数据库软件,使用GPL与“商业使用”双协议的开源软件。最重要的是,被以10亿美元卖给了Sun,这简直是最赚钱的开源软件了。当然Sun被卖给了Oracle,MySQL变得“不那么”光鲜了。
c) Apache
已经成长为一个软件仓库的开源组织,主要使用Apache协议。从最开始的httpd项目到变成“二手开源软件”接手库。当前影响力最大的是Java相关的工具库与BigData相关的项目。

3) 为什么开源?
这是一个很复杂的问题,只能从我自己的理解来说。
a) 公司层面
主导的开源软件开发,如果接受“别人”提交的patch的话,那是获得了免费劳动力。其实最重要的是,保证自己在“由此开源软件”所衍生的“生态”产业中占的先机。
b) 个人层面
嗯,简历好看。这就足够了。