最近看到乙個關於開源協議的圖,想到我們平時在企業應用開發中也在大量使用開源軟體,那麼我們應該怎麼對待這些開源軟體呢,所以簡單的寫下了這篇部落格。
在企業應用開發中,為了提高開發效率,經常可能會用到一些開源的軟體、專案、元件。在使用這些開源專案的時候,必須要先看好其開源協議,免得被challenge。網上有很多文章介紹各種開源協議以及其進行比較的,我就不在此老生常談了,我只說是該怎麼用。
這裡指的企業應用開發,主要是希望實現盡量閉源以保護自己的知識成果,盡量免費以降低成本。
對於lgpl,其要求是對源**的修改需要開源,但是只是引用的話就可以不用開源。所以一般我們直接使用lgpl協議的程式集,而不使用其源**進行二次開發,比如我們常用使用的nhibernate就是lgpl協議的,只需要在開發中引用nhibernate程式集就可以了,我們的**仍然是閉源的。但是這裡有乙個問題是,如果現有的lgpl協議的開源專案能夠滿足我們的大部分需求,但是仍然有一小部分需求必須要修改源**,或者原專案中有bug,我們必須要修改源**進行修正。對於這種必須修改源**的情況,我的做法是基於該源**,專門新建乙個專案,在這個專案中補充我們需要的功能和修**現的bug,然後將這個專案以lgpl協議開源並將專案編譯好的dll用於我們的企業應用開發中。這樣既滿足了我們必須修改源**的需求,也保護了我們自己的專案,同時仍然滿足其協議的要求。
總之,lgpl協議主要還是以類庫的方式使用,不建議在lgpl協議的專案上直接進行二次開發。在不得已必須修改開源專案源**時新建乙個開源專案,在該專案上進行修改。
mpl也是和lgpl差不多,對於類庫的引用是比較友好的,但是要是對源**進行了二次開發,那麼修改後的版權就歸原mpl專案的作者了,所以處理方法也是在必須修改源**的情況下,新建乙個開源專案來修改,修改好後以類庫的形式引用。另外mpl需要對修改之處提供說明文件。
接下來說說gpl協議,這是個對企業不友好的協議,其**之處在於,你哪怕是引用了gpl協議的類庫,那麼你的專案也必須開源。所以在企業應用中,能不用gpl的就盡量不用gpl的,大家說gpl協議像是病毒,所有使用了gpl專案的新專案都被傳染成了開源的gpl專案。所以對於病毒,我們想不被傳染,變成開源的gpl專案,處理方法除了盡量避免使用gpl外,如果必須使用,找不到合適的替代產品,那麼我們就應該盡量隔離使用gpl專案的那個模組。比如我們的專案有10個模組,而其中有1個模組要使用gpl專案,那麼可以盡量把我們的專案拆分成2個專案,乙個專案是完全閉源的包含9個模組的專案,另乙個專案是開源的gpl專案。這樣至少可以隔離開gpl與我們其他不相關模組的**,免得被傳染。
另外還有乙個隔離辦法是將gpl專案與閉源專案並列,不存在引用關係。比如a專案中需要使用到gpl專案b,那麼我們可以先建立專案a1,在其中完成我們的核心邏輯處理,然後以閉源的形式發布a1,接下來再建立開源專案a,a引用了專案a1和b,將這兩個專案結合起來完成相應的功能。總之儘量減少對gpl專案的使用範圍,做到最低限度的開源,滿足企業應用開發的需要。
ps:所有的開源協議列表:
Flex技術在企業開發中的應用
flex技術在企業開發中的應用 2010年10月08日 什麼是企業級應用?企業級應用系統的定義比較簡單,主要是用來區分網際網路應用和個人軟體。雖然這兩種型別的應用和軟體的受眾都是普通大眾,但企業級應用系統的受眾是企業客戶,是為企業服務的,企業級應用系統的使用者是企業內外部客戶以及與企業業務關聯的人員...
在專案開發中應該遵循的準則
根據我公司實際情況,大致列出在專案開發中應遵循的步驟原則。在各程式設計師遵循原則的情況下,方能開發出健壯有效的程式,且能提高自己的程式設計素質。1.在專案開發初期應該有專案的詳細原型。鑑於程式設計師文件能力有限,可編寫出大致的專案需求文件,只列出軟體目的,功能模組即可。在設計原型中,應該以需求為主,...
元資料 metadata 在企業應用開發中的作用
元資料 metadata 在企業應用開發中的作用 元資料 metadata 介紹 metadata 元資料 它是 關於資料的資料 data about data 近年來在軟體設計中 metadata 有廣泛的應用。在程式設計中,元資料不是被處理的物件,而是通過改變元資料的一些 值 來改變程式的執行的...