2014-12-27

軟體開發真的沒有銀彈嗎?淺談世界級軟體開源社群運作


圖片來源:One Piece

無人不知的軟體神書人月神話:軟體專案管理之道(The Mythical Man-Month: Essays on Software Engineering, Anniversary Edition)其中一個章節提到人月神話這個迷思,簡單解釋,以工程學來說,今天我用50個人建一間房子需要100天,那工程上因為可以拆解工作,所以理論值(大量的平均數來看)可以用500個人在10天內建一間房子;這就是一種人月工時結構的估算。

很可惜,軟體並不是工程。軟體開發是一個很殘酷用智商高低決定勝負的領域,以開著同一款車,一個頂尖的賽車手頂多就比普通會開車的人快個2-3倍,但軟體頂尖程序員跟普通程序員可以差到百倍(the measure indicators should be include quality, scalability and stability)。

但今天透過網路無遠弗界的集結,開始有著一絲可以打破人月神話的運作機制存在,這個機制就是開發者社群(Community)。一個好的開放原始碼社群透過制度、標準、流程、規範有效集結世界各地志同道合的夥伴以OpenStack開源社群為參考說明。

開源社群運作基礎流程:
  1. 先有個code base,最小可能就只有幾千、幾萬行程式碼,然後由一個或兩個單位維護研發,eg:NASA, Rackspace。
  2. source被open,並且License Agreement被擴張為Apache License,簡單的說就是拿到這個授權的程式碼,你可以無償的使用他,拿來改、賣都沒關係,隨便你搞,但前提是組織不負後續責任。通常這時候就會開始吸引到市場的鯊魚。
  3. 忘了說,一定要有個源碼版控系統。
  4. 社群建立,會開始進行幾件事情:
    • 建置官方網站,繪製個吉祥物mascot感覺比較沒這麼枯燥乏味。
    • 釋放Release Note(說明這個版本主要完成哪些功能)、發佈各種進程的版本(alpha, beta, candidate, stable, )、發布版本、定出版號、
    • 針對社群貢獻者(contributors)會給幾條較有法律性的規範CLA(Contributors License Agreement)

2014-12-26

2014末 - 自我技術成長的省思

最近悠悠轉轉某開源社群一段時間,鑽研其中一個主題,過程大概就是系統安裝、trace code、把架構搞清楚、拉哩拉雜用了一堆元件、再把python又複習了一下,腦袋中累積了不少東西,想把東西寫出來做個分享,表示自己好像獲得一項成就(?),結果寫到一半,突然發現...

我現在不過是把社群上的英文文件翻成中文而已啊...
我現在不過是把社群上的英文文件翻成中文而已啊...
我現在不過是把社群上的英文文件翻成中文而已啊...

嚴重發現自己沒有貢獻(哪有人自己當穿新衣的國王,還同時扮演那個指著國王說沒有穿新衣的那個小孩),不過就這樣一個move就得到一個反省思考的機會。

台灣的軟體實力長久以來,跟硬體、晶圓代工廠那些還可以跟世界搶單一較高下的技術來比,根本就是一塊如同殘障的領域。沒辦法,台灣一個小島才多少人,最強的都跑去當醫生、律師,再來是電機,然後才...好了,這種涉及到人身攻擊的議題到此為止。

關於軟體開源社群,在台灣能有"實質貢獻"的機會並不多;觀察幾年下來,台灣軟體產業界的毛病仍舊停滯不前
  1. 拿了國外寫好的開源專案,稍微改個UI、換個LOGO就說是新技術;這點其實很tricky,到底是拿既有開源專案去忽悠上面說開發了新技術,然後上面決策層級(擁有資源)的人很開心,就開始大肆做宣揚、媒體推廣的人但不去思考這到底算不算是一個真正能讓產業升級的關鍵技術。兩邊還真不知道誰對誰錯,也許這是一個共犯結構、上下交相賊,下面想辦法透過最短途徑讓長官開心,長官也有了新的題材讓大長官更開心,你開心、我開心、大家開心,開心之餘又有錢領何樂而不為,反正題材願景的泡泡只要不戳破就沒問題。
  2. 不斷的做Me2

2014-12-08

[OpenStack]如何修改OpenStack Horizon(Web UI)主題風格

本來這件事情,是不想當作一篇文章發佈,但在經過一個週末的休憩後,週一上班的時候就發現上周五的記憶就這樣蕩然無存...存在感跟螞蝗開出的633政見差不多低,所以趕快記一下...

如何修改OpenStack Horizon(Web UI)主題風格:

  • OpenStack版本:Juno
  • Vendor:Ubuntu
  • 修改以下兩個檔案:
    • Reference directory & file:/etc/openstack-dashboard/ubuntu_theme.py
    • TEMPLATE_DIRS = ('/usr/share/openstack-dashboard-ubuntu-theme/templates', )
以上簡記

2014-12-04

神註解 - 思考 Code Review 的重要性

無意間翻到一個放著發霉的js檔,傳說中是一間世界知名的硬體品牌廠對外網站產物,分享一下神註解(網路一夕爆紅,然後馬上就被撤)。

不要再跟我說code review不重要,你沒有時間做code review~

2014-12-01

IDE混搭風 - 整合UltraEdit在Windows環境開發Linux系統



這是一個混搭的概念,適合用於一種特殊公司環境(絕大多數99.9%的幾萬名同事都活在Win系列),而你自己也無法脫離(脫離了連收個信都很困難)的艱困環境下產生的IDE跨界混搭整合

說明:

  • 個人作業系統:Windows系列
  • IDE:UltraEdit
  • 程式語言:Python
  • 研發運行環境:Linux系列
  • Terminal:Putty
  • 虛擬軟體:VirtualBox
配置:
  • 開啟UltraEdit,點選檔案 -> 檔案檢視 -> FTP設定
  • 設定要被遠端ssh連線的Ubuntu(執行在VirtualBox上),輸入IP、帳號、密碼、預設登入目錄(defult是登入帳號的家目錄,但這樣不方便,因為你要開啟的目錄往往在其他地方)