想象你搬进了一个高端小区——PyTorch社区。小区设施一流(代码库)、邻居优秀(开发者)、物业强大(核心维护者),但入住前,你必须先签一份《业主公约》(Contributor License Agreement, CLA)。这份公约不没收你的房子(代码版权),只是规定:你允许物业(PyTorch项目)在你家的公共区域(代码仓库)做日常修缮和出租(开源许可),而你自己依然保留房产所有权。有了这份公约,小区才不会因为“这堵墙是谁修的”而打官司,社区才能安心发展十年、二十年。本文将带你读懂这份“业主公约”的每一个条款、签署流程,以及个人和企业业主在签约时的微妙差异。
掌握CLA,是AI工程师从“代码使用者”升级为“开源共建者”的法律入场券——避免未来版权纠纷,赢得企业与社区的信任。
可视化演示
以步进流程展示PyTorch贡献者协议CLA的签署流程,从提交PR、签署CLA到知识产权声明与版权许可,区分个人与企业贡献的声明路径。
本节配有交互动效(进入视口后自动加载,约 3KB)。
CLA协议 个人贡献 企业贡献 CLA 法律前提
CLA的定义
回到我们的小区比喻。当你走进 PyTorch 这个“高档小区”,物业(核心维护团队)会递给你一份《业主公约》。这份文件在开源世界里有个正式名字:贡献者许可协议,英文是 Contributor License Agreement,简称 CLA。它既不是房产证,也不是租房合同,而是一份“你允许物业怎么用你家公共区域”的授权书。搞清楚它是谁、管什么,是你贡献代码的第一个台阶。
从法律视角看,CLA 的核心是解决“版权归属”与“使用许可”两个问题。你写的代码就像你装修的房子——你拥有它(版权),但如果整栋楼(项目)要统一改水电(重构代码)或出租(商用),物业必须得到你的白纸黑字授权。CLA 就是这份授权书:你依然保有版权,但授予项目方永久的、免费的、不可撤销的使用权。PyTorch 用的是一份由 Linux 基金会推荐的 Apache CLA 2.0 模板,条款清晰,业界通用。
这份“业主公约”的精妙之处在于:它保护了双方——你不用担心代码被恶意占有,项目方不用担心某天被告侵权。理解了 CLA 的一纸契约本质,你已经迈出了成为合格贡献者的第一步。
- 版权归属条款确认你对所贡献代码拥有原始版权,就像房产证上写着你的名字,这是整个协议的地基。
- 使用许可条款你将代码的使用权授予项目方,但所有权不转移,如同房东把钥匙交给管家但不卖房。
- 许可的永久性许可一旦授予便不可撤销,即使你退出社区,项目的使用权利依然有效,如同管道一旦接通就不会因为住户搬家而断水。
CLA的必要性
你可能会问:小区为什么非要签公约?大家自觉遵守不好吗?答案是:在涉及法律和钱的问题上,“自觉”是最不可靠的。想象一下,如果某天 PyTorch 被大公司收购,而某个贡献者突然跳出来说“那段代码是我写的,你们没权用”——没有 CLA,整个项目就会陷入版权纠纷的泥潭。
CLA 的必要性可以用“三根柱子”来概括。第一根柱子是项目法律安全:有了明确的授权链,项目方可以放心地重新分发代码、修改许可证、甚至用代码做商业产品,而不用担心法律追索。第二根柱子是代码来源可信:每个贡献者的代码都有法律上的“来源证明”,就像每件商品都有出厂合格证,这保证了代码的合法性,也降低了恶意代码混入的风险。第三根柱子是避免版权纠纷:CLA 中的“无第三方权利”条款要求贡献者声明代码是自己的原创且不侵犯他人版权,相当于你承诺“这是我自己做的,不是偷来的”。
正因为 CLA 撑起了这三根柱子,PyTorch、TensorFlow、Kubernetes 等顶级项目才敢放心地让全世界开发者共同参与。公约看似麻烦,实则是社区的“安全气囊”——平时感受不到它的存在,关键时刻能救所有人的命。
- 法律安全项目方拥有每一行代码的合法授权,如同物业持有每一户的改造许可,装修不再提心吊胆。
- 来源可信每一位贡献者的代码都有追溯路径,如同一棵树的年轮,每一圈都有清晰的时间与归属。
- 纠纷规避签署 CLA 时声明的原创性,从源头拦截了侵权代码,如同安检将违禁品挡在站外。
签署流程
现在,你决定要在这个小区买房了(提交第一个 PR)。签公约需要几步?答案是四步,全程在线,十分钟内搞定。第一步是注册 GitHub 账号——这是你在社区的“身份证”,没有它,物业没法确认你是业主。第二步是打开 CLA 页面。通常,你会在项目的 GitHub 仓库里找到一个叫 CLA 或 CONTRIBUTING 的文件夹,里面躺着那份公约。PyTorch 的 CLA 由 Linux 基金会托管,点击链接即可跳转。
第三步是填写个人信息。如果你是个人贡献者,只需填写姓名和邮箱——这两个信息必须与你的 GitHub 账号一致,否则物业对不上号。如果你代表公司贡献,还需要填公司名称和职位。第四步是提交生效。提交后,系统会自动记录你的签署状态,通常在几分钟内同步到 GitHub。此后,你的 PR 会带上一个 cla-signed 的绿色标签,代表你已经完成了法律层面的“入住手续”。
签约过程一气呵成,这套流程设计得就像网购——你甚至不需要打印任何纸质文件,点几下鼠标,你就是社区的法律意义上的“业主”了。
- 注册账号GitHub 账号映射你的真实身份,如同小区的门禁卡,刷卡才能进楼。
- 打开页面找到 CLA 入口,如同在物业服务台领取公约文本。
- 填写信息姓名+邮箱+(公司),确保法律文件与真实身份一一对应。
- 提交生效签署状态异步同步至 GitHub,PR 自动识别。
个人贡献
签完公约,你正式成为小区的“个人业主”。在 CLA 的语境里,个人贡献者是最常见也最简单的身份:你自己写的代码,版权完全属于你,你以自然人身份签下公约。这就像你用自己的名字买了套房,房产证上只有你一个人,任何关于房子的决定都只需要你签字。
个人贡献者签署 CLA 时有几个关键点。其一,版权归属本人:你贡献的每一行代码,版权都属于你个人,项目方只是获得使用权而不是所有权。其二,授权项目使用:你授权 PyTorch 项目可以使用、修改、再分发你的代码,范围是全球的、永久的、免版税的。其三,不需要公司审批:因为代码是你业余时间写的、用的是个人电脑、与公司业务无关,所以不需要走公司的法务流程——这正是个人贡献者最舒服的地方。
做个人贡献者是最纯粹的开源参与方式。你以个人名义签下公约,为自己的代码负责,也为社区添砖加瓦。如果你的代码够优秀,这些贡献还会成为你职业生涯的“作品集”,走到哪里都带着一份开源圈的信任背书。
- 版权归属你保留代码的完整版权,项目方只是“租客”而非法定继承人。
- 授权使用授予项目方使用、修改、再分发的权利,相当于给了物业一把公共区域钥匙。
- 永久免版税许可不因你退出社区而失效,项目方无需为你的代码支付任何费用。
企业贡献
当你在公司上班,想以公司的资源为 PyTorch 做贡献时,事情就复杂了一些——这次签约的不是你,而是你所在的企业。就像小区里,个人业主和公司名下的房产,签约主体完全不同。企业贡献者的 CLA 签署流程与个人版有两大区别:签约主体是企业实体,而不是具体的某个员工;员工需要获得授权,企业会在 CLA 中列明哪些员工可以代表公司贡献代码。
企业签署 CLA 时,流程通常是这样的:首先,公司需要有一位法务授权代表(通常是 CTO 或法务负责人)填写企业信息并签名——这个签名具有法律效力,意味着公司整体承诺遵守公约。其次,公司在 CLA 中会列出一个“授权贡献者名单”(Authorized Contributors),名单上的员工才被允许以公司名义提交代码。如果你不在名单上,即使你个人签了 CLA,你的贡献也可能被拒之门外——因为公司才是代码的版权所有者(如果你的代码是在公司上班时写的)。
企业贡献者比个人贡献者多了一道“公司法务”的关卡,但这也是必要的。如果员工离职了,公司可以撤销他的授权;如果公司被收购了,许可依然有效。这套机制让企业敢放心投入资源做开源贡献——反正法律风险是可控的,公约条款是清晰的。
- 企业签约法人代表签署 CLA,公司整体承担法律义务。
- 员工授权列表企业在 CLA 中列明可贡献的员工名单,名单外的员工无权以公司名义贡献。
- 版权归属企业员工在职务范围内写的代码,版权归公司所有,因此需要公司出面授权。
知识产权声明
无论你是个人还是企业贡献者,签署 CLA 时都绕不开一个核心部分:知识产权声明(Intellectual Property Statement)。这就像你在公约里宣誓:“我保证这房子是我自己盖的,没有侵占别人的地皮。”在 CLA 的世界里,这份宣誓有三层含义。
第一层是原创所有权声明:你声明所贡献的代码是原创的,你拥有其版权,或者你有权将其授权给项目。这意味着你不能把网上抄来的代码“洗”一下交上来——一旦被发现,你可能面临法律追责。第二层是永久许可授予:你授予项目方使用、修改、再分发代码的永久许可。第三层是无第三方权利保证:你保证代码不侵犯任何第三方的专利权、著作权或其他知识产权——如果你用了某个专利算法,你得确保自己获得了授权。
知识产权声明是整个 CLA 中法律含金量最高的部分。它像一把双刃剑:保护项目方免受侵权追溯,也约束贡献者不要“拿来主义”。AI 工程师尤其要注意——如果你在代码中引用了别人的模型权重或算法实现,务必确认其许可证允许你这么做,否则严格遵守的 CLA 声明可能让你卷入法律纠纷。
- 原创所有权声明代码是你的原创或你拥有授权,如同宣告“这块地皮的地契在我手里”。
- 永久许可授予向项目方授予全球、永久、免费的使用权,如同把公共区域的钥匙永久交给物业。
- 无第三方权利保证代码不侵犯他人权利,如同承诺“这房子没抵押给任何人”。
项目治理
说完了个人视角,我们回到“小区治理”的全局。一个大型开源项目就像一座城市,CLA 是这座城市的“宪法”,支撑着整个治理体系。没有 CLA,城市就会陷入“谁修的路、谁通的电、谁说了算”的无休止争吵。有了 CLA,项目治理就有了一条清晰的法律基线。
CLA 对项目治理的贡献体现在三个层面。第一,合规运营:项目的每一次发布、每一次许可证变更,都需要有完整的版权授权链做支撑。CLA 就是这个链条上的每一环。第二,维护信任:当企业用户决定将 PyTorch 集成到自己的产品中时,他们的法务会审查项目的 CLA 政策——一个没有 CLA 的项目很难获得企业信任。第三,规范流程:CLA 要求贡献者遵循标准流程,这从流程上降低了低质量或恶意贡献混入的风险。
PyTorch 作为全球最热门的深度学习框架,其治理模式是开源界的标杆。CLA 在其中扮演的角色,就像城市宪法之于现代都市——平时看不见,但每一次重大决策、每一轮商业合作,都离不开它的庇护。
- 合规运营每次发布都基于完整的授权链,如同每次楼宇改造都有业主签字记录。
- 维护信任企业用户的法务团队信任有 CLA 的项目,如同购房者信任有业委会的小区。
- 规范流程贡献者必须先签 CLA 再提 PR,流程上的“强制”保证了法律上的“清晰”。
商业友好
最后,我们来看看 CLA 的商业价值。说得直白一点:CLA 让 PyTorch 成为了一家“商业友好”的开源项目。什么叫商业友好?就是企业敢用、敢投、敢在这个生态里做生意。没有 CLA,企业用开源项目就像踩在流沙上——今天能免费用的代码,明天可能因为版权问题被索赔。
CLA 的商业友好性体现在三点。第一,企业放心使用:有了清晰的授权链,企业可以把 PyTorch 集成进自己的商业产品,不用提心吊胆。第二,风险可控:如果某个贡献者后来主张权利,企业可以拿出 CLA 作为抗辩——“我们已经获得了合法授权”。第三,生态繁荣:商业友好吸引了更多企业参与贡献,形成了“企业贡献代码 → 项目变强 → 更多企业使用”的正向循环。
从商业的角度看,CLA 不是开源项目的“绊脚石”,而是“垫脚石”。它用一份小小的法律文件,为整个生态注入了信心和活力。就像小区公约让房价更稳定一样,CLA 让 PyTorch 的价值在商业世界里持续升值。
- 商业信心企业法务确认 CLA 后才会批准产品集成,如同购房者看到五证齐全才敢付款。
- 风险可控CLA 提供了法律上的确定性,让企业在做商业决策时“心中有数”。
- 生态繁荣商业友好与贡献者增长互为因果,形成飞轮效应。
AI 应用场景
场景一:为 PyTorch 贡献自定义算子
阶段:模型优化与部署
解决的问题:当你开发了一个高效的注意力机制算子,想贡献回 PyTorch 主库时,传统做法是通过 GitHub issue 提建议(效率低),或者直接提 PR(没有 CLA 会被拒)。签署 CLA 后,你的 PR 才能进入评审流程,被核心维护者审查并合并。
具体案例:一位算法工程师在 Transformer 推理优化中发明了一个融合算子,加速比提升 30%。他按要求签署了个人 CLA,提交 PR 后经过三轮 review,最终被合并到 PyTorch 的 torch.nn.attention 模块,成为所有用户可用的官方功能。他的 GitHub 主页因此多了个 "PyTorch Contributor" 的徽章。
场景二:企业内部分享开源合规经验
阶段:工程化落地与合规治理
解决的问题:许多 AI 公司在使用 PyTorch 时,内部工程师想贡献代码回上游,但担心法律风险。企业法务与 AI 团队协作,参考 CLA 的条款建立内部开源合规制度。
具体案例:某 AI 创业公司每年向 PyTorch 贡献多个 bug 修复和性能优化。公司 CTO 代表公司签署了企业 CLA,并在 CLA 中列入了 5 名算法工程师作为授权贡献者。工程师们在公司资源下写的代码,通过企业 CLA 合法地贡献给了社区。这种模式不仅提升了公司在开源圈的影响力,还吸引了顶尖人才的加入。
场景三:开源项目的 CLA 机器人集成
阶段:DevOps 自动化流程
解决的问题:开源项目维护者经常需要手动检查贡献者是否签署了 CLA,效率低且容易遗漏。通过集成 CLA 机器人,可以自动标记 PR 的签署状态。
具体案例:一个基于 PyTorch 构建的计算机视觉开源库,在 GitHub 上集成了 CLA 助手机器人。每当有新贡献者提交 PR,机器人自动检查其 CLA 状态,未签署的 PR 会收到提醒;签署后,PR 自动获得 "CLA Signed" 标签。整个流程无需人工干预,每秒处理 10 个 PR 的峰值也能从容应对。
Python 演示
"""CLA 签署流程模拟器展示贡献者从提交 PR 到签署 CLA 再到合并的完整状态流转""" from enum import Enum class CLAStatus(Enum): """CLA 签署状态""" NOT_SIGNED = "red" PENDING = "yellow" SIGNED = "green" class Contributor: """贡献者""" def __init__(self, name: str, email: str, is_corporate: bool = False): self.name = name self.email = email self.is_corporate = is_corporate self.cla_status = CLAStatus.NOT_SIGNED self.pull_requests = [] def sign_cla(self, authorized: bool = True) -> bool: """签署 CLA Args: authorized: 企业专属 - 是否在授权名单中 Returns: 是否签署成功 """ if self.is_corporate and not authorized: return False self.cla_status = CLAStatus.SIGNED return True def submit_pr(self, title: str) -> str: """提交 PR - 须先签署 CLA""" if self.cla_status != CLAStatus.SIGNED: return "PR blocked: CLA not signed" self.pull_requests.append(title) return "PR submitted: " + title def run_demo() -> None: """演示个人与企业两种签署场景""" # 场景1: 个人贡献者 dev = Contributor("Alice", "alice@example.com") print(dev.submit_pr("fix: batch_norm bug")) dev.sign_cla() print(dev.submit_pr("fix: batch_norm bug")) print("CLA status:", dev.cla_status.value) # 场景2: 企业贡献者 - 不在授权名单 corp_dev = Contributor("Bob", "bob@company.com", is_corporate=True) corp_dev.sign_cla(authorized=False) print("Bob's CLA:", corp_dev.cla_status.value) print(corp_dev.submit_pr("feat: flash_attention_v2")) # 场景3: 企业贡献者 - 在授权名单 corp_dev.sign_cla(authorized=True) print(corp_dev.submit_pr("feat: flash_attention_v2")) if __name__ == "__main__": run_demo()
class CLAStatus(Enum)定义三种状态:红(未签)、黄(待审)、绿(已签),对应项目中的 CLA 状态标签。is_corporate标记贡献者是否代表企业参与,决定后续签署逻辑是否走企业通道。sign_cla(authorized: bool = True)签署 CLA 的唯一入口,企业贡献者必须满足“授权名单”这一额外条件。if self.cla_status != CLAStatus.SIGNEDPR 合并的第一道闸门:没签 CLA 的 PR 一律拦截。run_demo()分别演示三种情景:个人顺利签署、企业未授权被拒、企业授权后放行。
常见误区
误区“我在 GitHub 上给 PyTorch 点了 Star,还转发过官方推文,我应该算贡献者了吧?”
正解点 Star 是“关注”,不是“贡献”。开源贡献的核心是代码、文档、issue 反馈等具体产出。而向 PyTorch 主仓库提交代码必须签署 CLA,否则你的 PR 连进入评审队列的资格都没有。点 Star 只是路人鼓掌,签约并提交代码才是真正上台表演。
为何常见:初入开源世界的人容易把“参与感”误认为“贡献”,混淆了社区用户与贡献者的边界。
误区“我在公司上班,代码是我写的,我以个人名义签 CLA 不就行了?”
正解如果你写代码的时间属于公司、用的是公司电脑、做的是公司的项目,那么代码的版权归属很可能属于公司而不属于你。这时你需要公司签署企业 CLA,并将你加入授权贡献者名单。个人 CLA 只能覆盖“业余时间、个人设备、与公司无关”的代码。否则未来可能面临职务作品归属的纠纷。
为何常见:大多数人缺乏职务作品的法律意识,以为“谁敲键盘,版权归谁”,实际上雇佣关系下版权默认归属雇主。
误区“签了 CLA 之后,我写的代码就不是我的了,变成了 PyTorch 的资产,以后我不能用了。”
正解恰恰相反。CLA 是“许可”而非“转让”。你保留代码的完整版权,只是授予 PyTorch 项目方使用、修改、再分发的许可。你仍然可以将自己的代码用于任何商业或非商业用途。这就好比你把房间钥匙给了物业一把,但房子还是你的。
为何常见:人们容易将“授权使用”误解为“所有权转移”,可能是因为 CLA 的英文名称里有 “Agreement“ 而忽略了 ”License” 的核心含义。
误区“签了 CLA 一辈子都要受约束?万一以后 PyTorch 被坏公司收购了怎么办?”
正解CLA 的“永久许可”只针对已经贡献的代码。你随时可以停止贡献新代码,已有的许可也不会让你承担额外义务。而且 PyTorch 由 Linux 基金会治理,许可证变更需要经过社区共识流程。事实上,正是这种不可撤销的许可,才让企业用户敢放心依赖 PyTorch——法律确定性带来的安全,远比“随时可能翻脸”的伪自由更有利。
为何常见:人对“永久”二字天然警惕,但忽略了许可与所有权、存量与增量的区别。
误区“CLA 无非就是点个'同意'按钮,签不签反正也没人查。”
正解PyTorch 的 PR 合并机器人会自动检测 CLA 状态,未签署的 PR 会被标注为红色并阻止合并。企业用户在招标和法务审计时也会核验 CLA 记录。2021 年 Linux 基金会还专门升级了 CLA 管理系统,可以实时跟踪百万级贡献者的签署状态。走形式?不存在的。这就像小区的门禁,虽然平时不觉得,但该刷卡的时候刷不了,就进不了门。
为何常见:在非正式的社区里参与久了,容易低估大型基金会项目的流程严格性。
面试题
Q1. 以下关于 CLA 的说法正确的是?
- A.CLA 会剥夺贡献者代码版权
- B.CLA 是版权许可而非版权转让← 正确答案
- C.CLA 只对企业贡献者有约束力
- D.点 Star 就代表已签署 CLA
答案:B。CLA 的核心是“授权许可”而非“所有权转移”。贡献者保留版权,只授予项目方使用、修改、再分发的权利。选项 A 混淆了许可与转让,C 忽略了个人的签署义务,D 更是混淆了关注与贡献。类比:签公约不卖房,只是许物业做公共修缮。
Q2. 个人贡献者在什么情况下签署 CLA 后即可贡献?
- A.业余时间写的代码且与公司无关← 正确答案
- B.工作时间写的代码但用个人电脑
- C.只要是本人写的代码即可
- D.需要先获得公司许可
答案:A。个人贡献者的前提是代码版权归本人所有。如果代码是在工作时间写的,版权通常归属公司,A 正确。B 错在设备不影响版权归属,C 忽略了职务作品的特殊情况,D 是企业贡献才需要的流程。类比:业余装修自己的房,才是个人的事。
Q3. 企业贡献者签署 CLA 时,必须完成哪一步?
- A.每位员工单独签署个人 CLA
- B.企业法人/授权代表签署并将员工加入授权名单← 正确答案
- C.向 Linux 基金会缴纳费用
- D.在代码中标注企业版权声明
答案:B。企业 CLA 的签署主体是公司实体,需要授权代表签字并列出可贡献的员工名单。个人 CLA 不能替代企业 CLA,签署 CLA 也不需要缴费。类比:公司名下的房产,只有法人签字才算数。
Q4. CLA 中的“无第三方权利”条款要求贡献者保证什么?
- A.不引用任何第三方代码
- B.代码不侵犯他人知识产权← 正确答案
- C.代码只能用于非商业用途
- D.保证代码永远免费
答案:B。“无第三方权利”承诺贡献的代码不侵犯他人的专利、著作权等。这不意味着不能引用第三方代码(需遵守相应许可),也不涉及商业用途或永久免费。类比:承诺房子没有抵押给其他人,而不是承诺不出租。
Q5. 未签署 CLA 就直接提交 PR,会发生什么?
- A.PR 被机器人拒绝或标记为红色← 正确答案
- B.PR 正常合并但标志为灰色
- C.系统自动代签 CLA
- D.贡献者账号被永久封禁
答案:A。PyTorch 等项目的 CLA 机器人会自动检查 PR 状态,未签 CLA 的 PR 被标记为红色(blocked)且无法合并。系统不会代签也不会封禁账号,但会阻止合并。类比:没刷门禁卡,楼门不会自动打开,但也不会把你拉黑。
Q6. 以下哪些是 CLA 对开源项目的益处?
- A.保护项目法律安全← 正确答案
- B.让企业放心使用代码← 正确答案
- C.确保所有代码完全免费
- D.建立清晰的授权链← 正确答案
答案:ABD。CLA 建立授权链、保障法律安全(A)、提升商业信任(B)、规范治理(D)。但 CLA 不决定代码是否收费——那是许可证的事。类比:业委会的存在让住户安心,但不代表房租全免。
Q7. PyTorch 采用哪种 CLA 模式?
- A.自定义专属 CLA
- B.Linux 基金会推荐的 Apache CLA 2.0← 正确答案
- C.Apache License 2.0 替代
- D.无需 CLA 的隐形契约
答案:B。PyTorch 使用的 CLA 是由 Linux 基金会托管的 Apache CLA 2.0 模板。它提供了标准化的版权许可条款,被多个顶级项目采用。选项 C 的 Apache License 是软件许可证,而非贡献者协议。类比:PyTorch 小区用的是行业标准的“军规级”公约范本。
Q8. 企业贡献者从“写代码”到“PR 合并”,法律路径包括?
- A.公司签署企业 CLA← 正确答案
- B.员工被加入授权名单← 正确答案
- C.员工个人也需签个人 CLA
- D.法务确认代码无侵权← 正确答案
答案:ABD。企业贡献的关键是企业签 CLA + 员工在授权名单中。员工不需要签个人 CLA(A 正确,C 错误)。签署前,企业通常会做知识产权审查(D),确保代码不会给项目方带来法律风险。类比:公司出面签公约,指派员工为授权住户,入住前先验房。
Q9. CLA 中“永久许可”意味着什么?
- A.贡献者不能撤销已贡献代码的使用许可← 正确答案
- B.贡献者必须终身提交代码
- C.贡献者的代码永不修改
- D.贡献者可随时撤回所有代码
答案:A。永久许可是对“已贡献代码”而言的,一旦授予,项目方可以永久使用。贡献者没有任何继续贡献的义务,代码也可能会被修改。D 恰与“不可撤销”相反。类比:已经交出去的钥匙,不能再收回,但你可以不再配新钥匙。
Q10. 以下哪些行为可能导致 CLA 法律风险?
- A.贡献了同事写的代码但未获许可← 正确答案
- B.引用了 GPL 代码到 PyTorch 贡献中← 正确答案
- C.在公司写的代码用个人 CLA 签署← 正确答案
- D.签署后对代码进行大量更新
答案:ABC。A 侵犯同事版权,B 可能带来 GPL 传染风险,C 涉嫌职务作品归属违规。D 是正常贡献行为,不违反 CLA。这题考察 CLA 中的“原创声明”和“无第三方权利”双重保证。类比:拿别人的装修图纸冒充自己的设计,还让物业给盖章——出事只是时间问题。