每日最新頭條.有趣資訊

騰訊劉昕:如何自下而上在騰訊做開源

騰訊科技訊 15萬顆GitHub Star,57個涵蓋人工智能、移動開發、小程式、架構、系統等多個前沿技術領域的開源項目——這是6月26日上午,騰訊移動互聯網事業群總經理劉昕,作為騰訊開源顧問和Linux基金會董事,在LC3 (LinuxCon+ ContainerCon+ CloudOpen)國際開源盛會上,介紹的騰訊部分開源成果。

在過去六年裡,騰訊開源堅持做好開發者體驗,從內部開源到對外開源,實現從開源新兵到開源社區一員大將的跨越。

騰訊開源始於2010年,在開放戰略之下,“開放、共享、合力開發”的研發模式開始在內部推行。至今,已有超過8000個優質項目在騰訊內部跨團隊、跨部門、跨業務地被廣泛運用。這為騰訊外部開源打下了堅實基礎。

2016年至今,騰訊不斷將內部開源出來的優質項目在GitHub上發布,騰訊開源逐步進入快節奏時代。其中僅2017年一年,就開源將近20個項目。其中不乏世界排名前十的前端開發工具WeUI,閱文集團、科大訊飛等公司都廣泛使用的微服務框架TARS,可以快速建立大規模機器學習平台的AI開源項目Angel等受國際社區高度認可的優秀開源項目。

然而,要深度融入開源社區,不只需項目發布,更需社區參與。“我們非常重視社區治理的概念,好的開源不僅僅是代碼、程式,更是一個建築之上的、有著規則和制度的社區,是Community over Code”。今天,在Linux、CNCF、OpenStack、Hadoop等國際主流開源社區,均可見到騰訊開源的活躍貢獻。在本次大會上,騰訊成為了Linux 基金會白金會員,並宣布將向基金會捐贈TARS、TSeer兩個自研開源項目。

“騰訊到底適不適合做開源?我想答案顯然是肯定的。”在劉昕看來,基於扎實的技術積累,騰訊能源源不斷向開源社區輸出優質項目,推動社區蓬勃發展。同時,公司也從開放、互助、創新的開源生態中獲取養分,以更低的成本提升重點戰略技術,與開源夥伴形成相互促進的良性關係。

劉昕演講全文如下:

騰訊開源起始於2010年,到近兩年逐漸步入正軌。騰訊的企業文化鼓勵內部競賽,產品導向,團隊習慣於先抗住再優化,強調技術為業務和用戶服務,因此騰訊開源的起步階段面臨很多困難,亟需自上而下的戰略規劃。

2010-2015年,騰訊首先在內部倡導開源,提倡“開放、共享、合力開發”的研發模式,可靠組件公司內部實現複用,減少重複造輪子,提升效率。這是一個觀念和習慣培養的過程,大家先通過內部開源試水,好的項目會跨團隊、跨部門、跨業務得到廣泛使用。這是對外開源的基礎。

2016年,騰訊開始有非常優秀的開源項目在Github上公布,那個時候,一個項目的從內到外經過的開源合規審核需要長達3個月之久。對於公司做開源來說,尤其是在和基金會合作的過程中,我們都發現,合規是基礎要求,是非常重要的。所以這一年,我們精耕細作,完善開源合規流程,與法務同事合作,效率翻了3倍。

2017年,騰訊對外開源開始進入了快節奏時代,這一年騰訊開源了將近20個項目,覆蓋雲計算、騰訊遊戲、騰訊AI、騰訊安全、小程式等相關領域,這些都是經過騰訊眾多明星業務海量檢驗的項目進行對外開放,一經開源,立刻引發社區的關注。“做開源,騰訊認真了。”

截止到18年6月,騰訊發起的開源項目累計在GitHub獲得了近15萬Star,在國內和國際收獲了關注和認可,今年,我們非常重視社區治理的概念,好的開源不僅僅是代碼、程式,更是一個建築之上的、有著規則和制度的社區,是Community over Code。對內,我們成立開源管理辦公室,每個開源項目都設立的相應的管理委員會,對外,我們積極與開源社區合作,上半年我們就有三個項目加入了Linux基金會運作,我們也讚助了LC3的大會,設立了騰訊開源的展位和TARS開源項目的workshop,我們非常希望能與開發者共建,共同去打造開源社區的生態。

在未來,騰訊會持續輸出優質的開源項目,並且參與Linux、 CNCF、 OpenStack、Hadoop等社區建設,貢獻代碼,同時,我們會探索一些可以讓開源產生價值、形成長久的生命力的商業化模式。

騰訊目前所有的開源項目,共有57個,集中在人工智能、移動開發、前端、小程式、後台/架構、數據庫/存儲、平台/系統,組件/工具多個領域,有的是經典技術架構,例如像微服務框架Tars和名字發現框架TSeer,已在騰訊內部積累了10年,經過100多個業務考驗。

有的是熱門技術領域,例如在人工智能領域,騰訊開源了高性能分布式機器學習平台Angel和移動端申請網絡前向計算框架NCNN等等;有的是騰訊自己建設和服務的開發者生態,例如微信原生視覺的基礎樣式庫Weui和小程式開發框架Wepy等等。大家都可以在GitHub的騰訊官方账號進一步了解。

騰訊現在的開源項目的社區數據指標中,GitHub Star數最高的WeUI項目已經有1.9萬個Star,是世界排名前十的前端開發工具。超過1萬Star數的項目有5個,超過5000 Star數的項目有9個,超過3000的有16個。這說明騰訊開源的項目深受開發者關注,證明了項目本身的高品質和騰訊的技術實力。

騰訊開源提交數Commits最高的10個項目中,平均社區提交的Commits佔開源後總體Commits的25%。騰訊致力於社區開發者共建,打造更廣泛的開源生態。

騰訊開源的項目保持和社區健康、良好的互動,issue和PR的關閉比例都是非常高的,甚至達到了100%,這也說明,項目的社區參與度和項目開發者的反饋速度都很高,騰訊的開發者在積極的回應他人提出的關於項目的問題、並作出反應,這樣社區開發者對項目保持信心,並熱情的參與,幫助項目共建,讓這些開源項目越來越好。

此外,除了自主開源項目,騰訊也在積極的參與與國際開源社區的互動,加大對開源領域的投入,參與國際通行的協作方式,成為開源社區的積極貢獻者,發揮中國企業的科技力量。

我相信通過這些數據和案例,大家應該對騰訊做開源這件事有了更直觀的印象。

生態對於開源項目來說是非常重要的,有著圍繞一個項目的開發者、貢獻者、管理委員會、甚至是下遊廠商、交付團隊,這些是項目能夠持久散發活力、持續優化的保障。

騰訊目前正在探索建設的生態的方式,主要從存在於以上幾種路線:與基金會合作例如TARS,開發商業版本例如TStack,培育開發者生態例如微信,和制定行業標準例如藍鯨。但這些具備商業生態的開源項目,最初大多是自下而上發生的,可能是一個服務內部使用多年的項目,可能是幾個程式員為了協作方便而建立的庫,自下而上做開源雖然需要明確項目的生態定位,但比定位更重要的是,開發的激情與開源的樂趣。

接下來我會舉幾個例子一一介紹。

TARS和TSeer是騰訊MIG無線運營部研發團隊在10年前研發出來的微服務開發框架和名字服務框架,經過10年的打磨,均於去年開源。

10年前,騰訊沒有一個統一的開發框架,每個業務都有自己的開發習慣,每個團隊也有自己的開發語言,使開發協作出現很多問題。比如,不同語言之間的通信適配非常繁重,不同團隊會重複實現一樣的功能組件,代碼品質參差不齊。有時,有些團隊沒有實現業務容災。有些團隊為了快速上線,直接寫死IP在代碼中。有些後台開發團隊沒有平台建設人員,很多操作都需要登錄伺服器,導致造成誤操作。基於以上痛點,TARS應運而生,它完美解決了開發和運維在日常工作中遇到的所有難題。TARS是基於 TARS 協定的高性能 RPC 框架,為開發和運維提供了一體化的微服務治理方案。它具備多語言,敏捷研發,高可用,高效運營這幾種優勢,為公司帶來一個開箱即用的企業級產品。也完美實踐了業界DevOps理念和騰訊海量服務之道。

目前TARS已經成為騰訊內最廣泛使用的微服務治理開發框架和運營平台,已經為數百個產品提供服務,微服務規模達到百萬級。但是,仍有一些暫未使用TARS框架的服務,亟需一套能與非TARS開發框架通訊的名字服務。

TSeer就是這樣的一套方案。Seer的意思是先知,先知原本是指對宇宙、人類社會或自然科學方面的大事有較早了解或準確預言的人,我們這裡引申TSeer為服務注冊發現容錯方面的先知。我們有一個北京的開發團隊,原來沒有一套統一的開發框架,由於外部同質化產品競爭激烈,且業務邏輯複雜無法在短時間內全部重構為TARS服務。在時間緊、任務重的情況下,一個輕量化的名字服務是他們最佳的選擇。TSeer是對TARS名字服務功能的輕量化。它輕巧靈便,對業務的侵入性低。在服務發現的核心功能之上,TSeer還支持輪詢、隨機、靜態權重、一致性哈希四種負載均衡算法,提供調用上報、故障屏蔽、定時探測、緩存調用等可靠的故障容錯策略,同時通過IDC、SET等多種分組策略可有效解決業務跨地區跨機房調用等難題,極大提升服務的可用性和調用品質。根據需要,用戶可以選擇Agent和API兩種接入方式使用,方便快捷。TSeer在騰訊內部眾多業務中廣泛採用,目前日均承載百億級的請求量,是微服務框架中優秀的名字服務解決方案。

TARS團隊一直與各種類型的企業和機構進行深度的技術交流與合作:與中國資訊通信研究院合作,一起建立國內微服務相關標準;與大唐移動合作,共同開發基於TARS的5G核心網SBA架構;與財付通合作,開發基於TARS的銀行核心網系統。同時,TARS在騰訊外也有非常廣泛的應用。騰訊不僅與國內知名的互聯網企業進行交流,在非常多中小型企業裡也在積極嘗試。他們在使用過程中,也為TARS開源社區提供了很多貢獻。如閱文集團為TARS提供了PHP語言的補充,是廣大PHP開發者的福音,滿足了PHP語言對於微服務治理框架的需求。科大訊飛為TARS擴展了對Google Protobuffer協定的支持。還有其他熱心的社區開發者為TARS提供了一鍵化安裝腳本以及TARS-Docker鏡像。TARS開源社區在國內開發者中已非常活躍。接下來,我們想進一步吸引來自全球更多的開發者。基於Linux是全球中立的開源組織,我們決定讓騰訊自研的TARS和TSeer加入到Linux基金會裡面。本次大會也是這兩個項目進入基金會的重要裡程碑。

TStack最初是騰訊內部使用雲平台,是企業IT團隊研發的為內部提供支撐的技術服務。TStack基於Openstack搭建,是社區版本拉出一個分支自主研發,那時,與社區的互動還不多。針對Openstack缺乏統一的組件管理和蹩腳的自動化部署等問題,騰訊企業IT團隊通過自主研發優化,接入大量騰訊內部成熟的PaaS和SaaS服務,同時實現多種部署方式結合的8小時快速部署。Tstack對騰訊內部提供了安全、可靠的支持,並積累了海量的的運營經驗,2年前,它從內部開始走向外部,開始為中國的政企用戶提供服務,並深入參與到Openstack基金會的社區中,目前已經成為Openstack的白金會員,並且榮獲17年Openstack Super User大獎。

以OpenStack為基石,騰訊雲TStack致力於構建新一代的開源商業模式——以開源技術為核心的產品和服務型企業,以滿足企業客戶場景化需求和開源社區技術發展之間的協同和進化。這種新一代開源商業模式意味著,騰訊雲TStack不僅可以按照國際規則參與開源社區,通過代碼貢獻把握和影響OpenStack社區方向,同時又能夠基於客戶需求將OpenStack產品化,降低企業級客戶採用OpenStack的門檻,還可以將實踐中積累客戶需求反饋社區,推動社區良性發展。”

