跳轉到內容

資訊市場策略/相容性和標準/分叉

來自華夏公益教科書,開放世界開放書籍

在市場內競爭的一個潛在缺點是分叉的概念。由於公司將在一個標準內爭奪市場份額,因此競爭的焦點將從功能轉變為價格,但總會有人試圖透過競爭專有標準來進一步發展標準。為了改進產品,可能會出現“分叉”標準的情況。分叉標準是一個術語,用於描述將網路劃分為兩個(或更多)並行網路。如果公司在網路中過度發展功能,其影響可能是爭奪市場,基本上破壞標準並大幅減少網路外部性。Unix 是一個公司分裂市場的例子。“包括 IBM、Sun、HP、Silicon-Graphics 和 Novell 在內的幾家硬體供應商,為了差異化其產品、增加價值和進行改進,建立了自己的 Unix 版本”[1]。這些公司不想等待正式標準的制定,而是基本上將計算機市場分割開來。另一個此類案例涉及微軟,當時他們建立了 Java 虛擬機器。其影響是,“透過構建專門針對 Windows 定製的 Java 虛擬機器,分裂了 Java 市場。為其編寫的應用程式只能在 Windows 上執行”[2]。“該公司隨後設計了一種 Java 工具 Visual J++,它具有特別有利於 Windows 設計的擴充套件”[2]。微軟建立了旨在在其自身系統上執行的軟體,而不是標準,從而導致分叉。可能很快分裂的市場的一個例子是智慧手機市場 Android。[3]。許多使用者正在執行許多不同版本的 Anroid,導致軟體中出現許多錯誤和滯後。裝置相容性以及下載第三方軟體的問題讓許多使用者和開發人員感到沮喪,這一切都是由於市場的分叉造成的。

軟體工程 中,專案分叉是指開發人員從一個 合法原始碼 軟體包 中獲取副本,並開始對其進行獨立開發,從而建立獨立的軟體。

自由和開源軟體 的定義是,在不違反任何 版權 法律的情況下,可以從原始開發團隊那裡分叉,無需事先許可。但是,專有軟體(例如 Unix)的許可分叉也會發生。

分叉自由和開源軟體

[編輯 | 編輯原始碼]

根據“自由軟體”版權許可(“自由 3:改程序序併發布你的改進以供公眾使用,使整個社群受益”)和“開源”(“3. 派生作品:必須允許重新分發修改。(為了允許合法共享並允許新增新功能或進行修復。)”)的定義,可以合法地分叉自由和開源軟體,無需獲得當前管理軟體專案或分發軟體的那些人的批准。

在自由軟體中,分叉通常源於對不同目標的意見分歧或人際衝突。在分叉中,雙方都假設幾乎相同的程式碼庫,但通常只有較大的群體,或控制網站的群體,將保留完整的原始名稱和相關的使用者社群。因此,分叉會帶來聲譽損失。不同團隊之間的關係可能是友好的,也可能非常惡劣。

分叉被認為是自由和開源軟體提供的自由的一種表達方式,但它也是一種弱點,因為它會重複開發工作,並可能讓使用者困惑,不知道應該使用哪個分叉包。開發人員可以選擇與自由和開源軟體合作並集中資源,但這並非 自由軟體許可證 保證的,只有透過對合作的承諾才能實現。

埃裡克·雷蒙德在他的著名文章《大教堂與集市[4] 中於 1997 年指出,“分叉最重要的特徵是它會產生競爭專案,這些專案以後無法交換程式碼,從而分裂潛在的開發人員社群”。

在某些情況下,分叉可以合併回原始專案或替換它。 EGCS(實驗性/增強型 GNU 編譯系統)是從 GCC 中分叉出來的,它被證明比原始專案更重要,最終被“認可”為官方 GCC 專案。有些人試圖有意地引發這種效果,例如,Mozilla Firefox 最初是 Mozilla 中的一個非官方專案,它很快就取代了 Mozilla Suite,成為開發的重點。

關於分叉,術語檔案 中寫道

分叉被認為是一件壞事——不僅僅是因為它意味著將來會浪費很多精力,而且因為分叉往往伴隨著繼任群體之間關於合法性、繼承和設計方向的大量爭吵和敵意。人們對分叉有嚴重的社會壓力。因此,主要的分叉(例如 Gnu-Emacs/XEmacs 分裂,386BSD 集團分裂成三個子專案,以及短命的 GCC/EGCS 分裂)非常罕見,以至於它們在駭客民間傳說中被單獨記住。

宣告分叉很容易,但要繼續獨立開發和支援則需要付出相當大的努力。因此,缺乏足夠資源的分叉很快就會變得不活躍,例如,GoneME,由一位前開發人員從 GNOME 中分叉出來的,儘管吸引了一些關注,但很快就停止了。然而,一些著名分叉取得了巨大成功,例如 X.Org X11 伺服器,它從 XFree86 中分叉出來,獲得了開發人員和使用者的廣泛支援,並且顯著加快了 X 的開發速度。

最近,使用 分散式版本控制 (DVCS) 工具使“分叉”一詞的感情色彩減弱。使用 DVCS(如 MercurialGit),對專案做出貢獻的正常方式是首先“分叉”儲存庫,然後尋求將你的更改整合到主儲存庫中。這些工具旨在使建立、維護和合並分支(內部分叉)比使用集中式 VCS 更容易,因此從 VCS 工具的角度來看,它們消除了分支與分叉之間的區別。此外,諸如 GithubBitbucketLaunchpad 等網站提供免費的 DVCS 託管,並提供非常易於使用的支援,以支援這種分叉,從而大大降低了分叉原始碼儲存庫的技術、社會和財務障礙。雖然分叉社群必然仍然代價高昂且痛苦,但擁有許多競爭的原始碼分叉已成為開發過程中的一個更自然和更被接受的部分。

通常,即使原始軟體的版本是 3.0、4.0 或 5.0,分叉也會從版本 0.1 或 1.0 重新開始。一個例外是當分叉的軟體被設計為原始專案的直接替代品時,在這種情況下,例如,分叉的版本 5.2 與原始軟體的版本 5.2 相容(如 MariaDBMySQL 在 2011 年的情況一樣)[5]

分叉專有軟體

[編輯 | 編輯原始碼]

專有軟體中,版權通常由僱用實體持有,而不是由個別軟體開發人員持有。因此,當所有者需要開發兩個或多個版本時,專有程式碼更常見的分叉,例如視窗版本和命令列版本,或針對不同作業系統的版本,例如針對IBM PC相容機器的文字處理程式Macintosh電腦。一般來說,這種內部分叉將集中於在平臺之間具有相同的外觀、感覺、資料格式和行為,以便熟悉一個平臺的使用者也可以在其他平臺上保持生產力或共享在其他平臺上生成的文件。這幾乎始終是一個經濟決策,以產生更大的市場份額,從而收回分叉帶來的額外開發成本。

一個著名的非此類專有分叉是專有Unix的眾多變體——所有這些都源於AT&T Unix,都被稱為“Unix”,但彼此之間越來越不相容。參見UNIX 戰爭.

BSD 許可證允許分叉成為專有軟體,有些人說,因此,商業激勵幾乎使專有化不可避免。例子包括Mac OS X(基於Nextstep,因此基於BSD)、CedegaCrossOverWine的專有分叉,雖然 CrossOver 跟蹤 Wine 並做出了相當大的貢獻)、EnterpriseDBPostgreSQL的分叉,添加了 Oracle 相容性功能)、Fujitsu 支援的 PostgreSQL及其專有的 ESM 儲存系統,以及Netezza的專有高度可擴充套件的 PostgreSQL 派生產品。其中一些供應商將更改貢獻回社群專案,而另一些則將其更改作為其自身的競爭優勢保留。

其他值得注意的分叉

[編輯 | 編輯原始碼]
Linux 發行版分叉的時間軸圖表。
  • 大多數Linux 發行版都是從其他發行版衍生而來,大多數可以追溯到DebianRed Hat|Slackware。由於發行版的大部分內容是免費和開源軟體,因此想法和軟體可以自由地相互交換,這對各個發行版來說都是有用的。合併(例如United LinuxMandriva)很少見。
  • Pretty Good Privacy在美國以外被分叉,以使其免受美國關於加密軟體出口的限制性法律的影響。
  • 遊戲NetHack使用原始程式碼產生了多個變體,最著名的是Slash'EM,它本身就是Hack|的分叉。
  • OpenBSDTheo de RaadtNetBSD 1.0 的分叉。
  • OpenSSHSSH的分叉,這是因為 SSH 2.x 的許可證是非自由的(即使原始碼可用),因此對 SSH 1.x 的早期版本(最後一個被許可為自由軟體)進行了分叉。在幾個月內,幾乎所有 Linux 發行版、BSD 版本,甚至一些專有 Unix 都用 OpenSSH 取代了 SSH。
  • XOrg在 2004 年從XFree86分叉,因為後者更改了其許可證,許多發行版發現該許可證不可接受。
  • DragonFly BSD是由長期 FreeBSD 開發者Matt DillonFreeBSD 4.8 的分叉,因為他們對 FreeBSD 5 的技術方向存在分歧。
  • Adempiere是社群維護的Compiere 2.5.3b 分叉,因為他們對 Compiere Inc. 的商業和技術方向存在分歧。
  • iDempiere被一些人視為Branch GlobalQSS Adempiere361的分叉,而另一些人則將其視為 ADempiere 的下一代。由於前 ADempiere 開發者社群中的分歧,他們決定為具有新 OSGi 架構的程式碼路徑使用新名稱 iDempiere。
  • NeoOfficeOpenOffice.org的分叉,具有不相容的許可證(GPL 而不是 LGPL),因為他們對許可證以及將 OpenOffice.org 移植到Mac OS X的最佳方法存在分歧。
  • Joomla!Mambo的分叉。
  • 向量圖形程式Inkscape最初是Sodipodi的分叉。
  • Xvid是 OpenDivX 的分叉。
  • 媒體播放器軟體BoxeePlex都是從媒體中心XBMC分叉的。
  • 甲骨文收購太陽微系統後不久,導致LibreOffice從 OpenOffice.org 分叉,以及MariaDBMySQL分叉,這是因為人們擔心甲骨文對開源開發的承諾。

參考文獻

[編輯 | 編輯原始碼]
  1. Shapiro, Carl (1999). Information Rules. Boston, MA: Harvard Business School Press. {{引用書籍}}: 引用缺少以下必要引數:|1=|2= (幫助); 忽略未知引數 |coauthors= (|author= 建議) (幫助)
  2. a b CNET News (1998 年 12 月 2 日). "被 Java 困住了". CNET News. 檢索於 2010 年 12 月 2 日.
  3. Michael Arrington (2009年10月11日). "Android 的一個漏洞". TechCrunch.com. 檢索於 2010年12月2日.
  4. w:Eric S. Raymond (最後修改: 2002年8月15日). "放蕩的理論,清教徒的實踐". {{cite web}}: 請檢查 |date= 中的日期值 (幫助)
  5. http://programmers.stackexchange.com/questions/31551/forked-a-project-where-do-my-version-numbers-start
華夏公益教科書