2008年1月11日

Open Source 與 賺錢

我一向是一個支持Open Source的人,不過對於GNU GPL我卻不甚喜歡,
我個人的認知是,開放原始碼,在原始的授權條件下,應該要有一定合理的緩衝條件,
例如常見的作法是,我們利用Open Source來開發,
但我們將最新的程式碼限定在3個月或半年後開放,
這顯然和GNU GPL的條件不合,可是這應該是合理的作法,
否則Open Source沒有公司願意使用~

事實上,GNU GPL第二版有漏洞,目前全世界已經有許多公司利用漏洞進行開發並以此獲利,
自由軟體基金會也積極的在制定GNU GPL第三版,
GNU GPL第三版規定,只要使用到GNU GPL第三版的程式、演算法,都必須散佈,
但現在的狀況是,GNU GPL的最主要使用系統~Linux,它的作者Linus並不願意使用,
他持的論點也相當不錯,他認為強迫要求硬體廠商在提供了Linux Driver時,
一定要提供Source Code,並不是很合理的作法,因為硬體廠商的硬體設備,
有許多是有專利或機密的,Driver可能會需要碰觸到它的部份或全部,
因此並不適合用在GNU GPL第三版,也因為如此,
自由軟體基金會的人和Linus有很大的論戰,因此到目前為止,
GNU GPL第三版都還只是草稿階段~

身為一個正常的人,為了吃飯、過更好的生活,要求一定報酬的程式設計是合理的,
我一直認為自由軟體基金會的人都是神父,所以我之前就說過了,
我認為中樂透、中大獎,與其捐錢給什麼人道團體、宗教團體,
不如捐給自由軟體基金會、FreeBSD、Linux...等社群,
以自由軟體基金會來說,它們要求所有程式都無私的散佈、提供程式碼,
他們唯一的要求是,希望你改了程式之後,能夠散佈給更多的人使用,
讓程式越來越好用,越來越好~
會說出這樣話、這樣行動的人,除了是神父、和尚之外,
我實在想不出有什麼人有這樣的行為~~

那現在國外的公司,到底怎麼靠自由軟體來賺錢呢?
目前我看到的作法有4種:
1.它不靠軟體賺錢,靠服務賺錢,軟體只是它提供服務的媒介
這方法是自由軟體基金會等人建議的作法,但RedHat他們證實了,
這種方式提供服務,公司會倒的..... = =||
所以目前RedHat有商業版,提供給企業,一般版本改成Fedora,成立一獨立社群來開發、管理。

2.靠專利保護
我剛剛重新讀過GNU GPL第二版條款(我看中譯版的),它的確有針對這部份說明過,它提到如果你的程式以GNU GPL第二版發佈,但是在某些地區和專利相衝突時,可以選擇性的發佈在沒有衝突的地方,而要同時不侵犯專利又遵守GNU GPL第二版,方法就是不發佈程式和程式碼。
這是GNU GPL第二版清楚寫明的,因此有公司利用這一點,它們把技術申請專利,然後用Open Source來開發,在不違背的情況之下,他們以此來販賣,甚至他們一樣提供你Source Code,但是你不能修改、散佈,因為你修改、散佈之後,就侵犯專利了。

3.靠硬體保護
這也是最近常見的作法,而且剛剛想了下,ASUS的eee pc,應該會靠這方式來開發。
GNU GPL規定程式和程式碼都需要發佈,因此像FON、TIVO,它們的作法是,它賣的是整台機器,不論機器是Wireless AP或是機上盒,然後它限制不准拆卸、破解機器,否則不給予保固,但是同時,它又在網站中公開說它使用的是Linux,並提供Linux Source Code下載,擺明就是遵守GNU GPL第二版規範,但是你就是不能動它。

4.進行自由軟體的代工
自由軟體要開發,但不是所有人都會,尤其是公司,要研發商品,可是沒有能力開發自由軟體或者沒有能力開發kernel,因此聽說國外也有小型公司,專門進行kernel porting的工作,他們的唯一工作就是修改自由軟體,但因為他們受雇廠商,本身並不會發佈自由軟體的程式、程式碼,因此嚴格來說只算是自用,並不會侵犯GNU GPL第二版的授權,因為GNU GPL第二版中寫明了例外條件,就是只自己使用時,軟體、程式碼可以不散佈。

這4種方式,是目前常看到的自由軟體賺錢術,儘管大部分大型企業使用GNU GPL的自由軟體,但通常不會跟你說它用的就是GNU GPL的自由軟體,因此多少還是存在風險,最可惡的就是所謂的禿鷹集團,可以參考連結

這類集團在大陸也很多,之前就聽聞有這類集團專門找上新產品的開發公司,只要發現產品是Linux base的,就要求你Open Source,當公司發佈Source Code之後,隔不到一個月,相同產品大量出現,接著就是紅海策略,大家比價格,誰低誰贏,第一個死的絕對不會是其他相同產品,而是開發公司,我一直不知道這類集團的稱呼,原來一般叫做禿鷹集團阿~
這些人很惡劣,不事生產只破壞,破解它沒能力,就跟乞丐、無賴一樣伸手要,非常機歪~

最後附帶一點,自由軟體的授權種類很多,其中有上述發佈要求的,僅僅只有GNU GPL。
FreeBSD所使用的BSD授權,是完全沒有任何限制的,它允許販賣,而且並不要求提供Source Code,它唯一的要求是,在原Source Code上附加修改者和說明,可是因為不強制要求發佈Source Code,再公司裡面這麼做,基本上沒啥意義,所以BSD被號稱是最自由的自由軟體。
另外像Mozilla的MPL,它們的授權是可以要求部份發佈,部份保留,也就是說一整個軟體中,可以把自由軟體的部份進行發佈,其餘部份不發佈。

而GNU的授權中,除了前面提到的自用之外,還有2種例外狀況:
1.除了GNU GPL之外,有另一種格式的授權,叫做GNU Library GPL,這種授權適用在library的發佈,它的許可條件是,當你使用GNU Library GPL的library時,有2種狀況:
a.當你使用static link時,你的程式、程式碼授權同GNU GPL。
b.但當你使用dynamic link時,附上GNU Library GPL的library和Source Code即可,軟體本身可以不用發佈。
寫程式的時候注意看,許多library的發佈方式,是使用GNU Library GPL的,但也有些library的發佈方式是GNU GPL的,兩者有區別。

2.當使用GNU GPL的軟體(software)進行使用時,使用GNU GPL軟體(Software)產生的其他作品,授權可以自訂,不受GNU GPL的規範。
這意思是說,當你使用Gimp(一套OpenSource的繪圖程式)畫出一張圖片,這張圖片的授權一樣受到著作權保護,你一樣可以自己訂定這張圖片的授權限制。
同樣的道理,當你使用GNU C/C++ Compiler時,只要Library無關GNU GPL,它所產生的程式、程式碼,授權一樣是由你自己決定的,因此,我們可以使用GNU C/C++ Compiler搭配跟公司買來的Library進行開發,之後使用自己的授權來販賣,這也是符合GNU GPL授權的。

1 則留言:

yen3 提到...

原來這麼複雜啊..Orz

還好現在沒有開發啥很大的程式,或者是說,沒有靠寫程式來賺錢比較沒有感覺,但在這一篇中受教了。