第 154 期 自由軟體授權分析輔助工具 - 自動化程式碼掃描系統─自由軟體鑄造場電子報─智邦公益電子報
enews.url.com.tw · February 07,2012適合所有人使用的行程管理系統 - WebCalendar
翁卓立/文
官方網站:http://www.k5n.us/webcalendar.php
下載網址:http://downloads.sourceforge.net/project/webcalendar/webcalendar 1.2/1.2.1/WebCalendar-1.2.1.tar.gz?use_mirror=ncu&ts=1279353435 (1.5MB)
註:Ubuntu Linux 下可使用「sudo apt-get install webcalendar」直接安裝。
簡介
現代人的生活越來越忙碌,自然也面對了更多需要處理的事情。為了避免忘了處理已經排定的行程,許多人會使用桌曆或是記事本,作為記錄待辦事項的提醒工具。而時下流行的智慧型手機也幾乎都會內建行事曆軟體,並且擁有為數不少的使用者。但手機內建的行事曆軟體終究只是個人使用的輔助工具,如果需要與他人共同分享自己的行程,或是在排定事件時可以先了解相關人員的行程安排,則無論是桌曆、記事本,或是手機,都無法達到這樣的目的。如果要滿足這樣的行程安排需求,或許可以考慮使用網路版本的行事曆軟體或系統,這樣可以利用網路易於存取與分享的特性,讓所有人(或是特定人員)都能查閱自己的行程安排。
本文所要介紹的 WebCalendar,是一套使用網頁介面,並使用 PHP 語言開發而成的網路行事曆系統。WebCalendar 可以作為個人的行事曆系統使用,也能設定為多人共同使用的行程安排系統,或是作為公開的行程安排佈告欄,在使用上並沒有特別的限制。而在搭配的後端資料庫系統方面,WebCalendar 支援許多 UNIX/Linux 系統上常見的資料庫系統,例如 MySQL、PostgreSQL、Oracle、DB2、Interbase 等等。此外,由於 WebCalendar 也能在 Windows 系統上執行,因此如果有需要的話,亦可利用 MS SQL Server 並搭配 ODBC 使用。
▲ WebCalendar 的操作畫面
多功能的行程管理系統
WebCalendar 本身是一套相當多元化的網路行事曆系統,並可依據其環境設定的不同而有不一樣的應用架構。例如最單純的使用方式,便是將 WebCalendar 設定成個人使用的行事曆系統。由於此時行事曆的存取權限需要輸入帳號、密碼等資訊才能取得,因此不需要擔心會有個人行程外洩的問題發生。如果要在公司行號或是組織之中使用 WebCalendar 作為行事曆系統,則可以將 WebCalendar 設定為允許多人使用的群組模式。在此種作業模式之下,還可以指定一個以上的助理,並協助特定使用者進行行程管理。另一種使用模式則是完全公開化,將 WebCalendar 視為公開的行程公告網站使用。此時不但所有人都能在網路上查詢到所有事件的規劃行程,甚至還能允許訪客進行新行程的建立。這樣的公開使用方式自然有利有弊,如何取捨則看個人或是團體的使用考量而定。
WebCalendar 也可以設定成行事曆伺服器,並允許大多數的 iCalendar 相容程式進行存取,例如 Mozilla Sunbird、蘋果電腦的 iCal,或是 GNOME 桌面管理程式所內建的 Evolution 等等。如果應用程式有 RSS 讀取功能,也能與 WebCalendar 搭配使用並檢視行事曆的內容。例如 Firefox、Thunderbird 等支援 RSS 讀取功能的應用程式,都可以作為 WebCalendar 存取程式的選擇之一。
WebCalendar 的特色
許多開放原始碼的軟體或是系統都是由外國人所開發,因此不支援多國語系,或是僅支援西歐語系的情況相當常見。但也有不少軟體在開發之初便已經考慮到非英語系國家的使用問題,因此在多國語系的支援方面也會提供較為完善的支援。WebCalendar 在多國語系方面明顯下過一番苦工,支援了大約三十種不同的語言,包含正體中文在內(使用 Big-5 編碼)。由於支援的語言數量相當多,因此即使應用在跨國企業、或是可能會有使用不同語言的訪客前來使用的情況,對於 WebCalendar 而言也不成問題。但較為可惜的是,雖然 WebCalendar 支援正體中文語系,但有為數不少的訊息並未被完整翻譯,因此在操作時經常會看到中英文夾雜的狀況,在語言轉換上稍嫌不便。當然如有需要,系統管理員也可以自行翻譯語系檔,以便將所有訊息中文化,造福對英文有恐懼感的使用者。
在使用 WebCalendar 時,使用者並不需要自行指定系統所使用的語言,因為 WebCalendar 會自動從使用者所使用的瀏覽器進行偵測與判斷,以決定系統所使用的語言。但由於自動偵測並不能保證百分之百正確,因此 WebCalendar 也保留了手動設定語系的功能,可以在讓使用者在系統自動判斷錯誤時進行修正。
允許管理員能將系統設定為多人使用環境的 WebCalendar,自然也支援使用者認證的功能,以確保系統所存放的個人行程資料不會被他人竊取。WebCalendar 支援的使用者認證方式包括網頁對話模式的密碼認證功能,亦支援 HTTP 或是 LDAP 等常見的相關通訊協定。如果系統本身有啟用 NIS 服務,亦可作為使用者身份的認證功能使用。
以網頁方式呈現的 WebCalendar,本身相容於 XTHML 標準,也可以使用 CSS 進行頁面的排版設定。也因為支援 CSS 語法,因此 WebCalendar 也能採用佈景主題的方式修改畫面呈現的方式。系統本身有內建數套不同風格的佈景主題,如果系統管理員熟悉 CSS 語法,自然也能自行建立新的佈景主題。
一般而言行事曆會以全年度、月份、一週,或是日期等不同的時間長度表示方式呈現,WebCalendar 也採用了相同的觀念。在進入系統時預設會以月份的方式顯示行事曆的內容,但只要點選特定的日期,即可切換至以一天為單位的顯示模式,讓使用者可以直接查詢該日期所有預定的行程,或是進行新增、修改等行事曆的編輯動作。切換至年份、星期等不同的顯示模式也是類似的操作方法,在使用上相當直覺而便利。
▲ WebCalendar 可以使用不同時間長度的檢視畫面
WebCalendar 可以設定成多人使用的行事曆系統,因此使用者管理的相關功能也是系統管理功能的一部份。在系統管理畫面中,除了可以針對使用者帳號進行新增、編輯或刪除等基本操作以外,也可以進行事件的編輯或刪除動作。除了管理方面的功能以外,WebCalendar 也提供了檢視他人行事曆的支援功能,讓主管可以得知下屬目前的行程安排,或是提供助理代為安排主管行程的參考依據。除了可以檢視他人的行程以外,使用者也能在自己的行事曆上面直接以階層的方式顯示其他人的行程,因此可以很明確的看出自己與他人在特定時間點的行程是否有衝突,並決定是否需要變更原定計畫的執行時間。
使用 WebCalendar 建立事件或行程時,除了可以使用單一事件的方式以外,也能將事件設定為重覆行程,並定義該事件要多久重覆一次。例如每星期一早上固定會舉行產品進度週會,即可將此事件設定成每週一早上重覆的事件。重覆事件設定後並不代表只能按照原先設定持續進行,如果需要針對重覆事件中的特定一、二個時間點進行修改,也能直接進行編輯或是刪除。以方才的週會事件為例,如果下星期一因為主管出國而無法舉行會議,即可在 WebCalendar 之中將下星期一的週會行程刪除,但仍然保有之後的重覆設定。
▲ WebCalendar 亦提供重覆事件功能
設定事件時,使用者亦可利用自定行程欄位的功能進行特殊欄位的設定。這表示 WebCalendar 允許使用者以較有彈性的方式進行事件的設定或編輯,而不必牽就於系統現有的欄位設定。此外,以往在排定行程時如果沒有事先查詢,很可能會因為該時間點已經有既定行程而與新行程產生衝突現象。但在使用 WebCalendar 的情況下這樣的問題並不會產生,因為 WebCalendar 有自動檢查衝突事件的機制,在設定事件時若與既有行程產生衝突,便會立即告知使用者,以便進行後續調整並避免產生衝突事件。
除了事件設定可以使用自定欄位以外,在系統的偏好設定方面 WebCalendar 也有許多可以讓使用者自行選擇的設定或選項。例如時間採用的格式是 12 小時制或 24 小時制、每週開始的日期是星期日或是星期一,還有顏色的設定等各種不同的設定。此外,如果在使用 WebCalendar 時對於操作功能方面有任何不清楚的地方,亦可隨時使用線上輔助功能進行查詢,以便找到相關功能的解說。線上輔助功能所提供的文件相當完善,基本上已經是一套完整的電子版操作手冊。即使沒有在使用 WebCalendar 時遇到任何問題,亦可開啟此說明文件加以閱讀,以便了解更多關於 WebCalendar 的操作細節。
▲ 線上說明文件相當完整
而在設定的事件時間點即將到來的時候,WebCalendar 也會主動發出提醒訊息,以便讓相關人員可以注意到此事件的來臨,並採取適當的對應動作。WebCalendar 主要是利用電子郵件作為提醒訊息的傳送管道,而且除了可以作為即將發生事件的提醒訊息使用以外,亦可作為提示功能使用。在有人針對事件進行新增、更新,甚至是刪除動作時,都會主動發送電子郵件,以便提早發現不尋常的事件處理過程,並加以進行處理以便避免發生事件遭人任意變更的情況發生。
▲ 可以要求 WebCalendar 在事件發生時間接近時,先傳送電子郵件提醒相關人員。
由於行事曆管理軟體有相當多元化的選擇,大多數人多半都已經有採用相關軟體的經驗,所以如果想要從原先的軟體平台轉換至 WebCalendar,勢必要面臨資料轉換的工作。但這一點對於 WebCalendar 的使用者而言並不會太困難,因為 WebCalendar 本身提供了相當完善的資料匯入匯出功能,可以讓使用者將其他行事曆軟體的事件匯入 WebCalendar,或是在有必要的情況下,將 WebCalendar 的資料匯出至其他行事曆軟體。目前 WebCalendar 主要支援的匯入、匯出格式為 iCalendar 相容的資料格式,例如 Mac OS 上的 iCal、Mozilla Calendar 或 Sunbird 等軟體都是較為著名的 iCalendar 相容軟體。
▲ 資料匯入與匯出功能支援 iCalendar 相容的軟體所產生的檔案格式
結語
行程管理對於現代人而言一點都不陌生,許多人也都有使用相關軟體的經驗,WebCalendar 只是其中一種選擇,至於是否合用,能否取代自己原先所使用的行事曆軟體,則不免見仁見智。有些人願意嘗試各種新軟體,有些人則是使用了某一套軟體之後,便會因為已經習慣其操作介面而不願意輕易更換。這些選擇都是合理的作法,並沒有是非對錯之分。只是如果願意多嘗試一些新軟體,或許還有機會發現更多方便好用的軟體,最後也有可能將原先慣用的軟體棄之一旁也說不定。
至於 WebCalendar 是否適合所有人,這個問題事實上只有在實際使用之後才能得到解答。但這並不代表所有人都需要先行安裝 WebCalendar 才能了解 WebCalendar 的優缺點,因為 WebCalendar 的官方網站早已架設一套展示用的平台,相當適合尚未採用 WebCalendar,但又對 WebCalendar 有興趣的人先行試用。此展示站台的網址為 http://webcalendar.sourceforge.net/demo/login.php ,帳號與密碼都使用「demo」即可登入使用。
[法律專欄] 自由軟體授權分析輔助工具:自動化程式碼掃描系統
葛冬梅/文
為了要解決工作上所需處理的授權分析問題,筆者常會需要了解一個專案究竟利用了哪些自由軟體元件,以及這些元件是採用哪一份自由軟體授權條款?這些工作通常得透過人工進行,也就是請實際開發專案的工程師提供他們的軟體架構圖,並且查詢這些軟體元件適用哪些授權條款,等到取得這些資料後,才有辦法進行後續的授權分析,以研擬授權衝突的解決方案。若涉及的自由軟體元件僅三、四個,那這樣的人工作業尚不困難,但若是牽涉到幾十個自由軟體授權元件,那就得花上好一番的功夫來進行人工作業。因此為了簡便這些授權分析的流程,近年不少團隊就此需求建置了自由軟體程式碼掃描的自動化系統,以掃描軟體專案程式碼的授權方式,並進一步列出報表以顯示該專案裡自由軟體元件的利用情形,以及所使用到自由軟體元件的授權細節。
近半年來,筆者接到的一些諮商問題,不約而同地詢問到哪裡可以找到這樣的掃瞄系統,因此透過本文來介紹幾套這類型的掃瞄系統,提供給想要了解這方面資訊的朋友一個初步的參考(註一)。但由於筆者本身並不具有程式開發的技術背景,因此介紹的內容,將僅就這類系統在授權分析方面的特點加以描述,而不針對技術細節來進行說明。
以下將介紹的三套系統是 FOSSology、Black Duck 與 Palamida(註二),這些系統均可用來查對特定專案中是否包含有自由軟體授權的元件,以及判斷該元件是採用哪一份條款進行授權。這三套系統各具特色、優缺點,也具有各自不同的運作方式或商業模式。
【FOSSology】
FOSSology 初始是由 HP 所研發,原來僅於公司內部使用,後來 HP 將這套系統採GPL2 的方式在 SourceForge 上授權釋出,希望透過社群共工合作的力量,以協助繼續改進、擴展這套系統的精準度及拓展使用範圍。
FOSSology 的原理是:掃描專案檔案中,與授權相關的文字資訊。因此只要一個軟體檔案中包含有自由軟體授權相關的文字,無論是條款名稱、前言、內文或相關說明文字,FOSSology 都可以將這些資料比對出來,並且顯示是哪一份授權條款與版本為何。若所搜尋到的資訊仍不夠完整,它也能就既有的資訊進行比對,顯示相似程度的百分比,以指示這些文字可能指向哪份授權條款。
由於這套系統本身就是自由軟體,因此任何人都可以在網路上自由下載、安裝。此外,OpenFoundry 團隊為這套系統製作了一份 vdi 檔,也可以節省使用者自己下載、安裝的時間。
(1) 自行下載與安裝
您可以自行到 FOSSology 的專案網頁下載FOSSology,然後安裝、使用。相關說明資訊也可參考該專案網頁:
http://fossology.org/download
(2) 利用現成的 vdi 檔
OpenFoundry製作的 vdi 檔,內存一個虛擬的 Ubuntu Linux 作業系統,而 FOSSology 已經被預先安裝好在這個作業系統上。您只要在自己的電腦中安裝 VirtualBox(註三)這個跨平台的虛擬作業系統,將 OpenFoundry 所製作的 vdi 檔掛載上去,然後依照操作步驟的說明,就可以使用這個虛擬作業系統裡的 FOSSology 來掃描個別專案原始碼的授權狀態。這個 vdi 檔與相關說明文件您可以到下列網頁下載:
http://www.openfoundry.org/of/projects/1342/download
FOSSology 是掃描原始碼檔案中授權相關的文字資訊,因此若檔案中本來就沒有授權相關文字的話,這套系統便無法辨識出這個軟體是否有利用到自由軟體的程式碼。不過 FOSSology 具有免費、開放的特性,無論是原始碼或內容資料,任何有興趣的朋友都可以自由取得並加以研究、改良。此外,它所佔的儲放空間及所需的運算資源不大,可以被完整安裝在一般個人電腦中使用,十分方便,這些是以下兩套商業系統所沒有的優點。
另外值得一提的是,HP 公司在釋出這套系統的同時,也成立了另外一個姊妹網站 FOSSBazaar(註四),FOSSBazaar 上有許多與自由軟體相關的開發管理、產品生命周期的參考資訊,也設有討論區供大家提問、討論,若使用者在透過 FOSSology 發現授權衝突之後,便可以到 FOSSBazaar 上找尋相關資訊以進一步解決問題。
【Black Duck】
Black Duck 是一家專門提供自由軟體授權分析相關服務的美國公司,該公司建立龐大的原始碼分析比對資料庫,裡面儲存著從各知名網路站台所蒐集到的自由軟體授權原始碼與其授權資訊,Black Duck 掃描客戶所提供的產品原始碼,然後與資料庫裡的自由軟體原始碼進行指紋式(Fingerprint)的近似性比對,再將這些資訊輸出為報表,讓客戶得知產品專案裡包含有哪些自由軟體授權的元件及其授權狀態,以讓客戶進一步研究分析這些元件間是否會產生授權衝突。此外,Black Duck 也協助客戶將這樣的掃描系統,在產品開發初期時便先導入其管理流程。
由於 Black Duck的系統是採用原始碼比對的方式,而全球自由軟體原始碼資料的儲存數量龐大,因此掃描比對過程較為耗時。另外,若產品的元件採用了較為複雜的授權模式,也很容易導致這套系統產生的判斷有所誤差,例如:有的自由軟體元件兼採 GPL 與商業授權的雙重授權模式,或者如同 Mozilla Firefox 特有的三重授權模式,當這些元件是採取多重授權的模式釋出程式碼時,僅靠 Black Duck 的自動化分析機制,所得到的授權列表便不會百分之百精確,該專案元件的授權狀態在最後確認前,還是需要以人工分析的方式,一項項確認特定元件究竟是以多重授權中的哪一重授權方式取得。此外,由於 Black Duck運作的是商業性的收費方式,使用者必須付費來取得這些分析服務,而就筆者所知,此套服務所費不貲,若是預算不多的話,所購買到的服務將十分有限(註五)。
【Palamida】
Palamida 也是一家提供商業服務的美國公司,專門針對自由軟體商用專案提供自由軟體授權分析的服務,該公司亦有一套類似 Black Duck 的資料庫系統可以掃描、比對自由軟體檔案的授權狀態。Palamida 的系統一樣會掃描客戶的產品檔案後提供分析列表,告知客戶該產品中有哪些自由軟體授權的元件與可能衍生的授權問題,不過在遭遇授權狀態複雜的專案,Palamida 一樣可能會有結果誤差的現象。而在掃描完畢之後,Palamida 側重在提供後續的風險管理諮詢服務,該公司並與美國紐約州一家專門針對自由軟體商用侵權風險提供服務的公司 OSRM(註六)合作,Palamida 在掃描產品元件的授權狀態之後,會視分析結果推薦客戶購買 OSRM 分級式的自由軟體風險保單,若日後發生自由軟體侵權爭訟的時候,販售該產品的公司便可以透過保險金來彌補公司未來可能產生的金錢損失。
【系統不同、優缺點各異】
以上三套系統,有著不同的優缺點: FOSSology 免費、輕巧、忠實呈現原始檔案中的授權資訊,卻無法判斷未在檔頭(Header file)及目錄下預置授權資訊的軟體元件;Black Duck 號稱資料庫龐大、程式碼方面的儲存資訊最為完整,但掃描結果卻仍會發生略有誤差的狀況;Palamida 雖然有著配套的風險承保措施,卻一樣也有風險評估失準的問題。因此採用哪一套系統,必須要看使用者的個別狀況而定。在個人或小型專案的話,筆者推薦採用 FOSSology,而若是商業公司的大型軟體專案,在預算充足、願意以金錢換取時間的前提下,購買商業性質的自動化掃描服務,也是一條可以考慮的途徑。
【妥善處理問題是最終目的】
看到這裡,您可能也有發現,這些系統的開發者並非僅單純地提供系統式自動化掃描的服務,連帶亦會提供相關的授權參考資訊或中階的諮詢服務,那是因為自動化系統雖然可以替代人工比對,告訴使用者一個軟體專案裡面是否有利用到自由軟體元件,以及涉及到哪些授權條款,但是這些掃描結果往往只能夠協助使用者呈現問題,卻不能直接告訴使用者應該如何解決問題。
所以、若是要這些商用專案的元件授權狀態得到妥善的處理,最後的解決方案還是需要回歸到人腦進行個案分析。因此使用者可以至 FOSSology 配套的 FOSSBazaar 網站上,尋找相關資訊、到討論區與人討論如何解決授權問題,或者直接利用商業性服務的 Black Duck 與 Palamida 所提供的中階諮詢服務。不過由於這些網站資訊與諮詢服務的內容幾乎都是偏向軟體開發、專案鑑價或生命周期等管理面向,只能解決複雜度較低的授權問題,例如:另外尋找授權拘束程度較低的其他自由軟體元件,以置換掉目前較易產生授權衝突的程式碼。
而若問題複雜度高且與授權條款內容密切相關的話,那就不是單純依靠管理資訊或中階諮詢服務可以解決的。例如:系統掃描結果顯示,一個專案利用到多份性質相異的自由軟體授權元件,這些授權條款之間有的相互衝突、有的可以相容並存,若要整體解決授權衝突的話,會涉及到許多牽一髮而動全身的連帶問題,包括:衝突的授權條款應該如何解釋?根據這些解釋,有哪幾種置換程式碼的模式?置換的同時有哪些其他部份會受到影響?由於這些問題偏向高度複雜而需要精密的處理,若非尋求授權方面的專家協助,往往不易擬定出妥善的解決方案。
因此若是想要利用這些系統來掃描程式碼,除了必須考慮自身狀況以選擇適合的系統外,還必須了解到自動化的掃描系統並非是解決問題時百試百靈的靈丹妙藥,掃描系統目前較近似於授權分析時所能使用的輔助工具,它能夠協助分析者更快了解授權衝突的徵結點所在,但若要根本性的解決問題,還是需要加入人腦的思考與策略分析。而若真正遭遇複雜的授權問題時,還是必須要尋求授權專家的建議,如此才是妥善解決自由軟體授權爭議及維繫專案授權調和性的根本之道。
註一:除了本文所提及的三套系統之外,還有其他具有類似功能的系統,例如:Source Auditor(http://www.sourceauditor.com/)、Open Source License Checker(https://wiki.ow2.org/oslcv3/)、OSS Discovery(http://ossdiscovery.sourceforge.net/)與 Binary Analysis Tool (http://www.binaryanalysis.org/en/home)等。不過由於筆者涉獵有限,因此本文僅介紹較為熟悉的三套系統。
註二:這三套系統的入口網址如右,FOSSology:http://fossology.org/ ;Black Duck:http://www.blackducksoftware.com/;Palamida:http://www.palamida.com/。
註三:VirtualBox 是跨平台的軟體,可以在 Linux、Open Solaris、BSD,甚至是 Windows 作業系統上執行。您可以到下面網址下載 VirtualBox 來安裝使用:http://www.virtualbox.org/wiki/Downloads。
註四:FOSSBazaar:https://fossbazaar.org/。
註五:目前 Black Duck 在台灣有兩家代理公司,分別為鈦智科技(http://www.adnetwork.com.tw/pro-blackduck-cn.htm)與倚碩科技(http://www.esoft.com.tw/blackduck.php)。
註六:Open Source Risk Management,OSRM。OSRM 與 Palamida 的合作說明:http://www.osriskmanagement.com/partners.html;OSRM 風險保單的頁面:http://www.osriskmanagement.com/insurance.html。