Skip to content

Instantly share code, notes, and snippets.

@e7h4n
Created August 5, 2023 12:06
Show Gist options
  • Save e7h4n/27c6c578d32f60d3170ee8df4b056140 to your computer and use it in GitHub Desktop.
Save e7h4n/27c6c578d32f60d3170ee8df4b056140 to your computer and use it in GitHub Desktop.
研发 Motiff 这一年多的碎碎念

做了快两年的项目终于发布了。这不是我做的第一个项目,却是我想进行总结的第一个项目。

Motiff 是在 21 年十月底立项的。那年发生了一些事儿,公司需要在一些新的业务方向上进行探索。快到年底的时候,元祖突然叫上和我分享了他关于协同与 AI 的设想,然后这个项目就定下来了。

猿辅导(现在的看云控股)的风格一向是慢决策快执行。在决定做这个事情的第一周,我们就拉上了公司内最豪华的客户端 / 前端开发阵容来搞这个事情。基于对团队能力的自信,当时定了个非常激进的计划,期望在一个非常短的时间内让 Motiff 团队可以自举,让 Motiff 的产品、UI 迭代可以在 Motiff 上进行。

事实证明我们还是太年轻了,尽管我们有最一流的人,但缺少对于复杂客户端软件的研发经验还是让团队兜兜转转重构了很多次,有几次大规模的重构基本就是核心代码重写。

刚开始项目时那种“获得新玩具”的兴奋感很快就被拉垮的性能和改不完的 bug 冲淡了,我们很快就发现,要把这个项目做起来,我们没有任何一个成熟的架构模式可以参考。在过去成功帮助我们解决问题的 MVC/MVVM/MVP 根本搞不定百万级别的状态,团队必须自己想出一个框架来解决问题。

我很想写一个“技术大牛闭关一周写出一个惊天地泣鬼神的框架然后问题解决”的故事,但事实比这平淡的多。整个解决的过程是渐进式的,而且极其依赖集体决策。在没什么经验的情况下,团队根据技术直觉来讨论,主动分享各自看到的问题,提出解决方案,讨论分析可行性然后执行。有些技术方案走了不少弯路,比如 WASM 和 JS 的依赖关系、组件实例的建模等等,但最终还都是在渐进式地重构下回到了正确的技术方向上。

在这个过程中,持续交付发挥了巨大的作用。团队从最开始就做了自动化测试、功能开关、灰度发布这些持续交付的基本流程,到后面更是有一个工程师专职在做这些事情,他是整个团队里研发效率杠杆率最高的人。在这些持续交付基础设施的支持下,我们的项目做到了每天一次自动发版,再没有了发版日痛苦的合并、测试过程。也是在这些基础设施的支持下,项目才可以在各种大刀阔斧式的重构下生存下来。

伴随着迭代的还有对于 wasm 的基础设施建设,在迭代过程中,我们做了:

  • 一个 wasm 编译集群以及远程开发平台
  • 一套自己的 Memory Profiler 工具
  • 一套 C++ 下模拟用户操作的集成测试框架
  • 对于画布操作的录制/回放 debug 工具
  • 自动化的性能指标收集系统,可以自动产出每个 commit 的性能变化

我们还通过一个叫“工程日”的活动中给工程作出改善。通过不定期抽出一天时间让研发团队把时间投资在业务需求以外的重要事项上,我们升级了 React、迁移了前端构建系统到 Vite,甚至还研发自驱产出了一个 “Figma 复制然后在 Motiff 粘贴” 的 Feature。

在定期的例会活动中,Motiff 团队坐在一起分享项目的最新进展。这样的活动就像庆祝一个小节日一样。一开始的演示总是伴随着不少 crash,但并不影响第一次演示协同、第一次演示 Undo 时的兴奋感。然后从某一天开始,演示环节就不出现 crash 了。当时大家还特地说了一下“这是我们第一次例会上没出现 crash”。到现在,出现 crash 反而成了件不常见的事情。

再说性能上的事儿。组里有个工程师的 IM 签名一直是“既要内存小,又要速度快”,一句话讲清楚了这里面到底难在什么地方。在最初的版本里,我们创建 200 个矩形操作一下就只有 4 帧的刷新率。那段时间团队的压力确实非常大,大家心里多少有点担心我们是不是能把东西做出来。后来又经历了几波大的重构,眼瞅着性能越来越好。性能测试的文档从 100 图层开始,到 2k、40k、200k 甚至 1M,总算是拿得出手可以让大家用一用了。

一开始说几个月自举,被现实无情打脸。好在经历这么多之后,项目还是在去年在内部用起来了。接下来我们又把项目推广到了集团下的其他业务团队,再后来也有一些外部团队开始用上了 Motiff。现在,我们开放了预约注册,相信下周就会有很多朋友开始用了。

陈皓说 Web 应用的两大天花板,一个是 Google Doc,一个是 Figma。我们花了快两年的时间做了其中一个,相信这会是团队中每个人都能为之自豪的一件事儿。这个自豪的故事还在继续,Motiff 的目标从一开始就不是 Figma 的平替,我们希望做点不一样的事情。希望大家能喜欢这次发布的几个 AI 功能。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment