Ditching GitHub

Ditching GitHub / 告别 GitHub

2026-03-26

AI. AI AI AI. Artificial “Intelligence”. Large Language Models. Well, they sure are large, I’ll give them that. This isn’t quite how I was hoping to write a new blog post after years of not touching the site, but I guess it’s what we’re going with.

人工智能。AI、AI、AI。所谓“人工智能”。大语言模型。好吧,它们确实很大,这点我承认。在多年未更新博客后,我本不希望以这种方式写下新文章,但看来这就是目前的现状。

To make it very clear: none of the text, code, images or any other output I produce is AI-written or AI-assisted. I also refuse to acknowledge that AI is even a thing by adding a disclaimer to all my posts saying that I do not use it. But this post is titled “Ditching GitHub”, so let’s address that first.

首先声明:我所产出的任何文字、代码、图像或其他内容,均非 AI 撰写或辅助生成。我甚至拒绝承认 AI 的存在,因此我不会在文章中添加“我未使用 AI”的免责声明。但既然这篇文章的标题是“告别 GitHub”,我们还是先谈谈这个吧。

GitHub, the World’s Largest Code Forge / GitHub,全球最大的代码工厂

Millions of developers and businesses call GitHub home. And that’s probably not a good thing. I myself am guilty of often searching ” github” in DuckDuckGo many a time when I want to find open-source projects. I’ll probably keep doing it, too, because that’s what search engines understand.

数以百万计的开发者和企业将 GitHub 视为大本营。但这未必是一件好事。我自己也常犯这种毛病:想找开源项目时,总是在 DuckDuckGo 里搜索“<项目名> github”。我以后可能还会这么做,因为搜索引擎只认这一套。

So, GitHub. According to their API, I joined the first day of 2014 after noon (seriously, did I not have anything better to do on new year’s? And how is that over twelve years ago already‽).

说说 GitHub 吧。根据他们的 API 显示,我是 2014 年元旦过午后加入的(说真的,新年那天我就没别的事可做吗?而且那竟然已经是十二年前的事了‽)。

Back then, I was fairly into C# programming on Windows. It seems I felt fairly comfortable with my code already, and was willing to let other people see and use it. That was after I had been dabbling with Visual Basic Scripts, which in turn was after console batch scripting. I also tried Visual Basics before C#, but as a programming noob, with few-to-none programming terms learnt, I found the whole ByVal and ByRef quite strange.

那时,我非常热衷于在 Windows 上进行 C# 编程。当时我对自己写的代码感觉还不错,也愿意让别人看到并使用它们。在那之前,我曾浅尝过 Visual Basic 脚本,而更早之前则是控制台批处理脚本。在接触 C# 之前我也试过 Visual Basic,但作为一个编程菜鸟,几乎不懂任何编程术语,我觉得 ByVal 和 ByRef 这些概念简直莫名其妙。

Regardless of the language, telling the computer to do things and have it obey you was pretty cool! Even more so if those things had a visual interface. So let’s show others what cool things we could pull off!

不管用什么语言,能指挥计算机做事并让它听命于你,这感觉真是太酷了!如果这些程序还有图形界面,那就更棒了。所以,让我们向别人展示我们能做出什么酷东西吧!

During that same year, I also started using Telegram. Such a refreshing application this used to be. Hey, wouldn’t it be cool if you could automate Telegram itself? Let’s search to see if other people have made something to use that from C#. Turns out TLSharp did in fact exist! The repository seems to be archived now, in favor of WTelegramClient.

那一年,我也开始使用 Telegram。它曾经是一款多么令人耳目一新的应用啊。嘿,如果能让 Telegram 实现自动化,那该多酷?我搜索了一下,看看有没有人用 C# 做过类似的东西。结果发现 TLSharp 确实存在!该仓库现在似乎已被归档,取而代之的是 WTelegramClient。

I tried to contribute to it. I remember being excited to have a working code generator that could be used to automatically update the types and functions that the library had to offer, based on the most recent definitions provided by Telegram (at least indirectly, via their own open-source repositories.)

我曾尝试为其做出贡献。我记得当时非常兴奋,因为我写出了一个可用的代码生成器,可以根据 Telegram 提供的最新定义(至少是间接地通过他们自己的开源仓库),自动更新库中提供的类型和函数。

Unfortunately, I had some friction with the maintainer back then. Perhaps it was a misunderstanding, or I was too young, naive, or just couldn’t get my point across. That didn’t discourage me though. Instead, I took it upon myself to reimplement the library. Back then, Telegram’s lack of documentation on the protocol made it quite the headache (literally, and not just once) to get it working. Despite that, I persevered, and was able to slowly make progress.

遗憾的是,当时我和维护者之间产生了一些摩擦。也许是误会,也许是我太年轻、太天真,或者只是无法表达清楚自己的观点。但这并没有让我气馁。相反,我决定自己动手重写这个库。当时,Telegram 对协议文档的缺失,让实现过程变得非常头疼(字面意义上的头疼,而且不止一次)。尽管如此,我还是坚持了下来,并慢慢取得了进展。

Fast-forward a bit, still young and with plenty of time on my hands, one day I decided I wanted to try this whole Linux thing. But C# felt like it was mostly a Windows thing. Let’s see, what other languages are there that are commonplace in Linux… “Python” huh? Looks pretty neat, let’s give it a shot!

