為何要選擇自由軟體授權你的 JavaScript 等前端程式碼

昨天和人討論事情又提到所謂「HTML5 的安全問題*」這個老梗,整理一下寫下來:

為何要選擇自由軟體授權你的 JavaScript 等前端程式碼所構成的 client-side web app?

答案對我來說很簡單:

  1. client-side web app 活在瀏覽器上,Javascript 等所有程式碼都是明碼下載下去執行,不會被編譯。
  2. 當然你可以用 compressor 做 obfuscation,但 compressor 再厲害也只能做 dead code removal 和重新命名變數。Beautifier 可以很容易的復原除了變數名稱以外的所有東西。程式的邏輯本身是不會被保護的。
  3. 如果程式是用 GWT 等工具撰寫,前端程式碼也會面臨一樣的問題。
  4. 就算人家看不到,天底下哪有什麼不能用 black box testing 重建的程式?假以時日總會有人山寨出來。
  5. 因為技術上做屏蔽不可行,所以在授權上去標示著作權所有抄襲必究只是防君子不防小人。
  6. 而防君子這件事情一點好處也沒有 … 妨礙了自己的技術被認可的機會,也阻礙整體的技術發展。

所以基於商業方法要做什麼技術考量的話,我的建議是:

  • 程式的主體、架構、流程還是可以放在 client-side。現在有很多很棒的 library/framework 可以幫忙這件事情,像是 jQueryModernizrbackbone.js。尤其別忘了善用 History API。
  • 如果有什麼獨家演算法需要保護的話,請用 server-side script 實作,放在 server 上用 API 的方式提供。但代價是伺服器的 CPU 與流量。
  • client-side 的 API wrapper,甚至是完整的 client 程式本身,都可以用自由軟體授權(像是 MIT License)放出去。理由如前述。
  • 如果你的 server 端服務真的如此獨家又有價值的話,把 JavaScript 包成 API SDK 放出去,反過來增加他的價值。公司甚至可以用 API 用量賺開發者的錢!Google 有許多 API 就是用這種方式提供的,免費提供,超過流量收取費用。
  • 其實不算安全問題而是商業方法問題。只是大家都覺得 code 被看光叫做不安全。

Microsoft TechDays 2011:HTML5 應用程式開發簡介

星期四在 Microsoft TechDays 2011 給的演講,介紹使用 HTML5 開發網路應用程式的入門。

TechDays 這個大會比較適合企業 IT 決策人員,多半的議程都在介紹各種解決方案,技術議程算是其次。HTML5 與 Web 技術終於成為 Microsoft 的主要解決方案之一;尤其是星期三的 Build Windows 2011 Keynote 看到 Windows 8 這平台示意圖:

還有 Metro-style App 在 Visual Studio 2011 Preview 竟然跟 PhoneGap 一樣,是標準的 HTML Web App,用 window.Windows.{Storage|...} 來存取 Windows Runtime API,真是令人感慨萬千呀 …(裝老)

總之,Web 最終的程式平台,Web Tech 是真正的跨越所有平台的程式開發模式。你要加入我們嗎?

台灣政府對美三不承諾

六月維基解密丟出來的密文,算是我期待的那種,但是當時在新聞上好像沒有很大的爆點?

Burghardt expressed his appreciation for Ma’s pledge of no surprises in the U.S.-Taiwan bilateral relationship as well as his emphasis on substance over show. He recounted three examples Ma had given him to demonstrate this commitment:

  • Taiwan would not ask for a certain kind of transit just to show that the U.S. would grant it;
  • Taiwan would not ask for certain weapons systems just to show the U.S. would sell them;
  • and Taiwan would not insist on certain names just for domestic political considerations.

(原文)

後面的意思是,台灣目前的執政政府私下向美國承諾:

  • 台灣政府不會為了證明和美國的關係而要求特定形式的(台灣總統出訪在美國國內的)轉機方式;
  • 台灣政府不會為了證明和美國的關係而向美國要求特定武器的軍購;
  • 且台灣政府不會因為國內政治的考量而向美國要求特定的稱呼。

這看起來很糟呀。畢竟看了這麼多年的中台美關係新聞,人人大概都知道,從李登輝總統開始,美國要賣什麼武器給台灣、台灣總統去中南美洲經過美國要怎麼被接待,都是美國行政當局向台灣公開表現姿態的方式。比較遜的總統像陳水扁,就會搞到下不了飛機直接被送到中美洲去;比較厲害的總統像李登輝就可以做到回學校演講,幾乎是「順便」入境美國訪問。第三項稱呼,要說杞人憂天也罷,但是美國政府自從國會制訂台灣關係法,定義台美關係之後,就沒有在對台灣的地位上有任何的正式調整了,如果政府放棄和美國行政當局堅持名稱的話,下次歐巴馬訪問中國的聯合公報會不會出現「Chinese Taipei」?

簡單說,這個密文的意義是,台灣政府把在國際還有空間可以因為美國表達存在感的工具都偷偷封殺掉了。我是不願意像某些網路上的言論去歸咎動機是什麼啦(所謂的「賣台」?);可能只是比較遜的總統、或是在現在的國際形勢(密文以外我們還看不到的那一大部分)我們的外交部已經沒有籌碼可以放了。

唉。