釘釘文檔協(xié)同編輯背后的核心技術(shù)原理
有人說,互聯(lián)網(wǎng)給人類社會(huì)帶來最深層次的變革是改變了人與人協(xié)作的方式,將信息傳播的成本大幅降低。身在互聯(lián)網(wǎng)行業(yè)之中,研究信息傳播的方式方法,是我們的日常功課。
信息傳播的方式,按照時(shí)序效果,可分為同步和異步兩類。
信息的同步傳播
信息被生產(chǎn)的同時(shí)被消費(fèi)。
話出我之口,入你之耳,過了此時(shí)此刻,想還原此情此景,麻煩得很,大多時(shí)候也不需要。同步場(chǎng)景下,信息的生產(chǎn)往往不需要深思熟慮,而是通過你來我往的討論,澄清,逐步勾勒出話題的全貌。表達(dá)的時(shí)效性較之方式的豐富性更為重要。典型的場(chǎng)景如即時(shí)通訊,語音通話,視頻會(huì)議等。簡(jiǎn)單明了,沒有太多的格式。
信息的異步傳播
信息的生產(chǎn)和消費(fèi)異步發(fā)生。
典型的場(chǎng)景如論壇,博客,文檔庫,郵件。我在寫這篇文檔的時(shí)候,你們看不到。你們看的時(shí)候,我早已寫完。異步場(chǎng)景下,信息的生產(chǎn)者會(huì)謹(jǐn)慎的推敲措辭,以確保自己的意思被準(zhǔn)確的傳達(dá)。表達(dá)方式的豐富性很重要,除了文本以外,段落結(jié)構(gòu),列表,示意圖,表格都有利于信息的準(zhǔn)確表達(dá)。
文檔的信息表達(dá)方式
傳統(tǒng)文檔的信息表達(dá)方式是典型的異步傳播。上述的幾類異步場(chǎng)景都可見文檔的影子。
然而2016年3月,Google上線的Google Docs顛覆了這個(gè)結(jié)論,這個(gè)改變世界的功能就是“多人實(shí)時(shí)編輯”,或者稱作“協(xié)同編輯”。引入了協(xié)同編輯的在線文檔,就像一塊兒在線的白板,使得身處世界兩端的人可以在上面共同迭代一個(gè)內(nèi)容,通過你來我往的信息反饋,實(shí)現(xiàn)信息的同步傳播。而編輯的結(jié)果又將沉淀下來,成為信息異步傳播的載體。
兼具信息同步與異步傳播的能力,協(xié)同文檔的誕生,無疑給基于互聯(lián)網(wǎng)的溝通協(xié)作帶來了一場(chǎng)革命。
這場(chǎng)革命爆發(fā)于2006年,而它的起源,早在17年前。
1989年,代表著“文檔”的Microsoft Office第一次在Macintosh系統(tǒng)上與世人見面,而代表著“協(xié)同”的操作變換算法也第一次見諸論文。
Microsoft Office 中所周知,而操作變換算法又是什么呢?
數(shù)據(jù)一致性問題與操作變換算法
對(duì)協(xié)同編輯最簡(jiǎn)單的理解類似于群聊天,每個(gè)人在自己的電腦上修改文檔,把操作群發(fā)給其他打開這篇文檔的用戶。當(dāng)收到來自其他用戶的操作時(shí),重放這個(gè)操作。比如下面這個(gè)例子:
但美好的設(shè)想,難免遭遇現(xiàn)實(shí)的挑戰(zhàn)。因?yàn)榫W(wǎng)絡(luò)存在延遲,來自不同用戶的操作有可能在各端有不同的執(zhí)行順序。相同的操作,不同的執(zhí)行順序,會(huì)產(chǎn)生不同的結(jié)果。比如:
數(shù)據(jù)一致性是協(xié)同編輯的最低要求。當(dāng)然,我們可以強(qiáng)制操作按照到達(dá)服務(wù)器的時(shí)間來排序,但這種排序會(huì)破壞用戶編輯當(dāng)時(shí)的上下文,產(chǎn)生不符合用戶預(yù)期的編輯效果。
操作變換算法就在這里被引入了。
操作變換算法不是一個(gè)算法,而是對(duì)一類算法的統(tǒng)稱。它們針對(duì)不同的文檔數(shù)據(jù)模型,解決一個(gè)相同的問題:
基于同一個(gè)狀態(tài)的兩個(gè)操作,如何調(diào)整一個(gè)操作的參數(shù),使得它可以在另一個(gè)操作之后執(zhí)行,表達(dá)同樣的用戶意圖。
上面的例子加上了操作變換,就可以解決數(shù)據(jù)一致性的問題,如下圖所示:
當(dāng)然,協(xié)同文檔和操作變換算法的水還是很深的。本文只是對(duì)基本原理做個(gè)簡(jiǎn)單的介紹。想要了解更多,可以參考以下文獻(xiàn):
Operational Transformation Frequently Asked Questions and Answers
南洋理工大學(xué)教授Chengzheng Sun的Survey,覆蓋了OT領(lǐng)域絕大多數(shù)研究成果
Google Wave Operational Transformation
G-Suite協(xié)同引擎的協(xié)議白皮書
Achieving convergence,causality-preservation, and intention-preservation in real-time cooperative editing systems
GOT算法及一維數(shù)據(jù)操作變換算法論文
Context-based Operational Transformation in Distributed Collaborative Editing Systems
COT算法論文
結(jié)語
2006年3月,Google Docs上線,多人實(shí)時(shí)協(xié)同編輯的功能驚艷世界,讓穩(wěn)坐辦公套件頭把交椅的 Microsoft Office 也感到虎軀一震。Office奮起直追,但同等功能的 Office 365 上線已是五年之后。協(xié)同編輯究竟是怎樣的一座堅(jiān)城,讓兵強(qiáng)馬壯的微軟止步了五年之久?做一款協(xié)同編輯器需要哪些核心技術(shù)?協(xié)同編輯技術(shù)對(duì)于普通的前端應(yīng)用開發(fā)會(huì)有怎樣的啟發(fā)? 在 D2 ,與大家分享更多技術(shù)原理與實(shí)踐。