我正在开发一个项目,想要在GitHub上发布。这个项目需要使用特定的算法Algorithm。我之前所有开发的项目都只用到我的代码(加上STL等),但是写Algorithm可能会很繁琐,所以我想使用别人的代码。相对于我的其他代码,Algorithm只是一个小子程序。
我找到了一个实现Algorithm的GitHub存储库,但是有很多无关的代码,即“Junk”。我想要从Algorithm中剥离掉所有的Junk并使用它,但我不知道该如何做到。理想情况下,Algorithm可以被轻松地清除并无缝地放置在我的项目目录中,以减少其他用户使用我的项目所依赖的因素。
我不知道使用别人的代码的礼节。我不知道如何给予信任或者许可证的内容是什么。
对于使用他人的Algorithm实现,我似乎有五个选择。
1.包含原始头文件,声明Algorithm和所有随之而来的Junk。(我需要将头文件及其所有依赖项复制到我的项目目录中吗?) 2.创建一个新的头文件和源文件,保持Algorithm实现不变,包括所有注释,并将头文件
对于这4种情况,礼仪规则是什么?我应该将Algorithm放在项目目录的哪个位置?如何给别人的工作贡献?如何给予修改后的工作赞誉(例如,去除原始注释)?如何避免因使用错误编码实践而被别人归功于我的工作(假设他们认为是这样的)?GitHub的哪些功能可以促进所有这些?
关于许可证,如果使用某人的算法来运行我的代码会强制我发布特定的许可证,那么我以后是否可以实现自己的Algorithm并更改许可证?我不知道我是否会关心这个问题,但知道这一点也很好。
我找到了一个实现Algorithm的GitHub存储库,但是有很多无关的代码,即“Junk”。我想要从Algorithm中剥离掉所有的Junk并使用它,但我不知道该如何做到。理想情况下,Algorithm可以被轻松地清除并无缝地放置在我的项目目录中,以减少其他用户使用我的项目所依赖的因素。
我不知道使用别人的代码的礼节。我不知道如何给予信任或者许可证的内容是什么。
对于使用他人的Algorithm实现,我似乎有五个选择。
1.包含原始头文件,声明Algorithm和所有随之而来的Junk。(我需要将头文件及其所有依赖项复制到我的项目目录中吗?) 2.创建一个新的头文件和源文件,保持Algorithm实现不变,包括所有注释,并将头文件
#include
到我的项目中(省略了原始头文件中出现的其他函数和类)。
3.修改Algorithm的实现代码以删除其余的Junk。删除注释。将C数组更改为std :: vector。使用智能指针替换指针。更改抛出的异常。删除我项目不需要的“选项”。更改数据表示以将所有内容合并到我的项目中。
4.重新编写Algorithm,但是按照现有代码的模型进行建模,使实现符合我的风格,并进行轻微的性能改进(然而,这并不值得在现有存储库上进行拉取)。对于这4种情况,礼仪规则是什么?我应该将Algorithm放在项目目录的哪个位置?如何给别人的工作贡献?如何给予修改后的工作赞誉(例如,去除原始注释)?如何避免因使用错误编码实践而被别人归功于我的工作(假设他们认为是这样的)?GitHub的哪些功能可以促进所有这些?
关于许可证,如果使用某人的算法来运行我的代码会强制我发布特定的许可证,那么我以后是否可以实现自己的Algorithm并更改许可证?我不知道我是否会关心这个问题,但知道这一点也很好。