站内搜索: 请输入搜索关键词

当前页面: 开发资料首页Java 专题我们是否真的做到了"Open Source?

我们是否真的做到了"Open Source?

摘要: 我们是否真的做到了"Open Source?
内容:
我们是否真的做到了"Open Source?

作者:cleverpig


一、开场白:

我的ID是cleverpig,由于是命中愚笨的缘故,所以起了个“取反”运算的名字。^@@^
也许我问你:“知道什么是开源吗?”,也许你可能会不加思索的头口而出——“开放源代码”。或许是你的错,或许是时代的错误。open source!=open code。

二、我的开源感言:

当我还是一个学生时,每日坐在win95前面,使用着VB4、TC这些古董级的develope kit,向往着有朝一日也能像Bill那样风光。但是后来一个偶然的机会,经同学介绍买了一张Turbo Linux CD,正是着一张价值几元的塑料介质,给我开启了另外一扇大门。让我知道了那时所谓流行的“开源”,那时许多国内公司如潮似的发布自己的linux版本和源代码。往往商人们总是会忘记写产品发明者——Richard. M. Stallman,直到我大四时读linus的linux新闻组时,才明白了linux是怎么炼成的,真正意义上的明白了开源不仅是“开放源代码”(中国人的一种望文生义解释)。正是这时我决心不再崇拜Bill,因为有千千万万的更值得我尊重和学习的developer。我决定投身开源,投身于默默无闻的共享精神的自我实践,也许不会有人知我存在,或许理想距离实现很远,但我相信千百万人共同做的同一件事情不会错!

就像我们在matrix上所作的一切,没有成功和失败,默默无闻地享受着一切。我的matrix上没有成败,但是有着比成功更加快感的“激情”,比独享更加乐己的“共享”情怀。

三、1.9版的开源定义:

下面转载了一段开源基金会官方网站上发布的1.9版OSD(开源定义),望如我年幼时糊涂者解悟,如我现状者自省。

正文如下:

一般中文所謂的自由軟體(free software),真正的意涵是指符合史托曼(Richard. M. Stallman)所訂定的四大自由的軟體(註一)。此外還有所謂的開放原始碼軟體(Open Source Software),指的是符合開放原始碼組織(Open Source Initiative,OSI)所訂定開放原始碼定義(Open Source Definition,OSD)的軟體。

開放原始碼定義由裴倫斯(Bruce Perens)所擬,其曾經為Debian開發計畫的領導人,並為Debian草擬「Debian自由軟體指導綱要(The Debian Free Software Guidelines,DFSG(註二))」,用來判斷Debian計畫中的程式是否為自由軟體,之後裴倫斯將DFSG加以修改成為開放原始碼定義的第1版。 目前開放原始碼定義由自由軟體基金會維護,最新版為為第1.9版,共有十項要件(註三):

(1) 自由再散布(Free Distribution):允許自由再散布程式,並且不可以因此而收取授權金,不過仍然可以收取授權金以外的費用;

(2) 原始碼(Source Code):為了使程式可以被修改,所以必須允許程式以原始碼形式散布。散布原始碼的形式不拘,可以透過電子媒介,也可以透過紙本。而除了直接提供原始碼外,也可以先單獨散布程式的執行檔,若收到執行檔之人想要原始碼時,可以再向散布執行檔著索取原始碼,現行常見的做法是將原始碼放在網路上,於固定網址中提供他人自行下載。

(3) 衍生著作(Derived Works):必須允許他人可以修改原程式,並且允許他人散布修改過的程式。授權條款可以要求修改過的程式必須採用與原程式相同的授權內容,不過此並非是這項定義中強制性的要求。

(4) 原創作者程式原始碼的完整性(Integrity of The Author’s Source Code):為了保持原作者原始碼的完整性,授權條款可以要求修改版本冠以不同的版本編號,用來和原程式做區別,或者是要求以修正檔(patch files)附加於原程式的形式來散布修改程式。這項定義並不是強制性。

(5) 不得對任何人或團體有差別待遇(No Discrimination Against Persons or Groups):為了讓開放原始碼軟體可以廣泛地散布,授權條款內容不得歧視任何人或團體。不過某些國家對於特定種類的軟體設有輸出限制,授權條款中可以提醒使用者可能有這樣的規定必須遵守,不過本身不可能有輸出限制的內容。

(6) 對程式在任何領域內的利用不得有差別待遇(No Discrimination Against Fields of Endeavor):基於和第五項定義同樣的理由,授權條款內容不得限制程式僅可以或不可以在特定領域中運用,當然也不得限制程式在商業領域中的運用。

(7) 散布授權條款(Distribution of License):授權條款中的權利繼續適用於收到程式的所有使用者。這項要件的重點並非在於,修改過的程式仍然必須適用相同的授權條款,因此向GPL這樣的授權條款也符合這項要件。

(8) 授權條款不得專屬於特定產品(License Must Not Be Specific to a Product):這一項定義是防止開放原始碼軟體的程式被封閉起來。若多個程式一同以一個開放原始碼套裝軟體(package)的形式散布時,若其中一個程式單獨被拿出來散布時,授權條款不可以限制這個程式繼續以開放原始碼授權條款散布。

(9) 授權條款不得限制其他軟體(License Must Not Restrict Other Software):一個開放原始碼程式與其他程式在透過同一個散布媒介體散布,例如CD-ROM,此時開放原始碼授權條款不得限制其他一同散布的程式也必須是開放原始碼的。

(10) 授權條款必須技術中立(License Must Be Technology-Neutral):授權條款必須技術中立,必須使程式可以在非網際網路環境以及在非圖形化使用者環境(non-GUI)下散布。若是授權條款規定「點選即視為同意(click-wrap)」的程序作為使用者接受條款的要件,這樣的規定會阻礙程式透過紙本散布,就不符合技術中立要件的要求。一份程式的授權條款若是經開放原始碼組織審核通過,符合開放原始碼定義,就可以在程式散布時標明為經過開放原始碼組織認證通過的開放原始碼軟體。

這十項要件在邏輯架構與文義表達上並非十分嚴謹,所以在判斷一份授權條款是否為符合開放原始碼定義時,會有文義之外的解釋產生,或者根本就涉及一項要件是否具有存在必要性的質疑。即使如此,在經過了許多授權條款的審查,以及反覆地公開討論,目前對於各項要件均已經有相當具體的審查標準以為依據。 Java, java, J2SE, j2se, J2EE, j2ee, J2ME, j2me, ejb, ejb3, JBOSS, jboss, spring, hibernate, jdo, struts, webwork, ajax, AJAX, mysql, MySQL, Oracle, Weblogic, Websphere, scjp, scjd
我们是否真的做到了
↑返回目录
前一篇: 用Java实现自动在数据库表中生成ID号
后一篇: 爱因斯坦谜题的java解答方法