为什么我的工具都坚持能离线用
做小工具这几年,我给自己立了一条看起来很笨的规矩:核心路径必须能断网跑完。
不是说联网不好。而是联网这件事,一旦被写进主流程,就会悄悄带进来一堆你没打算要的东西:账号、服务器、同步冲突、隐私政策、还有某天早上突然打不开的可能。
离线是一条约束,不是一个功能
功能可以加,约束不能破。
如果把”能不能离线”当成功能清单里的一行,那它迟早会因为某个”更好用”的需求被牺牲掉——云同步、在线词库、账号体系,每一个都足够合理,加起来就把主路径搬到了别人的服务器上。
把它当成约束就不一样了。约束的意思是:新功能必须在这个前提下成立,否则不做。
于是有些设计被迫变简单了:
- 没有账号,就没有”登录失败”这个状态要处理;
- 没有服务端,就没有”我们的数据库挂了”这条公告要写;
- 数据都在本地,导出就是复制文件,不需要”申请导出”。
不上传,是一种克制
“我们不会看你的文件”这句话,说了也没人信。更可信的做法是让不上传成为架构事实:工具根本没有联网的代码路径,你想让它传也传不出去。
这对我也有好处——不需要为隐私政策写三页免责声明,不需要处理数据泄露的公关,不需要给服务器续费。
买断,是把关系说清楚
订阅制适合持续交付的东西:内容库、云存储、实时协作。一个本地去重工具不属于这类。
它装在你机器上,不消耗我的服务器,也不会因为我不更新就突然不能用。那么按年收钱就没有道理。买断看起来赚得少,但它把一件事说清楚了:我卖的是这个版本的工具,不是一个持续的关系。
所以这些工具长什么样
它们通常不好看,功能也不多。没有仪表盘,没有积分,没有”本月已为你节省 12.4 GB”这种数字。
它们只做一件事,做完就闭嘴。
如果你也在找这样的工具,这里有一份清单。