專訪京東科技張亮:本土開源需形成吸納開發者的靶心丨開源創新30人

{"type":"doc","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"據 InfoQ 不完全"},{"type":"link","attrs":{"href":"https:\/\/www.infoq.cn\/article\/ewtimJ6LzPUUl8Tmyzm3","title":"xxx","type":null},"content":[{"type":"text","text":"調研數據"}]},{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"顯示,僅在過去一年,國內便先後有超過10家開源企業獲得新一輪資本助力,融資紀錄爲近年來開源賽道最高。與此同時,大公司開源步伐加速、國內第一家開源基金會正式成立等消息,也成爲了去年本土開源領域的重磅新聞。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"隨着越來越多的企業、人才、資金等資源不斷湧入,在本土開源這一賽道之上,未來將湧現出更多優秀的開源參與者。然而,在參與開源的過程中,更多有關於企業開源治理、社區運營等方面的難題,卻依然困擾着每一位投身開源的人。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"去年 4 月 16 日,Apache 軟件基金會宣佈 Apache ShardingSphere 畢業併成爲頂級項目,成爲基金會內首個分佈式數據庫中間件項目,這意味着 Apache ShardingSphere 在開源實踐上取得的成績,獲得了國際頂級開源組織的認可。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"而作爲 Apache ShardingSphere 項目 VP & 創始人,張亮對於開源項目治理及社區發展也在經過基金會的孵化洗禮後變得更加的深刻了。近日,InfoQ 記者有幸約訪了張亮先生,就下一步企業開源治理及開源社區發展等方面話題,進行了交流。"}]},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"ShardingSphere的三次蛻變"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}},{"type":"strong"}],"text":"在開始企業開源治理及開源社區建設的話題之前,首先得從張亮及 Apache ShardingSphere 的發展說起。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"截至目前,ShardingSphere 項目已有 150+ 公司採用,並涵蓋金融、電商、數字化與雲服務、互聯網教育、出行、物流、醫療健康等各行各業,在京東內部也被廣泛採用。事實上,從寫下第一行代碼到取得今天這樣的成績,ShardingSphere 主要經歷了三個階段的發展。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"在開源初期,當時還被命名爲 Sharding-JDBC 的 ShardingSphere 主要由張亮個人主導,是一款基於 Java JDBC 接口實現的數據庫分庫分表管理框架。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"據張亮介紹,當時決定寫下第一行代碼的原因,主要是因爲行業內的數據庫中間件長期沒有足夠成熟且能讓大家廣泛採用的產品。“不同階段的開源項目都讓人覺得缺點什麼,比如說對 SQL 的支持度不高,工具也不成熟,而且開源一段時間就沒人維護了,都是些半成品。”張亮表示。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"抱着改變這一現狀的初衷,當時對社區都沒什麼概念的他便寫下了 Sharding-JDBC 的第一行代碼。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"而在第一個版本的產品成型併發布後,由於 Sharding-JDBC 很好地屏蔽掉了數據持久化過程中分庫分表等方面的實現細節,讓開發者能夠更輕鬆地實現數據庫的水平擴展,產品開源後便獲得了開發者的一致好評。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"隨後,伴隨着 Sharding-JDBC 在開源社區得到認可,當時打算自研分佈式數據庫的京東科技團隊"},{"type":"text","marks":[{"type":"italic"},{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"(原京東數科)"},{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"也找到了張亮,有意邀請他加入。再三考慮後,張亮最終加入京東科技,全職做起了 Sharding-JDBC,也從此開啓了 Sharding-JDBC 第二階段的發展旅途。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"據張亮介紹,由於設計之初 Sharding-JDBC 主要是基於JDBC標準接口實現的,整體上更像是一款 Java 數據分片框架,因此也存在只能用於 Java 上的侷限性。但事實上,業務應用開發語言不止 Java 一種,實現從一個 Java 框架到更爲通用的跨語言數據庫中間件產品的轉變, Sharding-JDBC 還有許多需要提升的地方。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"首先是品牌的升級,將 Sharding-JDBC 改名成爲了 ShardingSphere ,在保留原來開源框架累計下來的人氣與品牌關注度的同時,進一步強調自己已經跳出了最初 Java 框架的固有產品形象。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"與此同時,張亮還開始着手運營與組建社區,考慮將 ShardingSphere 推入 Apache 基金會,將其發展成爲更加大衆化的、能夠成爲開源數據庫中間件領域標準的產品。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"而在 2018 年 11 月,伴隨着 ShardingSphere 正式進入 Apache 孵化,隨後又於 17 個月之後正式畢業成爲 Apache 頂級項目,在先後完成了社區組建,同時遵循 Apache 的規則將"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"ShardingSphere 所有權從公司與個人轉向社區所有之後,ShardingSphere 基本完成了第二階段的轉變。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"在進入第三階段之後,可插拔架構的提出,也開始成爲了 ShardingSphere  發展需要考慮的問題。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"據張亮介紹,可插拔思路的成型,主要是由於在使用 ShardingSphere 的過程中,京東內部除了對數據分片和讀寫分離等需求外,也逐漸衍生出了包括數據加密、影子庫壓測等這一類的需求。這些功能如果分別讓各個系統部門自己去實現,就會出現重複造輪子的現象,但如果能夠將這些功能中比較通用的能力抽離出來,集成到 ShardingSphere 之上,這就會極大地減少公司整體的工作量。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"而在將這些功能集成到 ShardingSphere 的過程中,如何實現功能之間的互相隔離,不影響主架構運行,成爲了 ShardingSphere “可插拔架構”提出的關鍵。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}},{"type":"strong"}],"text":"據張亮介紹,在技術架構上,ShardingSphere 的可插拔架構劃分爲面向數據庫內核、企業應用和開源生態的三個層級。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}},{"type":"strong"}],"text":"L1 內核層:"},{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"面向數據庫內核,包括查詢優化、分佈式事務、核心執行鏈路、調度引擎和分佈式治理等。L1 內核層是 ShardingSphere 通過對行業的思考所提供的解決方案。通過可切換的雙引擎,在分佈式數據庫尚未成熟的變革階段提供中間件增量服務;並在終將到來的分佈式數據庫成熟之時提供面向分佈式的查詢優化、事務和存儲引擎。希望 L1 內核層的可插拔設計,能幫助傳統數據庫向分佈式和雲原生階段提供平穩的演進路徑。當然,目前內核層還屬於籌劃階段。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}},{"type":"strong"}],"text":"L2 功能層:"},{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"面向企業應用,包括數據分片、讀寫分離、數據庫高可用、強一致多副本、彈性遷移、數據加密、影子庫以及其他擴展。它是開發者可以自行拓展的重點部分。L2 功能層對於企業級應用意義重大,目前 L2 功能層已經較爲完善。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}},{"type":"strong"}],"text":"L3 生態層:"},{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"面向開源生態,包括SQL方言、數據庫協議以及數據網關。除了對單一數據庫兼容度的提升,對異構數據源的打通數據網關也在探索中。 L3 生態層將是 ShardingSphere 對接和融入開源生態的標準。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"從最初基於 Java 語言開發並開源的數據庫分庫分表框架開始,ShardingSphere 一路隨着市場的需求不斷更新,先後經歷了功能升級、治理模式切換,進入開源基金會等過程,逐漸演化成爲了一個分佈式的數據庫生態體系。"}]},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"社區大於代碼的含義是“獨行致快,衆行致遠”"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"一路轉型升級的過程中,張亮對於開源的理解也在不斷地提升。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"從寫下第一行代碼到第一個開源版本發佈,張亮用了三個月就完成了所有工作,在之後兩年的運營過程中,張亮個人貢獻的代碼量也一度達到80%以上。但是開源之後,如何讓整個項目長期穩定地運行下去,卻成爲了讓張亮思考最多的問題。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"一個項目的代碼再好,但如果他是屬於一個人的,那其實它的風險是非常大的。因爲隨着維護者的心情變化,可能這個項目可能會忽然就失去維護,或者開始維護很慢。從企業使用的角度來看,這樣的項目是不被看好的。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"在張亮看來,一個開源項目想要真正取信於人,一定是它要有一個穩定的基座,這個基座不能是第二天就會消失的東西。而在親歷了 ShardingSphere 從進入 Apache 孵化到畢業的全流程之後,他爲自己的這一理念找到了新的解釋。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"在 Apache 基金會內,“社區大於代碼”的理念滲透到整個基金會運營決策的每一個環節,一句話便高度概括了 Apache 的運營發展之道。在張亮看來,“社區大於代碼”其實又可以解釋爲“獨行致快,衆行致遠”。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"“一個人去寫代碼可能會很快,但是隻有更多的人一起參與進來,即使當項目的創始人累了不想走了的時候,背後也有別人在推着他向前走,並且經常會有一些有趣的新方法出現,刺激大家一起往前。”在張亮看來,有一個羣體的參與,纔是一個社區最有魅力的地方。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}},{"type":"strong"}],"text":"而在明確了社區對於開源的重要性之後,如何打造一個持續活躍、健康發展的社區?同樣成爲了考驗運營能力和經驗的技術活。對此,張亮介紹了他在開源社區運營方面的五點經驗。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"第一,需要多去聽多看。通過 GitHub 和郵件列表這些渠道,再小的聲音都能夠反饋到社區內部,項目運營人員通過這些渠道傾聽參與者的聲音,能夠提煉出更加通用、普適的需求,進一步迭代出更加完善的功能,讓開源項目的社區變得更加有活力,發展更爲穩健。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"第二,要保持英文化。社區是多元的,上面聚集了來自不同國家、地區乃至於文化背景的人,我們不希望社區是一個割裂的狀態,統一用英文溝通,是對社區多元化的一個最基本的保障,它不會讓一些想參與它的外國人,因爲語言壁壘最終無法參與。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"第三,每一次問題提交都要做到可檢索。所有用戶提的問題都需要儘量留痕,如果某一用戶提了一個他自己沒想清楚的問題,或者拋了一個空指針之後又關掉了頁面,最好的方式就是提醒他將自己的問題完善或改到容易被檢索的狀態,因爲這些問題可能之後會有其他的人看到,能給他人帶來啓發,這是存在價值的。與此同時,也需要定期去做一些問題的梳理與標籤設置,讓社區能夠更好地瞭解項目當下的進展。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"第四,需要有一個強大的測試系統。因爲參與開源的人比較多,溝通的工作量也非常大,如果提交者上傳的代碼沒有經過必要的前期測試就通過了,這導致的結果是,項目正確性的責任全部由後面代碼審覈的人負責,代碼實現的分工將變得不那麼合理。 "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"第五,要避免重複造輪子。需要站到更高的維度去看問題,開源的生態還包括社區的交流共享,別人可能會用你的項目,你也需要適當地去採用別人的項目,避免做一些重複造輪子的事情。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"“對於開源而言,最重要的不是代碼的實現,而是代碼背後的服務,及其對應的整個社區生態所蘊含的價值。”張亮表示。"}]},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"企業需要開放更多的開源崗位"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"站在企業的角度,由於開源代碼相對更加可控,自己研究深入後對於代碼的內核理解與掌控力會更強。因此,在自主可控需求的驅使之下,企業對於開源軟件採用的重視度越來越高。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"而對於開發者個人而言,採用開源軟件不但能夠有效避免重複造輪子,幫助企業\/個人節約成本。與此同時,開發者對於開源軟件理解與使用的程度越高,其後續職場工作變遷過程中也可以避免環境換了之後,以前技術用不了的尷尬。除了技術本身,社交圈子的擴大是參與開源爲開發者帶來的更大價值,包括但不限於會議講師和寫書邀約甚至創業機會等。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"多方要素的綜合疊加之下,開源成爲了開發者們長期以來都比較受關注的熱點。尤其是在剛過去的2020年,伴隨着越來越多基於開源模式的企業在商業上獲得市場認可,國內出現了一批被投資者選中的開源項目,開源創業的春天,已然來臨。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"然而對於本土開源而言,在開源越來越熱的當下,本土開發人員底層研發能力薄弱,工程能力大多停留於運用層的侷限性,也正在制約着本土開源生態的發展成型,這些問題並不是短期內能夠解決掉的。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"在參加 Apache Con 的時候,張亮比較大的一個感觸是,國外參會的開發者在 40 歲到 60 歲之間的人員依然很多,但是國內的參會者卻普遍在 30 多歲之間。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"“技術本身還是一個熟練工種,你在這個領域沉澱得越深了,累積的能力也便越強。”張亮表示。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"在其看來,一個人在某一領域的思維變得非常活躍,而且經驗也很豐富的時候,往往是這個人在這個領域耕耘了超過十年以上的時候,但國內的工程師在整個時間段的時候,可能已經轉移到其他崗位上了。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"未來本土開源生態的完善,仍有很長的路需要走。針對這一現狀,張亮認爲,大型企業在參與開源治理的同時,需要開放更多全職的開源崗位。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"“大型科技公司其實是希望有自己開源方面輸出的需求的,這種輸出的目的,其實是希望尋求對於行業標準的影響,進一步佔領更多的話語權,贏得行業關注和口碑。”張亮表示。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"在其看來,雖然大型企業參與開源本質上並不是100%奔着開源去的,但如果能讓這些企業內參與開源的人投入 50% 的時間去做開源,就已經很足夠了。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"“一個開源項目如果全部是通過業餘時間去完成的話,那麼這個項目的發展在一定程度上是會很慢的。”張亮表示。在其看來,大型企業需要開設更多的開源崗位引導開源社區發展。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"張亮表示,國內從來不缺優秀和聰明的開發者,但缺少的是能夠讓開發者去持續付出心血的環境,以及穩定的項目基石。“當一個人的熱情被投入到一個不合時宜的地方時,也許第二天承載着這些熱情的項目就沒了,這將會很糟糕,投入的價值也不大。”張亮表示。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"他希望能夠將 ShardingSphere 打造成一個能夠吸納開發者熱情的靶心,帶給開發者更多正向的回報,爲本土開源生態的建設貢獻一份自己的力量。"}]}]}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章