如何组织开源发布项目

Val*_*lea 6 project-management licensing open-source

我打算作为开源软件发布个人项目,主要用于教育(如果有的话).它只是Windows.

我自己的代码将在MIT许可下发布,但我也使用这个库/组件:

  • 火花
  • Scintilla PJ Naughter组件
  • glaux

除了确保我包含这些库许可文件之外,我应该如何将它们集成到源代码发布树中?

目前,对于每一个,我使用特定的版本/修订版本,我根据源代码文件和二进制库文件手动定制或构建和集成.这够了吗?我不想用最终的第三方源树为生成的包加重,但同时我希望它从头开始编译.

另外,我想包括我最终编译的可执行文件.这皱眉了吗?我将使用VirusTotal检查生成的exe.

hak*_*kre 1

我自己的代码将在 MIT 许可证下发布,但我也使用这个库/组件:[...]

目前,对于每个版本,我都使用特定的版本/修订版,我根据源代码文件和二进制库文件手动定制或构建和集成它。这够了吗?我不想给生成的包增加完整的第三方源代码树的负担,但同时我希望它可以从头开始编译。

当您想要向其他人提供您的应用程序以供其修改时,除了仅二进制版本之外,您可能还需要提供某种“SDK”版本,其中包含您的代码作为源代码和库依赖项作为二进制文件。

由于您还希望能够从所有源进行编译,因此出于实际原因,您还应该为每个版本创建完整的源包。

为自己创建一个能够自动构建每个包的脚本。也将您的构建脚本置于修订控制之下。如果您现在没有任何修订控制,请首先将源代码树置于修订控制之下。

这些只是实用的建议,以便您可以实现您想要的目标,同时也让其他用户能够很好地访问您的程序。

对于您列出的库/组件的许可,我试图了解更多信息。如果适用,我从SPDX 开源许可证注册中心获得了短标识符。它包含每个许可证的链接,因此它是对软件包的许可证情况进行分类的好工具:

(IANAL) 看起来这些都是许可类型,因此您基本上没有义务发布源代码。两个注意事项:

  1. 我无法获取有关GLAux的信息。您可能想要查看您拥有的适用许可的源文件。了解更多信息有点复杂,似乎该库已被弃用。我看到的是它是 OpenGL 项目的一部分,但我不知道你使用哪些源文件以及从哪里获得它们。

  2. Scintilla PJ Naughter 组件具有非标准许可证,不允许分发修改后的源代码。但您可以不加修改地分发代码。我认为原作者的意图是他不希望在他自己的源发行版旁边有其他源发行版(分叉但不更改分叉)。我想说你应该尽可能地遵守,如果你不能再联系原作者并讨论这个问题。如果这不能解决实际问题,您可能需要联系律师,了解您在这种情况下拥有的权利,以取代原作者表达的版权限制。

我还想包括我最终编译的可执行文件。这是让人皱眉吗?我将使用 VirusTotal 检查生成的 exe。

为什么要这样做,这将使那些不能或不想编译的人可以使用该软件。

如果您正在寻找一个可以根据这些条款接受您的复制品的公共源代码存储库,github就是您的选择。他们唯一的义务是源代码是可见的,并且可以分叉存储库 - 因为这并没有说明代码和每个分叉所赋予的权利,因此请明确您所拥有的代码的许可。其他网站(例如 google code)不允许这样做,因为它们只接受 OSI 批准许可下的代码,而Scintilla PJ Naughter 组件则不然。

添加rainbru 建议的文件。