如何正确地在个人项目中使用别人开源的代码

2020-04-04 05:25:07 +08:00
 allAboutDbmss

我打算使用 /引用别人开源项目的多个文件,但是不知道怎么做是正确的?需要附上别人的 license 文件吗?

我找到一个例子: https://github.com/cmu-db/bustub/tree/master/third_party

例子中在引用的文件前进行注释:

// This source file was originally from:
//   https://github.com/PeterScott/murmur3
//
// We've changed it for use with VoltDB:
//   - We changed the top-level functions defined below to return
//     their hash by value, rather than accept a pointer to storage
//     for the result

还另外准备了一个文件versions.txt去列出所有的引用:

........
# Library, Version, Commit Hash

# murmur3
# url: https://github.com/aappleby/smhasher.git
# branch: master
# commit hash: 61a0530f28277f2e850bfc39600ce61d02b518de
# commit hash date: 9 Jan 2018

上面这个例子中的方式自然是可以效仿的。但是例子中的引用其实是 public domain 。我想问引用声明会和被引用项目的 license 有关吗?很多项目不是 public domain,怎么去做引用声明呢?

1831 次点击
所在节点    问与答
2 条回复
Lax
2020-04-04 08:24:19 +08:00
看协议内容,GPL/MIT 都是要求包含 /展示协议文本的。其它协议没要求的话可以不展示,但是加个引用说明还是比较好的。
swulling
2020-04-04 09:47:18 +08:00
常见的来源协议中
BSD 都可以不用带来源协议和信息

GPL 要求感染为 GPL,最好有个文件带原始 License

MIT 需要你有一个文件放原始 License

Apache 需要在代码的文件头加入 License

业界常见的做法是增加一个 OPENSOURCE 文件,里面包含了所有引用的开源组件和协议,Apache 再写入每个文件头就可以了。

然后视你的程序类型,在帮助菜单,命令行参数,页面上增加显示 OPENSOURCE 内容的地方即可

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/659229

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX