我想将一些开源项目整合到工作中的产品中。我们没有带宽或主题专业知识来自己做。我是通过在Google中搜索找到的。我没有意识到任何利用这些项目的“主要参与者”,但是我对看到的一切感到非常鼓舞。
现在,我有点担心使用joe-blow的开源项目所面临的风险。如果我花了95%的方法,那么剩下的5%可能很容易添加或修复。也许这是不平凡的。
人们如何确定开放源代码项目是否足够成熟,可以在产品中使用?
这不是一个业余项目,因此稳定性,可维护性等至关重要。
我想将一些开源项目整合到工作中的产品中。我们没有带宽或主题专业知识来自己做。我是通过在Google中搜索找到的。我没有意识到任何利用这些项目的“主要参与者”,但是我对看到的一切感到非常鼓舞。
现在,我有点担心使用joe-blow的开源项目所面临的风险。如果我花了95%的方法,那么剩下的5%可能很容易添加或修复。也许这是不平凡的。
人们如何确定开放源代码项目是否足够成熟,可以在产品中使用?
这不是一个业余项目,因此稳定性,可维护性等至关重要。
Answers:
我使用的条件是该项目符合我的要求:
4和5对于听起来像您的利基项目并没有真正的帮助。
最重要的一点是,它是否满足您的要求?如果您确实认为这样做,那么下一步就是制作一个线束来测试项目,并查看您是否可以按照自己的意愿去做。这将使您对其API(如果是库)及其工作方式有所了解。
归根结底,如果有某种开源可以完成您90%的工作,请将其分叉,添加额外的功能,然后将其返回给社区。我之前在商业项目上已经做到这一点。
对于小型库,您应始终假定需要进行分叉并且该项目已被放弃。通常这不是问题,特别是如果项目托管在Github或BitBucket上,因为它们使分叉其他人的项目变得异常容易。对于小型图书馆,如果原来的维护者已经去世,或者如果他们计划将项目方向带到您不想去的地方,则您总是可以自己接管项目的维护。
我不太关心项目活动,已经实现“完美”感的成熟库通常只需要进行错误修复,因此它们的活动变慢了。仅当库包含一个正在积极发展的目标时,项目活动才很重要,例如,随着外部服务的发展,需要不断更新外部服务的包装器,因此,积极的开发是必不可少的,但是数学库并不需要太多具有所需功能的新开发。
对于较大的库,事情变得更加困难。接管要涉及得多,幸运的是,较大的库通常不会移动得那么快,因为它们通常更成熟。
正如@Sam在回答中所说,我同意评估开源库最重要的事情是它是否满足您的要求。一旦解决了任何许可证问题,使用开放源代码库就很少会犯错误,因为如果情况不妙,您总是可以分叉。
查看项目的错误跟踪器。如果您看到许多不同的人提交了许多票证,并且也有各种各样的人回应,那么这是一个好兆头。更多的故障单==更大的用户社区==您更有可能准备投入生产使用。
这个消息不好,但这并不意味着它是错误的:您不知道。
如果生产中有类似的实现,您将知道这是可行的,但是正如您所说的,没有“主要参与者”使用这些项目。
如果您是在内部开发的,那么您会知道的,但是正如您所说,您没有资源。
想知道是很合理的,但是...您不知道。
我希望这个答案能对您有所帮助,因为您应该制定应急计划,以拔掉您所依赖但无法控制的任何技术……而知道自己不可靠是否是朝这个方向迈出的一步。
这个问题必须换个说法。您真正要问的是使用此开源项目是开发产品的最佳方法吗?
这必然不仅涉及所涉及的开源项目,还涉及其他选择。如果您唯一的选择是自己编写所有内容,那么,如果您可以理解项目的代码足以进行修改,那么最好使用该项目。
当然,另一个问题出现了,您的项目是否完全可行。也就是说,您需要估算工作量,包括必须修复或完成您希望开源代码提供的功能的任何风险。如果该项目没有得到广泛使用,则您将必须检查该代码。