手淘天施:我眼中的Weex和Weex開源那些事
版權(quán)聲明
作者:吳志華(花名:天施),阿里資深無線技術專家,淘寶移動平臺基礎平臺部負責人,Weex項目負責人
本文為手淘技術團隊投稿。
今天手淘宣布將Weex開源項目捐贈給Apache基金會開始孵化,這是阿里在JStorm、RocketMQ之后的第三個阿里Apache基金會開源項目。
Apache基金會有著非常嚴格的準入機制,這次Weex加入表明它得到了國際上的認可,我們也非常希望看到中國的移動開源項目能夠在國際上獲得成功。
在今年6月份的GMTC大會的時候我和手淘同學聊到,Weex的開發(fā)完全基于Github,在本文里天施老師真誠的分享了更多Weex背后的故事,我想,正是這樣的真誠和開放,是Weex成功的關鍵。
本文還講到了Weex開源的準備過程和如何進入Apache基金會,相信可以給準備將公司技術開源的人們一些幫助。
(2016年6月30日,Weex項目開源,團隊合影留念)
10月底云棲大會開源專場,阿里云唐容邀請我過去做Weex開源的主題演講??戳讼聅peaker列表:第一位是Docker的John Willis(知名Devops專家),第二位是我,第三位MySQL之父Michael Widenius(MySQL第一行代碼的作者),第四位阿里云褚霸大神。感謝阿里云認同之外更多是壓力山大,一是擔心自己在前輩大神和業(yè)界同仁面前妄言,二是真心希望給業(yè)界講點什么,哪怕讓大家記住一兩句話也行。
Weex開源的幕后
準備演講PPT過程更是一個持續(xù)總結(jié)和自我修煉的過程?;氐揭荒昵拔覀冇懻揥eex是否開源的時候,有追技術熱點、開源趕時髦的想法,但內(nèi)心堅信的一點是我們認為Weex可能是在移動技術這塊唯一做技術生態(tài)的機會。與此同時針對“Weex是什么、要什么”也展開了大量討論,Weex不是RN、三端一致、Vue,這些點都很重要但不一定是最本質(zhì)的理解。
整個項目開源準備從春節(jié)開始一直到4月,大量幕后工作(代碼去內(nèi)部邏輯、代碼倉庫遷移github、文檔、demo、官網(wǎng))。中間也一直跟業(yè)界交流,一直被追問我們對Weex的理解和開源項目維護問題。記得有次Geekbang的Selina過來進行合作交流,被問到Weex相關問題,我當時一個觀點是“在移動時代沒有找到一個比HTML/CSS/JS更合適描述界面和表達業(yè)務的方式,當前智能手機GUI體系只是對HTML拙劣的逼近和模仿。Weex/RN從某種意義上是必然的產(chǎn)物”。
坦言當時Weex開源還是處在巨大的爭議中:一個是我們秉承的三端一致,到底是為了差異而差異,還是我們有自己的思考和堅定信念,業(yè)界對于我們能做到三端一致也是持懷疑態(tài)度;二是阿里過去開源積累的負面印象,給這個項目開源帶來不少挑戰(zhàn)。這些擺在面前的困難和挑戰(zhàn),促使我們不斷思考Weex的開源之路怎么走,我們的信心和勇氣也處于煎熬之中。
時間一天天逼近,各項準備工作逐漸交付,離我們既定4月21日QCon宣布開源內(nèi)測越來越近了。對于Weex開源內(nèi)測能夠達到的效果也放在了桌上討論,到底Weex開源能夠吸引多少人?到底是要做內(nèi)測還是公測、內(nèi)測說法是否合適?內(nèi)部爭議不斷,技術團隊的謙虛的秉性也對合作的市場運營團隊造成了困擾。整個事情的不確定性很大,但既定的目標還是要持續(xù)往前滾動,該決策的要決策,該執(zhí)行的要執(zhí)行。
作為團隊負責人我在這個時候壓力不小,一直擔心Weex開源這一槍打出去就啞掉了,后續(xù)就無從談起。3月19號周末在家,壓力之下突發(fā)奇想:“我們應該立即在集團內(nèi)部做個開源內(nèi)測,看看集團內(nèi)部開發(fā)者的反響”。
開源內(nèi)測
一想到就說做就做,在內(nèi)網(wǎng)讓團隊立即寫了篇集團內(nèi)開源內(nèi)測的號召文章讓集團技術發(fā)展部推廣了下。結(jié)果這樣一個形式粗糙簡陋的活動形式收到的效果出乎我們的意料,集團不少同學給我們貢獻了一些有意思的demo和組件,正是這些最早一批的社區(qū)貢獻給了我們堅持下去的信心和鼓勵。
然后就是4月21號QCon開源內(nèi)測的故事:從4月20號晚上團隊趕Weex官網(wǎng)發(fā)布折騰到凌晨4點,再到QCon當天南天的keynote演講非常成功爆棚當場引起業(yè)界強烈反響,讓業(yè)界看到了我們對移動技術方向的深刻理解,緊隨其后的是海量開發(fā)者申請郵件源源不斷進來,Weex開源之路就此啟動。
事后來看,開源內(nèi)測幫助Weex在可控范圍內(nèi)逐步提升開發(fā)者體驗,起了非常關鍵性作用,讓我們有機會去不斷自我修正,避免因為項目本身不成熟的時候大量開發(fā)者涌入導致失控。
當我們沖出去開源才知道Weex各種工具在開發(fā)者環(huán)境下的大量問題、開發(fā)者對調(diào)試工具的強烈訴求、文檔的問題。大量輸入也使得Weex項目變得更加完善、健全、更加有人情味。在開源內(nèi)測2個月,我們滿腔熱血和激情服務了大量開發(fā)者,解決了不少問題,也讓社區(qū)看到了我們的決心,一些熱心的開發(fā)者也開始幫忙自發(fā)建立Weex Help論壇、QQ群,Weex的社區(qū)的雛形就此形成。
到后來就是6月底的正式開源,團隊一邊兼顧業(yè)務落地的壓力一邊要兌現(xiàn)在QCon上的承諾—“6月底Weex正式開源”,其實是蠻不容易的。開源當天我們做了個小慶祝儀式,這個也是后來大家在微博上看到團隊對外第一次整體亮相—“小伙伴們以滿滿的熱情和儀式感表達對Weex開源的熱愛和執(zhí)著”。
和VueJS作者尤雨溪的合作
開源路上還值得一提的是引入VueJS作者尤雨溪作為Weex顧問的故事。
其實勾股跟小右接觸很久,談了接近小半年,在小右進來的工作形式和職責上一直有一些小糾結(jié)。主要在集團層面過去也沒有可參考的例子,要說服方方面面要做不少努力,同時也要兼顧尤小右的感受。
我個人的原則是“盡最大可能尊重小右,最終在工作形式上也大膽決定讓小右全部面向開源社區(qū)工作,一切的交付和合作在社區(qū)進行”。我們做的是開源的事情,也希望小右的工作成果在社區(qū)體現(xiàn),服務于熱愛Weex和Vue的社區(qū)開發(fā)者。這樣原則一確定,合作形式就清晰簡單,彼此合作起來也會少了不必要的束縛和壓力。
不過這個事情的促成其實還是要感謝我的Boss南天,讓我們在這個事情上自由折騰去嘗試一些創(chuàng)新的想法,也真心期待Weex和Vue的合作真正不負社區(qū)的厚望。
9月3號南京JSConf上尤雨溪正式宣布“作為技術顧問加入Weex團隊,推進Weex和Vue在前端框架和社區(qū)融合”,社區(qū)反饋幾乎全是正面評價。那天我跟勾股說了一句話:“小右這個點上加入是最合適的時間點,過早過晚都不是好的時機。”
推動Weex加入Apache社區(qū)
然后回到文章一開始提到的云棲開源峰會。在開源峰會10月份之前團隊受邀在業(yè)界做了不少分享,中間收到社區(qū)開發(fā)者的反饋:“一些業(yè)界公司擔心這個項目過于阿里化,停掉了正在調(diào)研接入Weex的嘗試”。
這個反饋促使我們思考怎么讓這個項目變得更加中立,讓更多的開發(fā)者可以參與進來一起貢獻。團隊討論后覺得推動Weex去Apache社區(qū)可能是一條讓業(yè)界放心的路。
于是我們開始行動起來,最早找到集團JStrom項目的紀君祥,老紀很熱心,也一直認為Weex這樣的項目應該構(gòu)建更廣泛的影響力,我們在理念和方向上一拍即合,于是開始準備起來。
老紀在Weex進Apache孵化器之路做了大量工作,上周還在給Weex團隊介紹Apache社區(qū)的工作流程。通過老紀,我們也接觸到Apache Kylin的Luke老師,正好QCon上海Luke老師有演講,我們跑過去跟Luke老師當面交流。一個多小時交流過程中,Luke老師給我們講解了Apache社區(qū)秉承的理念規(guī)則,和Apache Kylin的The Apache Way,也讓我們領略到真正熱愛開源技術人的風采。
最終我們邀請到Luke老師和另外一位老師作為Weex項目的mentor,但是項目的Champion還空缺。所以這次云棲大會開源峰會我有兩個任務:一是將Weex我們一直堅持的理念講給大家;二是尋找Champion。
對Weex的思考
在開源峰會的PPT準備中,我一直在思考要給業(yè)界講點什么,腦海中全是這半年Weex在集團的落地之路(團隊諸多艱辛和永不停歇的性能穩(wěn)定性之路)、這半年開源之路的點點滴滴。Weex是什么?我們到底要堅持什么?我們花費這么大力氣做Weex開源是為了什么?
這三個Why我們一直反復思考,也必須回答。我想了很久,PPT也改了很多遍,想了這十年移動互聯(lián)網(wǎng)技術變遷的事情,也想了過去自身諸多技術經(jīng)歷,想了手淘從2009年到現(xiàn)在的技術架構(gòu)演進之路:從Native到H5,中間經(jīng)歷WebApp/鳥巢不斷嘗試,再到RN/WVC/Weex的殊途同歸。10月13號晚上,我寫下一段話:“Weex希望把Web統(tǒng)一的技術標準和開放自由分享的精神,帶到移動互聯(lián)網(wǎng)業(yè)務交付中來”,這是我們所認定的路。
10月14號下午演講完出乎意料,本來覺得這個場子很多奔著Docker和MYSQL兩位大神來的,結(jié)果關注Weex關注開源的朋友不少,演講完提問的朋友不少。
還記得有人提了微信小程序跟Weex的問題,我的理解這完全兩個層面的事情:“小程序更多是封閉的商業(yè)生態(tài)。Weex更愿意做移動互聯(lián)網(wǎng)業(yè)務交付的統(tǒng)一技術標準,希望一直堅持開源、中立,大家喜歡拿去用就好不會有任何負擔。至于未來我還是堅信移動互聯(lián)網(wǎng)的技術一定會走向成熟統(tǒng)一,統(tǒng)一的技術標準可能會帶來很多美好的東西,這個是技術人愿意相信也愿意去為之努力的事情”。
演講完走出來,身心有股沉甸甸的感覺,對于Weex實踐標準化、三端一致有了更深的理解和發(fā)自內(nèi)心的使命感,每當我們在標準化多做一點點,就能降低開發(fā)者很多成本。回到團隊,我第一時間找核心骨干溝通促成Weex技術委員會的成立,致力于推動標準化、規(guī)范化在項目落地。
Weex的雙十一大考
進入8月底,阿里雙十一的壓力撲面而來。Weex代替H5成為雙十一終端基礎渲染解決方案,是Weex團隊的唯一且最重要的任務。
如何力保雙十一Weex的穩(wěn)定性和性能、滿足業(yè)務的需求、打通研發(fā)生產(chǎn)監(jiān)控的全鏈路、保證業(yè)務代碼落地最佳實踐和性能達標、大量不斷推敲的降級方案和反復演練,鬼道、勾股帶領團隊,跟雙十一會場團隊一起,在聯(lián)合項目室一扎就是2個多月。壓力很大,沒有退路,唯有不斷往前,一旦雙十一Weex被降級,近百人的努力將全部白費。
非常幸運,加上我們也足夠努力,很慶幸Weex扛住了雙十一這次大考的磨礪,交出一份不錯的答卷:Weex在雙11會場中的覆蓋率接近99%,頁面數(shù)量接近2000,覆蓋了包括主會場、分會場、分分會場、人群會場在內(nèi)幾乎所有的雙11會場業(yè)務。雙十一主會場秒開率97%,全部會場頁面達到93%。
奇妙的事情也在這個期間發(fā)生,有時候當你努力到一定程度的時候,奇跡也會悄然降臨。
如愿以償,進入Apache基金會
前面提到,我們從8月開始Apache準備工作過程,一直苦尋Champion而不得。JStrom的老紀在10月11日的時候,幫忙在Apache社區(qū)發(fā)了封“Seek one Champion for incubating Weex project”的郵件,郵件石沉大海。大家一度失望,中間我們還嘗試給JS Foundation發(fā)郵件詢問相應項目孵化流程,也沒有得到回復。
直到11月3號奇跡悄然發(fā)生,Benjamin Young(Weex的Champion,W3C Invited Expert)給我們回復一封郵件提寫到:
Were you all able to find a Champion for the Incubator? I’d hate to see this great project miss out on benefiting from the Apache Way.
記得正好是周四晚上10點我看到這封郵件,忍不住興奮給勾股電話告知這個好消息。天道酬勤,找到了Champion之后,接下來的Proposal提交、社區(qū)發(fā)起討論和投票的過程都順利的不可思議,最終我們很幸運得以入駐Apache孵化器( http://incubator.apache.org/projects/weex.html )。
我一直反復跟團隊講,今天Weex在業(yè)界有一些技術影響力和社區(qū)關注,不是我們做的有多好,相反,很多事情我們做的也不好。只是很幸運或許是這個項目方向選對了,我們獲得了集團和業(yè)界技術人的大量關注和支持,所以才有機會做好這第一步。
回歸初心,我們才剛剛開始。堅持標準的路不好走,希望業(yè)界有更多朋友一起同行,但我們堅信路走對了就不怕遠。
回想起這十年,大量技術人在跨平臺GUI、移動應用程序動態(tài)性上做的努力、完善移動瀏覽器技術再到HTML5標準、從非智能操作系統(tǒng),到WebOS再到iOS/Android系統(tǒng)上不斷追逐界面UI繪制和業(yè)務表達效率的提升,再到今天的RN/Weex。一切看起來像是一個輪回,技術總是曲折往前但不會簡單重復。