April 16, 2012

一個自由軟體下的感人故事


自由軟體,1991年從Linus丟出了開放的作業系統平台後,自由軟體有了生根的平台。

Red Hat, SUSE, Debian, Slackware, Mandriva, Ubuntu, Mint, Fedora, Gentoo, Archlinux... 至少超過三百個以Linux為核心的作業平台由營利組織,非營利組織,甚至只有網上社群所開發。

Linux只是最單純的核心,負責接通硬體跟作業系統的管道。因為有了Linux,所以應用程式可以透過Linux這個作業系統跟硬體溝通。最單純的Linux核心沒有圖形化界面,滑鼠不會動,鍵盤沒反應,只是單純的讓硬體可以被"溝通"而已。其他的輸入輸出的動作都是由其他的應用程式來搭配。

在這一個開放的平台,每個作業系統只是負責統合適合的應用程式,然後集成一個系統。Linux的核心由Linus決策釋出,釋出的決策是根據是否加入新的硬體支援或是之前版本的修正。所以當新的Linux核心釋出時,接著所有需要在Linux上運行的應用程式開發者會再根據Linux的版本修正釋出新的版本。好消息是,Linux核心通常不會有太大的變動,因為只是增加對新硬體的支援而已,所以應用程式開發者通常不會因為Linux版本更新而導致舊版本的應用程式無法運作。通常新的應用程式只是加入新的功能或是修正漏洞。

很多人覺得Linux版本的開發商如同微軟或是蘋果一樣,自行開發應用程式,其實不然。Linux平台的運作模式跟微軟還有蘋果完全不同。Linux版本開發商只是統合合適的應用程式。最重要的就是決定那個版本的Linux核心納入支援,測試合適的應用程式版本,還有用什麼方式將應用程式"配送"到使用者手上。應用程式大部份都還是由其他的社群開發。這裡說的應用程式概念跟微軟或是蘋果作業系統上的應用程式概念有一點落差。在Linux上,幾乎所有的部份都是不同社群開發。如音效是一個獨立的應用程式,所以音效應用程式可以替換如OSS, ALSA, PulseAudio等。微軟或是蘋果通常都只有在使用音效的程式後端才比較看成是應用程式。同樣的,圖形化界面也是應用程式組成。首先Linux讓顯卡可以作用,接著Xorg決定顯卡該怎用,而再由不同的桌面程式搭配每個動作該怎麼顯示。常見的桌面程式如Gnome, KDE, Xfce, LXDE, openbox等。

在Linux的世界中,分工其實不容易,從電腦開機到發出聲音開始,中間可能已經經過了由幾十個社群分別開發的程式。幸好Linux的原始碼都是開放,所以每一個連結都很容易查閱。但是連結多了,就算原始碼是開放的,有時也很難查出錯誤的源頭在那。

今天來談一位Linux下的軟體開發者之一,Adrian Hands Andrian Hands (感謝指正) 的故事。

2002年,在Gnome的社群裡出現一個錯誤回報 (或說是健議開發項目)。大意是說在Gnome的環境下(eog)當用右鍵叫出編輯選單時(通常是右鍵),可以有複製圖片跟複製圖片連結的選項。
(https://bugzilla.gnome.org/show_bug.cgi?id=78514)

基本上這個功能並沒有被看成是一個bug。當然也有人在討論這功能是不是真的有什麼用處。

這個Bug一直從2002年一直放到2010年。這也顯示出社群開發的狀況下,很多軟體開發並不容易整合。而且當Bug多,人手不足,或是尚未影響到其他連結的應用程式的話,這些Bug通常都會被放很久。

2010年12月30日,Adrian Hands 丟出了修補的程式。這個修補程式只有131行。eog的開發者之一在隔天回覆,首先是覺得修補的程式好像有些問題。不過當天晚一些稍微修改一下後,確認修補程式無誤,並且放入eog項目中。

通常在Bug回報的項目中,修補一但完成,那麼這一串討論也就結束了。但是Adrian Hands始終沒有上來回應。一直到2011年2月4日,一位叫Ian Hands的人上來回應,他是Adrian Hands的兒子。他給大家看了他父親在2011年1月30日寄的這封信。內容是這樣。


"Fixes bug 78514"

這封信是Gnome社群寄給Adrian Hands的Bug fixed確認信。Adrian Hands將這封信轉寄給他兒子Ian Hands。Adrian Hands在寄出這封信之後的三天去逝了。

Ian Hands給Gnome社群的人看他父親最後的回應。Ian Hands謝謝Gnome社群的人在最後一刻陪著他的父親。他的父親得了肌肉萎縮症(ALS),在修補這個bug的時候Adrian Hands手已經無法敲打鍵盤,最後他是用Darci usb morse code keyboard emulator用摩斯電碼輸入。Ian Hands說,最後他父親總算可以為他自己,也為Gnome這個社群的人再盡一份力,讓Gnome的發展更趨美好。

我邊寫下這故事邊哭。

1 comment:

  1. 這位偉大程式開發者的名字是 Adrian Hands, 不是Androian Hands 也不是 Andrian Hands, 你不小心打錯了.
    但是必須說, 這故事真的很感人, 感謝您的分享

    ReplyDelete