围墙花园,与不肯低头的修路人
# 围墙花园,与不肯低头的修路人
前几天,群里有个朋友谈到,轻鸿的成本大概是三十块钱。
我不知道这个数字的真实性——可能是真的,也可能只是又一声在密闭空间里的回音——但它像一根针,精准地扎在了我某个看不见的地方。
一个授权卖238的东西,成本可能只有三十块。而我的Stately,DRM-Free,开放源码,每一行代码都在那里,你可以改,可以拆,可以自由组合。但我卖不过它。
然后他接着说:“卖主题和插件的时代估计结束了”,“客户都是成熟方案的需求者”,“固定一个主题,然后加插件适配,实现大部分功能才是一套解决方案,才能卖。”
“就搞集成,”他说,“你就对标JustNews。”
我没有反驳。
因为我知道在商业意义上,他是对的。我不是不知道市场的选择,我只是没办法说服自己去做那个选择。
**这是我选择的战斗。你明知仓库管理员才是主流,却偏要建俱乐部。**
**你选的这张桌子,本来就没有站在人群中央的喧哗。但也因此,没有人规定你必须按别人的规则赢。**
## 一、他们建墙,因为墙里舒服
我卖不过轻鸿,卖不过刻画,也卖不过子比。这不是谦辞,是账单上的事实。
他们做对了什么?他们在一个本该开放的生态里,修建了一座座“围墙花园”。
把所有功能塞进一个主题,(刻画主题的)后台的插件列表干净得只剩两个:主题本体,和一个编辑器。所见即所得,开箱即用,无脑配置。用户不需要懂什么是Hook,不需要管插件冲不冲突(因为所有插件功能完全集成在里面,自然不存在任何冲突),不需要研究依赖链。付一次钱,得到一个完整的“罐头”。撬开,吃下去,饱了。
简单,高效,极度符合人性。我完全理解为什么市场用脚投票投给了它们。大多数站长要的不是自由,是**结果**;不是架构的优雅,是今天就能上线收钱。
当“快”成为唯一度量衡时,“重”就是一种原罪。
leostudio看得比我清楚:“你的主题都是设置样式的,没有集成任何功能。那搞教程,也是讲每个设置样式功能。没有技术实现不了功能,只能搞样子。”
**“只能搞样子。”**
这五个字像一把钝刀,在我胸口来回锯。
因为我已经在Stately里提供了十几种风格变化,我做了菜单插件、短代码引擎、签到系统重铸版、定时广告重铸版、任务系统重铸版、灵活字段——所有这些,都是为了铺一条路。一条让站长可以自己组装、自己掌控的路。
但市场告诉我:不要路,要电梯。
## 二、墙的代价,是锁死
围墙的门票,从来不是免费的。它的货币叫 **供应商锁定(Vendor Lock-in)**。
当你把业务逻辑、交互组件、数据结构全部耦合进一个主题时,你就不再是网站的主人,而是这个“罐头”的囚徒。
网站是要生长的。三年后,你想换一个更符合那时候审美的设计?想接入一套新的支付体系?想剥离某个臃肿的模块?你会发现,牵一发而动全身。换主题,等于重建网站;留主题,等于忍受技术债务的复利。
“刻画的这种集成模式,估计让插件也卖不出去了。”leostudio说。
他说得对。当主题吞噬了插件的生态,创新就停止了。剩下的只有作者一个人的修修补补,和用户在封闭系统里的无尽等待。
一个健康的网站,不可能永远墨守成规。**它需要呼吸,需要替换零件,需要随着业务一起进化。**
而开放的框架,给用户留了一扇门。任何时候你想换一个部件、调整一个功能、甚至彻底迁移——门是开着的。
**但市场不关心这道门。他们只关心:这道门为什么会在这里,挡住了我的路?**
## 三、我修路,因为路通向开阔地
我选择了一条更笨、更重、也更孤独的路。
Stately,只负责呈现,功能交给插件。DRM-Free,代码敞开,随便改。这不仅是什么极客情怀,而是因为我见过太多被“全家桶”锁死的站长,在深夜里对着无法升级的加密过的代码发愁。**关注点分离不是为了增加学习成本,而是为了把“未来的选择权”还给他们。**
国际WordPress生态早就证明了这条路能走通。主题管皮肤,插件管功能。职责清晰,边界分明。
只是在国内的快节奏里,愿意等的人太少,愿意自己动手的人更少。
现实的重力确实让人喘不过气。有时候看着群里别人一天出一个主题的喧嚣,我会难受得说不出话。我拉不下脸去把技术债务包装成“极致体验”,也不愿意用信息差去收割那些只想快速变现的人。
我知道这是我的性格缺陷。也是我的底线。
## 四、预制菜,与不妥协的桥
“客户都是成熟方案的需求者。”leostudio的结论很冷酷,但很真实。
我不打算把Stately变成一个臃肿的怪物(即使呀现在的规模已经不小、且设置面板的直观程度也在下降),去和围墙花园拼刺刀。但我可以做一座桥。
所以我写了“解决方案导出器与部署器”。我不想剥夺用户的自由,但我可以把“生鲜食材”提前洗净、切好、配好调料,做成“预制菜”。资源站一键包、兴趣社区一键包、新闻资讯站一键包……你依然拥有随时更换配料的自由,底层依然是干净的关注点分离,但今天,你可以闭着眼睛一键出锅。
这是我向现实的低头,也是我对底线的死守。
**“要不你就不搞社区解决方案。”**
**“那我这个包已经打出来了。”**
## 五、我的手里还有一张牌:Aether
我翻出了2017年的记忆:**刀锋移动端模板(BMT)**。
它在Discuz这种“老旧”系统上,实现了:
- 穿透布局,异步区块加载,全程无间隙浏览——就是SPA模式
- 侧滑导航、惰性加载、滚动隐藏工具栏、无限滚动——就是App式体验
- 支持任意页面作为入口,对搜索引擎友好——就是SSR+SPA融合
BMT在2017年就做到了这一切。不需要React,不需要Vue,不需要Node。它用Framework7 + Zepto.js + PHP,在一个传统论坛程序上,硬是做出了惊艳的、至今仍不落后的移动端体验。
**BMT证明了一件事:即使在“老旧”系统上,通过巧妙的设计和交互模式的重新思考,依然能打造出现代流畅的体验。**
而今天,我手里的Aether,正在Xiuno BBS上做同样的事。
- **HTMX**:比BMT的方案更轻量,更符合HTML原生语义
- **Material Design 3 + Bootstrap 5**:比BMT的视觉更现代,设计系统更完整
- **插件兼容性**:通过Stratum主题验证的兼容层,Aether可以与现有插件衔接
**Aether,就是Xiuno BBS生态里的刀锋。**
我相信BMT的作者Lightsail,当年一定也听过类似的质疑:
- “Discuz已经老了,你为什么还要在上面做?”
- “这东西太复杂了,用户学不会。”
- “为什么要做SPA?传统论坛不挺好吗?”
但他没有妥协。他没有把BMT做成一个“简单的移动端皮肤”,而是做出了一个“移动优先的全新体验”。
Aether目前还是Beta阶段,离可用还很远。但我决定不再把它当“终极武器”藏起来,而是现在就把它摆上桌面。
因为它代表的,不是我一个人的执念,而是整个生态的另一种可能:**在Xiuno BBS上,我们不需要推倒重来,只需要注入现代交互;不需要抛弃插件生态,只需要让插件在新架构下自然运行。**
就像BMT当年在Discuz上做的一样。
## 六、站在黑暗中,却还要点灯的原因
我羡慕那些傻人有傻福的人。他们的评价体系与主流完全重合,追到了就幸福。
而我的评价体系是复调的:既知道主流的音符,又听见内心不同的旋律。
**清醒不是诅咒,而是你为“不入流”支付的代价,也是你获得的唯一红利。**
我制作的Aether,我写的那些文章,我坚持的DRM-Free——它们不是在挑战主流,而是在回应一个我无法回避的声音:“你觉得对的事情,要不要做?”
不是因为做了一定会成功,而是因为不做的话,那个声音会一直在。
我羡慕他们用Vibe Coding一天出一套主题,刷地就做出来。
而我在2026年的春天,花了两个月,写了近百个个文档文件,把Xiuno BBS的底层逻辑从头到尾梳理出来。
为什么?
因为如果我不把这些细节讲明白,AI会宁愿用`$_POST`也不用`param`函数,会宁愿直接写PDO操作也不愿用`db_find`函数。我不快,我重。但我清除了地雷,修好了地基。我铺的路,可以让后来的人稳稳地走过去,而不是在流沙上狂奔然后掉进坑里。
**我在修路。路修好了,我才能放心地让AI来帮我开车。路不修好,AI开的车只会翻。**
## 七、慢一点,没关系
重要的东西,总是最后才被人看见。
我的桌子,只容得下那些愿意擦亮眼睛的人。他们可能还没找到入口。他们可能正在集成方案的餐桌上,感受到了一些不太舒适的东西,然后开始怀疑:“我是不是被锁住了?”
那一天到来的时候,我希望他们能看到我在黑暗中点亮的那盏灯。
那盏灯从来不是为了和谁较量,只是为了让他们知道——这个世界上,还有另一条路,一条他们没有被判无期徒刑的路。
行至水穷处,坐看云起时。
我对自己说:慢一点,没关系。
我还有一百多个站在跑,还有一个用户对我说“Stately还是不错的,外观总能吸引到别人”,还有一套花了好几个月、用AI辅助写出来的完整开发手册。
这些东西,是他们永远换不来的。
**我不是不想前进,而是我需要主动扫清障碍,主动驱散雾霾,我才能前行。**
我就是这样的人。
## 写在最后
围墙花园再美,也长不出参天大树。
当那些被锁死的人终于想推开墙、透口气的时候,当那些吃腻了罐头、开始想自己下厨的时候,我希望我的桌子还在那里。
擦得干干净净。代码敞开着。文档写清楚了。
随时可以拿起,随时可以出发。
**重要的东西,总是最后才被人看见。**
谢谢你读到这里。
Geticer
2026年5月14日