如何知道一个开源项目是否已经成熟到可以在产品中使用?


15

我想将一些开源项目整合到工作中的产品中。我们没有带宽或主题专业知识来自己做。我是通过在Google中搜索找到的。我没有意识到任何利用这些项目的“主要参与者”,但是我对看到的一切感到非常鼓舞。

现在,我有点担心使用joe-blow的开源项目所面临的风险。如果我花了95%的方法,那么剩下的5%可能很容易添加或修复。也许这是不平凡的。

人们如何确定开放源代码项目是否足够成熟,可以在产品中使用?

这不是一个业余项目,因此稳定性,可维护性等至关重要。


你永远不会确定。Windows是否足够成熟?测试它并尝试与开发人员联系-个人联系方式(电子邮件?)可以说出他们所创建项目的健全性/成熟度。
SChepurin

3
唯一重要的是它是否符合您的要求。如果是这样,您只需使用它。如果它不是“成熟的”(其定义值得商you),则可以开始编写代码/讨论/ docs / community / bugs / xyz以使其成熟。
treecoder 2013年

1
在将新库包含到实际产品中之前,编写一组非常好的单元测试。
吉姆在德克萨斯州2013年

@greengit:它甚至不必满足所有需求,只要没有其他选择可以更好地满足它们。
Jan Hudec

Answers:


17

我使用的条件是该项目符合我的要求:

  1. 是否有一个活跃的社区,人们能够提供帮助?
  2. 许可证适合我的发展吗?
  3. 产品仍在积极开发中吗?
  4. 它是常用的框架吗?
  5. 我可以找到该产品的任何评论/博客文章等,以及人们如何与该产品集成吗?

4和5对于听起来像您的利基项目并没有真正的帮助。

最重要的一点是,它是否满足您的要求?如果您确实认为这样做,那么下一步就是制作一个线束来测试项目,并查看您是否可以按照自己的意愿去做。这将使您对其API(如果是库)及其工作方式有所了解。

归根结底,如果有某种开源可以完成您90%的工作,请将其分叉,添加额外的功能,然后将其返回给社区。我之前在商业项目上已经做到这一点。


6
永远不要忘记,完成的95%意味着只剩下95%可以做....
mattnz

6
  1. 对于框架,我通常只使用大型且成熟的框架,其中包含许多预先编写的模块和大型社区。通常,选择一个框架而不是另一个框架并不会真正减少您需要花费在自己的代码上的工作量,一些框架可能会鼓励编写更漂亮的代码,另一些框架可能会使某些操作变得容易,但总的来说与总体开发工作几乎没有区别。但是,流行的框架会有更多的预编写模块,您可以利用这些模块,这通常可以节省更多时间和精力。
  2. 对于小型非框架库,通常您可以根据需要自行进行修改,而不会出现太大问题,因此通常我会考虑将社区作为一项额外的奖励。大多数小型图书馆仅由一个人管理,但仍然比自己构建要好。对于大型图书馆而言,拥有成熟,活跃的社区和文档至关重要,因为您不太可能自己轻松地进行更改。
  3. 许可证至关重要。对于单人图书馆,您可能需要对图书馆进行修改,因此,至关重要的是,他们的许可必须允许您按照您同意的条款进行操作。

对于小型库,您应始终假定需要进行分叉并且该项目已被放弃。通常这不是问题,特别是如果项目托管在Github或BitBucket上,因为它们使分叉其他人的项目变得异常容易。对于小型图书馆,如果原来的维护者已经去世,或者如果他们计划将项目方向带到您不想去的地方,则您总是可以自己接管项目的维护。

我不太关心项目活动,已经实现“完美”感的成熟库通常只需要进行错误修复,因此它们的活动变慢了。仅当库包含一个正在积极发展的目标时,项目活动才很重要,例如,随着外部服务的发展,需要不断更新外部服务的包装器,因此,积极的开发是必不可少的,但是数学库并不需要太多具有所需功能的新开发。

对于较大的库,事情变得更加困难。接管要涉及得多,幸运的是,较大的库通常不会移动得那么快,因为它们通常更成熟。

正如@Sam在回答中所说,我同意评估开源库最重要的事情是它是否满足您的要求。一旦解决了任何许可证问题,使用开放源代码库就很少会犯错误,因为如果情况不妙,您总是可以分叉。


3

查看项目的错误跟踪器。如果您看到许多不同的人提交了许多票证,并且也有各种各样的人回应,那么这是一个好兆头。更多的故障单==更大的用户社区==您更有可能准备投入生产使用。


2
尽管这绝对是查看某个项目是否正在以某种方式使用的一种方法,但是您需要更多的上下文,而不仅仅是一堆bug票,才能知道该项目对于生产系统是否足够可靠。例如,如果大多数故障单已经打开了一段时间却仍未解决,那么我就不想将其合并到关键业务系统中。
德里克(Derek)

实际上,我认为即使大多数票都已经开放了一段时间而没有解决也没关系。与软件本身无关,它更能说明用户群的规模和参与度。有关此主题的更多信息,请访问:rants.org/2010/01/bugs-users-and-tech-debt
卡尔·福格尔

1

这个消息不好,但这并不意味着它是错误的:您不知道。

如果生产中有类似的实现,您将知道这是可行的,但是正如您所说的,没有“主要参与者”使用这些项目。

如果您是在内部开发的,那么您会知道的,但是正如您所说,您没有资源。

想知道是很合理的,但是...您不知道。

我希望这个答案能对您有所帮助,因为您应该制定应急计划,以拔掉您所依赖但无法控制的任何技术……而知道自己不可靠是否是朝这个方向迈出的一步。


1

这个问题必须换个说法。您真正要问的是使用此开源项目是开发产品的最佳方法吗?

这必然不仅涉及所涉及的开源项目,还涉及其他选择。如果您唯一的选择是自己编写所有内容,那么,如果您可以理解项目的代码足以进行修改,那么最好使用该项目。

当然,另一个问题出现了,您的项目是否完全可行。也就是说,您需要估算工作量,包括必须修复或完成您希望开源代码提供的功能的任何风险。如果该项目没有得到广泛使用,则您将必须检查该代码。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.