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