0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

程序員常說的“開源”是什么?

jf_78858299 ? 來源:小馬技術(shù)圈 ? 作者:小馬技術(shù)圈 ? 2023-05-06 18:00 ? 次閱讀

01“開源”

在互聯(lián)網(wǎng)領(lǐng)域,可以簡(jiǎn)單理解為是“開放源代碼”的簡(jiǎn)稱。通常來說,指的是將軟件項(xiàng)目的源代碼向大眾開放,允許大眾獲取、使用、修改和發(fā)行。在硬件等其它領(lǐng)域也可以套用開源的概念。

“開源”就好比公開一棟房子的結(jié)構(gòu)圖紙,有了圖紙的人可以拿這份圖紙建造一棟一模一樣的房子,也可以叫懂行的人幫你優(yōu)化這原來的設(shè)計(jì)造一棟新版本的房子。沒有“開源”就好像沒有結(jié)構(gòu)圖你要仿造一棟房子只能仿造表面相似,結(jié)構(gòu)性能可能相差很遠(yuǎn),可能根本經(jīng)不住用戶多堆一點(diǎn)東西就變形垮塌了。

02“開源項(xiàng)目”

在互聯(lián)網(wǎng)領(lǐng)域,可以簡(jiǎn)單理解為是“開放源代碼”的簡(jiǎn)稱。通常來說,指的是將軟件項(xiàng)目的源代碼向大眾開放,允許大眾獲取、使用、修改和發(fā)行。在硬件等其它領(lǐng)域也可以套用開源的概念。

03“開源軟件”

直接的字面意思是公開源代碼的軟件,也就是說,如果軟件的源代碼是開源的,那么這個(gè)軟件就可以稱之為“開源軟件”。不過,對(duì)于很多商業(yè)公司來說,“開源軟件”只能看作是某個(gè)開源項(xiàng)目給出的“軟件示例”而已,因?yàn)檐浖脑创a已經(jīng)開放出來了,那么這些商業(yè)公司,完全可以根據(jù)自己的需要,基于這個(gè)示例,修改或衍生出真正適合自己的軟件產(chǎn)品。

04“開源社區(qū)”

為某個(gè)開源項(xiàng)目的開發(fā)成員提供的一個(gè)學(xué)習(xí)和交流的空間。由于開源項(xiàng)目常常需要散布在全世界的開發(fā)人員共同參與推進(jìn),所以“開源社區(qū)”就成了他們溝通交流的必要途徑。

05“開源協(xié)議”

是指開源軟件所遵循的許可協(xié)議,獲得了開源軟件的用戶,需要在該協(xié)議的允許范圍內(nèi)對(duì)軟件的源代碼進(jìn)行使用、修改和發(fā)行(包括以盈利為目的商業(yè)發(fā)行)。

06“GitHub”

是一個(gè)面向軟件項(xiàng)目的托管平臺(tái),可以用于托管各種類型的軟件項(xiàng)目,包括開源項(xiàng)目和私有項(xiàng)目。由于大量開源項(xiàng)目基于GitHub進(jìn)行托管,方便來自世界各地的開發(fā)人員共同工作以及獲取開源軟件,所以在開源項(xiàng)目領(lǐng)域,GitHub的影響力很大,是開源項(xiàng)目的首選托管平臺(tái)。

總結(jié)一句話來說

就是在GitHub上,發(fā)布了一個(gè)軟件項(xiàng)目,是開源的,這個(gè)開源項(xiàng)目會(huì)產(chǎn)出一款使用了MIT開源協(xié)議的開源軟件供大家免費(fèi)獲取,如果想加入這個(gè)開源項(xiàng)目共同工作,可以來這個(gè)項(xiàng)目的開源社區(qū)參與討論,網(wǎng)址是:http://xxx.xxx.xxx。

開源的意義

一、給企業(yè)帶來的價(jià)值

