透視開源生態,OSGraph——GitHub全域資料圖譜的智慧洞察工具

汀、人工智能發表於2024-07-10

"透視開源生態,OSGraph——GitHub全域資料圖譜的智慧洞察工具

OSGraph (Open Source Graph) 是一個開源圖譜關係洞察工具,基於GitHub開源資料全域圖譜,實現開發者行為、專案社群生態的分析洞察。可以為開發者、專案Owner、開源佈道師、社群運營等提供簡潔直觀的開源資料檢視,幫助你和你的專案製作專屬的開源名片、尋求契合的開發夥伴、挖掘深度的社群價值。

  • 簡而言之:OSGraph獲取了GitHub的全量資料,並以圖譜的形式做了視覺化分析。

  • 官方:https://osgraph.com

0. 前言

為何使用OSGraph?

既然說到GitHub資料視覺化分析,為何不使用現有工具而要重新建設OSGraph?

  • 這裡列舉了幾個主流的開源分析工具的特點:
    • StarHistory:展示開源專案的star歷史曲線,產品功能簡潔,“秀肌肉”專用,分析指標豐富度不足。
    • OSSInsight:基於傳統BI報表的理念設計了開發者/專案的報表大盤,功能豐富,滿足大多數基礎的洞察訴求,但部分複雜維度的報表元件直觀度不夠,關聯性資料的下鑽和洞察能力不足。
    • OpenHub:支援開發者/專案/組織的排行榜(類Gitstar Ranking)和快速檢索,關聯性分析能力不足。

可以看到,主流的開源分析工具還是圍繞著傳統BI報表的思路建設的,圖表豐富度可以根據產品功能設計補充改進,但是基於二維表的思考方式在關聯性資料分析能力表達上存在先天不足。

OSGraph以圖譜的方式重新思考GitHub資料:既然GitHub維護了開發者和專案的行為軌跡和活動記錄,涉及了大量的人與人、人與專案、專案與專案的互動關係,為何不以天然最適合描述萬物聯絡的Graph資料結構對底層資料建模,既而實現直觀的圖視覺化分析呢?

OSGraph能做什麼?

當前產品預設提供了6張開源資料圖譜供大家體驗,包含專案類圖譜3個(貢獻、生態、社群)、開發類3個(活動、夥伴、興趣)。

圖譜名稱 功能 描述
專案貢獻圖譜 發現專案核心貢獻 根據專案開發者開發活動資訊(Issue、PR、Commit、CR 等),找到專案核心貢獻者。
專案生態圖譜 洞察專案生態夥伴 提取專案間的開發活動、組織等關鍵資訊,構建專案核心生態關係。
專案社群圖譜 分析專案社群分佈 根據專案的開發活動、開發者組織等資訊,提取專案核心開發者社群分佈。
開發活動圖譜 展示個人開源貢獻 根據開發者開發活動資訊(Issue、PR、Commit、CR 等),找到參與的核心專案。
開源夥伴圖譜 尋找個人開源夥伴 找到開發者在開源社群中,與之協作緊密的其他開發者。
開源興趣圖譜 挖掘個人開源興趣 根據參與的專案主題、標籤等資訊,分析開發者技術領域與興趣。

為了更直觀地表述圖資料結構在開源資料洞察的優勢,我們結合具體的場景案例說明。面對GitHub資料,我們多多少少會遇到如下類似的問題,這些問題可以透過上述的6類圖譜很好的直觀展現。

1.功能介紹

1.1 專案貢獻圖譜

發現專案核心貢獻:根據專案開發者研發活動資訊(Issue、PR、Commit、CR等),找到專案核心貢獻者。

Q:我想看看給Apache Spark專案寫程式碼的都有誰?

A:選擇“專案貢獻圖譜” - 搜尋spark - 選擇apache/spark。可以看到HyukjinKwon、dongjoon-hyun等核心貢獻者,另外還一不小心捉到兩個“顯眼包”,AmplabJenkins、SparkQA這兩個只參與CodeReview的機器人賬號。

專案貢獻圖譜可以幫助我們更好地發掘專案的關鍵開發者,尤其是我們不夠熟悉的開源專案,可以快速地定位到關鍵貢獻人,幫助技術運營發起合作申請和活動邀請。

1.2 專案生態圖譜

洞察專案生態夥伴:提取專案間的開發活動、組織等關聯資訊,構建專案核心生態關係。

Q:最近很火的開源大模型Llama3周邊生態大致是什麼樣的?

A:選擇“專案生態圖譜” - 搜尋llama3 - 選擇meta-llama3/llama3。可以看到pytorch、tensorflow、transformers等知名AI專案,當然還有上科技頭條的llama.cpp。比較驚喜的發現是ray竟然和llama3有不少公共開發者,可以深度挖掘一下。

專案生態圖譜讓開源專案的挖掘變得更加輕鬆,我們透過分析兩個開源專案的公共Stargazers和PR/CR等資訊,挖掘潛在的專案關聯關係,這可以幫助開發者快速熟悉開源專案的周邊生態,並能做很好的技術延展探索。未來,透過引入專案間的程式碼依賴關係,甚至專案與科研論文的引用關係,可以幫助開發者和科研人員更快地熟悉未知的技術領域。

1.3 專案社群圖譜

分析專案社群分佈:根據專案的開發活動、開發者組織等資訊,提取專案核心開發者社群分佈。

Q:大資料引擎Flink發展這麼多年後的社群現狀如何?

A:選擇“專案社群圖譜” - 搜尋flink - 選擇apache/flink。可以看到專案關注者主要來自中、美、德三國,而Alibaba組織是程式碼貢獻的中堅力量。

專案社群圖譜目前從國家和組織的維度對核心開發者進行了分組展示,可以幫助我們快速瞭解一個專案開發人員的地理分佈和組織分佈,指導開源佈道師和技術運營做更優的公共關係資源配置。

1.4 開發活動圖譜

展示個人開源貢獻:根據開發者研發活動資訊(Issue、PR、Commit、CR等),找到參與的核心專案。

Q:大神Linus Torvalds最近在參與哪些開源專案?

A:選擇“開發活動圖譜” - 搜尋torvalds。果然linux專案是torvalds的主要工作,不過llvm、mody、libgit2也有所參與,同時也看到他在subsurface這種“潛水日誌管理工具”上的大量貢獻,果然大佬的愛好都很廣泛。

開發活動圖譜讓瞭解一個社群開發者的背景變得更加直觀,過去我們只能在開發者的GitHub個人頁面上檢視“貢獻雷達圖”作粗粒度的瞭解,而開發活動圖譜在統計粒度和資訊展示間找到了很好的平衡點。在個人主頁上使用這樣的開源個人名片不失為一種更時髦的選擇。

1.5 開源夥伴圖譜

尋找個人開源夥伴:找到開發者在開源社群中,與之協作緊密的其他開發者。

Q:我想知道在開源社群有沒有和我志同道合的人?

A:選擇“開發夥伴圖譜” - 搜尋我的ID。讓我震驚的是有那麼多陌生人和我關注了同一批專案,這不得找機會認識一下,說不定就能找到新朋友了。而和我合作PR的人基本上都是我認識的朋友和同事,繼續探索一下朋友們的開源夥伴,開源社群的“六度人脈”不就來了麼。

開源夥伴圖譜構建了一種“人-人”關係檢視,GitHub原生資料並不存在基於賬戶的“好友/粉絲”資料,我們透過兩個人共同Star的專案以及參與的PR/CR等開發活動資料,構造了開發者之間的關係檢視。透過此檢視,可以發掘很多“志同道合”但未曾謀面的朋友,或許下一個合作PR就在這次“會面”之後發生。

1.6 開源興趣圖譜

挖掘個人開源興趣:根據參與的專案主題、標籤等資訊,分析開發者技術領域與興趣。

Q:GitHub上最活躍的開發者對什麼技術感興趣?

A:選擇“開源興趣圖譜” - 搜尋sindresorhus(GitHub使用者榜 No.1)。整體來看sindresorhus對node、npm、js很感興趣,另外他發起的awesome專案足足30W星,令人咋舌!當前的開源興趣資料主要來自專案有限的標籤資訊,後續藉助AI技術可能會有更好的展現。

開源興趣圖譜是對開發者技術背景的另一種形式的探索嘗試,我們都知道開源專案一般都會有一些標籤標註其技術領域和使用的關鍵技術,透過將開發者參與的專案按照標籤分組彙總,得到個人的技術興趣圖譜,透過它可以快速地瞭解一個開發者的技術領域和視野。當然,基於專案現有的標籤資料並不能做到精準的領域分類(不少專案沒有標註標籤資料),因此未來我們希望結合NLP技術做到更好的專案領域識別和分類。

1.7 更多功能

未來將會有更多有趣的圖譜和功能加入到OSGraph:

  • 簡單靈活的API設計,讓圖譜無限擴充套件。
  • 自由高效的畫布互動,無限探索資料價值。
  • 圖譜URL支援嵌入Markdown,製作我的開源名片。
  • 基於AI技術的專案主題標籤分析。
  • 多人多專案聯合分析,圖譜洞察一鍵可達。
  • 更豐富的資料展示與多維分析。

2.OSGraph部署流程

2.1 拉取映象

dockerhub上拉取所需的2個映象

#此映象含 mysql、elasticsearch、tugraph-DB 元件
docker pull tugraph/tugraph-db-osgraph:4.4.0
#系統編譯映象
docker pull registry.cn-chengdu.aliyuncs.com/nextgraph/webbuild:202405.2

2.2. 啟動容器

#啟動osgraph依賴元件容器
docker run -d --privileged --net host --name tugraph tugraph/tugraph-db-osgraph:4.4.0
#啟動osgraph編譯、執行容器
docker run --name=build -p 80:80 -itd registry.cn-chengdu.aliyuncs.com/nextgraph/webbuild:202405.2

2.3. 在build容器內編譯、啟動OSGraph

2.3.1 在build容器內拉取osgraph程式碼,編譯

docker exec -it build bash
cd /home/admin/app
git clone https://github.com/TuGraph-family/OSGraph.git
cd OSGraph/
bash bin/build-osgraph.sh

2.3.2 在build容器內修改配置、啟動

vi bin/osgraph-env
#修改 TUMAKER_DB_HOST、ES_HOST、TUGRAPHDB_HOST 為伺服器本機的IP
#TUGRAPHDB_USER修改為admin TUGRAPHDB_PASSWORD修改為73@TuGraph
#剩餘其他配置項不用修改

export LANG=zh_CN.UTF-8
export TUMAKER_DB_HOST=127.0.0.1
export TUMAKER_DB_PORT=3306
export TUMAKER_DB_USER=root
export TUMAKER_DB_PASSWORD=tuMaker0520@
export ES_HOST=127.0.0.1
export ES_PORT=9200
export ES_USERNAME=elastic
export ES_PASSWORD=es
export TUGRAPHDB_HOST=127.0.0.1
export TUGRAPHDB_PORT=7687
export TUGRAPHDB_USER=admin
export TUGRAPHDB_PASSWORD=73@TuGraph
export TUGRAPHDB_NAME=default

#修改儲存 /bin/osgraph-env後,執行
source bin/osgraph-env

#啟動系統(注意要在/home/admin/app/OSGraph 此目錄下執行下面啟動指令碼)
bash bin/startup-osgraph.sh

2.4.瀏覽器訪問

在瀏覽器中訪問http://伺服器IP

  • 備註:內建ES測試資料

  • 可透過name進行搜尋

{"index":{"_index":"github_repo","_id":"528766495"}}
{"id":528766495,"name":"TuGraph-family/tugraph-db","star":1026}
{"index":{"_index":"github_repo","_id":"81810486"}}
{"id":81810486,"name":"antvis/G6","star":10748}
{"index":{"_index":"github_user","_id":"827205"}}
{"id":827205,"name":"DanielRuf"}
{"index":{"_index":"github_user","_id":"2311313"}}
{"id":2311313,"name":"fanzhidongyzby"}
{"index":{"_index":"github_user","_id":"1132769"}}
{"id":1132769,"name":"hjk41"}

更多優質內容請關注公號:汀丶人工智慧;會提供一些相關的資源和優質文章,免費獲取閱讀。

相關文章