內(nèi)容摘要: 開源在近十年來逐漸形成了一種趨勢干毅,開源讓技術(shù)更迭更加快速姨拥,各種開源協(xié)議五花八門。現(xiàn)在想學(xué)編程技術(shù),有看不完的代碼屠阻,各種優(yōu)秀的項目層出不窮,這一篇文章,讓我仔細(xì)聊一聊開源文化和最值得一提的Github生態(tài)系統(tǒng)蝇闭。
1逻悠、開源的意義
開源軟件是一種源代碼免費向公眾開放的軟件,任何團體或個人都可以在其License的規(guī)定下對其進行使用、復(fù)制、傳播及修改趋距,并可以將該修改形成的軟件的衍生版本再發(fā)布。
很多科研軟件專業(yè)性強,涉及到學(xué)科眾多狼渊,由于其科研的屬性城须,決定了這些軟件需要不斷的創(chuàng)新與發(fā)展蘸嘶,而軟件開源無論在激發(fā)用戶創(chuàng)新動力方面,還是在促進軟件不斷成熟方面都具有重要的意義你辣。
開源不僅有利于繼承性創(chuàng)新宴凉,還有利于促進科研成果價值的體現(xiàn)籽暇,同時開源社區(qū)的不斷壯大也是大勢所趨舟山。
維護開源軟件生態(tài)是一項艱巨的任務(wù),但做好了會對整個行業(yè)的發(fā)展起到推動作用符相。
- Unix開源后,對PC操作系統(tǒng)產(chǎn)生了深遠(yuǎn)的影響
- Android開源后,對手機操作系統(tǒng)產(chǎn)生了深遠(yuǎn)的影響
- 著名的Github社區(qū),對開源代碼管理標(biāo)準(zhǔn)化產(chǎn)生了深遠(yuǎn)的影響
我是一個堅定的開源支持者,但對于開源還有一些事情你必須要知道。
2、開源協(xié)議有哪些
開源軟件的有點是可自由使用、享有版權(quán)、特定License惕味、可獲得源代碼躺同、無許可費捎谨、無任何擔(dān)保畏邢。而且開源軟件及源代碼可以免費獲缺矍蕖掏缎;大多都有開源社區(qū)支持,可保證軟件質(zhì)量嫌拣,協(xié)助問題解決及特性開發(fā)腥例。
但每種開源軟件在具體使用的License并不完全一樣,如果不遵守License會被投訴甚至起訴脐供,還可能引入安全漏洞;此領(lǐng)域知識產(chǎn)權(quán)糾紛頻頻發(fā)生京腥;若自行修改厅各,可能形成“私有開源代碼”憔古,需自行維護全部開源代碼,需有外部或內(nèi)部團隊掌握相關(guān)關(guān)鍵技術(shù)及獲取社區(qū)支持。
另一方面,如果你要開源自己的代碼,最好的選擇是采用國際通用的開源協(xié)議爪膊。這樣既有利于開展國際交流時保護版權(quán)榔昔,也有利于促進國際同行之間的交流。
現(xiàn)今存在的開源協(xié)議很多壁顶,而經(jīng)過Open Source Initiative組織通過批準(zhǔn)的開源協(xié)議目前有58種(http://www.opensource.org/licenses /alphabetical)。我們在常見的開源協(xié)議如BSD沛豌,GPL竹勉,LGPL城看,MIT等都是OSI批準(zhǔn)的協(xié)議。
BSD吟税,Apache,GPL,MIT是最常用的開源協(xié)議每篷,每種都有它們的適用范圍刑巧,準(zhǔn)備開源或者使用開源產(chǎn)品的開發(fā)人員應(yīng)該對每種協(xié)議特點有一個了解。
BSD開源協(xié)議是一個給予使用者很大自由的協(xié)議.基本上使用者可以“為所欲為”可以自由的使用,修改源代碼,也可以將修改后的代碼作為開源或者專有軟件再發(fā)布.但“為所欲為”的前提當(dāng)你發(fā)布使用了BSD協(xié)議的代碼,或則以BSD協(xié)議代碼為基礎(chǔ)做二次開發(fā)自己的產(chǎn)品時,需要滿足三個條件:
- 如果再發(fā)布的產(chǎn)品中包含源代碼,則在源代碼中必須帶有原來代碼中的BSD協(xié)議.
- 如果再發(fā)布的只是二進制類庫/軟件,則需要在類庫/軟件的文檔和版權(quán)聲明中包含原來代碼中的BSD協(xié)議.
- 不可以用開源代碼的作者/機構(gòu)名字和原來產(chǎn)品的名字做市場推廣.
BSD協(xié)議鼓勵代碼共享,但需要尊重代碼作者的著作權(quán).BSD由于允許使用者修改和重新發(fā)布代碼,也允許使用或在BSD代碼上開發(fā)商業(yè)軟件發(fā)布和銷售,因此是對商業(yè)集成很友好的協(xié)議.而很多的公司企業(yè)在選用開源產(chǎn)品的時候都首選BSD協(xié)議,因為可以完全控制這些第三方的代碼,在必要的時候可以修改或者二次開發(fā).
MIT協(xié)議是和BSD一樣寬范的許可協(xié)議,作者只想保留版權(quán),而無任何其他了限制.也就是說,你必須在你的發(fā)行版里包含原許可協(xié)議的聲明,無論你是以二進制發(fā)布的還是以源代碼發(fā)布的.
Apache Licence是著名的非盈利開源組織Apache采用的協(xié)議.該協(xié)議和BSD類似,同樣鼓勵代碼共享和尊重原作者的著作權(quán),同樣允許代碼修改,再發(fā)布(作為開源或商業(yè)軟件).需要滿足的條件也和BSD類似:
- 需要給代碼的用戶一份Apache Licence
- 如果你修改了代碼,需要再被修改的文件中說明.
- 在延伸的代碼中(修改和有源代碼衍生的代碼中)需要帶有原來代碼中的協(xié)議,商標(biāo),專利聲明和其他原來作者規(guī)定需要包含的說明.
- 如果再發(fā)布的產(chǎn)品中包含一個Notice文件,則在Notice文件中需要帶有Apache Licence.你可以在Notice中增加自己的許可,但不可以表現(xiàn)為對Apache Licence構(gòu)成更改.
Apache Licence也是對商業(yè)應(yīng)用友好的許可.使用者也可以在需要的時候修改代碼來滿足需要并作為開源或商業(yè)產(chǎn)品發(fā)布/銷售.明,無論你是以二進制發(fā)布的還是以源代碼發(fā)布的.
上圖是各種開源協(xié)議的區(qū)別迫卢,無論是你用別人的開源代碼還是日后也想開源自己的成果盆犁,都可以參考一下呦沛善!
3、Github是什么
在最開始的開源陣營中哼御,很多人都是憑借愛好和熱情來工作的,沒有公司愿意把自己的成果拿出來免費個人用吝秕。更沒有現(xiàn)在的所謂開源商業(yè)模式,僅靠一些開源組織的項目資助,并不富裕续担,所以这敬,遠(yuǎn)程協(xié)作崔涂,拼湊基礎(chǔ)設(shè)施都非常普遍蝙茶。
這種情況下蹄衷,面臨的首要問題就是開源項目的代碼或者數(shù)據(jù)放在哪里?還有各種不同版本怎么管理领舰。以云為中心的技術(shù)和應(yīng)用程序部署刨仑,對開源項目提出的新問題:
- 競爭項目,通常有多個開源項目在相同的應(yīng)用程序上工作夹姥,可能結(jié)果是注意力的分散杉武。
- 變化率,開源項目通常每年都會有2個辙售、3個甚至4個版本轻抱,通常會對API和行為進行重大更改。使用這些版本費時費力旦部,同時還要考慮下一個版本的變化問題祈搜。
- 版本兼容性,版本之間可能不會向后兼容士八,造成遷移和升級操作復(fù)雜化
- 長期支持容燕,開源項目的成功取決于廣泛的社區(qū)支持,如果指定的項目失去社區(qū)支持婚度,該項目可能會逐漸消亡蘸秘,剩余的用戶會被擱淺。
以上這些問題蝗茁,不光是開源會遇到醋虏,但是對于開源軟件來講,更需要做好這些才能贏得用戶的信任哮翘。這時候GIT工具(什么是GIT工具灰粮?)提供給了開源者非常大的幫助,在版本管理和多人協(xié)同方便都很大程度上改善了開發(fā)者的工作模式忍坷,圍繞GIT工具加上云的不斷發(fā)展粘舟,這時候出現(xiàn)了很多相關(guān)的服務(wù)提供商。
Github這是這一輪競爭中的優(yōu)勝者佩研,該公司自2008年以來柑肴,收入一直以每年300%的速度增長,2018年以75億美元被微軟公司收購旬薯。
Github提供給開發(fā)者們一套完整的生態(tài)工具晰骑,從代碼托管,質(zhì)量控制,可持續(xù)集成與部署硕舆,與自動化文檔秽荞,都提供了很好的解決方案。所倡導(dǎo)的理念就是:“只要你開源抚官,我的服務(wù)就免費”扬跋。目前,Github上面的開源軟件倉庫已經(jīng)超過1億個凌节。
但Github的缺點是服務(wù)器在國外钦听,國內(nèi)有些地區(qū)訪問速度很慢,不過后面我們會討論這個問題以及相關(guān)的加速方案倍奢。
2018年起朴上,我們團隊的也正式入住Github,近年來為了推動地球物理軟件方面的教學(xué)和科研卒煞,計劃通過5年時間痪宰,初步建立起一套從科研到應(yīng)用的實用化生態(tài)鏈條。
以服務(wù)社會公益事業(yè)的美國地質(zhì)調(diào)查局(USGS)為例畔裕,他們也全部采用Github平臺完成團隊協(xié)作和軟件開發(fā)管理酵镜。
結(jié)語:
Github將社會化編程的概念演繹到了極致,為全球開發(fā)者提供了空前的資源柴钻,從一個軟件Stars數(shù)量淮韭,到更新頻率,讓用戶可以足不出戶贴届,直接了解當(dāng)前最新國際前沿發(fā)展趨勢靠粪。