Open source 有技術難度或者就是撿現成的
日前,現職公司的業務人員,在內部郵件提到他接觸的客戶中,對 Open source 有一些看法,希望公司中有人提供一些說明。這些看法中,有「認為 Open Source 有技術困難度」,或是「Open Source 不是就是現成的,還有什麼好研發的」。本文是我個人的見解。
技術困難度
Open Source 有「技術困難度」。
這「技術困難度」的定義實在太籠統、太廣泛了。別說 Open Source 了,就算商業軟體也有技術困難度。這「技術困難度」一語,不知所云。
從 open source 程式開發者的角度來看, open source 具有下列特點。
1. 選擇的項目多
同樣一項功能,可能會有十幾套軟體可選。
但是卻也帶來一些「 Transaction Cost 」。
假設有一功能,有 A 到 E 五套軟體可選。但這五套軟體並不是完全相同,其中總有一些差異。這些差異往往不經試用評估就感覺不出來,再者企業在導入軟體系統時,也做不到系統轉換零成本。 因此軟體試用或系統轉換之間,就為企業帶來了交易成本。
2. 系統整合與標準化
open source 開發者和商業軟體公司最大的不同之處,在於 open source 極度追求標準化。這是為了要讓 open source 界中成千上萬的軟體項目,彼此之間有共同的語言可以互動溝通,進而實現系統整合。
但是標準化過程通常需要耗費一段時間。
有時是標準定得早、軟體實作跟不上,例如 W3 製訂的 CSS 和 HTML5 ,就是讓各家瀏覽器在後面追趕實作的標準。 有時是沒有標準,而要等到某一家產品主導市場之後才形成,例如 JavaScript 就是先在瀏覽器大戰中取得主導地位,才進一步形成 ECMA262 標準。
然而客戶需求不等人,程式開發者有時就必須在標準未成形前,就要設計整合出客戶想要的軟體。這時就會面臨軟體之間缺乏互通標準、軟體的標準化實作程度不足等需要調整相容、測試除錯之開發成本。
在上述兩項特點中,從「但是」往前看是優點,往後看是缺點。然而經書有云「有無相生,福禍相倚」。優缺點本就是一體兩面之事。
Open Source 不是就是現成的,還有什麼好研發的
從企業經營的角度來看,不存在軟體程式是現成的所以不必研發之事。
IBM 形容「軟體是一條看不見的線,實現系統的系統」(Software is the invisible thread enabling systems-of-systems)(參考「石頭閒語:Innovate 2010 IBM開發者大會記事」,拿原文去 google ,大約是在 2010,2011 年間說的 ). 每一個程式項目、或每一個 open source project ,都只是資訊軟體的一個獨立環節、一個生產角色。
然而觀察整個企業的成長過程,一個企業想要成功獲利,絕不是把生產角色湊在一起就成了。 管理學所謂「結構追隨策略」指的就是企業必須按營運策略安排生產角色的組織結構。 在企業的金流和資料流都開始電子化的現在,營運策略的其中一面就是業務流程。
再從資訊管理面來看「程式」,程式的英文字 program 的原意,就是按照編排劇本、 組織方案之意,也就是安排各個角色在不同時間與地點的相應行動之意。 所以軟體程式實際上就代表了營運策略。
因此「軟體程式追隨業務流程」(「業務流程決定軟體程式,軟體程式追隨業務流程」),企業不是隨便拿一套軟體來用就能實現業務資訊化。 如果忽略了流程就是策略,忽略了流程會規制組織中各生產角色的行動, 那麼軟體程式就會和組織結構發生衝突,導致營運失敗。 莫說是 open source 軟體,就是商業軟體,都不見得找得到其內部程式內容剛好契合 企業策略流程的項目。是以每一家企業的資訊系統,實務上都必須再按其策略流程調整 程式內容。