歡迎光臨
每天分享高質量文章

企業開源指南:評估開源專案的成功

開源專案的負責人必須展示專案付出的投資回報率。本指南提供了組織評估開源專案、開源計劃和開源貢獻的一些方法標準。

— Todo

 

作者:Todo

最大限度最佳化組織中執行開源計劃或啟動開源專案的實踐。這些資源由 Linux 基金會與 TODO Group 合作開發,代表了我們的員工、專案和成員的經驗。

◈ 英文: https://todogroup.org/guides/measuring/ 
◈ 中文: https://linuxfoundation.cn/measuring-your-open-source-program-success/ 
◈ GitHub:https://github.com/todogroup/todogroup.github.io/blob/master/content/en/guides/measuring.md 

開源專案的負責人必須展示專案付出的投資回報率。本指南提供了組織評估開源專案、開源計劃和開源貢獻的一些方法標準。

瞭解評估物件、界定成功以及如何充分利用這些資訊, 以開啟您的開源專案標的,展示開源專案的有效性,並獲得支援。

本指南的撰稿人

◈ Chris Aniszczyk – Aniszczyk 雲原生計算基金會首席營運官
◈ Christine Abernathy – Facebook 開源開發者 & 倡導者
◈ Joe Beda – 聯合創始人 & 技術長
◈ Gil Yehuda -( 雅虎+美國線上)開源高階經理
◈ Sarah Novotny – 谷歌 Kubernetes 社群經理

如何定義成功

聰明的機構會明確開源資源開發的投資價值,並設定關於應用和參與的標的。但是每個開源專案對於成功的定義都有些不同。您設定的標的與追蹤的指標會因您投資開源的理由而有所不同——無論是為了招募開發人員,還是打算透過開放創新帶來新想法和新技術,或是更快地實現上市,亦或是降低開發成本,還是更多其他原因。

根據您獨一無二的戰略來制定標的十分重要——同時還要尋求高管團隊的認同,以確保開源戰略與整體業務戰略保持一致。也就是說,無論其行業、產品或業務戰略有何不同,開源專案負責人都有一些標準化的方法來評估專案的成功。這些方法包括:

◈ 開發者在外部開源專案中的參與度與影響力
◈ 組織在開源社群中的聲譽
◈ 招募和留住優秀開發人員的能力
◈ 組織自身開源專案的總體質量與開發人員提供貢獻的關鍵業務專案
◈ 管理開源許可證合規性的成效如何

為何設定標的

在我們深入瞭解開源專案追蹤的內容以及如何實施追蹤之前,讓我們先談一談您可以透過設定標的與衡量標的收穫什麼。

首要的是,追蹤標的進展有助於確保您投資的開源專案(無論是外部專案還是內部專案)順利發展——他們正在回應社群,充分地代表了公司,並有助於滿足更廣泛的專案標的。定期追蹤有助於為開源專案設定基準,作為早期預警系統,以便在專案偏離既定方向、違反法律合規要求的時候,或在僅需撤回專案時進行更正。

仔細的(和戰略的)衡量還為面向上層管理者的報告提供了極好的素材。定期報告有助於確保專案與自身標的和整體業務戰略保持一致,並能夠幫助專案經理獲得行政領導對專案的內部支援(特別是在您達到甚至超過標的的時候!)

例如,Facebook 的開源專案辦公室會定期在內部公佈其開源專案的月環比結果,並向管理層傳送執行報告。

“報告只是一個提高認知的好方法。儘管 Facebook 對開源(作為一個組織)高度重視,但總是在內部推銷自己並展現自己的價值始終是件好事。”

Christine Abernathy[4] – Facebook開源開發者&倡導者

定期公開專案結果還有助於提高潛在的合作伙伴、使用者和開發人員對於您組織開源活動的認識。

在開源社群中獲取關於專案結果的評價——好的、壞的和難聽的——可增強專案的透明度、問責制和可信性。

檢視來自 Facebook[5] 和 Google[6] 的示例開源報告卡。

如何設定標的

您可以為您的開源專案設定遠大的標的,但如何達成標的以及按照何種時間線來完成標的,要設定合理的期望。首先,在衡量初期建立績效基準是有益的。建立收集資料的正確工具,並確保資料源真實,格式(和您的經理)易懂。許多組織為他們的開源專案建立了指標儀錶板,以便在同一處追蹤所有資料並提供專案快照,從而幫助快速評估行程。(具體參閱關於開源專案管理工具指南[7]。)

雲原生計算基金會專案儀錶板

緊接著,讓所有的開源專案負責人和利益相關者一起——在 Facebook上,包括專案負責人和維護人員——作為一個整體決定您想在接下來的 3-6 個月內完成的任務(輕鬆、可實現的增量)。在這一時期末,回顧您如何完成任務,並根據前階段的完成情況來調整下一階段的標的和策略。

“我傾向於根據社群的痛點來尋找衡量指標,並嘗試改良這些指標以提升社群的質量。”

Sarah Novotny[8] – 谷歌 Kubernetes 社群經理

除了績效基準指標之外,您在為專案設定標的時,還需要考慮以下幾點:

◈ 戰略調整
您的標的是否與核心業務戰略、產品標的以及其他內部業務標的保持一致?
◈ 控制水平
您的專案經理是否可以直接控制結果?或是專案經理、工程人員、法律人員或其他職能人員共同控制?設定在您的控制範圍內可實現的標的。
◈ 專案差異
不同專案標的應根據它的目的、社群組成、技術堆疊和其他變數而有所差異。例如,Facebook 已經註意到 Javascript 專案趨向更加頻繁地建立分支。他們已經認識到(在經過多次迴圈追蹤之後!)這些並非專案質量的最佳衡量指標。
◈ 數量與質量
並非所有標的都應與數字相關聯。提高專案質量的過程改進同樣重要,甚至更為重要。僅因為您達到了所有的標的數字,並不意味著您的專案質量沒有問題。相反,一個沒有增長的、不大的專案質量也可能有發展前景。“您可能只擁有六位核心貢獻者和十幾個活躍的非維護人員,但是討論全面,而且合併請求會在短時間內被處理,以及在重要功能方面的討論有清晰明確的始終。這也許是個令人難以置信的健康社群,但它可能不會在 GitHub 上擁有極多的關註數與分支數,因為它可能是一個有商機的專案。”Novotny 表示,“所以我傾向於考慮社群如何與其自身互動,如何發展和指導新的領導者,以及所有的痛點的發展狀態。”

共同的標的

當涉及評估開源專案的成功時,將註意力集中在您專案的這些量化指標上是趨勢,即貢獻者總數、程式碼行數、專案數量等。我們將在下一部分討論評估您專案的質量所需要的內容。但還有很多其他的重要方法可以用來評估您專案的是否成功,並非嚴格地依靠這些數字。

“我認為使用指標作為一種報告趨勢的方法是好的。但把指標作為衡量成功的唯一方式將會給您帶來麻煩。”

Joe Beda[9] – 谷歌 Kubernetes 社群創始工程師 & Heptio 聯合創始人兼技術長

Kubernetes 是 GitHub 上發展速度最快的開源專案之一,在過去三年裡吸引了來自 1,181 家公司的 2,760 位開發人員的超過 80,000 次提交。但專案伊始就以技術和技術的使用作為衡量成功的標準,並非依靠“一些開源指標”,Beda 表示。

以下是開源專案辦公室身後的一些共同標的,以及專案經理為了追蹤專案的整體行程所採取的最佳辦法。其中有一些標的本身無法評估,但這些標的與流程改進、效率提升以及質量改善息息相關。其他標的可以透過調查或其他評估方法來衡量,如定期、積極地徵求口頭或書面的反饋意見。(與您的團隊交流!)

標的 1 確保高效且合法合規的開原始碼應用

組織參與開源時通常會從這一步開始。他們意識到工程在其基礎架構或在其產品和服務中消耗了大量的開源軟

件,亦或是在其基礎架構與產品服務中消耗了大量的開源軟體。專案辦公室有助於集中化處理關於開源消費的政策和決策的制定,追蹤開源的應用,並確保組織不會違反各項開源許可證中規定應履行的法律義務。專案還可以持續監測他們幫助開發人員解決可能遇到的各種法律問題效果如何。

衡量這個首要標的的一些最常見方法是致力於確保政策和行程按計劃的方式執行,同時確保組織活動保持合法合規:

◈ 您使用了多少開原始碼?
◈ 追蹤開源消耗的效果如何?
◈ 開原始碼使用政策清楚明確,且開發人員瞭解這些政策。
◈ 引入程式碼的流程和工具清楚明確,且開發人員遵行這些流程與工具。
◈ 哪些產品和服務使用了第三方程式碼?
◈ 您有多少合規操作?這些問題的解決速度有多快?

(您是否有合規專案?請參閱我們來自《開源合規專案》[10]的法律資源以獲取有關此主題的更多資訊。)

標的 2 提高開發人員生產力

只要您正在追蹤和管理您的開源應用,就會希望開發人員更加便捷地為開源專案做貢獻。如果您的工程師需要透過繁瑣的程式來提交錯誤修複或新增新功能至您的業務所依賴的專案,您將浪費寶貴的時間和資源。開發人員將逆流而上節省大量的時間,而非維護一個獨立的專案分支。因為這樣做的話,隨著時間的推移將會累積技術債務。

“我們試圖讓自己像那些在馬拉松賽道上給參賽者遞水的人。我們鼓勵開發人員在我們的方向上採取一些額外措施,因為我們知道這樣做,從長遠意義上看,他們將會真正地實現標的。我們確實在試圖建立一個專案作為支援服務,而非減速帶。“

Gil Yehuda[11] – Oath 開源高階經理(雅虎+美國線上)

與此標的相關的指標,致力於使開發人員對開源專案的貢獻回饋得以順利進行,同時增加您組織向上遊作用監測的程式碼總量。一旦您消除了作用的障礙,使審批流程清晰快捷,您可以期待更多的貢獻和效率。

需要追蹤的事情包括:

◈ 作為戰略性團隊識別外部專案的提交數量
◈ 正在貢獻的開發人員數量。以及,他們是誰?他們為哪些專案做貢獻?
◈ 組織僱用的專案維護人員的數量(聘用的和培養的)
◈ 您貢獻專案的質量
◈ 情緒分析:貴組織在開源社群的聲望
◈ 開發人員是否瞭解貢獻政策?(您有貢獻政策對嗎?)
◈ 他們是否遵行貢獻流程?(即他們必須簽署 CLA 等等。)
◈ 他們是否尋求幫助,以及您是否能夠及時提供幫助?
◈ 軟體版本釋出之間的時間差——是增加還是減少?
◈ 向上遊做貢獻的工程成本和維護分支程式碼的工程成本間的對比差異?

標的 3 建立與發展開源專案

這是大型並以工程為重點的組織,如 Facebook、谷歌、微軟、Twitter 和其他許多組織中的許多開源專案的主要標的。他們正在建立數百個(甚至數千個)開源專案,旨在解決工程技術問題。標的是吸引外部使用者和貢獻者們帶來新的想法,並幫助推動技術更快發展——這是一個來自加利福尼亞大學伯克利分校的 Henry Chesbrough 教授所稱為“開放創新[12]”的概念。

“我們試圖讓自己像那些在馬拉松賽道上給參賽者遞水的人。我們鼓勵開發人員在我們的方向上採取一些額外措施,因為我們知道這樣做,從長遠意義上看,他們將會真正地實現標的。我們確實在試圖建立一個專案作為支援服務,而非減速帶。”

Chris Aniszczyk[13] – Open Container Initiative 執行董事 & 雲原生計算基金會營運長(前 Twitter 開源專案負責人)

可用於衡量專案質量的許多資料點是追蹤此標的的關鍵(請參閱下一部分的前 5 條內容)。但還有其他一些因素需要考慮:

◈ 是否有建立新專案的明確政策,以及開發人員是否瞭解該政策?
◈ 是否有建立新專案清晰且簡捷的流程,以及開發人員是否遵行該流程?
◈ 外部人員對貴組織的專案做貢獻有多便捷?
◈ 專案維護人員是受歡迎的且有幫助的
◈ 專案得到良好的維護與支援
◈ 程式碼有據可查
◈ 其他定量指標,如新貢獻者的數量、建立問題的數量、解決問題所需時間等(請參閱下一部分)明確規定瞭如何做貢獻

◈ 專案所獲得的外部貢獻數量和多樣性
◈ 貴組織的專案受歡迎程度:GitHub關註數、社交媒體粉絲數等
◈ 部署中和(或)生產中的使用者數量
◈ 貴組織釋出的專案數量、廣度和質量。例如,移動或資料、基礎架構相關專案等
◈ 您的專案和相關產品的效能得到提升
◈ 不同版本釋出的時間差

標的 4 招募並留住開發人員

以組織的身份參與並建立開源專案是吸引開發人員的好方法——並且能夠在花費更少的資源來進行培訓的條件下,使他們快速加入專案。當他們加入組織時,使用您的開源專案或為專案做貢獻的開發人員已經熟悉您的流程、工具和技術。(請參閱我們關於開源開發人員招募[14]的指南。)

但是您作為專案負責人,很可能不會在招募開發人員時發揮直接作用,而且您所在團隊的開源參與性對於招聘有無即時影響可能並不明確。為了促使專案工作與招聘之間建立更為直接的聯絡,Facebook 開展了一年兩次的調查,該調查詢問了新員工三個基本問題:

1. 他們是否瞭解公司的開源專案?
2. 這種瞭解如何影響他們加入公司的決定?
3. 他們在開源方面的經驗是否適用於他們現在所從事的工作?

“我們用這項調查來衡量我們開源文化的質量,它同時說明瞭人們如何看待我們開源專案的整體效果。瞭解到數字具有上升的趨勢是好的。”

Christine Abernathy[4] – Facebook 開源開發者 & 倡導者

用於開發人員招聘的其他常用指標包括:

◈ 員工使用並貢獻於哪些開源專案
◈ 新員工從什麼渠道聽說該組織
◈ 您透過開源專案引入的開發人員數量
◈ 您招募了多少位專案維護(與培養)人員
◈ 新員工入職需要多長時間
◈ 開源開發人員如何在他們的職業生涯中大顯身手
◈ 開發人員的貢獻被作為工作績效的一部分來評估
◈ 開發人員因貢獻而被認可與獎勵
◈ 開發人員在貢獻中獲得幫助與支援

標的 5 促進開源文化

開源專案如何對工程人才的培養做出貢獻,很大程度上取決於組織中的開源文化與開源實踐的培育。這是由於開源組織是眾所周知的開發人員工作與創新的好地方。開源專案經理通常是組織內部的開源精神大使,同時還負責監督開源合作的政策和實踐。

追蹤您組織中的開源文化如何發展對於衡量您專案的有效性是很重要的。衡量開源文化應用的一些常用方法包括:

◈ 管理層和包括工程、營銷和公共關係等部門的所有部門中的個人貢獻者對於開源戰略與開源專案的理解和支援
◈ 開源社群中的品牌與知名度——如何看待貴組織
◈ 參與——您以正面的方式積極參與開源社群
◈ 培訓與指導——您與開發人員合作改進開源貢獻和開源專案,尋找貢獻機會,並學習開源社群的工具和流程,確保貢獻者能得到來自同行和管理人員的支援
◈ 通用工具集的應用
◈ 程式碼質量被開源/外部使用所接受
◈ 代表組織進行倡導——出席會議併發言,撰寫文章或教程等
◈ 贊助基金會、團體或程式設計馬拉松

標的 6 保持開源社群利益與產品利益的一致性

在開源專案中,社群宣傳是一個新穎而日益流行的角色。您經常會扮演專案開發者和採用者社群之間聯絡人的角色——代表開發您的開原始碼外部使用者的聲音,同時將資訊反饋給產品管理團隊。

這是確保您的產品和服務從社群受益的重要角色,因此您的開源專案將與組織更為廣泛的業務戰略和標的保持一致。用於監測您的宣傳是否成功的一些指標包括:

◈ 有多少貢獻來自於組織外部?
◈ 您的組織外部有多少全職貢獻者?
◈ 外部貢獻的程式碼正在傳回多少到產品中?
◈ 來自開源貢獻的僱員有多少人?

追蹤的內容

有許多方法可用於開源專案的成功衡量標準與進度追蹤。專案質量不是唯一的追蹤內容,但它仍然非常重要。問題在於,圍繞開源專案可獲得的資料太多了。任何你能獲取資料之處,都可以收集並追蹤。同樣每個組織追蹤的指標——以及他們對資料的處理——很大程度上取決於組織自身的專案標的,以及組織在市場和開源社群中面臨的獨特挑戰。

“我們收集自己可以獲得的資料,雖然這些資料是可獲得的,但我們並不生活在數字裡。我們生活在確保我們擁有正確結果的環境裡。”

Gil Yehuda[11] – Oath 開源高階經理(雅虎+美國線上)

對於一些(瘋狂或完全自動化的)專案經理來說,他們的回答就是追蹤一切事項。特別是對於大型組織而言,有太多的專案需要處理,追蹤所有事項是不可能的,而且也無法從中得出任何有意義的結果。那麼,衡量開源專案質量的真正指標到底是什麼?

這裡有一些評估您開源專案整體質量的最佳指標。這些指標只是之後更為嚴格和縝密分析的開端。請記住,這些是幫助專案負責人確保多個專案質量的技巧。專案本身也應該追蹤它們自己的質量指標。GitHub的開源指標指南就專案維護人員應該關註的內容給出了很好的概述。

這些數字從GitHub上免費使用的開源工具和商業產品上很容易就能收集到。定期檢測它們(每月、每季度和每年)有助於監測單個專案的行程,並將其以專案為一個整體計算總計數。它們可運用於管理層報告中,並幫助您的開發人員改進您的專案。

“我們試著定期檢視專案質量的好壞,並建議他們應該將哪些內容做得更好。但是我們不直接參與管理。我們只是給他們提供資料,然後在我們有能力或有必要的時候稍微推動一下他們的工作。”

Christine Abernathy[4] – Facebook 開源開發者 & 倡導者

貢獻者數量(以及外部貢獻與內部貢獻的比例)

專案的開始伴隨著來自內部開發人員的多數貢獻,並伴隨原始碼的使用或分支,發展吸收了更多的外部貢獻。始終保持可持續發展的最高質量專案擁有極其多元化的社群,並擁有來自專案生態系統中其他公司的大部分貢獻。這些公司已經對該程式碼產生了商業依賴。(還記得 1,000 多家貢獻於谷歌 Kubernetes 專案的公司嗎?)

持續吸引新的外部貢獻者專案往往在維護專案、接納貢獻者和彙總社群的反饋等方面表現優秀。(註意:對於沒有發展自身貢獻者基礎的專案,可能仍然是正確的!)

Kubernetes contributors (git-author) over time.

合併請求的提交量、開放量和接收量(以及它們保持開放的時間長度)

當貢獻者發現錯誤或有功能需求,而他們可以(且有空閑)自行修補或編寫程式碼時,並作為一個合併請求(PR)提交。追蹤合併請求的數量以及發生了什麼變化,可以顯示出您僱員以外的貢獻者正在提交多少程式碼,這同時也是您專案的外部收益水平的指標。

Line graph of Kubernetes pull requests over time

合併請求(PR)的開放時間也表明瞭您專案的維護人員對外部貢獻者的響應和接納程度。如果一個合併請求長時間沒有得到回應,潛在的貢獻者可能會把他們的“金點子”轉到別的地方。

“當我們有一個好專案時,我會說,我們可能沒有一個合併請求會保持開放狀態超過或最多兩到三個月。這時間實際上已經很長了。”

Christine Abernathy[4] – Facebook 開源開發者 & 倡導者

請記住,這些指標高度依賴於專案規模。Facebook 的小型專案嘗試將開放狀態的合併請求數量保持在 10 個或更少。但是,對於與維護人員的數量相比,擁有大量社群投入更為大型的專案而言,將合併請求(PR)的數量限制在這個範圍是具有挑戰性的。審查這些合併請求需要花費大量時間,因此更為大型的專案往往有開放時間更長的合併請求(PR)。

Facebook 的開源辦公室經常在資料庫中執行查詢,找出合併請求(PR)開放時間最長的前五個專案。他們會查明一些問題,然後找尋機會與專案維護人員展開對話。他們詢問維護人員一些問題,以找出問題的根源,並看看什麼可能有助於解決問題。多數情況下,這隻是一個重新聚焦他們的註意力,並提醒他們保持社群和諧重要性的問題。但偶爾深挖這些數字會指出更深層次的專案問題。大量開放的合併請求(PR)或舊的合併請求(PR)可能意味著只有一兩個人在維護這個專案—— 這是一個潛在的預警。

問題提交數量(以及它們的開放時長)

沒有時間、許可權或能力提交合併請求(PR),但遇到有關您的程式碼問題的使用者,可以將他們的錯誤和功能需求作為一個問題進行提交。問題的數量以及這些問題如何被解決,可以表明專案的使用者使用水平,以及維護人員對於使用者需求的響應程度。

這個數量當然取決於追蹤問題的方式。僅使用 GitHub 來追蹤錯誤的專案,其問題的開放時間可能會遠短於使用 GitHub 來收集包括功能需求等問題的專案。這些考慮因素會拖延或縮短問題的開放時長。

Bar graph of Kubernetes issues over time

每一位貢獻者的提交數量(外部貢獻者與內部貢獻者)

一個專案的外部貢獻者提交數量與總數有關,是顯示專案在公開創新方面成效如何的另一個標誌——從外部引進新的想法。隨著時間的推移,高質量專案的外部貢獻者比例會逐步提高。衡量每一位貢獻者的提交數量也有助於評估您的專案是否吸引新的貢獻者,以及那些新的貢獻者有沒有流失。

外部使用者數量

每個開源專案應該有一種方法對生產環境中採用軟體的組織進行追蹤選擇。無論它是透過一個 ADOPTERS.md 檔案還是透過自述檔案中的一個簡單串列,關鍵在於追蹤此串列並確保其隨時間發展。如果外部使用者的數量停止增長或減少,它可能預示從專案成熟到專案過時。

建立或貢獻的專案數量(整體專案範圍內)

追蹤您組織釋出每一個專案的指標,同時也要追蹤您的開發人員積極參與貢獻的專案。在制定開源戰略的過程中,您應該已經識別了貴組織正在使用的關鍵業務專案,並預留了專用資金投資於為這些專案做貢獻。貴組織開源專案的成功與否不僅要以開源專案的質量進行衡量,還要以其開源活動整體來看,這是非常重要的。這包括了您的產品開發和業務運營所依賴的專案質量,也包括了確保貴組織與您使用或釋出任何專案的開源許可證在法律上保持一致。(請參閱我們的開源合規專案出版物[15]

其他追蹤指標

基本的專案指標是一個很好的開端,由它來幫助您把控開源貢獻。但成功的專案負責人需要更深入地瞭解其他重要指標。

這裡有許多可以也應該追蹤的其他事物,這取決於您的標的。請記住,數量本身不是標的——是持續追蹤它們的過程和尋找資料模型的過程可以顯示專案和行程的改進。

單獨衡量每個專案,並對專案進行橫向衡量對比,以獲得對於專案的產出與結果的全面的看法。

◈ 受歡迎程度/認識度

◈ 專案網站的訪問者
◈ GitHub/GitLab 上的粉絲總數
◈ 社交媒體帳戶(如 Twitter、Facebook 或 LinkedIn)上的粉絲數量
◈ 新聞剪輯和媒體報道
◈ 組織和舉辦的 meetup 數量(例如,透過 meetup.com 網站)
◈ 影響

◈ 在戰略專案中擔任維護人員/領導者角色的員工數量
◈ 專案貢獻者的多樣性
◈ 補丁被拒絕的原因
◈ 採用

◈ 下載量
◈ 建立的分支數
◈ 貢獻的外部公司數量
◈ 採用的階段(#PoC 和生產中的部署數量)
◈ 商業依賴性(產品)的數量和質量——這可以透過檢視為您的專案做貢獻的公司或關註新聞與貿易新聞來追蹤。
◈ 專案成本

◈ 員工:工程師、公共關係與市場營銷、法律工作人員
◈ 基礎架構與支援
◈ 工具
◈ 出席會議與商務旅行
◈ 培訓
◈ 會員資格與捐助

結語

團隊以任何對它們的需求最有意義的方式來評估它們的開源專案、開源計劃和開源貢獻。最重要的事是要記得制定一個戰略和增量標的來實現。而您該追蹤什麼以及如何追蹤,將會自然而然地遵照戰略和標的。


TODO Group

這些資源是與 TODO(Talk Openly,Develop Openly)組織合作建立的, 該組織是 Linux 基金會中專業的開源網路組織。特別感謝奉獻自己的時間和知識來製作這些綜合指南的開源專案負責人。參與製作的公司包括 Autodesk、Comcast、Dropbox、Facebook、Google、Intel、Microsoft、Netflix、Oath(Yahoo + AOL)、Red Hat、Salesforce、Samsung 和 VMware。如想瞭解更多資訊,請訪問:todogroup.org[16]

已同步到看一看
贊(0)

分享創造快樂