當前位置: 華文問答 > 數位

為什麽要開源?

2015-07-29數位

最初,開源的目的就是為了低成本的釋出產品。

如果閉源,你必須為你的軟體產生的所有後果負責,生產者必須負責軟體的後期維護,改錯,以及功能更新。

為了能夠付得起這個責任,你的軟體必須達到產品級標準,這個標準遠遠高於後來開源軟體釋出公測的標準。

--

一群具有強大創新精神的黑客們認為,這不夠酷!為什麽,因為程式設計師最大的興趣在於制作更多更酷的特性,而把一個軟體穩定到產品級的過程中,你需要耗費很多代價去做一些不那麽酷的事情(例如,偵錯bug,改bug,解決很多異常情況)。

這,就產生了一個矛盾:程式設計師們想要第一時間迅速分享自己的最酷的軟體創意以及釋出一個閉源軟體所需要完善其達到的產品品質之間的矛盾。

為了解決這個矛盾,開源軟體應運而生,它之所以開源,是為了 完全意義上的免責 ,就是說你執行我這個開源軟體,出現任何意義上的問題,都後果自負。因為所有原始碼都完完全全的交給你了,有任何問題都自行解決,由於它實際上是原始碼,你有自行檢查的義務, 哪怕由於其中的bug給你造成了嚴重的商業上的經濟損失,你不能向開源軟體釋出者進行任何形式的索賠。

如此以來,釋出軟體的門檻跟風險被大振幅降低了。在早期的閉源軟體時代,其實一個初學者是不敢隨便釋出自己寫的軟體的,出問題還不夠賠的。(大家應該知道在美國,賣魚給顧客吃了卡刺是該賣魚的賠錢的,所以他們不敢賣有刺的魚。關於為什麽不敢釋出不成熟的閉源軟體,原理類似。)

而開源軟體制度,確實是大振幅推進了軟體業的發展,因為人們敢於更早期的釋出自己的不成熟的作品, 這促進了學徒階段程式設計師之間的大量的積極的交流

開源軟體使得軟體能夠更早期的被釋出,使得人們敢於釋出自己的不成熟的產品供有興趣的同行去完善,這是開源的一大優勢。

--

開源軟體還有另外一個考量,就是給使用者建立信心,使得不知名的程式設計師個體以及組織開發的軟體願意被人使用。

軟體,並不是個一錘子買賣的商品,它必然關聯了大量的後期維護,改進,出錯,更新。一個閉源軟體必須由開發者進行維護,如果我對一個開發者沒有足夠的信心,我就無法信任他能夠在該軟體的生存周期內保持對軟體的維護,因此,在閉源軟體的市場,你不能建立客戶的信任,就無法將軟體賣出去。久而久之,閉源軟體市場只會出現強者恒強的情況。小企業以及個體程式設計師難以有出頭之日。

開源軟體,則給使用者建立了更大的信心,即便你對我的長期活躍度不抱有信心,但如果你對我的開源軟體現在認可,將來就算我不繼續維護了,你也可以自行維護這個開源軟體。換句話說,開源軟體從協定上保證了絕對沒有斷供的風險。

如果你從來沒有做過作業系統,別人對你的作業系統當然就不會非常信任,那麽讓別人願意使用的一種方式,就是開源。

開源給使用者建立了更大的信心,使得不具有悠久歷史以及沒建立長期信任的軟體能夠被客戶使用,這是開源的第二大好處。

--

開源的第三大好處,個人認為是,明確勞動者的價值。或者說是明確程式設計師的價值。

對開源軟體來說,軟體程式碼本身沒有價值,你對軟體的勞動才產生價值,也就是說,偵錯軟體,安裝部署軟體,修改錯誤,增加新功能,等等這些必須程式設計師做的事情是有價值的,而分發復制開源軟體本身,這些不需要程式設計師做的事情,就變得很廉價。

如果你需要使用開源軟體,那麽往往就需要僱用程式設計師去維護它。開源軟體為程式設計師創造了工作崗位。但如果你需要使用閉源軟體,你自己其實往往不需要僱用程式設計師,只需要廠商提供技術支持即可,產商的技術支持只有一份,而使用者有多個,因此使用者側的程式設計師維護者數量將遠遠多於產商維護者。——換句話說,程式設計師們發明開源軟體機制,客觀的為程式設計師創造了更多的就業崗位,使得社會對程式設計師的整體需求增加了,也使得自己的就業面變寬廣了。而閉源軟體則難以具備這個好處。

總的來說,開源軟體,是程式設計師為了自身利益,切實對程式設計師群體自身創造了實實在在好處的機制。他有實實在在的價值考量與現實意義,而並非只是所謂活雷鋒的道德境界。

暫時,就先說這麽多。