#1
skymmap
· 2026-08-05 09:24:24
stalltrix
先从profile功能说起
虽然Commit 7953190提交上去了,也初步实现了user profile的展示。看上去代码也不是很多,逻辑也不复杂,但是这段补丁其实通过了开发组内多次重构与推敲才最终写出来的。
此user profile页面构想最初由xiwalng提出,xiwalng说缺一个展示个人信息界面,打算写出初稿。但是xiwalng写了一半就跑了,说“无法直接select+order by直接拉出用户topic+post展示个人信息,系统没有sql数据库太难写”。
后来由bitsmaker接着写了一部分,称现有组件功能太少,想要“多打几个洞”,最后由于一致性以及复用性要求。并未“多打几个洞”。但是bitsmaker指出现行用户唯一id定位模糊,xiwalng原来是打算使用32byte公钥,但是业务有大量使用域名当标识。而部分场景使用的又是mainkey的摘要。也就是说,现在有三套用户身份识别体系。
混乱的用户ID体系
由于最初开发过于杂乱,事实上大量模块都是由对这个功能感兴趣的朋友写的,大家围绕一个大致目标构建起来。由于实际设计与当初留下了的rfc格式协议说明偏差较大,基本上开发都变成了大家的自由发挥。
对于什么是“唯一用户id”,不同人有不同理解,有人认为是域名,有人认为是mainkey,还有人认为摘要相同就行。。。就这样,对核心理解设计完全不同的模块,就这样组装起来了,最后竟然还跑了几个月都未出现任何问题。也许是现在网络较新,大家都未更换过域名或者公钥,导致此bug一直未发现。
开发的排查与反思
虽然profile功能最后在大家的群策群力下最终写出来了,感谢huaxiong承担主要的前端开发,虽然huaxiong不想再碰个人信息模块的后端逻辑,但依然完善了前端。
虽然前期大家各自理解造成的偏差,造成了现在最核心的用户ID标识如此不统一。但是也感谢所有添砖加瓦的开发者来到这里共建。
后期的打算
profile功能无意间掀出了一个无人注意的基本问题
经过几天的开发组内的讨论后,决定以主公钥mainkey为唯一ID标识,域名只是验证公钥有效性的辅助。但是由于唯一ID标识的改动或许涉及核心逻辑。加上很多开发者都是由于兴趣前来,写一段功能就离开了。
加上先整理以及规划与改动,可能需要1-2个月才能彻底完成,由于“唯一ID标识”这个功能,不但涉及webui,更涉及核心模块kep-edge。往常的大多数更新,都是更新webui,而消息交换核心kep-edge并不受此影响。因此热更新也不会造成消息丢失。
此次更新设计消息交换核心,也许有概率导致发的帖子出现丢失,因此最近1-2个月大家先忍一下,尽可能减少在kepdb(即stalltrix官方节点)上发帖,可在自己的私有节点上发帖。避免重要帖子的丢失。
后记
即使内部流程再怎么修改,也会保证数据历史兼容性,以及对外导出模块ABI完全不变。因此不必担心出现类似其他软件的“大版本更新”之类的断档行为。后续版本也依然会保证与最初的v0.1.0版本的向前兼容。
可能最近这里表面上看上去会暂时清闲一段时间,并不是离大家而去了,消息交换核心无法热更新,为了避免体验到bug影响心情。大家最近先减少下发帖吧。即使发帖也本地备份一份。避免丢失。
