FreeClass
告别之际,有话对你坦白
亲爱的朋友们: 在 FreeClass 停止更新的这几个月里,许多朋友来信问我:“为什么不更新了?”“以后有什么打算?”还有人关心我的中考成绩。每一封邮件我都认真读过,却迟迟没有回复。一方面,几百封邮件逐一回复确实困难;但更重要的,是千头万绪,不知从何说起。所以,我决定写下这封信,与你们好好谈谈 FreeClas...
老三 · 2025-11-14
亲爱的朋友们: 在 FreeClass 停止更新的这几个月里,许多朋友来信问我:“为什么不更新了?”“以后有什么打算?”还有人关心我的中考成绩。每一封邮件我都认真读过,却迟迟没有回复。一方面,几百封邮件逐一回复确实困难;但更重要的,是千头万绪,不知从何说起。所以,我决定写下这封信,与你们好好谈谈 FreeClass 的故事。 --- 首先,我必须坦白:FreeClass 的出生远比我之前说过的要早。它最初的样子,和你们见到的那个拥有完善功能、漂亮界面的 FreeClass 完全不是一回事。2019 年,我还是个刚摸到编程门槛的半吊子少年,用 C# 写的一个小东西。它的作用简单得可笑——只是结束掉几个进程,让极域的屏幕控制暂时失效。没有界面,没有配置,甚至还得每次运行前在黑框框里手动敲几个数字。可就是这么一个东拼西凑的东西,让我在同学面前威风了好一阵子。 我向来不是低调的人。那段时间,我逢人便炫耀:“我自己写了个超级牛×的东西,要不要过来看看?”哪怕对方只是路过机房门口,我也要把人拽进来演示一遍。靠着它,我还真的赚到了人生第一笔“软件开发收入”——大概几十块钱。有的是同学请我喝的可乐,有的是为了让我帮他“秒解”而在走廊上塞给我的零食。说实话,无论拿当时还是现在的眼光看,这个初代程序都只能算是“垃圾”。它的代码像一间从没整理过的杂物间,逻辑东拼西凑,甚至不如如今 AI 随手写的一小段优雅。但对我而言,它有着比技术指标重得多的意义:那是我第一次意识到,自己亲手做的东西,竟真的能在别人眼里闪出光来。这个不起眼、粗糙到刺手的小工具,第一次让我隐隐觉得——也许,它值得被认真地分享出去。 到 2021 年,我开始不满足于只在小圈子“炫耀”了。我想让这东西变得更完整、更经得起推敲。我开始向班里、年级里,甚至外校的同学推广这个还极其原始的产品。出乎意料的是,很多人在用了之后并没有嘲笑它的简陋,而是认真地给我提建议、报 bug。那一刻,我猛然发现,这个小工具已经不再是独属于我一个人的秘密了。它像是从我的手里脱了出去,长出了自己的声音和生命,反过来推着我往前走。于是,我第一次认真地思考:既然这么多人愿意为它花时间、费口舌,那我为什么不正式地把它变成一个能被更多人使用的作品呢? 为了让更多人能修改、能接手,我选择了一门被许多专业开发者瞧不上的语言——易语言。它没有 C# 那么强大的生态,也不懂什么像样的架构设计,但它的中文可视化特性让我的同学们也能一眼看懂个大概。这意味着我要把已经写了很久的 C# 项目完全推倒重来。但我当时压根儿没考虑什么模块化、可维护性这些高大上的词。我只揣着一个单纯的念头:“让大家觉得好用、直观、容易改成自己需要的样子。” 那段日子,我几乎把所有课余时间都砸了进去。从最基础的“解控”功能开始,一遍遍地重写,一遍遍地测试——因为我自己就是用户,知道哪里卡手、哪里容易崩。接着,我一点一点给它加上“主动防御”,防止极域偷偷重新启动;后来甚至写出了能够越界关闭其他同类管理软件的插件。每实现一个新功能,我心中都像在黑暗里擦亮一根火柴——微小的满足感照亮整个房间。那些代码其实一点儿也不优美,但在我眼里,它们像是一首首只属于我的诗。 就在 2021 年年末,我用自己的网名“老三”,正式把它命名为“老三极域解控”。它带着这个土里土气的名字,从我的硬盘走向了 GitHub。开放源代码的那一刻,我的心跳得很厉害,像把自己未完成的日记本摊开在全班面前。可我更强烈的心情是自豪——这是我创造的,而它已经不再仅仅取悦我自己,它正在真实地帮到一些人。从那时起,“老三极域解控”变成了一个挂在网上、谁都可以翻阅的名字。 2022 年,它改了名,叫 FreeClass。“老三极域解控”太像个土法炼钢的自制工具,FreeClass 听起来终于有了“作品”的样子。改名这件事像一个仪式,我在心里暗自下定决心:不再满足于模仿和拼凑,要走上完全自主研发的道路。我想去实现那些别人能想到却做不出来,甚至想都不敢想的功能和设计。那一年,我们几个在网上结识的伙伴凑在一起,雄心万丈地描绘起 4.0 的蓝图。 我们构想过一个极致的界面:像特效般绚丽,融合了当时正流行的新拟态风格。按钮被按下时仿佛真的凹陷下去,毛玻璃背景透着朦胧的光,任何一个角落拿出来都像是能直接当壁纸的作品。我们几个人用“网页套壳 + Qt”的技术方案,通宵达旦地肝了整整两个多月,终于打磨出一个被我们自己赞为“美得不像实力派”的版本。可当它第一次在真实教室里的老电脑上跑起来时,这个华丽的梦碎得一塌糊涂——界面卡成了幻灯片,动一下就要等三四秒,连最基础的解控功能都被卡得延迟高到毫无意义。那一刻,我们面面相觑,群里沉默了整整一天。 这次挫败让我们几个年轻人被迫提前面对一个残酷的道理: 用户要的是行云流水的体验,而不是开发者抱成一团、自我陶醉的“惊艳”。 我们把那个漂亮的 4.0 封存进了网盘深处,重新调整心态,回到最初的简洁和稳定上。可即便如此,挑战并没有因此消失。随着功能列表越拉越长,用户的反馈开始以几何级数增长。有时为了一个极小众的需求,我需要在深夜反复测试十几种不同的环境;有时一个看上去无害的优化,却会在真机上引发连锁崩溃。开发开始变得不像创造,更像是救火——一场没有尽头、随时可能烧掉所有精力的消耗战。 我在满足不断膨胀的期待和维持最初创作冲动之间,渐渐迷失了方向。团队里有人因为学业离开,有人因为意见分歧而沉默;代码库像一个不断被扩建的老房子,柱子上爬满了补丁,每一处新改动都可能砸穿天花板。当我发现 7.0 版本无论如何都无法在正式发布前收齐所有承诺的功能时,我开始一遍遍问自己:这会不会就是 FreeClass 的上限?当最初那份纯粹的创造欲被无穷的维护责任覆盖,当我敲击键盘时感受到的不再是心跳,而是麻木,我隐约明白——它,已经走到了某种尽头。 一个艰难的抉择横在我面前: 是在疲惫中硬撑,任它逐渐变质、崩塌;还是趁着它尚有温度,亲手为它划上一个体面的句号? 这个问题我想了很久,久到好几次深夜,我对着 7.0 的代码界面,一个字也敲不下去。终于,今年 7 月 8 日,我把鼠标握了很久,最后用平稳的力度点下了“存档、关闭、不再更新”的决定。 我知道,很多朋友还在翘首以盼,许多人连 7.0 测试版的影子都还没摸着。但我也同样清楚,如果带着抗拒和枯竭继续下去,最终我们只会得到一个自己都难以面对的空壳。那样的产品,既对不起用户,也对不起我起笔时的那份少年心意。 正式做出决定的前一个月——也就是今年 6 月,我匆匆结束最后一批 DP 版本的内部测试后,就在插件开发者的小群里说:“大家先停一停手上的任务吧,后面很可能有较大的变动。”不仅如此,我悄悄给博客的评论区加上了审核机制,开始整理旧日的技术文档和聊天记录,像是在为一位老朋友备好后事。当真正的停更公告发出时,FreeClass 并没有轰然倒塌,而是像一支吹完了旋律的曲子,音量渐弱,最后一个音符在空气里静静消散。它用一种我能想到的最优雅、最得体的方式,合上了自己的青春。 --- 回望这几年来,FreeClass 的旅程既像一场清醒又热血的长梦,也像一本自己一页页写满的书。如今梦醒了,翻动的页面停在最后一帧,那些在深夜里敲下的每一行字符,都成了时光无声的注脚。它们不会消失,只是被轻轻搁在了旧日的抽屉里。 很多时候,我忍不住会回想起它最初的样子——没有丰盛的功能,没有经过精心打磨的界面,只是一个少年为了在同伴面前挣足面子而闷头捣鼓出的“破玩意儿”。可就是这样一份莽撞的、沾着汗和骄傲的纯粹,给 FreeClass 打上了独一无二的灵魂。而后来,当它试图扛起太多人的期望,承载太多功能的要求时,当初那份轻盈便像沙子一般,从指缝里悄悄流走了。 停下,不是失败。它是我对那个少年、对这段岁月最深沉的尊重。让一个作品在依然“有心跳”的时候停格,远比看着它缓慢变质、最终被人遗忘要动人得多。陶渊明在《归去来兮辞》中叹道: 悟已往之不谏,知来者之可追。 FreeClass 的落幕并非什么事物的终结。相反,它是一种升华。真正的创造,从来不意味着永不停歇地奔跑;它更关乎我们在疾驰之中,能否清醒地分辨方向,懂得以退为进,以收手完成最后的呼吸。这份清醒,比任何酷炫的功能都更接近创意本身所追求的自由。 如今,当有人再提起 FreeClass,我脑海里浮现的已经不是那些复杂的逻辑判断与窗口控件,而是一个很安静的画面:一个夏日的黄昏,西窗的太阳斜斜地趴在有点泛黄的键盘上,那个头发乱糟糟的少年敲下第一个结构混乱的字符,眼底亮着不容置疑的闪光。那是所有热爱的起点——纯粹、莽撞、不问归期,甚至有些可笑和笨拙。可正是那一点不掺杂质的光,撑着我走了这么远。 风会停,篝火会熄,但那些光并不会真的消失。它们沉进心底,偶尔在无人处一闪一闪,提醒我:你真的,曾为了一件事全情投入地活过。这才是最珍贵的。它让我懂得,热爱这件事,从来不只关乎于成品的荣光,更在于交付出去的那些彻夜不眠、那些掌心发烫的瞬间。 FreeClass 已经不再更新了。但当初把它催生出来的那颗心,并不曾停下。那份对创造的渴望和诚恳,已经像散开的星火,悄悄落在未来我即将踏足的每一条创作之途上,继续照着前路。 --- 感谢每一位曾为 FreeClass 认真的你,感谢每一句反馈、每一次包容、甚至每一次着急的催促。 是你们,让这段并不完美的代码,变成了我青春里最闪亮的一节。 —— 老三