近日,由 TiDB 社区主办,专属于寰球开发者与技术爱好者的顶级挑战赛事——TiDB Hackathon 2020 较量圆满闭幕。往年是 TiDB Hackathon 第四次举办,参赛队伍规模创历届之最,共有 45 支来自寰球各地的队伍报名,首次实现寰球联动。通过 2 天工夫的极限挑战,大赛涌现出不少令人激动的我的项目。为了让更多敌人理解这些参赛团队背地的故事,咱们将开启 TiDB Hackathon 2020 优良我的项目分享系列,本次访谈咱们邀请到了 zh.md 的两位队员:来自 Cisco 的研发工程师王鹏翰、来自 PingCAP I18N 团队的 Coco,以及 Hackathon 特邀评委:来自青云 QingCloud 的张雁飞老师,独特谈谈他们对于 zh.md 的认识。
这也是一次业余工程师 + Tech Writer + 用户的三方谈判,心愿通过本次访谈和思维碰撞,让大家对于中文技术文档的写作和自动化改良有全新的认识。
缘起:一份优雅的中文技术文档是怎么炼成的?
谈及为什么会对 zh.md 分外关注时,评委老师张雁飞示意:技术文档的规范化是吸引用户,建立品牌十分重要的一环。一份格局凌乱、翻译参差不齐的文档会给产品大大减分。无论产品自身有如许优良,技术文档这“最初一公里”对于用户的体验都是至关重要的。
zh.md 的队长王鹏翰作为一个 OpenTelemetry 技术爱好者,翻译文档时发现许多中文文档翻译得参差不齐,格局凌乱,就连 CNCF 老大哥 K8S 的技术文档,仅仅是“款式指南”中呈现的格局问题就曾经能够用令人头大来形容了。不好用的技术文档往往会把 open source 的软件变成一个 source open 却难以上手的软件。
恰逢 TiDB Hackathon 2020 正在征集我的项目,王鹏翰想到 PingCAP 的文档在国内的开源畛域是非常业余的。就算有业余的 Tech Writer 保护,做到格调的对立也不容易,PingCAP 是怎么做到的?仔细阅读之后,他找到了一份 PingCAP 保护的 30 多页的格调指南。这份格调指南十分详尽,给了他十分大的启发。但对于大多数人来说,逐字逐句地浏览一份格调指南老本过高,而且也难以记清其中的规定,因而自动化的文档工具就成为了一个值得摸索的方向。
王鹏翰有些冲动,他加入过大大小小 20 屡次的 Hackathon 较量,他认为这个 idea 能够排得上前三名。
入手:工程师 + Tech Writer 一起登程
——那就口头起来吧。
王鹏翰很快通过社区与 PingCAP 文档格调指南的作者:PingCAP I18N 团队的 Coco 同学获得了分割。他们很快达成了共识:心愿借 Hackathon 这个机会,让更多人意识到开源软件以及 2B 公司技术文档标准的重要性。
Coco 作为我的项目的产品经理 + 测试,布局了或者是中文社区里第一份详尽的中文文档写作格调指南,和王鹏翰一起设计了或者是中文社区里第一个中文标点符号检测工具、第一个中英文混排排版检测与优化工具;并且在短时间内设计了测试方法,实现对文档问题的排查,测验了工具的能力。
技术上,王鹏翰实现了一套中文文档剖析与检测工具,基于 AST(形象语法树)和分词,系统地对文档进行扫描与诊断,评估文档品质并对其进行优化和修复,并且基于文档剖析后果,应用统计学 / NLP 等工具,辅助作者写出合乎格调标准的文档,还能够应用第三方 API,对文本进行中英文谬误检测。
目前 针对纯文本的 linter,次要有以下两种:
- 文档格局的 linter,例如 remark.js、markdownlint 等工具
- 英文语言的 linter,着重在检测格调和拼写上,例如 vale、textlint 等工具
相较于英文文档,中文文档的 linter 语法要简单很多。以后市面上针对中文文档的 linter,还处于晚期阶段,尚无成熟的计划。在此次 Hackathon 中,王鹏翰首先做了语境 -> 实例 -> 字的 AST,而后针对标点符号、中文词汇(重组回句子后进行分词)、英语词汇做跳链索引。相较于利用正则表达式制订规定的传统计划,有数量级的性能晋升,同时保障了高扩展性。
业余 Tech Writer 与开源社区沉闷贡献者联手打造的 zh.md 新鲜出炉,用 TiDB 的官网文档小试牛刀,竟然发现了 600 多处拼写错误、5000 多处排版问题。
这个工作,没白做!
对于我的项目的将来,他们心愿这份工具能够持续改良,利用于更广大的天地:
v0.1: pingcap/docs-cn 应用上 zh.md 工作流,优化文档品质。[根本实现✅]
v1.0: PingCAP 旗下所有 repo 应用上 zh.md 工作流,优化文档品质。
v1.x: 向 CNCF 推广,帮忙 CNCF 我的项目的中文文档都应用上工作流,优化文档品质。
v2.x: 提供 SaaS 服务,帮忙各个技术公司的我的项目进行文档辅助合作,辅助翻译。帮忙 2B 公司更好的文档本地化。
Hackathon:不止是一场较量
王鹏翰曾经是一个 Hackathon 的老玩家了,这也是他第四次加入 TiDB Hackathon 了。
图为 2017、2019、2020 三届 TiDB Hackathon 的留念 T 恤
在此期间他的角色一直转变——
依据王鹏翰的形容,2017 年的“第 0 届”TiDB Hackathon 是在一个赞助商公司的小食堂里举办,只有四五十人参加。尽管条件略显简陋,然而在场的工程师用硬核干货的 Go 我的项目为 TiDB 后续的 Hackathon 打下了一个“硬核”的基调。对于他本人来说,这届 Hackathon 帮忙他更好地把握了过后还不是支流的 Go 语言,这让他可能轻易地上手 Kubernetes,加入云原生的生态,为当前的工作打下基础。
2018 年他是一等奖我的项目 TiDB Batch and Streaming SQL(简称 TBSSQL)的一员,和崔秋、杜川两位“大腿”一起,扩大了 TiDB 的 SQL 引擎,反对用户以相似 StreamSQL 的语法将 Kafka, Pulsar 等内部数据源以流式表的形式接入 TiDB。赞叹于两位大佬能力的同时,他作为学习者,理解了 TiDB 的外围架构与运作原理。
2018 TiDB Hackathon 一等奖队伍 TiBoys 合影
2019 年的他曾经能够独立经营我的项目了,他基于 TiDB Plugin Framework,为 TiDB 减少大量用户定制化的性能扩大计划,为 TiDB 增加相似于 MySQL UDF 的性能。他提到:“能够说是前几年的 Hackathon 给我的教训让我有能力在这一年开始独立的写一些基于 TiDB 的性能,给 TiDB 的代码一些奉献。”
TiDB Hackathon 2020 对他来说更是意义不凡。这一年的 Hackathon 中,他用一个能造福 TiDB 社区内外我的项目的 idea 取得了三等奖;他还让女朋友率领“鸽了爽”队也一起加入较量,实现他去年对 Plugin Framework 实现未尽的摸索。
对王鹏翰来说,加入 Hackathon 算是对本人的一个总结,也是给本人的 idea 一个落地的机会。相比于其它许多 Hackathon 我的项目宣讲会的模式,TiDB Hackathon 更重视硬核的技术比拼,不仅看 idea 的好坏,更重视实现的成果。正如 PingCAP CTO 黄东旭开玩笑说的,PingCAP 是一家 Hackathon 驱动的公司。许多 Hackathon 中出彩的我的项目是会成为 TiDB 的分支,甚至合到 TiDB 的主分支去的。
对 Coco 来说,这次 Hackathon 给了她一个 Tech Writer 以外的身份。怎么通过技术手段缩小中文文档撰写的工作量、主动地诊断和优化技术文档,如何将一份 30 多页的格调指南形象成具体的自动化需要……这些都是全新的体验。
张雁飞老师则是第一次以评委的身份缺席 TiDB Hackathon。选手们对技术的狂热谋求也激发了他对代码的激情。较量当天期待的过程中,他也对本人的 UDF 我的项目进行了重构优化,进行了一次本人的 Hackathon 摸索。他更示意如果有机会,心愿明年可能以选手的身份参加到流动中。
另外此我的项目曾经公布在了 https://github.com/tidb-incubator/zh.md 外面,欢送大家点击下方【浏览原文】返回体验!
正如本届大赛的主题「∞」,心愿 TiDB Hackathon 在较量之外,可能给每一个人带来有限可能。