開源的最大謊言
開源是我在行業(yè)中遇到過(guò)的最有趣的事情之一。這項(xiàng)運(yùn)動(dòng)本質(zhì)上是將人們聚集在一起,因?yàn)樗麄冊(cè)敢舛铝τ诋a(chǎn)品的工作。他們通常免費(fèi)進(jìn)行此操作,尤其是在項(xiàng)目的最初階段,然后-獲得此信息-對(duì)其進(jìn)行維護(hù),以使其他人可以使用它。也是免費(fèi)的。
我傾向于認(rèn)為,如果像我們?cè)谲浖_發(fā)中一樣,有更多的行業(yè)采用開源,那么事情會(huì)容易得多。再說(shuō)一遍,這不是我們?cè)谶@里的原因。實(shí)際上,這種令人驚奇的,幾乎類似于極樂(lè)世界的開源運(yùn)動(dòng)并不像人們想象的那樣完美,因?yàn)槿藗儏⑴c其中并且人們并不完美。
在我們所說(shuō)的開源的生命周期中,圍繞它產(chǎn)生了許多誤解。他們中的大多數(shù)人要么不是積極參與其中(即僅消費(fèi)其產(chǎn)品而從未做出過(guò)貢獻(xiàn)),要么是運(yùn)氣不好并參與了錯(cuò)誤的第一個(gè)項(xiàng)目,從而摧毀了本來(lái)可以令人贊嘆的體驗(yàn)。
我打算在本文中介紹一些我們行業(yè)中關(guān)于開源的最常見的謊言,以便您(新手)可以自行決定是否要加入這一運(yùn)動(dòng)。
我們開工吧。
完全披露:本文是受Dan Abramov的這一推文啟發(fā)的。我接受了提示并接受了提示。
它是免費(fèi)的,因此必須免費(fèi)使用
誰(shuí)沒(méi)聽說(shuō)過(guò)這個(gè),對(duì)吧?開源是免費(fèi)的。從字面上看,我們可以從GitHub之類的地方免費(fèi)下載庫(kù),而作為開發(fā)人員,我們知道我們也可以免費(fèi)在此處發(fā)布。
因此,只要手頭有電腦,我們就可以免費(fèi)創(chuàng)建代碼并將其共享給驚人的行業(yè)。
錯(cuò)誤的。
我們傾向于將成本與資源(通常是物理資源)相關(guān)聯(lián),但是由于我們已經(jīng)擁有一臺(tái)計(jì)算機(jī),因此,我們還需要哪些其他資源來(lái)生產(chǎn)和維護(hù)開源軟件?
時(shí)間。
沒(méi)錯(cuò):您的時(shí)間就是資源。實(shí)際上,這是您擁有的最有價(jià)值的資源之一,您是否正在考慮免費(fèi)提供它?再想一想?;ㄔ陂_源項(xiàng)目上的時(shí)間可能是您沒(méi)有得到雇主補(bǔ)償?shù)臅r(shí)間(除非您為他們建立該項(xiàng)目)。因此,如果沒(méi)有任何收入可以交換您,那么您在交換什么呢?和親人在一起?您可能會(huì)花些時(shí)間放松一下?數(shù)小時(shí)的睡眠?鍛煉時(shí)間?
您的時(shí)間很寶貴,參與開源項(xiàng)目的每個(gè)人的時(shí)間也很寶貴。僅僅因?yàn)樗麄冊(cè)敢鉃殚_放供您使用的東西而做出犧牲,并不意味著您有權(quán)要求任何您想考慮的要求。我見過(guò)人們需要24小時(shí)支持,或者他們的功能被接受是因?yàn)樗麄冃枰约旱?私人)項(xiàng)目。清單繼續(xù)。
根據(jù)項(xiàng)目的不同,您可能會(huì)看到一個(gè)由一個(gè)人組成的團(tuán)隊(duì),或者由一個(gè)由委員會(huì)領(lǐng)導(dǎo)的龐大團(tuán)隊(duì)在其中花費(fèi)時(shí)間和其他資源(是的,有時(shí)他們需要在這些項(xiàng)目上花錢),因此您可以擁有該圖書館或免費(fèi)框架。因此,下次您要考慮抱怨OSS項(xiàng)目時(shí),請(qǐng)考慮其維護(hù)人員的成本。
它不能成為收入來(lái)源
開源軟件是免費(fèi)的。因此,其維護(hù)者和創(chuàng)作者無(wú)法以它為生。
錯(cuò)誤的。
乍看之下,開源軟件對(duì)其用戶免費(fèi)。但是,在說(shuō)它不能成為有效的收入來(lái)源之前,還有很多事情要理解。
像任何數(shù)字產(chǎn)品一樣,賺錢與您的商業(yè)模式及其背后的營(yíng)銷策略有關(guān)。如果您有興趣從開源項(xiàng)目中賺錢,請(qǐng)參考以下一些想法。
出售專業(yè)服務(wù)
這是最常見的一種。正如我之前所說(shuō),人們傾向于認(rèn)為,因?yàn)槟呀?jīng)建立了一個(gè)項(xiàng)目并將其發(fā)布到全世界,所以您需要一天24小時(shí)為它提供支持。這不僅是不正確的,而且肯定是一個(gè)完全不同的工作領(lǐng)域。那么為什么不收費(fèi)呢?
實(shí)際上,為什么不同時(shí)收取培訓(xùn)費(fèi)用,甚至不為嘗試使用您的免費(fèi)產(chǎn)品的公司提供支持?這些就是我們所謂的專業(yè)服務(wù)(這些服務(wù)適用于使用您的產(chǎn)品的公司)。
有很多開源項(xiàng)目可以做到這一點(diǎn)。例如,RedHat,IBM,Hortonworks(圍繞Apache Hadoop)和Percona(針對(duì)其開源數(shù)據(jù)庫(kù))。
銷售相關(guān)內(nèi)容
您看過(guò)(或甚至讀過(guò))關(guān)于React或PHP的幾本書?這些書不是免費(fèi)的,對(duì)嗎?
如果您成功構(gòu)建了人們喜歡和使用的開源項(xiàng)目,那么您可以通過(guò)向人們提供他們可以用來(lái)學(xué)習(xí)如何使用它的產(chǎn)品來(lái)賺錢。這與專業(yè)服務(wù)模式非常相似,但是這意味著您需要親自參與(因此可以向您收取更高的費(fèi)用)。但是,使用產(chǎn)品,您可以構(gòu)建便宜的替代方案,供非公司用戶(即嘗試使用您的代碼的開發(fā)人員)使用。
即使您不是該項(xiàng)目的作者,也可以通過(guò)做同樣的事情來(lái)從他們的成功中受益。您正在圍繞一個(gè)開源項(xiàng)目(不是您自己的項(xiàng)目)構(gòu)建產(chǎn)品。
我們正在談?wù)摼帉懹嘘P(guān)此書的書籍,為Udemy等平臺(tái)創(chuàng)建視頻課程,甚至撰寫有關(guān)這些OS項(xiàng)目的贊助博客文章。為什么不?有時(shí),作者會(huì)愿意付錢給您寫關(guān)于他們的項(xiàng)目的文章。
捐獻(xiàn)
您可以從為自己的事業(yè)捐款的人中賺錢。不要害怕要錢。只要做得好,絕對(duì)是有效的收入選擇。
而且,如果您構(gòu)建了一個(gè)大型社區(qū)正在使用的項(xiàng)目,那么您會(huì)對(duì)結(jié)果感到驚訝。查看諸如Git之類的項(xiàng)目,您會(huì)發(fā)現(xiàn)它們確實(shí)收到了對(duì)自己的事業(yè)感興趣的任何人的捐款。
這一切都與您的項(xiàng)目以及在其背后建立的社區(qū)所能達(dá)到的范圍有關(guān)。如果足夠大,那么可能會(huì)有一種賺錢的方法。
您可以通過(guò)許多其他方式從開源工作中獲取收入。這只是發(fā)揮創(chuàng)造力的問(wèn)題。
您對(duì)它的貢獻(xiàn)將您定義為開發(fā)者
我們都知道,只有為開源做出貢獻(xiàn)的開發(fā)人員才是名副其實(shí)的吧?
錯(cuò)誤的。
能夠?yàn)殚_源做出貢獻(xiàn)(無(wú)論是以項(xiàng)目的形式還是通過(guò)對(duì)其他人的項(xiàng)目的PR進(jìn)行捐贈(zèng))都是一種特權(quán)-并非必須要獲得工作或被認(rèn)為擅長(zhǎng)于自己的工作。
是的,OS貢獻(xiàn)者的確可以通過(guò)公開工作而從他們的工作中受益。反過(guò)來(lái),這使行業(yè)和潛在的雇主都能找到自己的工作,并在某種程度上對(duì)自己的技能有所偏見。但是,確實(shí)有許多優(yōu)秀的閉門開發(fā)者無(wú)法從同一件事中受益。
當(dāng)然,您可以說(shuō)他們可能會(huì)花一些時(shí)間來(lái)做出貢獻(xiàn),但是也許他們以與您不同的方式來(lái)珍惜他們的時(shí)間,從而使他們無(wú)法發(fā)布或?yàn)镺SS做出貢獻(xiàn)。
我要說(shuō)的是這樣一個(gè)事實(shí),即有些公司甚至其他開發(fā)人員都認(rèn)為您擅長(zhǎng)開源。否則,您就是企業(yè)老鼠,如果不在Google上查找就無(wú)法編寫單個(gè)if語(yǔ)句。
那完全是完全錯(cuò)誤的。所以別再這樣做了,好嗎?
維護(hù)開源代碼很容易
關(guān)于這個(gè)我能說(shuō)些什么?維護(hù)任何類型的項(xiàng)目都不容易。再加上您是出于良心而這樣做的事實(shí),您就會(huì)開始發(fā)現(xiàn)問(wèn)題所在。
當(dāng)您構(gòu)建一些封閉代碼項(xiàng)目時(shí),您可能必須與四個(gè)(可能是五個(gè))開發(fā)人員共享您的代碼。當(dāng)您維護(hù)開源代碼時(shí),整個(gè)行業(yè)都可以對(duì)您編寫的代碼進(jìn)行審查,評(píng)論和公開羞辱您。所以那里沒(méi)有壓力呀!
有很多文章指出,開源的好處之一就是由于這個(gè)事實(shí)它迫使您編寫干凈且可維護(hù)的代碼。對(duì)我而言,被迫編寫高質(zhì)量代碼的壓力不是很大的賣點(diǎn),但對(duì)每個(gè)人來(lái)說(shuō),對(duì)吧?
回到重點(diǎn):維護(hù)數(shù)百萬(wàn)開發(fā)人員可能正在使用的代碼是一項(xiàng)重大責(zé)任。即使整個(gè)社區(qū)都在嘗試提供幫助,您如何確定他們具有與您相同的標(biāo)準(zhǔn)?您如何確定等待審閱的那十個(gè)PR已考慮了他們可能添加到項(xiàng)目中的所有潛在安全風(fēng)險(xiǎn)?
如果您做對(duì)的話,維護(hù)一個(gè)開源項(xiàng)目是一項(xiàng)非常艱巨的任務(wù)。不幸的是,它會(huì)很快導(dǎo)致倦怠。早在2018年,一名黑客就控制了一個(gè)開源存儲(chǔ)庫(kù),并引入了竊取個(gè)人信息的代碼。那個(gè)人之所以這樣做,是因?yàn)楸粩?shù)百萬(wàn)其他開發(fā)人員使用的OS項(xiàng)目的所有者和維護(hù)者因跟不上社區(qū)的要求而精疲力盡,以至于他們決定將項(xiàng)目交給其他人。
他們累了,其他人接管了。
輕松進(jìn)入
有很多開源項(xiàng)目,所以一定要很容易上手,對(duì)嗎?
錯(cuò)誤的。
如果您想開始為OSS項(xiàng)目做貢獻(xiàn),找到一個(gè)正在積極尋求幫助,然后以項(xiàng)目維護(hù)者可以接受的方式提供幫助的工作就不那么容易了。一些項(xiàng)目公開聲明他們正在尋求幫助,甚至標(biāo)記了最適合新手的問(wèn)題(Node.js就是一個(gè)很好的例子,Node.js將其問(wèn)題標(biāo)記為“需要幫助”或“良好的第一問(wèn)題”,這樣您就知道在哪里開始)。
當(dāng)然,有些項(xiàng)目沒(méi)有這樣做-要么是因?yàn)樗麄儧](méi)有尋求外部幫助,要么是因?yàn)樗麄儧](méi)有與想要為他們的項(xiàng)目做貢獻(xiàn)的人的經(jīng)驗(yàn)。
另一方面,如果您希望在自己的OSS項(xiàng)目上尋求幫助,那么事情會(huì)變得更加困難,因?yàn)閷?shí)際上您沒(méi)有地方可以尋求幫助。是的,如果您在社交媒體上擁有大量關(guān)注者,則可能會(huì)找到人。否則,您將取決于項(xiàng)目的受歡迎程度以及它對(duì)其他項(xiàng)目的興趣。
您可以復(fù)制代碼并隨心所欲地對(duì)其進(jìn)行操作
畢竟是免費(fèi)代碼,對(duì)吧?
好吧,不完全是。
我們所有人中的海盜(承認(rèn),我們所有人都有)傾向于認(rèn)為,如果一段代碼是免費(fèi)提供的,那么我們可以使用它來(lái)做任何事情。這包括復(fù)制代碼并以另一個(gè)名稱重新分發(fā)它,甚至為此而聲名狼藉。
這就是我們發(fā)明許可證的原因(實(shí)際上,我不確定情況是否如此,但是您明白了)。每個(gè)希望被使用并吸引某種受眾的開源項(xiàng)目都應(yīng)考慮選擇許可證。
這可以控制人們使用,更改和重新分發(fā)它的方式,從而保護(hù)您和您的用戶免受可能發(fā)生的任何非法行為的侵害。
與流行的看法相反,缺少許可證并不意味著您可以使用該代碼執(zhí)行任何操作。如果您在諸如GitHub之類的地方找到一個(gè)公共項(xiàng)目,那么存儲(chǔ)庫(kù)作者已經(jīng)在服務(wù)條款中約定了一些限制和含義。因此,如果您作為用戶找到?jīng)]有許可證的項(xiàng)目,請(qǐng)考慮其作者實(shí)際上決定不與任何人共享他們的代碼,并且您不能使用它。
如果您是作者,并且想了解哪種許可證最適合您的項(xiàng)目以及您的意圖,請(qǐng)參閱選擇許可證以開始使用。
所有開源項(xiàng)目都必須強(qiáng)制許可。而且,如果您要幫助甚至使用它,則應(yīng)注意與所選許可證相關(guān)的隱式限制。
結(jié)論
開發(fā)人員對(duì)開源軟件有很多假設(shè),因?yàn)槲覀兺ǔ2粫?huì)為此付費(fèi)。話雖這么說(shuō),這些假設(shè)是錯(cuò)誤的,并影響到項(xiàng)目本身及其作者和維護(hù)者的生活。
原文鏈接:https://betterprogramming.pub/the-biggest-lie-in-open-source-de38f71aa88c