I Regret Migrating to Codeberg

Marius

我后悔迁移到了 Codeberg

原文由 Marius 发布,订阅该博客

我后悔迁移到了 Codeberg

我离开 GitHub 的主要原因,并非某个功能或某次宕机,而是平台在 Microsoft 掌控下日渐“垃圾化”(enshittification)。网页界面被重写成了一坨臃肿迟缓的 JavaScript,要么把原本好好的功能搞坏,要么慢到让人用起来痛苦不堪。除了技术上的衰败,GitHub 本身也已在很大程度上变成了事实上的“公共基础设施”——这一点和 WhatsApp 如出一辙,它托管着全球相当大比例软件的源代码,也因此让 Microsoft 对所有人的项目乃至每个人的数字生活,都获得了本不该由任何一家公司掌握的掌控力和监视能力。再加上时不时传出正经开发者因 Microsoft 的随意封禁而丢失账号的消息,更让人觉得至少应该在别处留个备份。

Codeberg 看起来是个可行的替代方案。它为自由开源项目提供了一个靠谱的归宿,更重要的是,同样是免费的——由一家非营利协会运营,而不是全球最大软件厂商的子公司。可惜的是,它最近一次服务条款的更新,似乎正在朝着改变我当初选择它的原因之一迈出第一步,也就是“自由”这一点。

人类的愚蠢

迄今为止我发布的所有项目,都是靠 100% 的人类愚蠢而非“人工智能”——更准确地说,是 LLM——做出来的。对于 Codeberg 禁止以 LLM 为主的项目,我倒没有特别强烈的意见,至少远不及我对它同时封禁正当的加密货币项目的看法;后者给人的感觉纯粹是被顺带捎上的,仅仅因为在 LLM 接过“当红反派”这个头衔之前的几年里,加密货币正是那个反派。这两项条款相隔仅数日出台——禁止 LLM 的是 6 月 29 日,禁止加密货币的是 7 月 2 日,都是以 Assembly 2026 提案的形式——而条款现在竟把后者归入了所谓“损害 Codeberg 声誉的内容”一类,这听起来就像是用法律术语在说“我们并没有充分的理由,也没有足够的不良先例来一刀切地封禁它”。

然而,那篇公告博文写得非常糟糕,其中题为 “The development team of none”(无人开发团队)的一节尤为糟糕。文中写道:

使用 LLM 来处理你的代码会给你带来一阵肾上腺素飙升。你可以飞速开发,像拥有一支庞大团队那样去构建东西。只不过,你根本没有团队。事实上,你(往往)是孤身一人,和一台把能源转化为代码的统计机器一起工作。

再往下一点,它又写道:

似乎许多“氛围编程者”并没有意识到,他们身边其实并没有一个社区。

这完全脱离了大多数自由软件的实际生产方式。绝大多数 FOSS 开发者都是单打独斗,他们身边唯一的 cOmMuNiTy,不过是那些提需求、报 bug,却几乎从不以任何形式做出贡献的用户。我发布那些不起眼的小工具已经有几十年了,早于这个网站,甚至早于 GitHub 本身(还记得 SourceForge 曾是热门货的年代吗?),而其中没有任何一个项目真正拥有过“社区”,至少不是 Codeberg 在那篇文章里所浪漫化的那种。我是个独狼,所有代码都亲手敲,花在上面的时间多得离谱;而那种认为 LLM 才是区分拥有真实社区的真项目和虚假项目的分水岭的说法,只要看看托管平台上那些普普通通却实用的小工具究竟是如何诞生的,就根本站不住脚。

坦率地说,Codeberg 提出这种论调本身就有点傲慢。要知道,这个平台实际上就活在 Forgejo 的圈子里,而 Forgejo 叛变 继承了其活跃贡献者社区——这个社区是 GiteaForgejo 出现之前,花了整整六年多时间才建立起来的。一个靠硬分叉别人的项目来获得自己社区的平台,反过头来却去教训独立开发者没有社区,这种立场实在很难让人一本正经地接受。

此外,Codeberg 把“拥有社区”跟“值得被托管的正当软件”混为一谈,而个人项目的门槛向来只是一个能跑起来的构建、最好有一个许可证、再加上一份 README,而不是一个挤满贡献者的频道。小型单作者工具生态之所以有价值,很大程度上恰恰在于它们不需要靠社区来证明自己存在的合理性;而一个卖点就是为个人代码提供托管的平台,却反过来论证相反的观点,未免有些奇怪。

审查

