1. 企業開源指南:開源項目管理工具
為了讓開源項目辦公室順利運行,您需要正確的工具。這些關鍵的任務工具將用於追蹤各部門的目標與指標,從工程部門和法律部門到行政領導部門、公關部門與營銷部門,同時給予員工收集數據、提供開源軟體運行快照和管理公司內部開源軟體日常使用所需要的全部資源。
-- Todo
開放源代碼的戰略性應用之路,起始於一個精心策劃、組織與授權的開源項目辦公室,以指導和管理開源的創建、分發和使用。但這僅僅只是第一步。為了讓開源項目辦公室順利運行,您需要正確的工具。這些關鍵的任務工具將用於追蹤各部門的目標與指標,從工程部門和法律部門到行政領導部門、公關部門與營銷部門,同時給予員工收集數據、提供開源軟體運行快照和管理公司內部開源軟體日常使用所需要的全部資源。
本指南提供了如何開始您的開源工具集建設的詳細信息和場景,包括用於跟蹤和管理您的開源項目的最重要工具的信息。指南中提及的許多工具已由Linux基金會和該領域的其他領導者創建並開放源代碼,可以免費且便捷地為您的項目所使用。您還可以找到一個儀表盤安裝程序的示例,該程序融合並展示了多種工具的信息。
一旦您的開源項目辦公室啟動運行,就應該同時收集合適的軟體工具,這些工具允許您的開發團隊管理、跟蹤、指導和推進其開源項目、開源貢獻與開源發布。
在您開始您的開放源代碼之路時,使用正確的目標工具還將使開發人員和其他員工的工作更為輕松,也將提供更好的結果,並將成為公司開源項目的成功協作與溝通的基礎。
公司所需的開源工具有哪些?早期的討論大多認為,這取決於公司的業務、產品和服務,以及公司如何服務它的客戶和員工。由於開源項目辦公室制定了規劃流程和戰略地圖,因此可以選擇那些能整合進公司的目標、流程和基礎架構的工具。
最終,知道您將需要使用哪些工具的唯一方法,就是了解您想要對開放源代碼進行何種操作。
以下是開源項目辦公室選擇所需管理工具的基本步驟:
這些工具一旦被選定,在落地使用之前,還需要一些額外的准備:
當您在選擇工具時,實施操作有助於記憶,當然這也可能會影響您的決定。例如,具有陡峭學習曲線的工具可能需要更多的培訓。
在認識到達成組織的目標上你團隊的需求,以及自身情況和基礎架構的潛在限制之後之後,接下來要做的就是要 探索 並了解那些已准備就緒且可供您使用現有工具。由於大多數工具本身就是開源的,所以如果它們一開始並不能滿足您的確切需求,您的開發團隊可以聯系這些工具的開發者,看看他們是否可以協作根據新的用途添加一些特性。
諷刺的是,許多開源項目辦公室並不經常直接使用其他公司開發的工具,或與其他公司合作來開發他們管理開源項目所需的工具。通常,他們想要這樣做,但包括 Facebook 和微軟在內的許多企業已經擁有現有的工具套件,這些工具套件在真正成為一個合作議題之前就已經實現。由於他們已經擁有了自己的工具集並進行了投資,他們似乎並沒有很大意願採用其他公司的工具。
這就是現在才剛開始構建自己的開源項目的公司具有顯著優勢的地方。由於他們現在正在建立自己的開源項目辦公室並進入開源領域,因此他們不必為受到這樣的限制而煩惱。
相反,他們可以聰明地利用別人的成功經驗與失敗教訓,並利用近年來領先的公司所創建的成熟工具來構建自己的開源工具箱。 Linux 基金會的開源行業組織,TODO Group,一直致力於組裝一個裝滿工具的 「Open Source Program Office in A Box」 入門套件,這將使公司能夠通過一套緊密結合的預先組裝工具開展開源工作。入門套件目前尚未開發完善,但希望最終可以讓公司付出更少的初始努力,更輕松地部署和配置他們所需的工具。從事這個項目的 TODO Group 成員包括 Adobe、Capital One、Comcast、Facebook、谷歌、eBay、IBM、微軟、三星和 Twitter。
除了適當的工具之外,公司還應該有中央儀錶板,以便他們實時監控和跟蹤他們的開源項目和開發情況。許多公司可能已經擁有了用於現有開發工作和應用程序的儀錶板,並且能夠將現有儀錶板與其開源工作整合在一起。否則,他們應該創建或採用新的儀錶板來改進其開源部署的管理。
正在出現越來越多的用於管理和報告開源項目的工具,這一趨勢已經非常明顯。如果您的開源項目剛剛開始,那麼將您的研究集中在幾個您啟動和運行所需的基本工具上會更有幫助。
隨著您的項目不斷發展,以及使用這些工具的經驗越來越豐富,您可以開始採用新的工具,來幫助自動化並簡化您的流程,響應業務需求的增長。切記,新選擇的工具將用於內部文化和流程的補充和支持——而不是引導它們。
以下章節列出了幾個基本的工具類別,幾乎所有開源項目日常使用的工具都可以劃分到這些類別。這有助於您對該研究有系統性的認識。
為滿足公司的更多需求,自動化工具變得越來越龐大且規模化。它們可以准確地告訴您誰正在為您的項目做出貢獻,並且可以幫助您消除那些減慢項目進度的程序摩擦。
據微軟表示,在其開源項目辦公室里,大約有 8000 個倉庫在 GitHub 上託管,涉及約 11,000 名貢獻者,而在 2016 年約有 40,000 個內部請求應用於開源項目。為了管理這些請求,以及所創建的代碼和正在更新的代碼版本,公司轉而使用可以自動化解決混亂的工具。不僅如此,由於數百個項目中很可能會共用同一段代碼,因此必須對其進行仔細跟蹤,以便在出現安全錯誤時,可以快速繪制並修復所有的軟體影響。在如此大規模的情況下,自動化非常關鍵,手動更新幾乎是不可能的。
那些有助於管理關鍵任務的工具,也是需要考慮和獲取的。例如用於項目管理、跟蹤項目質量狀況,以及確保開發人員、開源社區和其他公司內部人員之間的清晰且快速溝通的。
大多數通過開源項目辦公室開發的企業軟體項目都使用 GitHub 作為其集中託管和開發的平台。
GitHub 是一個在線源代碼管理站點,它允許開源開發人員在一個中央「存儲庫」或存儲空間中管理和存放他們的代碼,參與者可以協作並開發他們的代碼。如今,大約有 6400 萬個開源代碼項目在 GitHub 上託管,涉及大約 2300 萬個開發人員。
GitHub 用戶可以添加代碼、查看已提交的代碼、申請更改、獲取並提供反饋,以及使用該服務提供項目管理。GitHub 使用 Git Version Control System ,這是由 Linux 創建者 Linus Torvalds 開發的開放源代碼項目,為代碼和合作開源人員提供了組織機構。每位「貢獻者」都有他們正在處理的項目存儲庫的副本,他們可以在自己計算機中的副本里進行更改,然後將其提交回項目以供未來納入。然後,「 拉取請求(pull request)」( 示例 )或代碼貢獻會被項目組織者審查、討論、修改,最後批准或拒絕。
代碼掃描和合規工具也很重要,它們有助於追蹤代碼起源和許可要求。關注被引入自身基礎架構、產品和服務中的開放源代碼以確保符合許可證的要求,對於公司來說是很重要的。
例如,您的應用程序可能包含數千個開源組件。為了保護您的公司免於法律糾紛,了解這些細節是至關重要的。在風險較高的情況下,用戶必須根據其業務在風險譜中的所處位置,深入了解代碼,從而深入地審核並驗證他們所說的許可證。(請參閱我們關於使用和分發開放源代碼的指南。)
如前所述,GitHub 是服務於目前大多數開源項目辦公室的專業源代碼管理系統。但是 GitHub 本身並不能滿足項目代碼管理的所有需求——特別是當您大規模發展的時候。
開源世界中所使用的一些工具旨在通過添加欠缺的功能來改進GitHub本身,例如支持檢查開發者原產地證書(DCO)語句,以確保代碼可以被合法授權且應用於開源項目中。
GitHub 在代碼審查方面也存在一些不足之處,所以有其他可用的工具可以自動將有問題的代碼發回給創建它的貢獻者,然後要求他們檢查並做出必要的修改。GitHub 沒有辦法強迫任何人檢查他們的代碼,而這些聰明的工具解決了這一問題,使工作流程得以改善。
其他 GitHub 特定工具的功能用於提高 GitHub 的性能指標,這些功能通常針對特定項目,而不是提供給整個組織詳細信息。對於在多個 GitHub 項目中維護許多開源代碼庫的公司而言,需要更好的工具來組織和匯總它們,使之有意義。亞馬遜、Netflix 和微軟提供了大量這樣的工具來幫助完成這些任務。
以下是一些最流行和實用的源代碼管理工具,可以簡化並幫助您的 GitHub 運作:
隨著開源項目的發展和成熟,監控和跟蹤開源項目的整體質量是企業開源項目的核心任務。為了實現這一目標,您必須收集相應的工具,這些工具應當能夠反映單獨的開源項目的執行過程並反映單獨的開源項目在數十、數百甚至數千個項目中被它們的社區接收的過程。同時,這些工具還必須兼具轉化能力, 能夠將收集的數據轉化為體現整個開源組合中整體項目性能的有意義的、實用的且可操作的信息。
這其中的關鍵是,您收集到的數據應當可以轉化為關鍵且有用的信息 – 而不是些無用的指標,例如詳細說明項目已記錄了多少「觀察者」明星,自項目開始以來有多少貢獻者參與了該項目,亦或是缺乏重要背景資料的其他指標。
最好的項目質量監測工具還必須幫助項目團隊對支持他們工作的社區做出回應,同時鼓勵貢獻開發者的參與和多樣化。這意味著這些工具可以幫助保持人員快速響應社區成員發布的問題或反饋,以便他們保持熱情參與,且不會感到厭倦並轉向其他項目。
一些開源社區有大量的貢獻者,而其他一些開源社區則成員較少。項目質量監測工具需要能夠適用於各種規模的項目。
以下是一些最受歡迎且實用的項目數據統計和項目質量跟蹤工具:
TODO Group 還提供了一個 很好的附加工具列表 :
當然,開源的發展並不僅僅關於代碼的開發。它還需要在企業內外部從事項目工作的不同群體之間以及公司開源項目辦公室的工作人員之間建立良好的溝通與合作。
為了達到上述目標,開發人員可以依靠他們可能已經應用於其他項目的工具,例如 Internet Relay Chat(IRC) ,開發人員可以發布 與開源開發相關的問題並快速收到回復 。另一個例子是 TWiki ,它是一個開源企業 Wiki 和 Web 協作的平台,開發人員可以在其中討論代碼和項目及相關主題。
此外,企業還可以通過社交媒體平台,門戶網站,開源項目存儲庫和其他能夠進行輸入、提問和討論的平台促進溝通交流。
其他有用的工具還包括 Facebook 公司的 mention-bot ,它可以通過自動關聯潛在審查者來獲得拉取請的快速輸入周轉以審查代碼。當 GitHub 目變得太大導致社區成員無法訂閱項目的所有通知時,這一工具尤其值得推薦。
然後是 Slack ,這是一個在線團隊項目管理與溝通平台,在這一平台中用戶可以訪問和共享消息和文件,管理工作流程,搜索信息等等。Slack可以通過設置接收支持請求、代碼簽入、錯誤日誌和其他任務的通知。
除此之外,當談到公司參與和支持開源時,不要忘記您公司的公關與營銷人員。包括 Twitter、Reddit、Facebook、LinkedIn、Google+ 等網站在內的社交媒體帳戶以及企業內外部的博客和網站的使用都是非常重要的。客戶關系管理(CRM)軟體以及電子郵件群發和新聞簡報可以幫助公司讓客戶了解他們的開源進展。
當談到企業為開源項目提供並應用的工具時,按理說最重要的是那些幫助企業管理自身企業規模 GitHub 操作的工具。GitHub 是一個可以提供許多操作的完美平台,但對於谷歌、微軟、臉書、Twitter、LinkedIn 等大型的復雜公司而言,使用標準的 GitHub 產品可能會有很多限制。
大型企業通常需要更多的功能,包括如身份管理、設置和許可權管理,安全性和雙重身份驗證執行,以及深入理解和跟蹤代碼存儲庫的方法。
因此,這些大型企業常需要構建專門的自動化工具來處理諸如入職、離職、安全策略執行以及給予開發人員請求的存儲庫訪問許可權等任務。
為滿足自身的特殊需求,微軟構建了自己的工具來處理諸如此類的任務,以簡化和改進其開源項目。微軟在 GitHub 上運行良好 ,擁有約 1,345 個存儲庫,迄今為止涉及約 3,580 名開發人員。
微軟創建了一款定製的自助服務—— GitHub management and onboarding portal ,用於組織其項目、存儲庫和團隊。在其最簡單的層次上,基於 Web 的門戶允許開發人員將他們的微軟公司ID映射到他們的GitHub ID,這可以提高系統安全性並幫助簡化參與大量重要項目的大量開發人員的組織工作。
該門戶還允許員工使用 GitHub 和微軟進行身份驗證。其創建了員工身份的一個「虛擬鏈接」,以便根據他們的工作角色向他們提供任務所需許可權以完成工作。如果員工離開公司,可根據需要調整系統以刪除或重新分類其訪問許可權。
門戶運行在一台或多台雲伺服器上,並依靠緩存來幫助進行會話和減少 GitHub API 的壓力。微軟門戶平均每天可提供約 1000 名獨立用戶作為其工程師的工具,這是該公司不斷發展的開源工作的一部分,該工作現在包括超過 10,000 名正在使用、貢獻和發布開放源代碼的工程師。
沒有人認為使公司進入開源世界是一件簡單的事情。但其他許多公司,包括微軟和谷歌等巨頭已經在您前面這樣做了,而且已提供了詳細的路線圖、代碼和建議等,這將使您自己的開源旅程變得更加輕松。
開源項目辦公室的創建和選擇一系列關鍵工具來開始開源工作,選擇權掌握在您手中。它們很可能已經激發了開發人員的極大期望,開發人員中的許多人可能已經自發為開源項目做貢獻(或在工作中,隱秘地)。
通過開源項目的合作並邀請其他人與您合作,您的公司可以獲得不可估量的收益,且能通過節能和創新推動公司發展。
擁有正確的工具對於授權貴公司的開放創新至關重要。
2. 如何利用開源軟體或工具為自己的工作服務
在平時我們都是用專業的應用軟體來處理相關數據,如ArcGIS等。同時有時候也會通過Arc Engine,使用C#等語言進行二次開發。以定製開發適合自身需要的工具。關於ArcGIS的使用,以及二次開發,網上的資料很多。而這篇文章的側重點提高自身的GIS編程能力,所以這里介紹一些如何使用一些開源軟體和工具來處理GIS數據。使用開源軟體的好處之一就是您可以在使用的過程中,遇到不明白的地方,去查看源代碼,觀察這個軟體包的對某個問題的處理方式和實現辦法。
下面將要介紹一些GIS開發中可以使用到的開源軟體和工具,通過這些工具的使用,大家可以了解在GIS數據在「底層」處理的一些簡單的認識。當然,這里的底層和計算機上常說的底層是不同的。希望通過介紹這些工具的使用,來達到拋磚引玉的作用。讓大家能學習到更多的知識。
GIS數據的處理,概括來說,有讀取/輸出、處理、顯示三大步驟。不過在下面將要介紹的工具和庫中,每個庫的作用並不是單一的。比如有的庫可以讀取/輸出,也可以進行部分的處理工作;有些庫可以進行顯示和渲染,但也可以進行一部分處理工作。下面就通過對shapefile的處理來分別簡要介紹這些庫。
GIS相關的許多工作,其實都是對shapefile進行處理。除了使用專業的工具之外,我們還可以使用一些開源的工具和編程語言,從底層進行開發和使用。
如果想從底層開發一個GIS數據處理工具,並且能夠自由分發的。可以嘗試使用GDAL/ORG、GEOS等工具。