MBox 是字节跳动抖音基础技术、Client Infra-DevOps根据移动端研发出现的现状与问题,结合移动端研发工具相关实践经验,自研的一款面向移动端开发者的研发工具链产品。目前,MBox CLI (Command Line Tool) 已经开源,后续将增加更多平台支持,欢迎试用。
现状与问题
随着公司的快速发展,移动端研发呈现出以下的现状与趋势:研发团队规模参差不齐,工程化与组件化方案不尽相同,跨端研发成为常态,中台业务不断扩大等,而这些现状使得移动端开发不得不面临下面的问题:日益复杂的研发环境与工程架构。
研发环境
在大前端背景下,移动端研发环境呈现出丰富的技术栈背景,这也导致了研发环境的复杂度提升。研发环境部署是编码的前置工作,这也是新人对团队研发体验的第一印象,因此研发环境的问题会给团队带来不少的麻烦。其实,并非仅有新人才遇到研发环境的问题,随着工程化推进,环境问题会持续困扰着团队所有成员,环境版本不一致、工程环境冲突、频繁更新文档,这些问题会使得研发人员将大量精力浪费在环境上,而不是核心的编码与测试阶段。
工程架构
很多移动端研发人员经常面对着的是超大型工程或者多个工程并行开发的场景,项目的工程架构往往十分复杂,这通常体现在多仓依赖管理困难、发布流程繁琐、多人协作难度变大,极大地影响研发效率。这里又引发了另一个思考,上述的部分问题其实是我们在工程化改造过程中所引入的,而这是否与工程化提高效率、保证质量的目的相违背呢?
渐渐地研发流程变得愈发繁琐,研发效率将不可避免地受到影响,可能在这之初研发人员会怨声载道,但长此以往便也习以为常了。
工具链面临的挑战
半自动化的流程
在移动端开发的场景下,研发人员尽管拥有看似丰富的研发工具来解决上面的环境与工程问题,但开发者们时常会有工具找不到、工具不会用与工具不好用的感受。理想状态下,工具链中每个工具的输出或者结果环境将成为下一个工具的输入或起始环境,但在移动研发的实践中,工具链之间的输出与输入转换时常需要研发人员手动完成,这种大量的重复性操作也成为研发人员吐槽的焦点。
维基百科:工具链是一组编程工具,通常是另一个计算机程序或一组相关程序。
被割裂的流水线
每一个研发团队都有着自己的研发流水线(评审、开发、构建、测试、修复、发布),在提升研发效能的实践中我们往往会提供丰富的研发工具供研发人员在这些流程节点中使用,但这些工具真的有合理地融入到我们的研发流程中,形成一条完整的工具链吗?
真实情况是,我们在实践中常常过多地关注单一指标,例如通过对工具链的改造提升项目的工程化程度,工程化确实能带来可维护性、工程质量等指标的提升,但是在其他环节中,如新人上手成本提升、依赖管理难度提高、代码合入时间拉长、Bug 复现困难等方面也带来了负面影响。
方案
我们对上述的现状与问题进行了分析,并结合在移动端研发工具相关实践经验,最终决定开发一款面向移动端开发者的研发工具链产品 MBox。


如上图所见,MBox 最终所呈现的产品形态是一款包含 GUI (Graphical User Interface) 与 CLI (Command-Line Interface) 的 Navtive App。
理念
全覆盖 All-in-one
我们期望开发一款能够对研发流程做到全场景覆盖的工具链产品,用户能够在 MBox 中获取所有需要的研发信息,并完成相应的研发工作,同时确保在整个研发链路中拥有一致的研发体验。
可视化 Visualized
在最初迭代 CLI 版本的过程中,我们渐渐发现可视化的交互方式可以解决一些在 CLI 交互中难以解决的问题,尽管 GUI 相比 CLI 在编程实现上会复杂很多,但我们坚信用户体验的重要性,因此 MBox 为用户提供了 GUI 与 CLI 两种可供选择的交互方式。
极简化 Simple
这里的 Simple 并