導讀:在技術領域生存,你是不是經常問自己,那些開源社區是如何產生的?又如何生存的?開源社區和商業領域是不是敵對關係?他們是如何博弈的。開源究竟是一種精神,還是一種手段?本文就試圖從機器視覺領域最為著名的開源庫OpenCV說起,聊一聊開源社區的那些事。
文化是一個群體團結在一起最為重要的精神核心。一個好的團體,需要一個共同的價值觀和文化信仰。我們可以從百科對「開源社區」的定義來看出其中的端倪。
「開源社區又稱開放原始碼社區,一般由擁有共同興趣愛好的人所組成,根據相應的開源軟體許可證協議公布軟體原始碼的網絡平臺,同時也為網絡成員提供一個自由學習交流的空間。由於開放源碼軟體主要被散布在全世界的編程者所開發,開源社區就成了他們溝通交流的必要途徑,因此開源社區在推動開源軟體發展的過程中起著巨大的作用。」
從這個定義中,我們可以看到開源精神,是為了人類的知識共同體而奮鬥,是分享和奉獻。然而,沒有物質基礎,精神就無所依存,那麼開源社區的物質基礎在哪裡呢?
我們從OpenCV的初心開始,可以看到一些端倪。
在《learning OpenCV》中,寫了這麼一段,「OpenCV」誕生於Intel研究中心,其目的是為了促進CPU密集型應用。為了達到這個目的,Intel啟動了多個項目,包括實時光線追蹤和三維顯示牆等。
一個在Intel工作的OpenCV作者在訪問一些大學時,注意到許多頂尖大學擁有很好的內部使用的開放計算機視覺庫,這些是在學生中傳播的代碼,可以幫助新生從高的起點開始他們的計算機視覺研究。
因此,OpenCV的目的是開發一個普遍可用的計算機視覺庫。在最初,OpenCV有三大目標:
這些目標,說明了OpenCV的緣起。計算機視覺應用的發展會增加對快速處理器的需求。與單獨銷售軟體相比,促進處理器的升級會為Intel帶來更多的收入。
這也許就是為什麼這個開放且免費的庫出現在一家硬體生產企業中,而不是一家軟體公司中。從某種程度上說,在一家硬體公司裡,在軟體方面會有更多創新的空間。
Vtk,(visualization toolkit)是一個開源的免費軟體系統,主要用於三維計算機圖形學、圖像處理和可視化。Vtk是在面向對象原理的基礎上設計和實現的,它的內核是用C++構建的,包含有大約250,000行代碼,2000多個類,還包含有幾個轉換界面,因此也可以自由的通過Java,Tcl/Tk和Python各種語言使用vtk。
VTK最早是作為《The Visualization Toolkit: An Object-Oriented Approach to 3DGraphics》這本書的附件給出的,類似於著作的輔助軟體庫。這本書和軟體都是GE研發部的三位研究人員:Will Schroeder、Ken Martin與Bill Lorensen用其閒暇時間合作,在獲得GE公司的許可下完成的。後來,其中的兩位 Will Schroeder和Ken Martin在1998年時離開GE,創立了Kitware公司。
VTK社群成長快速,在學術研究及商業應用的領域受到重用,例如Slicer 生物醫學計算軟體使用VTK作為其核心,許多討論研究VTK的IEEE論文出現。VTK也是許多大型研究機構如Sandia, Los Alamosn及Livermore國家實驗室與Kitware的合作基礎。這些研究中心使用VTK來作為視覺化資料的基礎處理工具。 VTK亦是新創的美國國家衛生研究院所規劃,作為開發未來計算工具之基石的美國國家醫學影像計算合作聯盟(National Alliance for Medical Image Computing, NA-MIC)的關鍵計算工具。
因此,vtk獲得了很多大型企業的研究項目和開發項目。這算是科研的盈利模式。
開源社區,確實是以開放為其基本精神的,為了分享和貢獻。而這一現象後面,一定深藏著某種意義上的「盈利」。
那些開源社區是如何產生的?又如何生存的?開源社區和商業領域是不是敵對關係?他們是如何博弈的。開源究竟是一種精神,還是一種手段?
開源的產生,我認為首先來自於對於自由的嚮往,自由背後是全人類的奉獻。同時,又因為各方面的因素,使得開源和商業有著錯綜複雜的關係。在很多場合,是敵對的,而很多時候又是共贏的。
正如老子說的「夫唯不爭,故天下莫能與之爭」,也就是「我為人人,人人為我」。也許,這也是企業的社會責任和個人的社會責任的統一吧。