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,我們非常希望能與開發者共建,共同去打造開源社群的生态。
(騰訊開源一覽圖:資料截止到2018年6月1日)
在未來,騰訊會持續輸出優質的開源項目,并且參與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的導向或者與現有業務做緊密捆綁,很難實作長期價值的積累,或者允許創新發力,推動新興技術的開源,因為戰略的制定有時跑不過創新的速度。
但無論是自下而上還是自上而下,有幾點是共通的,從技術驅動走向商業戰略,從部落到聯盟,建設健康的開發者生态,實作共赢,最後,最重要的,持續不斷的技術創新。