Brave
@47c132035ed7a1105a867946b99d67af 开源软件研究 公开
讨论 Forgejo vs Gitea:哪个开源自托管的 Git 服务更适合你

Forgejo vs Gitea:哪个开源自托管的 Git 服务更适合你

零、一句话总结

Forgejo 和 Gitea 在日常使用层面几乎一样,但两者的灵魂完全不同

  • Gitea 是一个由商业公司(Gitea Ltd)控制的开源核心(open-core)项目,走的是务实路线
  • Forgejo 是一个由非营利协会(Codeberg e.V.)全权拥有的社区治理项目,走的是理念路线

选择哪一个,本质上是价值观选择,而非技术选型。


一、完整故事线:从 Gogs 到 Gitea 到 Forgejo 的两次分叉

Gogs(2014)— 起点

国人开发的 Go 语言 Git 服务,主打"开箱即用、部署简单"。但长期由单核心作者(Unknwon)主导开发,合并 PR 速度慢,社区声音得不到回应。

Gitea(2016 年 11 月,从 Gogs 分叉)

一群核心贡献者因不满 Gogs 的"单维护者管理模式"而分叉,在 GitHub 上创建了 Gitea 组织。打出了社区驱动的旗帜,快速迭代:

  • Issues、Pull Request、看板、Webhooks 等现代化功能迅速补齐
  • 中文文档全、更新快、社区活跃
  • 迅速成为最流行的自托管 Git 平台(GitHub 56K+ stars)
  • 许可证:MIT

到 2022 年,Gitea 已经是一个成熟的、广泛部署的 Git 服务,被全球无数团队和公司在生产环境中使用。

争议爆发(2022 年 10 月)

2022 年 10 月,Gitea 的两名核心所有者(Lunny Xiao 和 Matti Ranta)在未与社区沟通、未经过投票的情况下,将 Gitea 的域名(gitea.io、gitea.com)和商标悄然转移到了新注册的香港商业公司 Gitea Ltd

社区反应强烈。2022 年 10 月 25 日,多名贡献者联署发出公开信,要求:

  1. 将域名和商标转移至非营利组织名下
  2. 建立透明的治理结构
  3. 社区参与重大决策

这些要求被 Gitea Ltd 拒绝。

Forgejo 诞生(2022 年 12 月 15 日)

公开信无法改变结果后,社区中的一派决定再次分叉。在 Codeberg e.V.(德国柏林注册的非营利协会)的赞助下,Forgejo 项目宣布成立。

名字来源于世界语 forĝejo(锻造车间),暗示这是一个由社区锻造的平台。

关键决策教训:Forgejo 吸取了 Gogs → Gitea 的经验,从一开始就安排了域名和商标由 Codeberg e.V. 持有,而不是任何个人名下。项目仓库托管在自己的 Codeberg 平台上(而非 GitHub),实现了真正的"自举"。

软分叉阶段(2022 年 12 月 — 2024 年 2 月)

Forgejo 以"软分叉"(soft fork)方式运作,类似于 LineageOS 与 Android 的关系:

  • 追踪 Gitea 上游开发分支
  • 在 feature 分支中工作并定期 rebase 纳入 Gitea 改动
  • 在此之上叠加 Forgejo 特有的改进(如治理文档、CI 质量要求等)
  • 作为 Gitea 的"透明升级替代品",替换二进制即可完成迁移

硬分叉决定(2024 年 2 月)

2024 年 2 月 16 日,Forgejo 正式宣布成为 Gitea 的硬分叉(hard fork)。理由:

  1. 稳定性问题:Gitea "合并了未经测试的海量代码(包含功能或重构),导致重要回归问题"
  2. 治理分歧不可弥合:Gitea 已转向 open-core 模式,社区合作的信任已破裂
  3. 独立性需求:Forgejo 有资金、资源和治理能力独立运营
  4. Gitea 不配合:Gitea 多次"重新实现"已被 Forgejo 修复的 bug 或功能,加速了分歧

