開源指的是那些源代碼或源設計可以被大眾使用、修改發行的軟件或設計體,閉源就是不開放源代碼。
Linux 無疑是開源軟件里最最成功的一個,不管是從它目前的生態建設角度,還是從業界評價來看,包括今天云計算的基礎也都倚賴Linux的貢獻和基石。當然,像OpenStack、Hadoop 、Spark等也非常成功,這些開源項目都屬于底層技術,在支撐今天整個大數據、云計算的發展。
開源并不意味著免費,開源只是說我們做了一個好東西,把它開放給大家使用,目的是希望大家更多地使用它,并反饋使用過程中的問題或者改進方式,使得整個開源項目進步得更快,能夠更好地共享給更多有需要的人,目前像 Linux、Hadoop、Spark等等,都是這么做的。但很多時候開源背后還是帶有很濃厚的商業背景。
做得比較大的開源項目背后都有商業公司在支撐,如果一個成功的開源項目背后沒有商業公司,這是不健康的,我們需要開源和商業之間的互補對稱來促進整個社區和技術的不斷前進答,這是一方面。
另一方面,從開源用戶的角度來看,“開源是不是免費的”其實也是一個偽命題(這里的用戶指的是所有使用開源產品的企業或者個人)。開源看上去是不需要花版權的錢,但其實企業用戶招聘合適的開發人員、運維人員把這個事情做完,成本可能比買商業版本更高。
從商業價值的角度來說,開源毋庸置疑已經是基礎技術領域的必然趨勢,沒有開源的基礎技術是沒有生命力的,因為它很難被廣泛使用。在商業上,一個開源項目被大范圍使用后,可以使得整個技術升級換代成熟起來變得非常迅速,過去可能要經過三年、五年、甚至十年的時間去進化,因為開源的力量,在短短幾個月內可能就完成了。從另外一個角度來說,開源的壯大又會反哺支撐商業,畢竟還有很多客戶都是希望獲得商業的支持和價值。
對于開發者來說,開源與不開源很大的一個區別在于,你是一個孤軍奮戰的人,還是一個可以跟全世界最優秀的開發者在一起的人。因為如果你做一個閉門的項目,你所能夠溝通的、接觸的資源受應用場景的限制,會非常有限。但如果你是做開源項目,不管你是自己領導開源還是參與開源,你都可以和全世界最優秀的開發人員一起來玩技術,一起在社區探討交流,這樣對于自己的成長是飛速的
我們想象一下一項任務的開發如果沒有開源的話,想要讓這個系統的所有的功能得以實現這整個過程都是要由等著它的開發廠商自己來解決的。而系統中自己產生的一些BUG,也只能等著開發廠商來修復,如果開發廠商本身沒有發現,這些BUG就會永遠的存在。
所以由此看來開源和不開源的區別還是非常大的,它的作用也是很大的,開源最大的魅力就在于不依賴于某個廠商,大眾都可以修改代碼以滿足自己的需要,千萬個“自己的需要”就匯聚成了偉大的產品,任何違背這個理念的開源都是“偽開源”。
開源不是簡單的公布源代碼,如果有個人將自己開發的一款源代碼公布到網上之后,并沒有通過git、svn等把源碼管理起來,而且之后的修改匯總管理也是無人問津的,只能是提供對這個軟件感興趣的人進行下載,然后自己在做進一步的修改,讓自己用,這樣沒有做出貢獻的開源,就失去了開源背身的價值。