简单来说,开源”open source”的精神,就是一种尝试,试图解决以下的几个问题:
【1】重复劳动:对于闭源的软件,对于反复出现的功能,可以封装为模块,实现代码复用,但是当其他公司或组织或个人需要用到这些功能时,就必须解决几个问题:有没有足够的钱去买?买了是否有很好的技术支持服务?过期了,自己不想升级新技术,那么老的技术还能不能得到支持?
对于很多人来说,买了闭源的软件或功能模块,往往都要面对上面的问题,那么大部分这些问题的答案可能都是:彻底完蛋。比如现在delphi的技术支持在哪里?
所以不少人就逼得自己去重新实现那些功能,这还不完全是重新发明轮子,这实际上就是完全的重复劳动。
而开源的代码完全没有这些问题,开源意味着作者完全不需要进行负责,而所有接受开源的人则自己负责进行自己的维护,所以:首先不要钱,其次技术支持就是自己在搞(对于买闭源产品的来说,只能等待),过期也没问题,因为其代码完全开放,所以自己也能进行维护。
【2】技术的累积创新:对于某些技术实现,一开始总是不完美的,对于开源软件来说,无需一开始就完美,最主要是先把一个技术实现搞出来,公布出来,感兴趣的开发者,自然会汇聚起来,然后互相贡献新思路、新实现,并完善实现以及解决漏洞。
对于闭源的软件来说,因为一开始就卖钱,所以用户就期待没有问题的版本,一旦出问题就开始骂了,而用户对于这个软件没有任何修改的权力,只有提交问题的权力,对于某些小众的需求,可能整个软件周期都不会有人回应你的问题。
【3】重复发明轮子:这个和【1】不同,【1】是为了完成某个功能而重复实现,而且实现的方法都一样,而这条讲的是重复实现功能,而其实现的方法不一样。
比如并发的需求,可以多进程,多线程,或者异步技术,对于闭源的产品来说,由于成本和人力的问题,所以几乎都会有一个侧重点,这可能就意味着某种实现在一定时期就彻底被放弃了。
而开源的精神,就是你可以在大众已经提供了完整框架的情况下,只针对局部的实现进行改进,这样就可以不断推进技术的进步。
