€1月租的VPS能干什么?跑个静态博客都嫌慢。但有个团队硬是在上面塞了一套完整CMS,支持5种语言自动切换,还能让404错误页面变成Amiga电脑风格的"Guru Meditation"死机画面。
这不是行为艺术。ForgeCMS的开发者Adam昨天刚推送了v0.9版本,我在Codeberg仓库里翻完了全部提交记录——这套系统从"能跑"到"能用"的跨越,藏着几个反直觉的产品决策。
语言切换:他们故意没用标准方案
多语言网站通常怎么做?装个go-i18n库,写一堆JSON翻译文件,前端用JavaScript检测浏览器语言。ForgeCMS的团队看了一眼这个路径,选择了更笨的办法。
他们把语言解析直接写进了SML页面系统。巴塞罗那来的访客自动进西班牙语页面,加泰罗尼亚来的看到Català——全程零JavaScript。实现方式很原始:lang-specific SML页面(比如atesti/es/index.sml)作为fallback,配合Page{lang:}标签做单页覆盖。
更细的操作是Markdown{src:}语法。系统会自动把content.md变成content-es.md,找不到就静默回退默认版本。这个设计让内容作者完全不用管"这行字该翻成什么",他们只管写,系统自己找对应文件。
我查了一下,这种"文件系统即数据库"的思路贯穿整个项目。没有MySQL,没有Redis,内容全存在Codeberg的Git仓库里。€1/月的成本就是这么省下来的——VPS只负责渲染,版本控制和协作交给Git。
主题系统:两个文件管全站
传统CMS的主题是什么?几百个PHP文件里塞满硬编码的色值,改个按钮颜色要翻三层目录。ForgeCMS的主题只有两份配置文件。
整个站点的配色、间距、字体全从这俩文件流出来,模板里见不到一个#十六进制数值。开发者管这叫"SML声明式UI哲学"——声明意图,系统执行。听起来像Tailwind的变体,但实现更极端:连CSS变量层都省了,直接生成最终样式。
同步上线的还有OpenGraph标签自动生成。og:title、og:description、og:url、og:image现在每页都有,Image{src:}组件会自动把相对路径解析成Codeberg CDN的完整URL。内容作者拖张图进仓库,插入时写文件名就行,不用知道文件实际存在哪台服务器。
这些功能堆在一起,ForgeCMS开始像个"正经产品"了——这是Adam自己在Release Note里写的原话。从原型到产品的门槛,有时候就是几个省脑子的细节。
那个会被人记住的404页面
但真正让我停下来的是这个:
Software Failure. Press left mouse button to continue.
Guru Meditation
#00000404.DEADBEEF
Amiga电脑1990年代的标志性死机画面,被完整复刻成404/500错误页。左边鼠标按钮返回安全页面,错误码用十六进制伪装成内存地址——404变成#00000404,500变成#00000500。
Adam在注释里写得很直白:这是给Toolbox杂志读者的情书。1980年代那批从杂志附赠软盘学编程的人,现在正是技术决策者。这个彩蛋不是炫技,是身份认同的暗号。
产品层面的算计也很干净:错误页是用户最沮丧的时刻,一个会心一笑能挽回不少印象分。比起"页面不存在"的冰冷提示,Guru Meditation至少让你想截图发推特。
许可证与那个"不同的帖子"
这次更新还换了许可证模式:GPL v3 + 商业许可双轨,照搬Qt的做法。开源项目继续免费用,商用需要买授权。
Adam提了一嘴收入用途——"买地建 intentional community 的基础设施"——然后说"那是另一个帖子"。我翻遍了他的博客和Codeberg动态,没找到这帖子的下落。但€1/月的运营成本确实留下了想象空间:如果商业授权能卖出几十份,利润率比SaaS订阅好看得多。
下一步功能已经列在Roadmap里:SMS/WASM搜索索引,用IndexedDB做持久化存储。目标是让CMS能搜索自己的内容,但不需要后端查询——浏览器里跑WebAssembly,本地建索引。
这个路线和主流完全相反。别人往云端加算力,ForgeCMS往浏览器里塞。他们的完整口号是"声明式UI、原生编译、不需要云",属于Forge 4D生态的一部分。
现成演示站挂在atesti.crowdware.info,背后是个叫"Atesti para Dana"的替代货币项目,基于Minuto框架构建。Gift-first economy(礼物优先经济)——又是另一个需要单独解释的概念。
如果你在造什么"小而怪"的东西,他们的仓库在Codeberg公开。没有Discord社群,没有官方推特,提交Issue就是主要的交流方式。
那个Guru Meditation错误页让我想了一件事:当所有SaaS都在用同样的插画风格、同样的文案语气时,一个故意做旧的死机画面反而成了辨识度。产品差异化有时候不需要功能清单,需要一个让人记住的细节——哪怕这个细节是30年前某台失败电脑的错误提示。
Adam没回答的问题是:如果商业授权真的卖动了,那块地会买在哪?
热门跟贴