时间快进一点,那时我依然年轻,有大把的时间。有一天,我决定尝试一下 Linux。但 C# 感觉主要还是 Windows 的产物。看看还有什么语言在 Linux 上很常用……“Python”?看起来不错,试试看吧!

Being the imaginative person I am, I obviously decided to call my new project a mix between Telegram and Python. Thus, Telethon was born.

作为一个富有想象力的人,我理所当然地决定将我的新项目命名为 Telegram 和 Python 的结合体。于是,Telethon 就这样诞生了。

Social Coding / 社交化编程

Ah, GitHub stars. Quite the meaningless metric, considering they can be bought, and yet… there’s something about them. I can’t help myself. I like internet points. They make me feel like there are other people out there who, just like me, have a love for the craft, and share it with this small gesture.

啊,GitHub 的星星(Stars)。考虑到它们是可以买到的,这其实是一个毫无意义的指标,然而……它们确实有一种魔力。我无法自拔。我喜欢这些互联网积分。它们让我觉得,世界上还有其他人像我一样热爱这门手艺,并用这种小小的举动表达共鸣。

I never intended for Telethon to become as popular as it has. I attribute its success to a mix of luck, creating it at the right time, choice of popular programming language, and lack of many other options back then. And of course, the ridiculous amount of time, care and patience I have put (and continue to put) into the project out of my own volition.

我从未想过 Telethon 会变得如此受欢迎。我将其成功归功于运气、在正确的时间创建了它、选择了流行的编程语言,以及当时缺乏其他选择。当然,还有我自愿投入(并持续投入)的难以置信的时间、精力和耐心。

Downloads are not a metric I’ve cared to look at much. But then came support questions. A steady growth of stars. Bug reports. Feature requests. Pull requests. Small donations! And heart-felt thank-you emails or messages. Each showing that people like it enough to spend their time on it, and some even like it enough that they want to see it become better, or take the time to show their appreciation.

下载量并不是我关心的指标。但随后出现了支持请求。星星数量稳步增长。Bug 报告、功能需求、Pull Request。还有小额捐赠!以及发自肺腑的感谢邮件或消息。每一项都表明,人们喜欢它,愿意花时间在它上面;有些人甚至喜欢到希望它变得更好,或者花时间表达他们的赞赏。

This… this feels nice, actually. Sure, it’s not perfect. There will always be an idiot who thinks you owe them even more time. Because the gift of open-source you’ve given the world is not enough. But that’s okay. I’ve had a bit of an arc in how I’ve dealt with issues, from excited, to tired and quite frankly pretty rude at times (sorry! Perhaps it was burn-out?), to now where I try to first and foremost remain polite, even if my responses can feel cold or blunt. There are real human beings behind the screens. Let’s not forget that.

这……感觉其实挺好的。当然,它并不完美。总会有白痴认为你欠他们更多的时间,因为你贡献给世界的开源礼物对他们来说还不够。但没关系。我在处理问题的方式上经历了一些转变:从最初的兴奋,到疲惫,坦率地说有时还很粗鲁(抱歉!也许是职业倦怠?),到现在我尽量保持礼貌,即使我的回复可能显得冷淡或生硬。屏幕背后是真实的人类,这一点我们不应忘记。

Telethon is closing-in on twelve thousand stars on GitHub. I don’t know how many are bots, or how many still use GitHub at all, but that’s a really darn impressive number. cpython itself is at seventy-two thousand! We’re talking the same order of magnitude here.

Telethon 在 GitHub 上的星星数即将达到一万两千颗。我不知道其中有多少是机器人,也不知道有多少人还在使用 GitHub,但这确实是一个非常惊人的数字。cpython 本身也才七万两千颗!我们讨论的是同一个数量级。

So I am well aware that such a project makes for quite the impressive portfolio. There’s no denying that. We don’t have infinite time to carefully audit all dependencies we rely on, as much as we should. So clearly, bigger star number must mean better project, or something like that. To an extent, it does, even if subconsciously.

所以我很清楚,这样的项目是一个相当亮眼的履历。这一点不可否认。我们没有无限的时间去仔细审计我们所依赖的所有依赖项,尽管我们本该这样做。所以很明显,星星数量越多意味着项目越好,大概就是这样。在某种程度上,确实如此,即使是潜意识里也是这样认为的。

Unfortunately for me, that means I can’t quite fully ditch GitHub. Not only would I be contributing to link-rot, but the vast majority of projects are still hosted there. So whether I like it or not, I’m going to have to keep my account if I want to retain my access to help out other projects. And, yes. Losing that amount of stars would suck. But wow has the platform gotten worse.

对我来说不幸的是,这意味着我无法完全抛弃 GitHub。这不仅会导致链接失效,而且绝大多数项目仍然托管在那里。所以无论我是否喜欢,如果我想保留帮助其他项目的权限,就必须保留我的账户。而且,是的,失去那么多的星星会让人很难受。但天哪,这个平台变得越来越糟糕了。

Your AI partner everywhere / 无处不在的 AI 伙伴

Barely a screen into GitHub’s landing page while not logged in, there it is.

在未登录状态下,刚进入 GitHub 的首页,它就出现了。