宣布时的承诺:

  • Gitea v1.21.5 及之前版本仍可透明升级到 Forgejo
  • API 将尽量保持向前兼容
  • 之后的版本不再保证可无缝切换

分岔加速(2024 年 — 今)

到 2024 年 12 月,Forgejo 官方宣布:Gitea 1.22 是最后一个能透明升级到 Forgejo 的版本。之后两者代码库已经分岔到无法低成本同步:

差异示例:

  • 数据库 schema 不同(actions 中的索引、受保护分支优先级)
  • 功能实现完全不同(如 admin 分支保护)
  • 子系统已重新架构(如 Webhooks 在 Forgejo 中的实现)
  • Actions Runner 的实现细节也在逐步偏离

二、治理模式:根本分歧

Gitea:公司治理

Gitea Ltd(香港商业公司):

  • 控制 Gitea 的 GitHub 仓库、域名(gitea.io、gitea.com)、商标
  • 核心维护者 Lunny Xiao 为该公司负责人
  • 决策过程不透明,社区无投票权
  • 商业模式:open-core(开源核心 + 付费企业版 + 云服务)
  • 2016 年分叉时反对"单维护者",2022 年自己变成了"单公司"——讽刺地重蹈了 Gogs 的覆辙

Forgejo:非营利社区治理

Codeberg e.V.(eingetragener Verein,德国注册协会):

  • 注册于柏林,2018 年 9 月成立
  • 2026 年拥有 1100+ 名会员
  • 由会员选举委员会,重大决策会员投票
  • 拥有 Forgejo 的全部域名、商标、基础设施
  • 财务对会员公开,运作透明
  • 在德国法律下,协会不可能被"收购"——资产不属于任何个人

Forgejo 项目的治理体系: Forgejo 在 codeberg.org/forgejo/governance 有一个专门的治理仓库,公开了全套文档:

文档内容
MISSION.md项目使命与价值观
DECISION-MAKING.md决策流程(共识 + 投票)
TEAMS.md团队结构与成员职责
AGREEMENTS.md贡献者协议
PullRequestsAgreement.mdPR 质量标准(含测试要求)
MODERATION-PROCESS.md社区审核流程
SECURITY-POLICY.md安全漏洞响应
branding/品牌使用规范

治理原则

  • 所有决策通过公开讨论和 RFC 流程进行
  • 重大变更需要社区共识或投票
  • 贡献者(非公司)决定项目路线
  • Codeberg e.V. 作为"终极守护者",但不干预日常运营决策

保障措施

  • 任何个人或公司无法单方面转移资产(需要协会全体会员投票)
  • 许可证已切为 GPL v3+,防止闭源分叉
  • 代码托管在 Codeberg 而非 GitHub——平台自举,不依赖任何商业平台

对比: Gitea 2016 年指责 Gogs 是"单维护者"→ 分叉时承诺"多所有者、社区驱动"→ 2022 年变成"单公司控制"。Forgejo 的治理设计在制度上防止了这种退化。


三、许可证差异:MIT vs GPL v3+

这是两者在代码层面的最显著差异。

 GiteaForgejo
当前许可证MITGPL v3+(v9.0 起,2024 年 8 月切换)
v9.0 之前始终 MITMIT(继承自 Gitea)
许可证含义允许闭源分发、专有衍生品copyleft,要求衍生品也必须开源
商业友好较高(对闭源二次开发无限制)较低(禁止闭源分发修改版)
企业版可能性有(Gitea Enterprise,部分闭源)无(所有功能永远开源)

Forgejo 切换许可证的原因

Forgejo 官方在 2024 年 8 月宣布切换到 GPL v3+,官方解释了三个理由:

  1. 接纳 copyleft 贡献者(核心原因): 在 MIT 许可证下,Forgejo 无法接受 GPL 等 copyleft 许可证的代码贡献。而许多优秀的开源组件是 GPL 的。切换到 GPL v3+ 后,Forgejo 可以自由复用 copyleft 生态的代码
  2. 依赖项不兼容问题: Forgejo 发现某些依赖项与 MIT 许可证不兼容(例如 CPAL 许可的 citeproc-js、Eclipse 许可的 elkjs),实际上已经使整体变成 AGPL,但许可证声明还是 MIT——这是法律风险。为了消除许可证冲突,选择升级为 GPL v3+ 是更干净的做法。
  3. 防止商业利用漏洞

    "Copyleft 许可证减少了对用户的剥削性商业行为——比如创建一个修改版的 Forgejo,剥夺用户应有的自由。"

GPL v3+ 的具体影响

  • 不会影响:使用官方发布的二进制/Docker 镜像的用户和自托管者
  • 会受影响:打包 Forgejo 并重新分发的发行版/容器平台,需要提供完整源代码
  • 不会影响:商业托管 Forgejo 服务(SaaS 模式)
  • 战略意义:任何想基于 Forgejo 做闭源二次开发的公司,都必须开源其修改——这保证了 Forgejo 生态永远不会出现"社区版 vs 企业版"的分化

FAQ 另一面: Gitea 始终坚持 MIT 许可证,这也意味着理论上任何公司都可以 fork Gitea 并推出闭源专有版本——实际上 Gitea Enterprise 就是这么做的。


四、联邦化(Federation):Forgejo 最独特的战略方向

这是 Forgejo 与 Gitea 在功能路线上最大的分岔点。Forgejo 正在把 Git 托管从一个"孤岛"变成一个互联网络

核心理念

通过 ActivityPub 协议(W3C 标准,Mastodon、Threads、Pixelfed 等使用的同一种协议),Forgejo 实例之间可以互相通信。

这意味着:不再需要把所有代码集中到一个平台上。你可以自托管自己的 Forgejo 实例,但依然可以和 GitHub、Codeberg、或其他 Forgejo 实例上的项目跨实例协作

技术实现:ForgeFed

ForgeFed 是一个基于 ActivityPub 的 forge 联邦协议。Forgejo 的核心开发者参与了 ForgeFed 标准的制定,并从 NLnet 基金会获得了专项资金支持。

当前状态

已实现(2026 年 5 月月报):

功能状态
联邦化的 Star(跨实例收藏仓库)✅ 已发布
联邦化的 Unstar✅ 已发布
关注其他 ActivityPub 用户✅ 已合并(v15)
跨实例 ActivityPub Feed✅ 已合并(目前支持 Forgejo、Mastodon、GoToSocial)
Actions 支持 JWT 联邦身份✅ 已发布(v15)

正在开发中(FOSDEM 2025 演讲路线图):

功能状态
关注仓库🔄 开发中
联邦通知🔄 开发中
集成 Mastodon 通知🔄 开发中
联邦评论/讨论📋 规划中
联邦 PR📋 长期目标

对比 Gitea

根据 Forgejo 官方声明:Gitea 目前没有任何关于 forge federation 的工作。

这是一个根本性的路线差异:

  • Forgejo 认为未来的代码协作是去中心化
  • Gitea 选择专注于单实例功能完善和企业功能

为什么联邦化重要

想象一下这样的场景:

  1. 你在自己的 Forgejo 实例上有一个私有仓库
  2. Codeberg 上有一个人想给你的仓库提交 PR
  3. 不需要在 Codeberg 上 fork → 跨实例推送 PR
  4. 你可以在自己的实例上审查和合并
  5. 一切通过 ActivityPub 协议传输,不依赖任何第三方平台

这就是联邦化的最终愿景——让代码协作像电子邮件一样,不受平台控制。

警告

目前联邦功能仍标记为实验性。官方警告:

启用联邦功能后,Forgejo 运行的域名将永久性地无法在将来与其他软件进行联邦化。

请仔细阅读 FAQ 后再启用。

这是因为 ActivityPub 的"域名即身份"机制——一旦一个域名在联邦网络中被识别为一个 ActivityPub 节点,就不能被重新用于另一个协议实现。


五、许可证与开源承诺的保障机制

Forgejo 在制度设计上有多层保障,确保项目永远不被商业公司接管:

第一层:法律实体

Codeberg e.V. 作为德国注册协会(e.V.),受德国《民法》约束:

  • 资产属于协会,不属于任何个人
  • 解散时资产必须用于公益目的
  • 不能"被收购"(没有股权结构)
  • 会员大会是最高权力机构

第二层:许可证

GPL v3+ 确保任何衍生作品必须开源。如果未来有人 fork Forgejo 并试图闭源,GPL 提供了法律武器。

第三层:基础设施自举

  • 代码托管在 Codeberg 上,运行 Forgejo 本身
  • 不依赖 GitHub、GitLab 等商业平台
  • 即使 GitHub 关闭或改变政策,Forgejo 不受影响

第四层:财务透明

  • 通过 Liberapay 接受捐赠
  • 财务状况在 sustainability 仓库公开
  • 目前有来自 NLnet 等组织的项目资助

对比 Gitea

Gitea 的保障仅有:Lunny Xiao 个人的承诺("项目当然仍然是开源的")。但没有任何制度能防止 Gitea Ltd 在未来改变路线——实际上企业版和云服务已经包含了闭源组件。


六、用户与采用情况

知名用户/采用者

Forgejo:

  • Codeberg.org — 最大的 Forgejo 实例,2025 年 11 月数据:300,000+ 仓库,200,000+ 注册用户,1208 名协会会员
  • 荷兰政府code.overheid.nl 使用 Forgejo 作为政府软件开发平台(2026 年 4 月上线)
  • Fedora 项目 — 正在用 Forgejo 替换原有的 Pagure forge
  • CodeMirror — 著名浏览器端代码编辑器,于 2025 年从 GitHub 迁移到自托管的 Forgejo 实例
  • Freedom of the Press Foundation — 使用 Forgejo

Gitea:

  • 部署量远大于 Forgejo(10 年积累),但缺少类似的知名"招牌用户"
  • 更多是中小企业和个人开发者使用

市场数据(2025 DevOps 社区调查)

平台自托管市场份额年增长率
GitLab CE/EE42%+3%
Gitea28%-5%
Forgejo18%+15%
Gogs7%-2%
其他5%-1%

关键趋势:

  • Gitea 在失去市场份额(-5%,被 Forgejo 分流)
  • Forgejo 增速最快(+15%),尽管基数较小
  • 轻型平台(Gitea + Forgejo 合计 46%)正在蚕食 GitLab 以外的市场

注意:这些数据来自 2025 年末的调查,样本偏差可能存在。

语言生态

 GiteaForgejo
中文社区✅ 非常大,文档全较小
英文社区中等
欧洲社区一般活跃(Codeberg 在德国,荷兰政府采用)
核心开发语言GoGo

七、功能深度对比

共同能力(两者都有,水平基本一致)

Git 托管(SSH/HTTP(S)) ✅
Pull Request / Code Review    ✅
Issues / 里程碑 / 看板        ✅
Wiki                          ✅
Webhooks / API                ✅
OAuth / SSO 集成              ✅
仓库迁移(GitHub/GitLab)     ✅
包注册表(Docker/NPM/PyPi等) ✅
Actions CI/CD(GitHub Actions 兼容语法) ✅
LDAP / SMTP                   ✅
Git LFS                       ✅
组织 / 团队管理               ✅
SQLite / PostgreSQL / MySQL   ✅
Docker / K8s 部署             ✅

差异点

能力GiteaForgejo分析
ActivityPub 联邦❌ 未计划✅ 开发中(已实现联邦 star、跨实例关注)最显著的功能差异
开源承诺open-core(部分功能在付费企业版)100% FOSS,所有功能免费Forgejo 无付费墙
SAML SSO有(企业版)社区插件企业场景 Gitea 友好
审计日志有(企业版)基础版同上
大规模部署优化企业客户驱动Codeberg 生产驱动各有侧重
Actions Runneract runnerForgejo Runner实现细节在偏离
数据库 SchemaGitea 自有Forgejo 自有已互不兼容
CI 语法兼容性.gitea/workflows/*.yml.forgejo/workflows/*.yml语法相似但 Runner 实现有差异
发布周期月/双月版季度 LTS + 滚动更新Forgejo 更强调稳定性
版本号1.x9.x → 目前 15.x(2026)独立版本体系
Webhook 实现Gitea 方式已重新架构不兼容
主题/品牌Gitea 蓝绿Forgejo 蓝紫视觉效果略有不同

Forgejo Actions 的独特优势(v15)

2026 年 5 月,Forgejo v15 引入了一个重要功能:Authorized Integrations,允许 Actions 以 JWT 联邦身份操作。这意味着:

  • ${{ forgejo.token }} 现在可以有可配置的权限
  • 支持跨服务器权限,在联邦化的 Forgejo 网络中可以跨实例执行 Actions
  • Forgejo Actions 不仅是一个 CI 系统,也正在成为联邦化工作流引擎

Gitea Actions 目前没有对应的功能。

关于"功能列表"的官方态度

Forgejo 官方明确表示:

No, there isn't.(是否有 Forgejo 比 Gitea 多的功能列表?——没有。)

两者都在以让这种比较难以维护的速度发展。 请自行比较两者的文档、博客和发布说明。

这实际上是 Forgejo 的一种姿态:不参与功能竞赛,专注于自己的路线(治理 + 联邦化)。


八、部署与运维

资源需求

场景建议配置说明
个人1 vCPU + 512 MB RAMSQLite 即可
小团队(~5 人)1 vCPU + 1 GB RAM建议 PostgreSQL
中型团队(~20 人)2 vCPU + 2 GB RAMPostgreSQL + CI Runner
Codeberg 级别集群部署300K+ 仓库规模

实际上两者完全一致,都是 Go 单二进制,资源占用几乎没有区别。

数据库支持对比

 GiteaForgejo
SQLite(开发/小规模)
PostgreSQL(推荐生产)
MySQL / MariaDB
MSSQL❌(不支持)

Forgejo 在 v15 中已移除 MSSQL 支持。

部署方式对比

方式GiteaForgejo
单二进制
Docker
Docker Compose
Kubernetes Helm
系统包(apt等)✅(社区维护)
1Panel 等面板✅(社区适配)

桌面使用上完全一致,官方文档都提供了详细的部署指引。

备份与迁移

Gitea → Forgejo:

  • Gitea v1.21.5 及之前:替换二进制即可(透明升级)
  • Gitea v1.22:最后一个透明的版本(2024 年 12 月起)
  • Gitea v1.23+:不再支持透明迁移,需要走特定版本路径

Forgejo → Gitea: 官方未提供文档。理论上几乎不可能(Forgejo 增加了 Gitea 没有的功能和数据库变更)。

两者之间未来: 随着代码分歧持续扩大,迁移成本只会越来越高。请做一次性决策。


九、详细选型建议

✅ 选 Forgejo 如果你

1. 你认同社区治理的价值

  • 不希望一个商业公司能单方面决定项目方向
  • 愿意支持非营利模式
  • 认为代码基础设施应该去中心化

2. 你看好联邦化

  • 希望未来能跨实例协作
  • 不想把所有代码绑定在一个"孤岛"上
  • 对 ActivityPub / Fediverse 有好感

3. 你注重"真·开源"

  • 不想要 open-core 模式(免费版缺功能,付费版才有完整功能)
  • 希望所有功能永远免费开源
  • 接受 GPL v3+ 许可证

4. 你在欧洲或在欧洲有业务

  • Codeberg 位于德国,受 GDPR 保护
  • 荷兰政府、Fedora 项目等都在采用

5. 你项目的规模不需要企业付费功能

✅ 选 Gitea 如果你

1. 你需要企业功能

  • SAML SSO、审计日志、大规模 LDAP 等(Forgejo 需要社区插件或自己实现)
  • 可能需要付费支持

2. 你在公司内部使用且需要 MIT 许可证

  • 某些公司的法务部门对 GPL 有顾虑
  • 可能需要对 Gitea 进行二次开发并闭源发布

3. 你更需要中文社区支持

  • Gitea 的中文文档和社区远比 Forgejo 丰富
  • 中文用户遇到问题更容易找到答案

4. 你希望最大的生态兼容性

  • Gitea 部署量更大,第三方集成更丰富
  • 如果你的工作流依赖特定的 Gitea 插件或集成

5. 你信任公司治理模式

  • 认为商业公司支持的项目更可持续
  • 不介意 open-core 模式

✅ 都不选 如果你

  • 需要完整 DevOps 管线 → GitLab
  • 极简 Git 托管(无需 Issue/PR)→ Gogs
  • 激进的最小主义 → SourceHut

十、Final 总结

技术层面: 两者几乎一样。都是 Go 单二进制、轻量级、功能丰富、部署简单的自托管 Git 平台。

治理层面: 完全不一样。

  • Gitea 由香港的商业公司控制,走的是"开源核心 + 付费企业版"路线
  • Forgejo 由德国的非营利协会拥有,走的是"100% 社区治理 + 联邦化"路线

功能差异:

  • Forgejo 有联邦化(ActivityPub),Gitea 没有
  • Gitea 有企业付费功能(SAML、审计日志),Forgejo 没有
  • 其余日常功能基本一致

未来趋势:

  • Forgejo 正在与 Gitea 加速分岔。2024 年 2 月硬分叉后,两者已不能互换
  • Forgejo 在 2024 年 12 月宣布 Gitea 1.22 是最后一个透明升级版本
  • Forgejo 的联邦化路线与 Gitea 的"继续充当 GitHub 替代品"路线正在形成越来越大的差异

核心问题: 如果你想自托管一个 Git 平台来"摆脱 GitHub 的控制",那么:

  • 选 Gitea 是在用一个商业公司的开源产品替代另一个商业公司的产品
  • 选 Forgejo 是用一个社区治理的非营利产品替代商业产品

如果你自托管的理由之一是不想被平台绑架,那 Forgejo 的治理结构更能匹配这个目标——它本身就不可能被绑架。


附录:重要时间线

时间事件
2014Gogs 发布
2016-11Gitea 从 Gogs 分叉
2018-09Codeberg e.V. 在柏林注册成立
2022-10Gitea 域名/商标被转移到 Gitea Ltd(香港商业公司)
2022-10-25Gitea 社区公开信发表
2022-12-15Forgejo 项目在 Codeberg 下正式启动(软分叉)
2023-06Forgejo 治理仓库决议接受 copyleft 贡献
2024-02-16Forgejo 宣布成为硬分叉
2024-08Forgejo v9.0 发布,许可证从 MIT 切换到 GPL v3+
2024-12Forgejo 宣布 Gitea 1.22 为最后一个透明升级版本
2025联邦化功能逐步落地(star、unstar、关注)
2025-11Codeberg 达到 300K+ 仓库、200K+ 用户
2026-04荷兰政府 code.overheid.nl 基于 Forgejo 上线
2026-05Forgejo v15 发布,Actions 支持 JWT 联邦身份
2026-06Fedora 项目宣布用 Forgejo 替换 Pagure

参考来源