V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
allAboutDbmss
V2EX  ›  问与答

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

  •  1
     
  •   allAboutDbmss · 2020-04-04 05:25:07 +08:00 · 1904 次点击
    这是一个创建于 1722 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我打算使用 /引用别人开源项目的多个文件,但是不知道怎么做是正确的?需要附上别人的 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,怎么去做引用声明呢?

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

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

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

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

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

    然后视你的程序类型,在帮助菜单,命令行参数,页面上增加显示 OPENSOURCE 内容的地方即可
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2718 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 12:21 · PVG 20:21 · LAX 04:21 · JFK 07:21
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.