V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
uiuing
V2EX  ›  开源软件

[讨论] 如何界定开源项目的“原创性”?

  •  1
     
  •   uiuing · 54 天前 · 927 次点击
    这是一个创建于 54 天前的主题,其中的信息可能已经有所发展或是发生改变。

    前情提要:

    还在上学时,我苦于英语能力弱,经常被变量命名问题困扰,于是通过 NLP + 翻译做了个小网站 VARBook ,专门用于翻译变量命名。后面服务器欠费了,我也没有精力继续维护,就下线了。

    今年很多朋友发邮件关心 VARBook 是否还有人维护,还收到了几十块的赞助。所以最近我重新开始维护 VARBook ,今年 LLM 大火,所以用上了 llama3 + milvus 优化命名功能,然后换了个域名继续开放。前端代码托管在 https://github.com/uiuing/varbook,使用 GNU GPL v3.0 协议开源。

    最近,我发现了一个名为 xiaojingge-varbook 的项目 (https://github.com/xiaoxiaojingge/xiaojingge-varbook),该项目使用了 Apache License 2.0 协议。xiaojingge-varbook 的 UI 设计和部分前端代码与我的 VARBook 项目非常相似。

    我的项目:

    相似的项目:

    相似之处: UI 、Logo 、名称、SEO 、部分前端代码有相似的地方。


    这引发了我对开源协议和项目权益的一些疑问,希望可以与大家探讨一下:

    疑问:

    1. 开源协议问题: 我的项目使用 GNU GPL v3.0 协议,而 xiaojingge-varbook 使用 Apache 2.0 协议。GPL v3.0 要求衍生作品也必须使用相同的协议,请问在 UI 和前端代码上有相似之处的地方,并且使用不同的协议,是否违反了 GPL v3.0 协议?

    2. 项目名称和 Logo 、SEO: 对方 repo 与我的 repo 有非常相似的名称和 Logo 、SEO 。虽然后端实现有不同,但功能和目标用户群体高度重合。请问这种行为是否构成对我的项目权益的侵犯?

    目的: 我发起这次讨论并非出于恶意或攻击,而是希望能够更好地理解开源协议和项目权益,并与大家交流如何更好地保护开源项目原创性,或者确定原创性的边界。(有点标题党 sorry )


    题外话:

    以下是回答部分朋友邮件的内容:

    1. 问:为什么没有开源后端? 答: 本身后端基本没有什么技术难度,大部分是可能会涉及侵权的数据,所以就不开源了。本身开源前端代码也是为了占坑。

    2. 问:为什么开源了还会有版权相关疑虑? 答: 曾经有不少朋友发邮件问我是否可以给他们开放 IP 限额,他们人很多,需要用这一类工具做规范,并表示可以付费。因为本身就没什么技术含量,所以就算用到服务器内存满了我也没啥意见,我主动问需不需要命名数据(中文 -> 英文命名,当然不涉及任何隐私问题)。但此贴问题不同,并非使用/安全问题,而是权益相关讨论;

    7 条回复    2024-07-18 22:39:58 +08:00
    renmu
        1
    renmu  
       54 天前 via Android
    你直接去看核心代码看看是否相同,或者代码结构是否几乎相同,一些独特的命名是否有抄袭
    uiuing
        2
    uiuing  
    OP
       54 天前
    @renmu

    有最直观的体现:
    我的: https://varbook.uius.site/
    对方: https://varbook.xiaojingge.com/

    从 Logo 至风格极其相似,代码中的就太多了(仅前端部分)

    正常尝试走 GitHub DMCA ,不过或许我该考虑联系对方😄
    renmu
        3
    renmu  
       54 天前 via Android
    看了代码很明显就是抄袭,连前端依赖版本都一样,直接 fork 保存证据,然后去 issue 质疑他,不认就挂他
    uiuing
        4
    uiuing  
    OP
       53 天前
    @renmu 感谢老哥,今天就安排
    charslee013
        5
    charslee013  
       52 天前
    好奇问一下 milvus 在整个翻译变量项目中起到什么作用?

    我查阅了其他项目都是用 LLM 直接返回翻译/润色后的变量名名称,不是很明白向量数据库在这里面的具体发挥作用,希望 OP 有时间能解答一下 🙏
    uiuing
        6
    uiuing  
    OP
       51 天前   ❤️ 1
    @charslee013 我的用途比较偏门,也许不合理,供参考

    VARBook 项目中 Milvus 的主要作用:
    1 、存储和索引库: 存储从优质代码仓库中提取的变量命名示例 (通过爬虫获取并用 AST 解析 + 文本嵌入模型转换为向量数据)。
    2 、相似性搜索: 基于用户输入,找到相近的变量命名示例(利用 LLaMA 3 将中文描述转为英文索引)。
    3 、上下文增强: 为 LLaMA 3 提供相关上下文,提高翻译准确性(Milvus 检索结果用于 LLaMA 3 生成变量命名含义参考 prompt)。

    最终形成的 prompt 结构为:
    1 、自定义的变量命名基础 prompt
    2 、Milvus 检索 + LLaMA 3 生成的含义参考
    3 、用户输入变量描述(英文)

    主要目的是给 LLaMA 3 提供更丰富的上下文

    ------ 分割 ------

    各个作用的参考数据(仅供参考):

    1. 存储和索引库:
    - 变量名: user_login_time
    - 代码片段: datetime user_login_time = getCurrentTimestamp();
    - 向量表示: [0.23, -0.45, 0.67, ..., 0.12]

    2. 相似性搜索:
    用户输入: "用户最后登录时间"
    LLaMA 3 翻译: "user last login time"
    Milvus 检索结果:
    - user_login_time (相似度: 0.92)
    - last_access_timestamp (相似度: 0.89)
    - user_last_active_date (相似度: 0.85)

    3. 上下文增强:
    Milvus 检索结果用于 LLaMA 3 prompt:
    "Consider these similar variable names:
    - user_login_time: represents the timestamp when a user logs in
    - last_access_timestamp: indicates the most recent time a user accessed the system
    - user_last_active_date: stores the date of the user's last activity"

    最终 prompt 结构:
    1. 基础 prompt: "Generate a meaningful and concise variable name in English."
    2. 含义参考: [Milvus 检索结果 + LLaMA 3 生成的描述]
    3. 用户输入: "user last login time"
    charslee013
        7
    charslee013  
       51 天前
    @uiuing #6 原来如此!非常感谢楼主开源
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2454 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 00:16 · PVG 08:16 · LAX 17:16 · JFK 20:16
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.