2015年1月15日 星期四

[Life] 陌生人的幫助和open source的意義

原文網址: http://opensource.com/life/14/12/the-meaning-of-open-source

至今我當軟體工程師已經快15年了,雖然一開始我並沒有特別的感覺,然而事實上我從最一開始就已經在open source的環境下工作了,從基本的GNU命令列(command line)到C編譯器,open source從一開始就存在了。
雖然我的專業重心隨著時間一直在改變,但在某種形式上而言,我一直都生活在一個open source的生態系裡──無論是我使用的作業系統、工作所用的資料庫、甚至是我每天在用的整合開發環境(IDE, integrated development environment)。儘管如此,我從來沒想過要對開放原始碼做出貢獻,直到三年前我加入了紅帽(Red Hat)並開始在oVirt,oVirt是一個將開源資料中心虛擬化的專案。
我花了段時間才融入開發的過程,因為這與我之前經歷過的一切都太不一樣了──將專題頁面提交給他人評論、上傳部分程式給別人檢查、與來自其他國家或其他公司的貢獻者一起合作,這對我而言是全新而不同的環境,不過最後我發現這一切是合理的,一個開放的合作模式確實是一個較佳的產生高品質軟體方法。
然而,雖然貢獻了一些不錯的特色和很多的程式碼修改,在最近之前我一直不是很肯定我真的了解開放原始原始碼是怎麼一回事。我那時正如平時我去上班途中都會做的一樣正在瀏覽StackOverflow,然後我看到有人問了個關於如何在java-libpst裡關檔的問題,雖然我不曾用過java-libpst,但我覺得我還是可以試試,我快去地看了一下javadoc發現真的沒有辦法可以關檔,除非將那個物件釋放掉然後等垃圾回收(garbage collector)去清除它,我將其寫下並準備要按下送出鈕,突然我對開放原始碼的第一段覺醒提醒了我──我們都知道文件不一定是完美的,開發者很容易就會忘記(其實只是"忽略"的比較好聽的說法)去將他的程式碼記在文件中,就算開發者並沒有錯,線上文件也常常過時或沒有跟程式碼同步,但願有方法可以去確認我的答案...
噢等等,有了!在快速地用完git clone後,我檢查了一下程式碼,然後我可以確定真的沒有辦法直接的關掉開啟檔案,我把這些標註在我的答案裡,按下送出,繼續我的一天。
早上我看電子郵件到一半時,我又有了第二階段的開放原始碼覺醒。這是"開放的資源",我剛複製了一段原始程式碼並檢查它,如果將它修正其實不是什麼難事,為何不乾脆身體力行去做呢?幾分鐘後我送出加入請求,而幾天後我被接受了並被專案維護者Richard Johnson併入。
對我而言,這就是開放原始碼的真諦:當你發現軟體有不足之處時,不用等根本不清楚是誰的發佈者去看你的問題報告或審核你的修正請求,你可以直接自己來,而且常常會有不認識的人來幫你一把,那些陌生人不為什麼,就只是希望可以讓這個世界變得更好,藉由一行一行的程式碼。

沒有留言:

張貼留言