今天,我编译了一次openssl,终于算是独立地完成了对这个软件的编译。我的开发过程一直都是跟着开源软件走的。Linux、Android等等。每个项目的实现都是根据开源软件的代码一步步研究。

然而,开源真的很好吗?显然不是。随着开源的接触逐渐增多,我逐渐发现,其实开源并不是想象中的那么美好。

首先,开源一般是免费的,由于是免费,也就没有资金来源,也就是说如果没有一个良好的社区,很容易造成开源的软件的不可维护。很容易就出现一种可能性:开源软件往往开源了事,没有再升级,随着时间的推移,开源软件的技术也逐渐过时。然后,社区和后期维护支持都是靠着开发者的情怀,而情怀都是再有很多前提的。最让我感到无奈的是,开源软件的文档是极其落后的,编译过程繁琐而复杂。甚至官方的文档或者官方生成的Makefile文件都有问题。而,这个FFmpeg可以说是让我受尽折磨,我曾经搞到凌晨两点也没有搞好。我也终于明白程序员为何老是加班,或许就是软件的结构复杂导致编译总是情况百出。这还不算,软件的编译时候还要看运气,很有可能碰到谷歌和百度都没有记录的问题。

当然,我应该去理解,因为开源软件的情怀,我们只能选择技术的时候选择成熟的、完善社区技术支持的技术。而不是一个刚刚横空出世的技术。开源软件的文档维护、代码整合都是对社区的考验。特别是在没有资金支持的前提下,保证开源软件的版本迭代变得十分难以实现。

开源不能盲从,我们必须审慎,我们可以选择、学习和借鉴,但是一定要基于充分的可行性分析以后才能选择。