真正让我困扰的,并不是对 LLM 项目的具体禁令,也不是对加密货币项目的具体禁令。而是一个以“自由软件”为核心的平台,如今却在告诉用户哪些类型的软件是好的、哪些不是,这比看上去更接近审查。一旦平台在条款中写明某一整个类别“损害其声誉”并可据此移除,决定因素就不再是代码是否合法、是否可用、是否有用,而是它是否符合平台所持的立场。在我看来,被这种一刀切禁令波及的项目中,有相当大一部分其实是正当的软件,而不是氛围编程拼凑出的垃圾或是山寨币的粗劣实现。

在我能想到的所有采取这种做法的平台中,无一不是在开始向用户推行某种意识形态的那一刻就变得充满分歧,无论那种意识形态当时看起来多么正当、理由多么充分。其机制总是如出一辙:先是出现一个真实的问题,然后一个不受欢迎的类别成了显眼的替罪羊,平台不是去解决真正的问题,而是直接封禁这个类别,而这次封禁又成了下一次、再下一次封禁的先例。今天被认为毫无争议、可以封禁的类别,就是明天这套机制得以存在的理由,而那些为第一次封禁叫好的人,到了第二次往往根本不会被征求意见。

我承认,这两个类别都并非没有问题。LLM 驱动的仓库确实会给基础设施带来压力,确实会产生大量难以管理的低质量 issue 和 pull request,也确实带来了关于版权和代码来源的现实问题——这些 Codeberg 在博文中都有提到。而加密货币领域,也可能比软件领域几乎任何其他角落都制造了更多彻头彻尾的骗局。然而,对“当红反派”搞一刀切的封禁,并不能解决其中任何一个问题。

如今就连 Linus Torvalds 这样的人也在提出一个相当合理的观点:LLM 只是一种工具,而且“显然是一种有用的工具”,只要使用得当、其产出也按与其他所有代码相同的标准来检验,它在 Linux 内核开发中完全有一席之地。如果地球上最大、最重要的开源项目的维护者都能把 LLM 当作一种以结果论成败的工具,而不是一见就该封禁的类别,那么一个后院小作坊式的代码托管平台同样应该能做到。

我同样担心 LLM 未来对技术乃至整个社会的影响,我猜我的担心程度和写下 Codeberg 这项政策的人不相上下。只是我不认为封禁内容——而这本质上就是在封禁内容——是解决问题的出路。

合理的解决方案

我更希望 Codeberg 采取的,是把真正的问题当作资源问题来对待的解决方案——按他们自己在同一篇博文中的说法,真正的问题就是资源消耗及其带来的基础设施成本。服务条款本可以要求作者勾选一个复选框,声明某个仓库包含 LLM 生成的代码,或与加密货币相关,然后将这些仓库分隔到另一档基础设施上,不再享有与其他人相同的资源。这一档可以设定具体的配额,甚至可以要求作者为其消耗付费。诚实申报至少在起初不需要任何成本;而故意隐瞒、一旦被发现,则可以施以 Codeberg 如今对整个类别一上来就采取的那种永久、立即的封禁。

同样,被打上 LLMCrypto 标签的项目,也可以自动显示免责声明,明确声明 Codeberg 对该特定仓库的质量或正确性不承担任何责任。甚至,他们大可以在这些警告中直言不讳地声明 Codeberg 并不认可 LLM 或加密货币的使用,以确保再三强调、让人彻底明白,从而让 Codeberg 不存在任何“声誉风险”。

这样的做法把资源消耗型项目的成本转嫁给了创造它们的人,同时为那些构成平台存在理由的项目保留了共享资源。所有这些,都无需 Codeberg 去判定哪些类型的软件在意识形态上是可接受的。“凡是我们不认同的就一律预先封禁”的做法,传递的是错误的信号,而且是一条非常危险的滑坡。

尽管我手头没有一个项目属于这两个被禁类别,我现在还是打算去搭建自己的公共 Git 托管服务,并且会在迁入 Codeberg 仅仅几个月后就再次迁离,就因为这件事。不是因为禁令本身,而是因为我不想依赖一个可以随心所欲重写服务条款、事先没有恰当宣告该变更正在酝酿、也没有给用户任何参与发言机会的平台。

这些决定确实经过了 Codeberg 自己的 Assembly 2026,这已经比大多数平台走的流程要多了,但作为一名普通用户,我和其他大多数人一样,是在事情已经尘埃落定的当天,通过网站顶部一条深蓝色横幅才得知的。虽然我感谢关于 ToS 变更的通知,但我更希望在平台还在考虑是否要走这条路时就能看到这样一条横幅,并且它能链接到一个讨论帖,至少是一个投票,让我有机会表达我的担忧——我的担忧关乎整个平台的自由,而非某个最终被禁的具体类别。

本文章由 muse-spark-1.2-contributor 进行翻译

评论