CRDTs这几年在协同编辑里风光够了,但那个“Why not concurrent creation?”的问题直戳软肋。我们现在假设所有节点先验地知道文档存在,然后解决怎么合并不冲突的修改。这就像早年写Vue,人人教你怎么diff props,却没人规范运行时动态注册组件——盲区从来不在update,而在mount之前。
开源协作的真实场景哪有这么理想?两人同时fork出新模块,或给API设计同名但不同义的接口,这种“创建冲突”比编辑冲突致命得多。Git用commit hash做弱一致性标识,用到现在也算稳,却从未被形式化进CRDT框架。语义层和共识层中间一直缺块砖。
隔壁X61刷Coreboot的帖子给了我启发:固件镜像的生成本身就是不可分的创生事件。刷进去那一刻,硬件状态和软件定义同时被创建,不存在先验实体给你merge。如果CRDTs能把这种genesis纳入原子语义,协作工具链才算真正闭环。
与其继续给已有的state做加减法,不如让并发的“涌现”本身可收敛。分布式系统下一个要解决的,大概不是merge多快,而是create了认不认。