Skip to content

在项目中引入细分领域的开源软件

1. 引言

开源软件已是信息社会的基石。

GitHub上软件种类众多,市场定位和成熟度也各不相同。

对于成熟的通用软件,例如Linux,NGINX等。将这类软件引入自研项目中不存在太多顾虑,因为通用所以用的人多。可以找到大量的成功案例,众多的开发维护人员。一旦碰到问题,也容易在网上搜到答案。

但还有一类开源软件, 定位相对没有那么通用,虽然其在细分领域已经做的比较好了,但由于生态环境较小,在项目中引入时候,还是有很多因素需要考虑:

  • 现有的开发人员有能力掌握并承接后续开发吗?
  • 如果使用中出现问题, 有没有合适的开发人员去解决?或者去做二次开发?
  • 系统上线后,有没有合适的人员去长期维护?

对这类软件,在引入到项目中前,有两种办法增强信心:

  • 找到合适的人
  • 成为该软件开源社区的一员

2. 找到专家

有如下几个方法。

  1. 在软件的开发者中搜索是否有中国开发者,尝试建立联系。
  2. 百度该软件相关的讨论区,QQ群等。 加入并倾听,识别出专家。
  3. 寻找并参加该软件相关的培训。
  4. 寻找GitHub上该软件的相关软件。 例如引用该软件的软件,该软件的Plugin等等。并合作者建立联系。

以上的目的都是在现实世界建立起和专家的联系。 然后通过和专家的电话,邮件,吃饭喝茶等各种交流来进一步了解该软件在国内的生态情况,以及软件的优缺点。 为后续引入打好基础。 和专家建立起联系后, 后续也方便和专家进一步在项目上合作共赢。

3. 融入开源社区

如果国内找不到专家。 就只能撸胳膊上,让自己成为专家了。

3.1. 学习使用

主要看如下几方面的内容:

  • 软件自身的官方文档
  • Youtube上的介绍视频,以及第三方教程
  • 软件的单元测试

以上,结合大粒度的源码分析,可以掌握软件的大体脉络。

3.2. 和同行讨论

一般开源软件社区有如下几个地方。

  • GitHub项目Issues
  • GitHub项目Discussions
  • Discord或者Slack等讨论组
  • Email邮件组

通过加入并查看大家在讨论哪些问题,能了解到软件的一些使用细节和适用场景。 在学习的同时,也要多思考,多提问题, 多回答社区的问题。

回答社区的问题可以针对和自己项目相关的领域问题,积极回答问题有两点好处:

  • 驱动自己认真深入思考,如果我在项目中碰到这个问题,该怎么处理?
  • 和其它社区用户,以及软件开发维护者们建立联系

picture 1

以上是 Headless CMS Directus 的项目讨论社区。 我最近在调研用Directus来做API中间件,watch了该项目的讨论区,GitHub会把所有讨论实时发到我一个特定的邮箱里面。 通过查看大家的讨论,有很多收获。我也把自己学到的经验总结提炼出来帮助其它用户, “Most Helpful”榜单排名第5的就是我。

3.3. 小规模MVP验证

在看的基础上,也需要动手做。

按照自己项目的特点,定义一个和该软件相关的最小MVP流程,尝试引入该开源软件实现。 以上三点,相辅相成,可以同步进行。 理想的结果是:

  • 自己变成了专家,后续在项目中引入
  • 研究过程中发现软件不适用,果断放弃