如何制定主動混源戰略

<span class="Apple-style-span" style="font-family: " stheiti="" light';="">做者: 顧宏軍 出處:軟件世界
瀏覽器

在過去這幾年裏,軟件產品數量急劇增加。現今設備不只包含愈來愈多的軟件,並且愈來愈多的功能經過軟件實現了。這種爆炸式的增加也擡高了軟件開發的成本。外包(部分)軟件開發只提供了一種不徹底的解決方案,而對適當的部件進行開源能夠有效地節約開發成本,縮短產品開發週期,所以,某些軟件開發上就採起部分組件開源,部分組件閉源的戰略,從而造成了獨特的混源架構。 服務器

拋開開源和閉源各自的立場不談,混源實際是一種實用主義,即一切從效用出發。因此,企業須要瞭解開源風險、並有效控制開源風險,充分發揮開源和閉源的長處。 架構

要採用混源架構,須要實施分兩步走的戰略。首先,將軟件或系統的功能、組件區分爲獨有功能、基本功能和無關緊要功能,而且對每一個功能組件進行判別,其使用開源架構或者閉源軟件是不是最佳選擇;其次,軟件架構設計應該和法律條款同步設計。這須要軟件架構師、工程師與知識產權和法律專家進行通力合做。 ide

瞭解開源風險 網站

開源所指的是軟件開發模式,是程序的源代碼在某種受權下公開,以提供用戶修改和重新發布該程序的權利,並指望(不是必須的)用戶所做出修改和改進也可歸入官方版本。 spa

開源軟件的受權適用條款可能比較奇特。例如,有受權要求若是你的軟件要包含開源軟件,那麼你開發的新軟件也須要進行開源。若是採用使用這種受權的開源軟件,那麼整個軟件棧的全部軟件產品,可能都必須以開源方式進行發佈。(這些條款只在把這些軟件出售或轉讓給第三方時適用)。對專利持有人額外風險多是在發佈第三方開源軟件時須要提供一個免費的專利受權,而這有可能侵犯了別人的專利。這一專利許可問題可只限於在開源組件中,可是在某些狀況下甚至會影響整個軟件棧。 操作系統

公司可能因這些風險對開源的誘惑敬而遠之,這並非一種從商業角度作出的理性決定。在商業環境中使用開源軟件正愈來愈流行,甚至在商業產品中。忽略了這些,公司將與全部可能的高質量軟件無緣,而且沒法享受開源帶來的削減開支和時間的好處。有時一個商業產品簡直無法保持和開源軟件同樣豐富的功能。所以,惟一可行的是要了解風險,並懂得如何管理它們。 架構設計

開源許可證 設計

如今有40多種不一樣的開源許可證,每種都有其約束條件和影響力。他們大體可分爲3類: 對象

1.Free-for-all 許可證:這類許可只須要將榮譽歸功原做者便可。衍生做品,能夠保持專有。有時這類許可被稱爲學術許可典型的就是所謂BSDMIT許可,以及用於Apache服務器的Apache許可證。

2.Keep-open 許可證: 根據採用這類許可的軟件進行的修改,必須也採用這類許可進行開源化。大的包含該軟件的新軟件,則可使新軟件保持專有。LGPLLinux系統庫採用)受權和Mozilla Public License受權(Firefox瀏覽器採用)就是Keep-open受權。

3.Share-alike 許可證: 當軟件採用這種許可時,不管軟件被修改或是被擴展,全部的成果都必須進行開源化。有時用術語「Copyleft」來描述這種受權。最有名的例子是GPL受權,它被Linux操做系統採用。另一個例子是 Open Software License (OSL)

公司爲了不出現必須開放其專有軟件的問題,可能會禁止使用 Share-alike甚至Keep-open許可的開源軟件,但這會嚴重限制使用開源的效用。由於約65%的開源軟件使用GNU ,有另外20%的採用LGPL協議。所以,開源策略應該是在哪裏應用以及如何應用,而不是如何將不一樣種類的開源軟件應用在一個產品中。

選擇合適的混源策略

採用開源策略的公司經常作出非黑即白的選擇:一個產品要麼開源,要麼閉源。其實能夠用一種更微妙的方法—「混源可得到更大的好處。 若是能對如上所述的受權進行有效的管理,公司能夠對某些部件使用開源軟件,而對其它部件進行封閉開發或者商業受權,最終目標應該是最能保證產品的價值。專有的組件或者方案應該被可供選擇的開源產品替代,以體現出更大的價值,而不是保持該組件私有或閉源。除了可使用已有的開源實現,公司也能夠以開源方式公開它本身的實現。

產品按功能進行分類,有三類功能:

1.特有的功能: 這類功能給產品帶來附加值。它們使產品可和競爭對手區分開來,而且給出了客戶樂意購買它們的理由。

2.基本功能: 這類功能是客戶須要和指望的功能。它們提供價值,但沒有給產品增長附加值。舉例來講,今天沒有人買便攜式的音樂播放器,是由於它支持MP3格式。 另外一方面看就是,若是不支持MP3格式,就沒有人買這樣的播放器。

3.無關緊要功能:這類是隱藏的、不感興趣的功能。產品須要它們才能工做,但客戶並不關心它們。

對每一個分類,最基本的問題本身開發仍是購買?變成了本身開發、購買仍是採用開源?要回答這個問題,第一步就是要區別它是哪一類功能部件,特有的,基本的仍是無關緊要的?第二步,判別每種選擇對各個功能部件產生的影響。圖1顯示了每種選擇的影響。


1:選擇開發/購買/開源

通常而言,特有功能應內部開發,以確保最大的市場優點。外包()這類功能組件,是一種選擇,可是這意味着公司產品最關鍵部分依靠第三方。若是第三方出現問題,將形成重大的風險。固然,對這類功能進行開源也不是個好的決定,開源會使該功能部件成爲基本功能。

對於無關緊要功能,公司不該該花時間和精力在內部開發或維護這類功能。 這部分使用開源節約時間、精力和金錢,並且這一般是正確的選擇。一個例子就是使用Linux做爲一個嵌入式操做系統。

居於中間的是基本功能。這類功能須要逐個的做出決定,是開發、購買仍是使用開源合適。 公司可能採用一個策略,例如若是該功能不向其它人收費,咱們採用開源。技術考慮可能阻礙某個基本功能採用開源。舉例來講,若是對基本功能進行開源,就也須要對特有功能進行開源,顯然,基本功能應該依然閉源。

在某些狀況下采用開源可能不合適。一個常常聽到的問題是,開源許可的條款對一個特定的產品過於繁瑣。這裏可能也有技術緣由使得公司須要進行閉源。例如,在一個小型嵌入式裝置裏,Linux未必就是最佳選擇,由於它的系統需求較大。另一個緣由是,有些客戶要求不用使用開源。

軟件的合法問題

軟件的合法問題理論上講很簡單,實際卻有些複雜。源代碼能夠被複制和拷貝,庫能夠被連接,或被遠程進程調用。用面嚮對象語言像JavaWeb Services可能的事件變得更多。這會形成軟件組件間複雜的相互依賴關係。對這樣一個複雜的軟件棧進行開源組件法律影響評估,有至關大的困難。

爲確保實現被妥善管理,知識產權專家應當在產品設計的早期介入,在項目開始時就顧及,並貫穿軟件設計和實施的整個過程。

總之,對開源的態度,不該是明令禁止,而應該是做爲戰略的一部分,採用實用主義的混源策略,對開源進行有效充分的利用。

<span class="Apple-style-span" style="font-family: " stheiti="" light';="" font-size:="" 13px;"="">

相關文章
相關標籤/搜索