6

我正在尝试为开源版本准备一个项目,但遇到了一个问题……这个项目依赖于一些开源组件,迄今为止我刚刚将它们作为 JAR 文件存储在我的 lib 目录中。其中一些可以追溯到几年前,至少其中一些来自一个开源项目,该项目的站点已经消失,我无法找到其源代码(Radeox 库)。

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

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

谢谢!

4

3 回答 3

3

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

尝试联系原作者。也许这个 Ohloh 链接会有所帮助。如果您无法联系到他们,也许您可​​以从另一个使用该库的项目中获取源代码的副本。作为最后的手段,你可以试试谷歌的缓存或archive.org。

于 2009-05-27T03:29:49.237 回答
3

更新:宾果!!

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

早些时候...

看起来,作者 Stephan Schmidt 目前正在http://www.codemonkeyism.com上运行一个博客。他的联系信息,包括电子邮件在这里2007 年 8 月的一篇文章谈到了将项目分叉到 Reposita.org(似乎还没有启动)。他的演讲让他去年参加了 ImobilienScout24。

我敢肯定,你已经意识到依赖一个死的、无人维护的项目的危险。我们刚刚清除了我们的软件中的几个这样的依赖项,并且睡得更好了。它们包括用于 SOAP Web 服务的 Axis 1.4(在 2005 年因严重的线程错误而被放弃),被普通 Java 逻辑所取代;kxml 解析器(也于 2005 年废弃),被 JAXP 取代;和一个没有名字的 HTTP 客户端(被遗弃了,我们甚至找不到旧的源代码),被 Apache HTTP 客户端取代。不过,Radeox 听起来像是一个更困难的案例。

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

于 2009-05-27T04:35:56.910 回答
2

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

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

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

于 2009-05-27T04:54:38.073 回答