星期六, 9月 29, 2007

BSD版權真正的敵人是GPL吗?

我下的果然是聳動的標題 :X

不過這陣子來Theo de Raadt (正反評價兩極化的openbsd hacker)對GPL的抨擊可以說是將沈睡已久的聲音再吶喊出來.
關於這件八卦有興趣的人其實可以在網上搜索一下,應該可以查到不少消息. 所以我只發表一下我無聊的感想.

一直以來信仰GPL的人們對於BSD license的評價就是以BSD-like版權放出的程式有機會被大企業給偷盜,然後變成close sourced的商業軟體. 所以最好自由軟體都使用GPL license才不會有問題.

簡而言之以GPL信仰者的觀點就是:

GPL --> 正義的一方
商業公司,closed source --> 邪惡的一方
BSD --> 爛好人,鄉愿

不過以BSD版權使用者的觀點來看, 似乎就不是這樣了.

大部份使用BSD版權釋出的軟體, 在實務上即使是被公司當作是closed source軟體販賣, 這些公司經常仍會回報patch給原本的團隊或作者. 此外, 增加使用的人數並真實的在商業上運用也有助於程式的測試改進.

所以公司或商業化的軟體 就算沒有幫助 基本上對BSD版權的危害並不如GPL的信仰者們所說的大.

而如果有人將軟體做了一些改進, 並用GPL版權釋出, 結果會變成怎樣呢?

今天舉個例子,比如說如果某個原本是用BSD版權開發的blog軟體,被某個GPL信仰者做了一些改進,並且改用GPL版權釋出. 這會造成原本都是自由軟體的使用族群分散之外, 另外如果新的修正是基於GPL版本的blog做的修正, 原本的BSD軟體就不再能拿回來用了. 因為新的修正會受到GPL的影響. 不得不變成一個GPL patch.(任何基於GPL衍生的程式碼均得為GPL授權), 知道這樣的嚴重性了吧, 也就是說GPL比封閉軟體還狠, 作完自己的修正之後不僅要奪走BSD版權的軟體現在的顧客,還要剝奪未來原本BSD可參考改進的程式碼, 變成只剩GPL-only授權釋出的程式有做修正. (當然 可以請求每個patch的原作者再用BSD版權釋出,然後再基於這個patch再做修改,不過在實務上似乎很少能做到如此)

Theo事件的導火線也在於此, linux people將BSD/GPL dual license的driver版權宣告拿掉, 然後re-license成GPL. 拿掉別人原本的版權宣告沒有任何問題吗? GPL people認為是沒有的, 總而言之 為了GPL people相信的正義 是可以犧牲BSD people的, 即使以後所有在linux上的driver的code patch都不得不為GPL, BSD版權的人們一點都不能拿來用也無所謂, 非我族類, 其心必殊.....

所以說... 就算theo過去怎樣怎樣 這次我覺得他講的倒有點道理... gpl 信仰者們, 也許BSD對於你們是異教徒, 但, 所謂自由軟體的正義真的是只有一條道路吗? 刪掉別人的雙版權宣告, 然後改成GPL only 真的是那麼的正義那麼理所當然吗? 我想值得再思考思考.

星期一, 9月 24, 2007

很有想法的gimp !?



看了Digg上這篇文章之後, 才發現gimp建圖檔時可以選衛生紙這個選項~~
試了一下還真的哩...

喔 這個概念真不錯 不過我家印表機可能印不出來吧....
還是美國的衛生紙現在改用 Double A材質了 ??? XD

星期五, 9月 07, 2007

[rant] 下禮拜要教招了~~

不知道國家找我這種沒戰鬥力的文官去幹嘛~~ 我當兵都在寫公文跟當客服處理客訴啊~~
哪會作啥戰...
還要去屏東某營區一個禮拜~~ 禮拜天早上就得出發~~
唉唉~~ 真不想去~~
我是很愛好和平的啊~~ (其實是不爽錯過一個禮拜的新番 Arrrrrgh~~ XD)

祝我平安歸來吧~~

[link] A Taste of Haskell 觀後小感

Part I
Part II
Slide

這兩部影片是在OSCON2007裡Simon Peyton-Jones的Haskell演講, 其實已經隔了一段時間, 今天晚上才一時興起去看,

因為知道是Microsoft Research裡的Haskell創造者之一,
原本是預期一個長得鬍鬚長長的老頭 然後開始講一些誰都聽不懂的玄學...
不然應該至少要長得像星際大戰的尤達吧~~

結果看了影片之後發現根本就大錯特錯... 大師不僅可以把玄學講成簡單的道理,
長得還比較像歐比王魁剛金...
連我都似乎開始有點聽懂了 @@ (雖然說這肯定是大師的催眠術)

