背景介绍
一般情况下我们不需要进行开源项目的二次开发,因为开源项目往往会提供良好的封装,可以通过依赖包或 API 服务的形式引入项目中。如果开源项目存在一些问题,我们往往可以通过给开源项目提供 PR 来解决,这样就可以尽可能减少二次开发开源项目的问题。
但是某些情况下可能会需要基于开源项目开发自己的服务,需要一个相对长周期二次开发。而且因为定位不同,代码很难直接合并至开源项目,这种情况下就存在两种情况:
- 不需要开源项目后续的更新,这种情况比较简单,直接拉取代码进行开发就好,当然要注意开源项目的版权信息;
- 需要开源项目后续的代码更新,这种情况就会更加麻烦,因为二次开发与开源项目的持续迭代很容易造成冲突,而且随着时间的推移这种冲突会越来越多,最终导致无法同步;
本篇文章就来讨论下情况 2 下可能的一些处理方案,希望对大家有所帮助。
建议方案
上策:插件机制
先调研项目是否支持插件机制,基于官方提供的插件机制是解决这种问题的最佳方案。通过插件机制,可以避免直接修改开源项目的代码。这种情况下就可以避免后续的冲突问题。以之前调研过的大模型应用开发基础框架 Dify 为例:
如果需要扩充 Dify 现有的能力,满足更多业务场景,建议方案就是通过 Dify 提供的自定义工具: