Last active
February 18, 2019 14:35
-
-
Save codethereforam/0dfbd6950d4b55f351c8703d8954c8eb to your computer and use it in GitHub Desktop.
开源的坑
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
我们使用开源软件大部分情况是为了不重复造轮子,使用一些别人写好的具有通用性的代码来减少我们的代码量,提高开发效率,减少开发成本。而且使用一些优秀的开源软件会比我们自己开发的好,毕竟它们被很多人使用,经受了很多人很多次的检验。 | |
但是,有些开源软件却很坑,用它们到最后发现有不断的坑,到头来发现不如直接用底层的、未封装的API,或者自己开发。下面说些应该避免的坑: | |
1. 社区小(比如GitHub的star少)的开源软件 | |
对于社区小的开源软件,当你遇到问题,很难快速解决。而那些社区大的开源软件,Google搜下很容易搜到你遇到的常见的问题。大小是相对的,那么谈谈如何比较两个开源软件的社区大小,可以比较它们在开源平台的收藏数量、issues数量、PR数量,也可以用Google trends对比下,也可以对比下Google搜索结果数目,也可以对比下它们在stackoverflow等平台搜索结果数目。 | |
2. 国产开源软件 | |
不是看不起国产开源软件,国产优秀的开源软件其实也有一些。但整体上看,国产开源软件文档质量不行。社区小,一般很少有外国人使用,而国外的开发者数量和质量明显高于国内。举个例子,fastjson和jackson,虽然fastjson应该比jackson性能好一点,但fastjson的功能和代码质量不如jackson,而且fastjson社区也不如jackson,当用jackson遇到问题时,用Google英文搜索下,一般很容易搜到解决办法,而用fastjson遇到问题一般只能去看看fastjson那一点点文档。顺便提一下,用中文搜索问题,一般比较难很快找到解决办法。我想原因大概如下:1、Google的中文搜索能力不如英文(baidu啥的更别谈)2、国内开发者鱼龙混杂,由于编程入门门槛低,有好多水平欠缺的开发者写了大量低质量博客,中文博客的信噪比非常糟糕,很少有我感觉还可以的博主。举个例子,CSDN博客质量简直不堪入目,我现在直接用扩展屏蔽了CSDN。 | |
3. 不再维护的或代码贡献频率低的开源软件 | |
在我开来,软件开发者应该要对自己的软件负责,就是一直对自己开源的软件质量负责,close所有issues,解决软件bug。做到这点很难,连我自己一些玩具开源项目都不再维护,但我会在README中标注不再维护,减少浪费有些人的时间,我也会及时close每一个issues。如果实在不想维护,GitHub还有archive的功能,将项目设置为只读。在我看来,解决issues是开源的游戏规则,而open issues也是游戏规则,如果大家都这样,开发者对软件负责,软件使用者也对软件负责,开源社区才能健康发展。 | |
4. 文档少,代码注释少的开源软件 | |
如果一个开源软件没什么文档,或文档质量不行,那么软件的使用者也不会很多,软件本身也很难发展,我感觉这样的开源意义少了很多。 | |
下面谈谈如何选选择坑较少的开源软件,大概就是避免上面的坑吧。和其他很多行业一样,软件行业也在于实践,当你多用一些开源软件,多踩一些坑,自然会避免很多坑,如果实践了很多次,但依然遇到很多坑,我想大概有两种可能。一是你不适合搞软件,没有那一点点感觉。二是你很厉害了,已经找不到一些适合你的开源软件了,这时候应该是你造轮子的时候了。 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment