自从 18 年 GitHub 被 Microsoft 收购后,围绕服务开发者,陆陆续续推出了一些十分贴心的服务,比如:
服务 | 解决问题 |
---|---|
Codespaces | 代码编写 |
Actions | 自动测试 |
Packages | 托管分发 |
Code security | 漏洞探测 |
Discussions | 用户交流 |
Sponsors | 盈利 |
Pages | 网站托管 |
不得不说微软在下一盘大棋,不过今天并不是讨论微软的商业战略(我也不懂🙃),GitHub 无疑已经是现在开发者的必备,但还是希望读者能意识到它本质还是家商业公司,在提供这么多好用、免费的功能同时,肯定会在其他方面找回来,比如前不久收费的副驾驶员 Copilot,毕竟天下没有免费的午餐。甚至以后在 VSCode 中出现 Azure 广告我都不会觉得惊讶,也不担心,毕竟我用 Emacs 🤪(图片来源)
而且,GitHub 在 19 年禁用过伊拉克用户的访问,当时的 CEO 在 Twitter 上是这么回应的:
It is painful for me to hear how trade restrictions have hurt people. We have gone to great lengths to do no more than what is required by the law, but of course people are still affected. GitHub is subject to US trade law, just like any company that does business in the US.
在俄罗斯攻打乌克兰时,也有群众呼吁禁用俄罗斯的用户访问,只不过最后没有实施而已。
当然,不仅仅是上述原因,重要文件多处备份永远都是非常必要的。对于追求 FOSS(Free and open-source software),不想被 GitHub/GitLab 等商业公司 lock in 的读者,推荐了解下面几个托管平台:
- Codeberg.org,由一家位于德国的非盈利组织创办,整个生态都是基于开源软件构建,托管服务基于 Gitea,持续集成基于 Woodpecker CI。它和 GitHub 体验非常类似,Issue、Pages、Packages、Release 都有,是迁移 GitHub 的首选。它可以在不同托管平台间进行 mirror,达到备份效果。后文会介绍到。
- Why I Use Sourcehut,Drew DeVault 的个人项目,100% 开源。与 GitHub 等平台最主要的区别是基于邮件来沟通,项目托管收费
Why Choose Savannah,主要托管 GNU 项目,虽然最近也发布了 nongnu 的支持,但是使用门槛还是相对较高:
- 要求项目必须用 GPL 类协议;
- 不能依赖 non-free 的软件;
- 如果两周以上不活跃,可能会被删号
个人觉得,追求纯 FOSS 有些属于软件开发领域的意识形态,属于吃饱没事干才会考虑的问题,但人就是这样的物种,多多少少都有些自己的坚持。
下面两篇文章个人觉得写的比较好,供参考,读者可结合自身情况决定是否要迁移:
Codeberg 迁移实践
自 2022-12-18 后,我已经把 EmacsTalk 网站源码迁移到 Codeberg。作为开源软件先锋的 Emacs,如果和它相关的项目都不支持纯 FOSS 的托管平台,还能指望谁?
持续集成 CI
迁移的首要问题就是 CI,很难相信一个项目如果没有持续集成,怎么去保证项目质量?所以首先介绍它的迁移:
- 去 request-access 这里开 issue,#168 - CI for my side project 这个是我当时创建 的,维护者处理很快,一般 1 天内就会通过
- 去 https://ci.codeberg.org 这里给指定项目开通 CI,目前需要一个个开通,有些不方便,但考虑到是一次性工作,所以也不是什么问题。
- 开通之后,就可以开始编写流水线,第一次使用可以参考:Getting started | Woodpecker CI,官方也有个示例项目 Codeberg-CI/examples,方便快速上手。比如使用 Hugo 构建网站则可以参考:examples/hugo.yml,这是我英文博客构建的配置。
与 GitHub Action 的主要区别在于,Codeberg 的流水线是基于 Docker 镜像来的,这样就不用担心自己需要的功能没有了。
文件树
之前一直使用 Gitako 这个浏览器插件,按照文档来说,它也能够支持 Gitea 类平台,但是我尝试了几次不成功,后面就转到 Git Master 这个插件上了,设置 token 后,公有、私有仓库都支持的很好。
Pages
Codeberg Pages 可以让用户托管静态网站,使用方式和早期的 GitHub Pages 一样,需要创建一个特殊分支。有两个使用方式:
- 每个用户都可以创建一个
pages
仓库,这个仓库和 GitHub 的{user}.github.io
类似。访问域名为:{user}.codeberg.page
- 对于其他项目,创建一特殊分支
pages
和 GitHub 的gh-pages
类型,访问域名为:{user}.codeberg.page/{project}
如果需要自定义域名,在网站根目录创建一 .domains
文件即可,和 GitHub 的 CNAME
文件类似。
Mirror
作为一名理性的人,永远不要把鸡蛋放在一个篮子里。Codeberg 自带的 mirror 功能,可以在 push 仓库时,向其他托管平台进行 mirror,这一点估计 GitHub 这类商业公司永远也不会提供。使用方式也很简单,可以参考这个文档:
扩展阅读
- Give Up GitHub - Software Freedom Conservancy
- A bright future for GitHub | The GitHub Blog
- Microsoft to acquire GitHub for $7.5 billion - Stories
- What if GitHub is the devil? | daniel.haxx.se
- https://github.com/1995parham/github-do-not-ban-us
- Join the Codeberg e.V. and actively support Free and Open Software Development!
- Codeberg: A GitHub alternative from Europe | Hacker News