如何处理死开源依赖?

时间:2009-05-27 03:11:13

标签: open-source binary distribution software-distribution

我正在尝试准备一个开源版本的项目,并遇到了一个问题...这个项目依赖于我刚刚在我的lib目录中存储为JAR文件的一些开源组件至今。其中一些可以追溯到几年前,其中至少有一个来自一个开源项目,其网站已经消失,其来源我无法找到(Radeox库)的副本。

我的困境是,当我发布它时,我不知道如何打包我的项目...我不应该包含没有源代码的JAR文件,因为这会违反我使用代码的许可条款我自己,但我不认为这个JAR文件很容易找到,所以我也不想让自述文件说“找到这个JAR,祝你好运!”。

在这种情况下,最佳做法是什么? (除了“保留从现在开始导入的所有JAR的来源!”)其次,有没有人知道我在哪里可以找到这个特定库的来源?

谢谢!

3 个答案:

答案 0 :(得分:3)

如果许可证说您必须包含来源,那么您必须包含来源。

尝试联系原作者。也许this Ohloh link会有所帮助。如果您无法访问它们,也许您可​​以从另一个使用该库的项目中获取源代码的副本。作为最后的手段,您可以尝试Google's cache或archive.org。

答案 1 :(得分:3)

更新:Bingo !!

这是Radeox Subversion repository。向下导航到http://svn.codehaus.org/radeox/main/trunk/src/java/org/radeox/以获取源代码。

早些时候......

看起来作者Stephan Schmidt目前正在http://www.codemonkeyism.com开设博客。他的联系信息,包括电子邮件是here,来自August 2007的条目谈到将项目分支到Reposita.org(现在似乎还没有)。去年他的presentations把他送到了ImobilienScout24。

我确信你已经适应了依赖于一个死的,没有维护的项目的危险。我们刚刚清除了几个这样的依赖项的软件,并且睡得更好。它们包括用于SOAP Web服务的Axis 1.4(在2005年被遗弃了严重的线程错误),取而代之的是vanilla Java逻辑; kxml解析器(也于2005年放弃),由JAXP取代;和一个无名的HTTP客户端(如此放弃,我们甚至找不到旧的源代码),取而代之的是Apache HTTP Client。拉德克斯听起来像是一个更难的案例。

获取法律建议,并努力寻找来源和/或Stephan,记录您所做的一切。这可能足以让您在制定替代策略时分发二进制文件。

答案 2 :(得分:2)

我们的方法是确保在获取二进制文件时获取源代码。然后,正是由于您引用的原因,我们会在本地永久存档所有第三方依赖项。这有点痛苦,因为使用第三方库比简单地下载tarball要复杂得多,但这意味着当库被弃用时,我们可以继续履行我们的客户义务和我们的合法库。

请注意,我们目前维护的软件已有近15年的历史,而且我们的一些第三方软件包早于流行的网络,因此我们的解决方案对您来说可能过度。

还有其他优点;我们必须修补其中一些产品来修复错误或添加上游维护者无法或不愿意添加的功能,但我们需要这些功能,并且无缝地适应此过程。