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

111 天前
 uiuing

前情提要:

还在上学时,我苦于英语能力弱,经常被变量命名问题困扰,于是通过 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 限额,他们人很多,需要用这一类工具做规范,并表示可以付费。因为本身就没什么技术含量,所以就算用到服务器内存满了我也没啥意见,我主动问需不需要命名数据(中文 -> 英文命名,当然不涉及任何隐私问题)。但此贴问题不同,并非使用/安全问题,而是权益相关讨论;

1106 次点击
所在节点    开源软件
7 条回复
renmu
111 天前
你直接去看核心代码看看是否相同,或者代码结构是否几乎相同,一些独特的命名是否有抄袭
uiuing
111 天前
@renmu

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

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

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

我查阅了其他项目都是用 LLM 直接返回翻译/润色后的变量名名称,不是很明白向量数据库在这里面的具体发挥作用,希望 OP 有时间能解答一下 🙏
uiuing
108 天前
@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
107 天前
@uiuing #6 原来如此!非常感谢楼主开源

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

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

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

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

© 2021 V2EX