最初的WeUI原型是微信設計中心網頁重構組的一個內部樣式庫,主要用於自身業務開發。

2015年初微信全面開放了JS-SDK,助力第三方開發者更好為用戶地提供服務。在這個背景下,越來越多的公司和個人,以微信作為入口,借助微信開放的接口,開發自己的Web應用。Web應用體驗是否良好,很重要的一點就是UI。在當時,較多的第三方微信Web應用,都缺乏良好的UI設計,頁面設計參差不齊,用戶體驗不夠友好。

為了更好地幫助微信開發者開發出體驗更好的網頁,微信團隊重新梳理、規範並開源了樣式庫。微信開發者利用WeUI樣式庫,可以輕鬆搭建出符合微信設計規範的更好體驗的Web應用及小程式,這也成為微信Web應用、小程式時候用戶提供更加統開發者必備的開源項目。由此,我們可以看到自下而上能夠產生怎樣的爆發。

另一個關於微信小程式的開源項目Wepy的開源經歷就更加傳奇了,Wepy本身不是微信團隊開發的,而是由一個完全不相關的部門的一個普通的程式員業餘時間做出來的,Wepy提供更接近Vue.js的開發框架,對原生小程式的開發模式進行了再次封裝,更貼近於MVVM的架構模式,最初是滿足自己的開發習慣,開源後卻得到社區開發者的廣泛使用和核心貢獻。這兩個案例都體現出,當一個開源項目要解決的問題足夠剛需,即使是沒有強勢資源的支持,也能夠形成自己非常活躍的開源社區。

對於微信小程式來說,開發者生態十分重要的。微信近來在小程式上的擴張觸動著更多平台和巨頭的神經,而小程式的成功也讓整個類輕應用生態和平台開始蠢蠢欲動。剛過去的GDC大會上,Google宣布「即時應用」開始支持遊戲;不久前,國內十家手機廠商也共同發布了「快應用」標準,整個輕應用生態都在重整旗鼓;蘋果iOS對於PWA支持步伐這兩年也驟然加速。

微信用行動證明了輕應用的時代馬上就要來了,聞聲而來的競爭對手也讓小程式不再是微信一個人的賽道。就像以往手機OS、VR和AI的平台,在這類競爭中,誰能獲得更多開發者的支持,佔住開發者生態的高地,便有更大的機會奪取最終的勝利。而開源顯然是非常是一條有效的途徑。

騰訊到底適不適合做開源?我想答案顯然是肯定是。

從外部環境來看,隨著主流的開發平台Linux, Android等逐漸開源化,IT產業想要取得更大的市場份額,擁抱開源可說是當務之急。

從騰訊內部的技術積累來看,騰訊內部技術研發基礎設施完整,有超過8000個開源項目,橫跨各個技術領域,經過海量用戶驗證。騰訊能夠源源不斷向開源社區輸出優質開源項目。

從生態機遇來看,開源能夠很好的服務於騰訊重點戰略方向,例如作為騰訊雲的Paas、Saas服務封裝,推動機器學習和人工智能的廣泛應用,或者通過行業標準的制定長官下一代的技術創新。這些都是開源能夠給騰訊帶來的生態機遇。

那麽,自下而上做開源,相對於自上而下來說有哪些優勢,首先,通過內部競爭並開源出來的技術是得到了廣泛實踐驗證的,這是項目的品質強有力的保證。第二,相對於聘請專職開源人員來維護,通過完善的社區治理規範和機制,更能夠保證項目不受某個人的離職或者轉崗的影響。第三,自上而下的戰略容易受KPI的導向或者與現有業務做緊密捆綁,很難實現長期價值的積累,或者允許創新發力,推動新興技術的開源,因為戰略的制定有時跑不過創新的速度。

但無論是自下而上還是自上而下,有幾點是共通的,從技術驅動走向商業戰略,從部落到聯盟,建設健康的開發者生態,實現共贏,最後,最重要的,持續不斷的技術創新。

獲得更多的PTT最新消息
按讚加入粉絲團