Haskell最大的賣點不僅在於他是一個純粹的functional programming language,
更重要的是Haskell還帶有非常多在其他語言看不到的高等特性,包括惰性(laziness),型態類別(type classes), monads等等, 而這些特性將有可能會強烈的影響到我們下一個世代的程式設計語言.
也因此在諸多語言裡面也慢慢可以看到Haskell的色彩, 包括Simon Peyton-Jones所提到的C# 3.0, (LINQ據說是受到monads的直接影響), 還有python2之後的list comprehension等等都是例子,我覺得這些特性應該會慢慢的從Haskell中被帶出來讓世人所熟知.

(對了 講到python, lambda,map,filter都還在python 3.0a的builtin/keywords裡面,
只有reduce被移到functools裡. 之前map filter說要被降級好像是誤傳?(未查證))

Simon一開始講的是xmonad, 主要是一個haskell寫的
window manager, 非常的小所以他拿來作說明, 然後就開始講一些functional programming的基礎特性, 我主要注意到他說Haskell的types跟UML一樣是用來表示High level design, 這倒很有意思, 我是個python user/advocators我會喜歡duck typing跟lisp這種dynamic types的語言是很自然的, 但是像Haskell這樣的static typing語言不僅有type inference可以減少累贅感, 另外還可以透過compiler檢查高階設計, Data types的construct語法看起來其實也很接近BNF, 倒是讓我覺得static typing也沒有那麼壞了起來.

不過type classes有點複雜, 這是連Simon這種神人都覺得未來仍有發展空間的東西 我並沒有完全跟上, 改天還要再深入研究.然後就開始講到I/O跟scripting, IO的部份, 並不是很直觀, 網路上對於monad的討論也多到暴 所以我也是聽得很霧 另外也提到了Haskell library的現狀(就我以前try過的一些經驗, Haskell的library不算多, Cabel比較像是python的distutils, 可以裝一些3rd party的module, 不過dependency的部份有點麻煩, 似乎現在有人在發展一些工具在處理不過還是沒有很成熟), 這部份其實我目前比較沒有那麼大的興趣, 所以聽得有點散, 其實python就目前實務使用(套件,標準庫...等等)來說還是比Haskell成熟的多,並沒有很急著要學太多實務部份, 但我覺得Haskell是非常具未來性的語言, 所以現在多花點時間了解一些更基礎的特性或許也是對的.

之後開始聽到有關laziness跟first-class control structures, 這很有趣, 如果有學過lisp的話肯定知道lisp有所謂的special form跟macro, 因為lisp是一種語言的語言(meta language), 可以透過macro來無限制的擴展語言, 所以雖然是在1990年代的OOP風潮前就有的語言但卻可以不改變語言的本身特性而發展CLOS這樣的物件系統, 這也是為甚麼lisp之所以吸引人並且長久有穩定支持族群的原因, Haskell的laziness就是讓function跟data constructors不在第一時間就被evaluate, 直到真正需要的時候才去eval, 而這讓Haskell靠著laziness來取代lisp透過macro來支援special form的方法, 只要單純的撰寫函式就可以更動control structure, 這真是非常酷的特點.

最後simon講到Haskell跟其他語言採取完全不同的方法設計, 其他語言主要是一開始先想辦法讓語言有用(Useful)而慢慢的再來加一些限制讓語言更安全(safe), 而Haskell則是採取一開始是Useless(無用處)但是Safe的設計,然後慢慢的讓語言更加具有功能性.


之後simon也講了一些工具跟網站 畢竟這個演講也只是粗淺的導引, 還是有很多深入的內容要多看多玩才會了解 不過之前也看過一些Haskell的介紹跟導引, 他的演講對於個人提高興趣及指點迷津上我倒覺得成效還不錯.

看完演講總算比較有信心覺得這是個正常人可以玩的程式語言了, 知道玩這個語言沒那麼容易變成瘋狂數學家總是安心不少 ;) 不知道為啥突然想起研究所唸過的Kiyoshi Itō這個超神的家伙,記得聽以前的教授說Ito calculus是他的碩士論文發明了之後, 讓我真是想去再生兩個腦袋, 不過還好haskell裡的lambda caluli沒那麼困難, 只要知道\在haskell裡面是代表lambda, 其他只要lisp學好的話搞不好會更欣賞haskell滿直覺的表示法, 型別的理論我比較少接觸看起來還要多摸, 比較困難的是monad, 有時間的話繼續努力玩玩. (話說大師的催眠術果然是無敵的, 看來只要一直想著這很簡單這很簡單終究會變得..感覺..簡單起來 XD)