1.為企業(yè)提供品牌形象的引導(dǎo):在程序員的世界中,開源雖然不能說是多么崇高的事情,但總的來說,形象依然是正面的。開源意味著企業(yè)愿意與其他企業(yè)和個(gè)人共建生態(tài),這個(gè)企業(yè)的大體上來說,是有擁抱開放的這樣的傾向的。

  1. 為企業(yè)降低人員篩選的成本:關(guān)于人員篩選成本降低的一方面而言,其實(shí)很好理解。企業(yè)需要開發(fā)者來完成自己的需求,在招募的時(shí)候,他可以選擇沒有貢獻(xiàn)過自己開源項(xiàng)目的人,但他更喜歡去招募那些已經(jīng)貢獻(xiàn)過自己開源項(xiàng)目的人,因?yàn)檫@些人貢獻(xiàn)過代碼,至少知道我的項(xiàng)目、邏輯是什么,知道我的團(tuán)隊(duì)的代碼風(fēng)格是什么,參與過社區(qū)的溝通,能夠和我的團(tuán)隊(duì)有很好的協(xié)作。這樣的人如果招募到自己的團(tuán)隊(duì)中,拉過來就可以干活,沒有切換成本,篩選起來也簡(jiǎn)單,成本自然而然降低了。在這個(gè)方面,國(guó)內(nèi)做的最好的是 TiDB ,大部分成員都來自開源社區(qū)。

3.控制社區(qū)的發(fā)展:開源世界的規(guī)則是,你的貢獻(xiàn)多,你的話語權(quán)就大,你就可以主導(dǎo)項(xiàng)目的發(fā)展。對(duì)于企業(yè)來說,如果你想將一個(gè)開源項(xiàng)目向著你想要的方向去發(fā)展,就多安排人去貢獻(xiàn)開源,然后,通過這種明謀,來控制項(xiàng)目的發(fā)展。這一方面,做的最好的應(yīng)該算 RedHat,RedHat 通過提供大量的人去參與 Linux Kernel 的開發(fā),從某種意義上來說,RedHat 可以控制 Linux Kernel 的方向。在內(nèi)核開發(fā)大部分都是 RedHat 的人的情況下,他可以讓開發(fā)者只去處理對(duì)自己有利的 Pull Request 。這種操作并不違反社區(qū)的規(guī)則,只是優(yōu)先處理自己家的 PR,沒有任何問題。但也正是這種明謀,在不斷的調(diào)整著 Linux Kernel 的方向。

二、舉例各盈利模式下的開源項(xiàng)目

1、多種產(chǎn)品線

如 MySQL 產(chǎn)品就同時(shí)推出面向個(gè)人和企業(yè)的兩種版本,即開源版本和專業(yè)版本,分別采用不同的授權(quán)方式。開源版本完全免費(fèi)以便更好的推廣,而從專業(yè)版的許可銷售和支持服務(wù)獲得收入。

2、技術(shù)服務(wù)型

JBoss就是這種模式的典型代表。JBoss 應(yīng)用服務(wù)器完全免費(fèi),而通過提供技術(shù)文檔、培訓(xùn)、二次開發(fā)支持等技術(shù)服務(wù)而獲得收入。

3、應(yīng)用服務(wù)托管(ASP)

PHP Live,就是一種構(gòu)架于 PHP、MySQL 之上的開源軟件,它可為企業(yè)用戶提供實(shí)時(shí)交談服務(wù)。目前已經(jīng)有數(shù)十家公開提供 PHP Live托管服務(wù)的應(yīng)用服務(wù)提供商。

4、軟、硬件一體化

比如 IBM HP 等服務(wù)器供應(yīng)商巨頭,通過捆綁免費(fèi)的 Linux 操作系統(tǒng)銷售硬件服務(wù)器。SUN 公司近期將其 Solaris 操作系統(tǒng)開放源碼,以確保服務(wù)器硬件的銷售收入,也是這種模式的體現(xiàn)。

5、附屬品

比如 IBM HP 等服務(wù)器供應(yīng)商巨頭,通過捆綁免費(fèi)的 Linux 操作系統(tǒng)銷售硬件服務(wù)器。SUN 公司近期將其 Solaris 操作系統(tǒng)開放源碼,以確保服務(wù)器硬件的銷售收入,也是這種模式的體現(xiàn)。

6、品牌戰(zhàn)略、服務(wù)至上

康比爾公司的 Compiere ERP & CRM 軟件是這種模式的典型案例。

7、市場(chǎng)策略

對(duì)開源感興趣的推薦去LUPA開源社區(qū)了解。

以下重點(diǎn)說一下 開源協(xié)議 。

開源軟件雖然通常都是免費(fèi)的,但并不等于軟件的開發(fā)者們(開源社區(qū))完全放棄了自己的權(quán)利和對(duì)軟件的控制。為了保證開源軟件不被一些商業(yè)機(jī)構(gòu)或個(gè)人竊取,成為他們不勞而獲的牟利工具,并影響開源項(xiàng)目的長(zhǎng)遠(yuǎn)發(fā)展,開源社區(qū)開發(fā)出了各種開源協(xié)議,用于維護(hù)自己的軟件版權(quán)。

在開源協(xié)議里面,會(huì)詳盡表述使用者在獲得代碼后擁有的權(quán)利和義務(wù),包括可以進(jìn)行何種操作,而何種操作又是被禁止的。

開源協(xié)議種類非常之多,并且同一款協(xié)議會(huì)有很多個(gè)變種版本。開源協(xié)議規(guī)定得太寬松,會(huì)導(dǎo)致開發(fā)者們喪失對(duì)開源軟件的很多權(quán)利,而太嚴(yán)格又不便于使用者們的使用以及開源軟件的傳播。

常見的開源協(xié)議有:GPL、LGPL、BSD、Apache 2.0、MIT

01

G P L

Linux就是采用了GPL協(xié)議。GPL協(xié)議允許代碼的獲取、代碼的免費(fèi)使用和引用、代碼的修改和衍生,但要求對(duì)修改和衍生代碼的進(jìn)行開源,不允許修改和衍生的代碼做為私有閉源的商業(yè)軟件發(fā)布和銷售。

這也就是為什么我們能用各種免費(fèi)的linux操作系統(tǒng),以及l(fā)inux上各種各樣的由個(gè)人,組織,以及商業(yè)軟件公司開發(fā)的免費(fèi)軟件了。

GPL協(xié)議的主要內(nèi)容是,只要在一個(gè)軟件中使用到了包含GPL 協(xié)議的產(chǎn)品(GPL類庫),則該軟件產(chǎn)品必須也采用GPL協(xié)議,既必須也是開源和免費(fèi),這就是所謂的“傳染性”。

由于GPL嚴(yán)格要求使用了GPL類庫的軟件產(chǎn)品必須使用GPL協(xié)議,對(duì)于使用GPL協(xié)議的開源代碼,商業(yè)軟件或者對(duì)代碼有保密要求的部門就不適合集成/采用作為類庫和二次開發(fā)的基礎(chǔ)。

02

L G P L

LGPL是GPL的一個(gè)為主要為類庫使用設(shè)計(jì)的開源協(xié)議。和GPL不同,LGPL允許商業(yè)軟件通過類庫引用(link)方式使用LGPL類庫而不需要開源商業(yè)軟件的代碼。這使得采用LGPL協(xié)議的開源代碼可以被商業(yè)軟件作為類庫引用并發(fā)布和銷售。

但是如果修改LGPL協(xié)議的代碼或者衍生,則所有修改的代碼,涉及修改部分的額外代碼和衍生的代碼都必須采用LGPL協(xié)議。因此LGPL協(xié)議的開源代碼很適合作為第三方類庫被商業(yè)軟件引用,但不適合希望以LGPL協(xié)議代碼為基礎(chǔ),通過修改和衍生的方式做二次開發(fā)的商業(yè)軟件采用。

03

B S D

BSD開源協(xié)議是一個(gè)給予使用者很大自由的協(xié)議。開發(fā)者可以自由使用和修改源代碼,也可以將修改后的源代碼作為開源或者專有軟件再發(fā)布。但是有以下幾個(gè)要求:

如果再發(fā)布的產(chǎn)品中含有源代碼,則在源代碼中必須帶有原來代碼中的BSD協(xié)議。

如果再發(fā)布的只是二進(jìn)制類庫/軟件,則需要在類庫/軟件的文檔和版權(quán)申明中包含原有代碼中的BSD協(xié)議。

不可以用開源代碼的作者/機(jī)構(gòu)名字和原來產(chǎn)品的名字做市場(chǎng)推廣。

BSD 代碼鼓勵(lì)代碼共享,但需要尊重代碼作者的著作權(quán)。BSD由于允許使用者修改和重新發(fā)布代碼,也允許使用或在BSD代碼上開發(fā)商業(yè)軟件發(fā)布和銷售,因此是對(duì)商業(yè)集成很友好的協(xié)議。而很多的公司企業(yè)在選用開源產(chǎn)品的時(shí)候都首選BSD協(xié)議,因?yàn)榭梢酝耆刂七@些第三方的代碼,在必要的時(shí)候可以修改或者二次開發(fā)。

04

Apache 2.0

Apache Licence 2.0的簡(jiǎn)稱,Apache Licence是著名的非盈利開源組織Apache采用的協(xié)議。該協(xié)議和BSD類似,同樣鼓勵(lì)代碼共享和最終原作者的著作權(quán),同樣允許源代碼修改和再發(fā)布。但是也需要遵循以下條件:

需要給代碼的用戶一份Apache Licence。

如果修改了代碼,需要再被修改的文件中說明。

在衍生的代碼中(修改和有源代碼衍生的代碼中)需要帶有原來代碼中的協(xié)議,商標(biāo),專利聲明和其他原來作者規(guī)定需要包含的說明。

如果再發(fā)布的產(chǎn)品中包含一個(gè)Notice文件,則在Notice文件中需要帶有Apache Licence。你可以再Notice中增加自己的許可,但是不可以表現(xiàn)為對(duì)Apache Licence構(gòu)成更改。

Apache Licence也是對(duì)商業(yè)應(yīng)用友好的許可,使用者也可以在需要的時(shí)候修改代碼來滿足并作為開源或商業(yè)產(chǎn)品發(fā)布/銷售。

*05M I T

MIT是和BSD一樣寬泛的許可協(xié)議,源自麻省理工學(xué)院(Massachusetts Institute of Technology, MIT)。使用MIT協(xié)議的開源軟件作者只保留版權(quán),而對(duì)使用者無任何其它限制。MIT與BSD類似,但是比BSD協(xié)議更加寬松,是目前最少限制的協(xié)議。這個(gè)協(xié)議唯一的條件就是在修改后的代碼或者發(fā)行包中包含原作者的許可信息,且適用于商業(yè)軟件。使用MIT的軟件項(xiàng)目有:jquery、Node.js。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 開源
    +關(guān)注

    關(guān)注

    3

    文章

    3349

    瀏覽量

    42500
  • BSD
    BSD
    +關(guān)注

    關(guān)注

    0

    文章

    31

    瀏覽量

    10414
  • gpl
    gpl
    +關(guān)注

    關(guān)注

    0

    文章

    26

    瀏覽量

    2181
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    程序員需要學(xué)什么,微軟資深程序員學(xué)習(xí)手冊(cè)面試寶典資料

    程序員是現(xiàn)在比較吃香的工作。程序員工資高還不需要和復(fù)雜的社會(huì)打交道。那么怎么成為一名程序員?當(dāng)程序員需要學(xué)什么?
    發(fā)表于 03-22 11:54 ?30次下載

    “菜鳥”程序員和“大神”程序員到底有什么區(qū)別

    現(xiàn)在社會(huì)上有很多程序員,那您是否可想過程序員為什么會(huì)有不同的水平?你又是哪一類的程序員?“菜鳥”程序員和“大神”程序員差在哪里?
    的頭像 發(fā)表于 05-14 08:48 ?3729次閱讀

    程序員如何定義

    當(dāng)了幾年的程序員了,一直都在想一個(gè)問題,什么是程序員程序員應(yīng)該做好那些事情,什么樣的程序員是有素質(zhì)的程序員?什么樣的
    的頭像 發(fā)表于 12-18 14:15 ?2629次閱讀

    菜鳥程序員和大神程序員的差距

    剛剛走出就業(yè)的程序員,技術(shù)是剛剛起步的基點(diǎn)。那下面我們就聊一聊有關(guān)技術(shù)的東西。首先請(qǐng)您先想想這幾個(gè)問題。現(xiàn)在社會(huì)上有很多程序員,CSDN就是我們程序員的家,那您是否可想過程序員為什么會(huì)
    的頭像 發(fā)表于 06-03 15:56 ?2536次閱讀

    什么是程序員

    當(dāng)了幾年的程序員了,一直都在想一個(gè)問題,什么是程序員,程序員應(yīng)該做好那些事情,什么樣的程序員是有素質(zhì)的程序員?什么樣的
    的頭像 發(fā)表于 06-04 16:21 ?9005次閱讀

    程序員的未來

    程序員出路在何方程序員 創(chuàng)業(yè)如果你是程序員,也想創(chuàng)業(yè),看看我說的。
    的頭像 發(fā)表于 06-12 17:29 ?2956次閱讀

    為什么要成為高級(jí)程序員

    程序員到高級(jí)程序員的職業(yè)生涯要經(jīng)歷以下幾個(gè)階段:初級(jí)程序員、中級(jí)程序員、最后是高級(jí)程序員。
    的頭像 發(fā)表于 07-11 16:51 ?2438次閱讀

    頂尖程序員和普通程序員的區(qū)別

    普通程序員常說:“這個(gè)簡(jiǎn)單,幾天我就寫出來?!?/div>
    的頭像 發(fā)表于 07-25 11:17 ?2343次閱讀

    普通程序員和高級(jí)程序員有哪些區(qū)別

    從工作的方面來說,普通程序員和高級(jí)程序員一般有下面幾個(gè)區(qū)別:
    的頭像 發(fā)表于 09-08 10:47 ?3782次閱讀

    如何定義程序員

    多年以來,黑程序員一直是一項(xiàng)廣大人民群眾喜聞樂見的娛樂活動(dòng),我們不僅黑程序員,程序員也喜歡自黑,如此一來,大家好像都覺得黑程序員是一項(xiàng)天經(jīng)地義的事情了,然而事實(shí)上,的確是的。
    的頭像 發(fā)表于 10-28 17:05 ?2735次閱讀

    優(yōu)秀程序員與糟糕程序員的變現(xiàn)差異

    軟件蠶食一切,未來屬于程序員。所以人人都想當(dāng)程序員。但是并不是每個(gè)人都能當(dāng)好程序員。在你做出決定前還是先看看自己能不能當(dāng)好程序員吧。
    的頭像 發(fā)表于 11-07 16:14 ?3070次閱讀

    程序員最大的失敗是什么

    程序員最大的失敗就是認(rèn)為自己是好的程序員。
    的頭像 發(fā)表于 11-18 16:26 ?3223次閱讀

    程序員的類型

    今天來聊個(gè)有趣的話題,你是什么類型的程序員? 在學(xué)校里或在公司里,你是不是接觸過不少其他的程序員,有沒有發(fā)現(xiàn),雖然同屬程序員科, 但也有眾多的不同。 今天我就來給程序員分個(gè)類,看看你是
    的頭像 發(fā)表于 11-28 16:39 ?4703次閱讀

    NEC程序員開源分享

    電子發(fā)燒友網(wǎng)站提供《NEC程序員開源分享.zip》資料免費(fèi)下載
    發(fā)表于 07-05 11:29 ?1次下載
    NEC<b class='flag-5'>程序員</b><b class='flag-5'>開源</b>分享

    Shield Arduino程序員ISP ATtiny 85開源

    電子發(fā)燒友網(wǎng)站提供《Shield Arduino程序員ISP ATtiny 85開源.zip》資料免費(fèi)下載
    發(fā)表于 07-14 14:23 ?1次下載
    Shield Arduino<b class='flag-5'>程序員</b>ISP ATtiny 85<b class='flag-5'>開源</b>