開源/自由項目 大歷史

下載地址:http://code.google.com/p/hofp/

 

 

 

開源/自由項目

大歷史

 

The History of

Open Source/Free Soft Project

 

 


序:這個文檔有意義嗎?

我最近常想,我都碩士了,做這些“低級”的文字整理工作,有意義嗎?經過一個星期業餘時間的勞動,我還是感覺,做這個基礎工作還是有收穫的,起碼,在我看大量相關英文網站的過程中(好多信息需要查看相關項目的英文網站),我學習到了不少新東西……

我應該看哪個版本?

版本號最後一位是偶數的爲穩定版本,如hofp_0.2.doc0.40.6…..(爲了能讓更多的人看到這一成果,這裏還是使用了“討厭”的word)您可以盡情的享受別人的勞動果實:)

如果要發表自己的建議或者爲此文檔做貢獻,看版本號最後一位是奇數的吧,盡情的發揮你的智慧,相信會有很多人感激你的……

文檔的目的?

在工作和學習中,我們經常會遇見新的知識,快速而準確的瞭解其歷史無疑是必要的。這個問題常常困擾着我,很難找到一個比較好的方法。一般,我都是蒐集一些相關資料放在指定的文件夾中,而不是花時間去整理,導致一段時間過後,面隊一大堆原材料,又會迷茫。最近突然想到,網絡上高手一定很多,大家只有花一點力氣,把自己熟悉的東西整理出來,放在一起,就會有很好的效果,也可以節省很多人包括自己的寶貴時間,不知道有沒有象我這樣的人……

文檔的格式?

這裏給出了一個具體的例子,在沒有更好的格式之前(當然,大家可以討論更好的格式),希望大家就按照這個格式來添加自己的文章,不知道會不會有人肯“浪費”自己的寶貴時間……

文檔的質量如何保證?

爲了保證文檔的質量,當然不可能每個人添加的文字都可以比較“漂亮”,當一個人添加了新東西的時候,大家可以在網絡上寫上自己的評語,並做相應的修改,上傳到這裏,繼續接受其他人的“批評”與“羨慕”,如此反覆,文檔的質量就可以儘可能的保證。爲此,每隔一段時間,我就會選取一些令大家滿意的文章,彙集在一起,以便讓更多的人可以享受到我們的成果。

如何“加磚添瓦”?

2分鐘,看看摸板,你就會明白了。


項目名稱(如:Tcl/Tk

進度聲明

說明自己還有那些部分沒有寫完或需要獲得別人的幫助

版權聲明

文章中引用別人的勞動成果,在這裏說明一下

開源協議

該項目所遵循的開源協議類型

XXXX發展史

該項目的發展歷史

最新動態

該項目有什麼引人注目的新動向

相關項目簡介

和該項目有緊密聯繫的項目

項目發起人及管理簡介

該項目的發起人及簡介

參考文獻

文中所利用的資料

作者簡介

簡單的向大家介紹一下自己吧,別忘了留個聯繫方式喲!



 

Tcl/Tk

進度聲明

我所知道的就這麼多了,大家可以盡情的批評了!感覺“最新動態”一節還需要進一步完善。

版權聲明

Tcl/Tk發展史一節的譯文參考了網絡上的一篇譯文,原譯者爲sunny_ring(未做確認,不過,無論如何都要感謝原來的譯者),不過這裏給出的譯文和原譯文還是有很大的出入,包括一些關鍵詞語和一些語句的翻譯,如果有什麼出入,請及時聯繫我

概述

Tcl 是一種簡單易學但功能強大的語言。它的語法可以用僅僅一打規則就可以描述清楚,但它具備了在應用的幾乎任何領域進行快速創建實用程序所有必須的特徵,並且這些應用可以基於廣泛使用的國際化平臺。

Tk 是爲Tcl 開發的一個圖形工具包(graphical toolkit)。你可以使用它開發運行在WindwosLinuxMacOSX和其它許多平臺的圖形應用程序。

無論你是出色的hacker、應用程序、系統管理員還是科研工作者,或者僅僅是學生,你都可以使用Tcl

目前,應用Tcl比較成功的公司包括BitMoverTiVo Inc.MotoralaIBMOracle等。具體可以參考:http://www.tcl.tk/about/audience.html

開源協議

I Have To Give Away My Tcl Programs?

Programs you write in Tcl are your intellectual property, and you may sell, license, or give them away as you want. Most Tcl programs are distributed in source-code form, but there are source filters and other tools to render your program unreadable by the casual pirate.

On the other hand, be certain that you check the license of any extensions, tools, or distributions that you use during development. Just because Tcl and Tk are free doesn't mean that everything in the community is free.

 

在網上沒有找到Tcl/Tk具體遵循的協議,不過在這裏(即上面的原文)也可以找到一些論述。Tcl/Tk是免費的,但不是說在該社區裏什麼都是免費的。你用Tcl編寫的程序屬於你的智力產品,你可以銷、許可(license)或者放棄它們。許多Tcl程序是以開放源代碼的形式發佈的,但是存在源碼過濾器和其它一些工具,在沒有獲得授權的情況下,它們可以令你的程序不可讀。

 

Tcl/Tk發展史

John K. OusterhoutTcl/Tk的開創人)曾在網上寫了一篇名爲《HISTORY OF TCL》的文章,原文詳見附件,全文如下:

 

人們常常問我這樣的問題,設計Tcl的靈感是什麼,爲什麼它會變得這麼受歡迎。本文將重溫一下當年產生設計TclTk的想法,回顧TclTk在過去十年間發展的過程,以及我從伯克利到sunscriptics的人生經歷。你將看到,起初Tcl是很簡陋的;這個系統的成功令我很喫驚,其實我也是通過回顧它的歷史纔開始明白Tcl流行的原因是什麼。

 Tcl的誕生

 Tcl腳本語言誕生於我的集成電路設計工具項目,當時我在加州大學伯克利分校,時間是80年代初。我和我的學生已經爲IC設計寫了幾個交互工具,如MagicCrystal。每個工具都需要一個命令語言(在那個年代,人們需要鍵入命令才能使用這些工具;圖形用戶界面還沒有被廣泛的使用)。不過,我們的興趣重點是工具而不是它們的命令語言,所以我們沒有在命令語言上投入太多的精力,結果最終語言方面變得很薄弱。更糟的是,每個工具的語言之間是互不相通的,以至於每個工具最終都伴隨着一個糟糕的命令語言。一段時間後,情況變得更糟。

1987年秋,在DEC西部研究室的週期性休息日中,我有了設計一種嵌入式命令語言的想法。這個想法就是花費額外的精力去創建一種優秀的解釋型語言,然後進一步把它做成一個能夠在許多不同的應用程序中可重複利用的庫包(library package)。語言的解釋器要提供一系列相對通用的工具,如變量,控制結構,過程。每個使用這個語言的程序都可以以擴展的形式把自己的特性加到該語言中,達到用該語言控制程序的目的。TclTool Command Language)這個名字就源自這種需求。

可嵌入性是Tcl的特色之一,爲了實現這個想法,我準備在以下三個方面進行着手:

l         這個語言必須是可擴展的:它應該能夠讓每個應用程序可以很方便的把自己的特色加到語言的基本功能中,並且這種具體的應用程序的特色要看起來非常自然,就好像一開始這些特色就被設計到了這個語言中。

l         這個語言必須非常的簡單通用,能很方便的與許多不同的應用程序配合工作,並且不會限制應用程序所能提供的功能。

l         由於大部分出色的功能都來自於應用程序,所以這個語言的首要目的就是將擴展部件集成或膠合在一起。因此這種語言必須要有很好的集成特性。

1988年初,假期一結束,我開始研究Tcl1988年春天的時候,我開始在一個圖形化的文本編輯器中使用第一版的Tcl。那時我已經暫停了IC設計工具的研究工作,所以有關Tcl的實驗大部分還在理論研究階段:我當時認爲除了我,沒有人會對一種嵌入式命令語言感興趣。

 Tk的誕生

 那時,我的另一個愛好就是圖形用戶界面。80年代圖形用戶界面逐漸流行的時候,我注意到交互式軟件的複雜性正在迅速的增長。最有趣的是新的開發似乎需要鉅額投資的大型工程項目的支持。作爲一名只具有有限資源的教授,這令我擔心:象我的研究小組一樣的小團隊是不是不再可能構建出創新型交互系統?

我得出的結論是,我們的唯一希望就是減少創建大型系統時除可重用組件以外的部分對資源的需求。如果一個系統的複雜性大部分在組件裏,並且我們可以在系統間進行移植,也許我們就可以以小團隊的規模來創建強大的系統。這要求花費很多精力去開發這些組件,但是,經過一段時間這項工作是可以逐漸完成的,或許幾個小團隊一起合作完成。

我同時深信,對集成這些組件而言,除非有一種強大並具有彈性的機制,否則,基於組件的設計不會成功。這些想法在我一開始考慮做Tcl的時候就產生了,我覺得像Tcl這樣的嵌入式命令語言作爲腳本語言對集成組件也會有用。我決定創建一個GUI組件集合作爲對Tcl的擴展並且使用Tcl把這些組件集成到圖形用戶界面,從而來驗證我的這個理論。這個擴展就成爲了Tk

1988年末纔開始做Tk,這只是一個兼職的項目,所以花費了大概兩年的時間才使Tk具有了足夠的實用功能。

 發佈初期

 我已經記不清把Tcl介紹給大家的確切時間了。截止到1989年,我已經在幾個工程中使用了Tcl,我記得我在伯克利工業聯絡會議(Berkeley Industrial Liaison Conference)期間做了一個關於Tcl的報告,那時,幾百位來自工業界的人士來到伯克利聽我們系的研究成果。,我又在對Tcl感興趣的幾家公司做了相關的Tcl報告來招待他們,在這幾次報告中,一些人詢問了他們是否可以得到Tcl的拷貝。無論如何,我在1989年把幾份拷貝給了最早的好奇者。

19901月,我在USENIX會議上宣讀了一篇關於Tcl的論文。參會的有幾百人,並且他們對Tcl產生了濃厚的興趣,許多人開始向我要Tcl的拷貝。大約在那個時候,我決定在伯克利的FTP站點上免費發放Tcl的源代碼。從此,通過因特網,Tcl的用戶開始與日俱增。

出席USENIX會議的其中一個人是國家標準和技術協會的Don Libes。一段時間以來Don想編寫一個程序,這個程序能夠自動的操作交互的UNIX應用程序,但這需要一種優秀的命令語言,而Don沒有時間自己編寫這樣的一個語言,於是這個項目只能擱置在一邊。聽了我的演講後,Don立即跑回家,下載了Tcl,編寫了一個叫做Expect的非常優秀的程序,並且趕在下一次USENIX會議提交論文的最後期限之前完成了一篇關於它的論文。整個過程只用了三個星期。Don1990年夏發表了他的論文之後,把Expect免費的提供給人們使用,於是在系統管理員界立即引起了一場不小的震動。Expect不僅是第一個廣泛發佈的Tcl應用程序,而且多年來一直也是最流行的。許多早期的Tcl用戶都是通過使用Expect來學習Tcl

1990年末,可以使用Tk的基本功,19911月,我同時在USENIX會議和X大會上發表了一篇關於Tk的論文。這兩次會議期間的幾個星期中,我發佈了Tk的第一個網絡版本。Tk的第一版缺少許多重要的組件(比如,沒有多行文本框組件),不過到了1992年夏天的時候,我就把文本框組件和一個強大的畫布組件加了進去。這時Tk的用戶開始迅速增長。

 開始流行

 Tcl/Tk的用戶在90年代初每年都在迅速增加,從1989年的幾個使用者到1993年的幾萬使用者。這種迅速增長的原因主要有兩個方面。

Tcl/Tk使用者增加的第一個原因是:它提供了最簡單的在UNIX(那時Tcl只能在UNIX系統下運行)下開發圖形用戶界面的方法。TkGUI工具既簡單又強大;可以完全由Tcl而不用寫一句C代碼來編寫感興趣的應用程序。換成基於C的工具來開發比如Motif工具包則要變得複雜得多,而且功能也比較少。人們很快就認識到,用Tcl來開發GUI比用Motif可以少投入510倍的精力。這也證明了在工業界有許多人和我一樣很關心開發交互式應用程序的高開支問題。

Tcl流行的第二個原因是它的可嵌入特性。在我開始做Tcl的時候,我猜想除了我沒有人會關心可嵌入式的命令語言,但是我錯了。包括Don Libes在內的許多人都想要編寫腳本式的可擴展的應用程序,但卻沒有時間自己來創建這麼一種語言。正因爲可嵌入式的特性,Tcl爲他們提供了一個完美的解決方案。因而,Tcl最終被廣泛的用於股票交易,科學觀測,生產自動化等許多領域。

Tcl用戶社區每一兩年都會有對TclTk的使用的討論。許多Tcl的使用者認爲Tk是他們使用Tcl的唯一原因。他們中的一些甚至不喜歡Tcl語言,而希望Tk能夠和其他的腳本語言結合。(實際上,已經有人這麼做了,如TkperlPython)。而另一部分人認爲Tcl正是他們的需求所在,他們把它作爲可嵌入式的腳本語言來使用,並且正是因爲能夠達到這個目的才讓他們喜歡上了這個語言的小道具(afreez注:指Tk)。從某種意義上說,這兩部分人都沒錯。

 Tcl社區

 90年代初隨着Tcl使用者的增加,人們在網上建立了一個關於這門語言的社區,目的是讓大家發佈功能強大的擴展和爲新的用戶提供幫助。Mark DiekhansKarl Lehenbauer是早期開創者中的兩位。他們編寫了Tclx,最早免費可用的Tcl擴展之一。Tclx提供了對文件的訪問,時間和日期控制,以及許多其它有用的功能。隨着時間的推移,Tclx的功能被證明是非常重要的,以至於其中的許多功能已經被整合到了Tcl的基本功能中。

許多早期的Tcl倡導者編寫了高質量的擴展並使這些擴展能夠免費的使用。比如Michael Mclennan編寫的[incr Tcl],一種在Tcl內部提供面向對象編程的擴展。George Howlett編寫的BLT,爲Tk加進了幾個重要的組件。Tom Poindexter編寫的SybtclOratcl,提供了對主流數據庫的訪問。Brian SmithLary Rowe編寫的TclDP,提供了Socket訪問及一些分佈式編程特性。還有許多貢獻者我已經記不太清了,在此我只能表示歉意。

社區中其它的論壇在這個時期也在發展。我起初爲社區中的用戶建立了一個郵件列表,但是短短几年裏,這個列表變得相當冗長,以至於後來無法控制。在Tcl社區的幫助下,我們建立了comp.lang.tcl新聞組來代替原來的郵件列表;從此,它就成爲了信息交流和討論Tcl新功能的絕佳論壇。

1993Larry Rowe意識到社區中的人們需要面對面的交流,於是他在伯克利組織了第一屆Tcl專題討論會。大約有60人蔘加,由於這次大會開得非常成功,所以成爲了年會。1995年,USENIX協會開始對這個討論會進行資助;從此,它就變爲了一個有幾百人參加的,發表大量論文、教程,開展衆多活動的全方位的大會。Tcl大會也是世界上最大的參加者上身着裝統一的大會之一,每年要分發5-10種不同設計圖案的T-shirt來區別不同的擴展和活動等。

在這段時間裏,我大約每610個月發佈一次Tcl/Tk的新版本。大部分新的功能都是採用的Tcl社區的建議;有時,使用者甚至直接給我提供新功能的原型代碼(prototype code),然後,我再把它集成到核心軟件中。典型的新版本發佈流程是,開始大家開始討論一段時間,同時我提供一份新功能的候選列表,然後在社區中由大家投票選出他們認爲最重要的功能。我儘可能優先考慮得票最多的功能。

 Ouster-投票

 後來Tcl的發佈週期就慢慢趨向於和Tcl大會保持一致。新版本發佈的時間大概和大會的時間相當,大會上我會利用一個專門的議程去討論下一個版本的新特徵並取得反饋信息。我經常讓與會者即興的舉手表決,統計一下聽衆對一些問題的想法,然後對舉手的人數做個大概的統計(“102030,看起來我大約得了35)。這些票數被大家稱之爲“ouster-投票”,得票數的正確性也常常被大家討論的話題。一些愛說笑的人也含沙射影說我這個投票方法也不怎麼太客觀….

 sun公司的日子

 1994年我決定離開伯克利投身工業界。過去我就一直想在工業界做兼職工作,在學術界幹了14年,現在我看時機已經成熟了。在考慮了多方面的因素後,我決定接受sun公司的邀請。Eric Schmidtsun公司的首席技術官,和Bert Sutherlandsun實驗室的領導者,給我提供了一個機會,在sun實驗室創立一個小組,將Tcl開發成因特網上通用的腳本語言。

我一直覺得Tcl最終需要進行商業贏利才能在長遠的開發中生存下來,sun公司爲Tcl向更高性能的發展提供了很好的機會。

我在19945月加入sun公司,然後組建了一個Tcl開發小組。在以後的3年裏,sunTcl小組成員發展到了12人。以前基本上Tcl/tk的每一行代碼都有我親自來編寫,但是從那以後,編寫Tcl代碼的工作就移交給Tcl小組的其他成員來完成了。

Sun公司提供的許多幫助使我們對Tcl/Tk的性能進行了大規模的提升。Scott Stanton Ray JohnsonTcl/Tk移植到了WindowsMacintosh,於是Tcl就成了一個出色的跨平臺的開發環境;當前,超過2/3下載Tcl的用戶是用於Windows開發。Jacob LevyScott Stanton仔細測試了輸入輸出系統並加進了對Socket的支持,於是Tcl可以被廣泛的用於網絡應用程序。Brian LewisTcl腳本創建了一個字節碼(bytecode)編譯器,這使它的運行速度提升了10倍。Jacob Levy開發了Safe-Tcl,一個強大的安全模型,使非信任的腳本能更安全的執行。Jacob LevyLaurent Demailly創建了一個Tcl插件,使Tcl腳本可以在web瀏覽器中運行,我們創建了JaclTclBlend,使TclJava可以緊密的工作在一起。我們還進行了一些小的改進,如動態加載,名稱空間,時間和日期支持,二進制I/O,額外的文件操作命令,和一個改進的字體機制。

當我加盟sun後,許多人擔心Tcl是否會變成一個私有的語言,當時在comp.lang.tcl上出現了許多熱烈的討論。幸運的是,sun公司同意在源代碼論壇中繼續發放Tcl/Tk的核心代碼庫,並且sun一直信守諾言。隨着性能不斷提升的新版本的出現,事實證明,SunTcl的支持是不容質疑的,它使得比該語言的發展速度超過以前任何時候。起初那些擔心逐漸被開發新功能的熱情所代替。

這些年,Tcl的使用者繼續地爆炸式增長。到1997年已經有了數十萬的Tcl開發者;sun公司的FTP站點的Tcl下載率由1995年底的2000人每星期上升到1998年初的超過10000人每星期。很明顯,Tcl對我是一個巨大的商業機會。Tcl開放源代碼的發展滿足不了Tcl社區中的許多要求。比如,幾乎沒有開發Tcl的工具,像培訓和技術支持這樣的專業服務也僅僅是零散進行的。許多重要的擴展,如對ActiveXCORBA的支持還沒有編寫出來。

 Scripticsafreez注:公司的名字)

 1997年底,爲了更好的發展Tcl,我決定離開sun創建一個完全關注於Tcl的公司。19981月,我和Sarah Daniels創建了Scriptics(即今天的 Tcl),由Sarah負責市場和營銷。一個月內,sun公司Tcl小組的約一半成員都跳槽加入了我們公司,我們開始開發TclPro,一套包括我們最初產品的開發工具。TclPro 1.0 19989月完成。它在市場上的成功爲公司的發展注入了強大的動力。

Scriptics已經取代了sun公司在開發Tcl核心工具上的角色,並且它將繼續像sun公司那樣免費的發佈它。1998年,ScripticsTcl8.0做了一些改進,修復了一些錯誤並加進了一些小的功能,比如可以更好的支持[Incr Tcl]擴展。19994月,Tcl發佈了第一個最重要的開放源碼的版本,Tcl/Tk8.1。這個版本加進了對Unicode的支持(國際化),線性安全(用於多線程服務程序)和一個由Henry Spencer開發的全新的規則表達式包,該包包含了許多新的特性,也支持UnicodeTcl成爲第一個滿足企業中關鍵程序各方面要求的腳本語言。

Tcl:獲過大獎的軟件

  1998年春, 我聽到了令人振奮的消息,Tcl獲得了兩項大獎。一個是ACM軟件系統大獎,獎給每年的具有長遠影響的軟件系統。以往這個獎項的獲得者包括許多重要的系統如TCP/IP協議,第一個線性表,第一個電子製表軟件,第一個關係數據庫,萬維網,Unix系統,PostScriptSmalltalk。另一個是USENIX軟件工具用戶組織(STUG)大獎,這個獎項獎給年度優秀的軟件工具。

Tcl核心團隊的成立

 這一部分由Jeff Hobbs和其他人添加

 Scriptics20005月更名爲Ajuba解決方案(Ajuba Solutions),反映了公司的發展重點放在了一系列的基於TclXML技術。Ajuba創建了基於Tcl的企業版的XML類服務器軟件,從這個方面來說,由於Tcl的成功,Ajuba也成爲了犧牲品,之所以這麼說是因爲這個原因,後來它被Interwoven200010月收購。不過Interwoven對開放源碼的軟件不感興趣,他們只關注XML和服務器技術。

2000年的七月到十月期間,核心開發的“所屬權”發生了轉變,它從一個單獨的組織中脫離出來,屬於了一個廣泛的團隊而不再屬於任何一個單獨的組織,並被廣爲傳播。Tcl核心團隊(Tcl Core Team)成立了,並建立了它的基本運行程序。

有關Tcl的教程也得益於包含它的許多公司。一個典型的例子就是,Jeff Hobbs,前Tcl Scriptics/Tcl的代理人,跳槽到ActiveState(以發佈Perl的產品和開發聞名)來領導他們的Tcl技術部,他的工作不僅在開源Tcl核心上,而且也推進了許多由Scriptics開創的商業開發工具的發展。

  

最新動態

Tcl/Tk核心由Tcl核心團隊(Tcl Core Team)和核心維護人(Core Maintainers)來管理。

具體的技術方面的動態,由於本人工作範圍有限,未能做深入的研究,希望高手來完成這部分!

相關項目簡介

下面是有關Tcl的一些項目連接,你也可以在SourceForge的主機上了看到它們:

 

    exmh:

Project Home

Bug Database

CVSWeb

Files

    expect:

Project Home

Bug Database

CVSWeb

Files

    incrtcl:

Project Home

Bug Database

CVSWeb

Files

    oratcl:

Project Home

Bug Database

CVSWeb

Files

    sybtcl:

Project Home

Bug Database

CVSWeb

Files

    tclhttpd:

Project Home

Bug Database

CVSWeb

Files

    tcljava:

Project Home

Bug Database

CVSWeb

Files

    tcllib:

Project Home

Bug Database

CVSWeb

Files

    tclodbc:

Project Home

Bug Database

CVSWeb

Files

    tclplugin:

Project Home

Bug Database

CVSWeb

Files

    tclpro:

Project Home

Bug Database

CVSWeb

Files

    tclx:

Project Home

Bug Database

CVSWeb

Files

    tclxml:

Project Home

Bug Database

CVSWeb

Files

    tkcon:

Project Home

Bug Database

CVSWeb

Files

    tktable:

Project Home

Bug Database

CVSWeb

Files

 

項目發起人及管理簡介

Tcl/Tk的開創人爲John K. Ousterhout,具體的可以參考Tcl/Tk一節。

Tcl/Tk核心由Tcl核心團隊(Tcl Core Team)和核心維護人(Core Maintainers)來管理。

 

參考文獻

1.  http://wiki.tcl.tk/

作者簡介

網名:afreez 曾用名:聶飛

嵌入式開發工程師 工作平臺主要是LinuxOpenSource/Free Soft的迷戀者……

附錄

附錄一:HISTORY OF TCL

by John Ousterhout

People often ask me how I got the idea for Tcl and why it became so popular. In this page I've attempted to reconstruct the thought processes that led to Tcl and Tk and trace the evolution of Tcl and Tk over the last decade along with my path from Berkeley to Sun to Scriptics. As you will see, Tcl's beginnings were very modest; the success of the system was quite a surprise to me, and it's only in retrospect that I've begun to understand the reasons for Tcl's popularity.

The birth of Tcl

The Tcl scripting language grew out of my work on design tools for integrated circuits at the University of California at Berkeley in the early 1980's. My students and I had written several interactive tools for IC design, such as Magic and Crystal. Each tool needed to have a command language (in those days people tended to invoke tools by typing commands; graphical user interfaces weren't yet in widespread use). However, our primary interest was in the tools, not their command languages. Thus we didn't invest much effort in the command languages and the languages ended up being weak and quirky. Furthermore, the language for one tool couldn't be carried over to the next, so each tool ended up with a different bad command language. After a while this became rather embarrassing.

In the fall of 1987, while on sabbatical at DEC's Western Research Laboratory, I got the idea of building an embeddable command language. The idea was to spend extra effort to create a good interpreted language, and furthermore to build it as a library package that could be reused in many different applications. The language interpreter would provide a set of relatively generic facilities, such as variables, control structures, and procedures. Each application that used the language would add its own features into the language as extensions, so that the language could be used to control the application. The name Tcl (Tool Command Language) derived from this intended usage.

The notion of embeddability is one of the most unique aspects of Tcl, and it led me to the following three overall goals for the language:

  • The language must be extensible: it must be very easy for each application to add its own features to the basic features of the language, and the application-specific features should appear natural, as if they had been designed into the language from the start.

  • The language must be very simple and generic, so that it can work easily with many different applications and so that it doesn't restrict the features that applications can provide.

  • Since most of the interesting functionality will come from the application, the primary purpose of the language is to integrate or "glue together" the extensions. Thus the language must have good facilities for integration.

I started work on Tcl when I returned from my sabbatical early in 1988, and I began using the first version of Tcl in a graphical text editor in the spring of 1988. By this time I had stopped working on IC design tools in my research, so the experiments with Tcl were mostly academic: I didn't think that anyone besides myself would be interested in an embeddable command language.

The birth of Tk

One of my other interests at that time was graphical user interfaces. As GUIs became more and more popular in the 1980s I had noticed that the complexity of interactive software was rising rapidly. The most interesting new developments seemed to require large projects with enormous investments. As a professor with modest resources, this worried me: would it become impossible for small teams like my research groups to build innovative interactive systems?

I concluded that the only hope for us was to reduce the resource requirements by building large systems out of reusable components. If most of the complexity of a system was in the components, and if we could carry the components forward from system to system, perhaps we could build large powerful systems with small teams. It would take quite a bit of work to develop the components, but this could be done gradually over time, perhaps by several smaller groups working together.

I also reasoned that component-based design would not work unless there was a powerful and flexible mechanism for integrating the components. These thoughts occurred shortly after I had begun thinking about Tcl, and it occurred to me that an embeddable command language such as Tcl might also be useful as a scripting language for integrating components. I decided to test this theory by creating a set of GUI components as a Tcl extension and using Tcl to assemble the components into graphical user interfaces. This extension became Tk.

I began work on Tk in late 1988, but it was a part-time project, so it took about two years before there was enough functionality for Tk to be useful.

Early distributions

I no longer remember exactly when I began giving Tcl away to other people. By 1989 I was using Tcl in a couple of projects, and I believe that I gave a talk on Tcl during the Berkeley Industrial Liaison Conference, where several hundred people from industry came to Berkeley to hear about research in our department. I believe that this led to invitations to give talks on Tcl at a few interested companies, and that some of the people at those talks asked if they could have copies of Tcl. In any case, I gave away a few copies of Tcl to early adopters in 1989.

In January of 1990 I presented a paper on Tcl at the USENIX Conference. The talk was attended by several hundred people and generated enough interest that many people began asking me for copies of Tcl. Around this time I decided to make the Tcl source code freely available on our FTP site at Berkeley. Once that happened, Tcl usage began to spread by word of mouth over the Internet.

One of the people at the USENIX presentation was Don Libes of the National Institute of Standards and Technology. Don had been wanting for some time to build a program to automate interactive Unix applications, but the project had stalled because it needed a good command language and Don didn't have the time to build one. After hearing my talk, Don rushed home, downloaded Tcl, built a wonderful application called Expect, and wrote a paper on it in time for the submission deadline for the next USENIX Conference. This whole process took just three weeks. Don made Expect freely available after presenting his paper in the summer of 1990, and it became an instant hit among system administrators. Expect was not only the first widely distributed Tcl application, but for many years it was the most popular. Many of the early Tcl users learned about it by using Expect.

The basic features of Tk became usable late in 1990, and I presented a paper on Tk at both the USENIX Conference and the X Conference in January 1991. Within a few weeks of these conferences I made the first Internet release of Tk. The first version of Tk lacked several important widgets (e.g., it had no multi-line text widget), but by the summer of 1992 I had added both a text widget and a powerful canvas widget. At this point usage of Tk began to increase dramatically.

Growing popularity

Usage of Tcl and Tk grew roughly an order of magnitude each year in the early 1990s, from a few users in 1989 to several tens of thousands in 1993. There were two primary reasons for this growth.

The first reason for the growth in Tcl/Tk usage was that it provided the easiest way to create graphical user interfaces under Unix (in those days Tcl only ran on Unix systems). Tk's GUI facilities were both very simple and very powerful; interesting applications could be written entirely in Tcl, without writing any C code at all. C-based alternatives such as the Motif toolkit were much more complicated, yet provided less functionality. It quickly became clear that GUIs could be created with 5-10x less effort in Tcl than Motif. It also turned out that many people in industry were just as concerned as I was about the high cost of developing interactive applications.

The second reason for the popularity of Tcl was its embeddable nature. When I started on Tcl I assumed that no-one besides myself would care about an embeddable command language, but I was wrong. Many people, including Don Libes and others, wanted to build applications that were scriptable and extensible but didn't have the time to build a language of their own. Because it was embeddable, Tcl provided a perfect solution for these people. As a result, Tcl ended up being used in applications ranging from stock trading to scientific visualization to manufacturing automation.

Out of this dichotomy in usage grew a discussion that reoccurs every year or two in the Tcl user community. Many Tcl users assert that Tk is the only reason they use Tcl. Some of them don't even like the Tcl language and wish that Tk could be mated with a different scripting language (in fact, this has happened several times, including TkPerl and Python). A different group argues that Tcl is all they care about; they use it as an embedded scripting language, often without Tk, and like the language's properties for this purpose. In a sense both groups are right.

The Tcl community

As Tcl usage grew in the early 1990s, a community formed around the language, contributing many powerful extensions and providing support for new users. Two of the earliest pioneers were Mark Diekhans and Karl Lehenbauer. They wrote TclX, which was one of the first freely available Tcl extensions. TclX provided file access, time and date manipulation, and many other useful facilities. Over time the features of TclX have proven so important that many of them have been incorporated into the base Tcl releases.

Many other Tcl pioneers wrote high-quality extensions and made them freely available. For example, Michael McLennan wrote [incr Tcl], an extension that provides object-oriented programming features in Tcl. George Howlett wrote BLT, which added several important widgets to Tk. Tom Poindexter wrote Sybtcl and Oratcl, which provided access to popular databases. Brian Smith and Larry Rowe wrote TclDP, which provided socket access and other distributed programming features. There are others as well; apologies to the many worthy contributors whom I have failed to recognize.

Other forms of community developed in this same period. I initially created a mailing list for communication among Tcl users, but within a few years it became so large as to be unwieldy. With help from the Tcl community the comp.lang.tcl newsgroup was created as a replacement for the mailing list; since then it has provided a wonderful forum for exchanging information and discussing new Tcl features.

In 1993 Larry Rowe recognized the need for people in the community to meet in person, so he organized the first Tcl Workshop at Berkeley that summer. About 60 people attended, and the workshop was so successful that it became an annual event. In 1995 the USENIX Association offered to help run the workshop; since then it has evolved into a full-fledged conference with several hundred attendees and a rich program of papers, tutorials, and other events. The Tcl Conference is also one of the world's premier events for upper body wear: each year there are 5-10 different T-shirt designs given away to recognize various extensions, events, etc.

During this period I made new releases of Tcl and Tk roughly every 6-12 months. Most of the new features were suggested by people in the Tcl community; in some cases users even supplied me with prototype code for the new features, which I then integrated into the core software. Typically each new release cycle would start off with a discussion period where I proposed a candidate list of new features and everyone in the community could vote for the ones they thought were most important. I tried to give priority to the features with the most votes.

Ouster-votes

Over time the Tcl release cycle tended to align with the Tcl Conference. A new release would typically come out around the time of the conference, and I would use one session of the conference to discuss new features for the next release and get feedback. I would often call for an impromptu show of hands to see how the audience felt about various issues, and then attempt to make a rough count of how many hands were raised ("ten, twenty, thirty, ... looks like about 35 hands to me"). These became known as "Ouster-votes" and their accuracy has often been a topic of discussion. Some wags have insinuated that my vote counting is less than totally objective....

The Sun years

In 1994 I decided to leave Berkeley for industry. I'd always wanted to spend part of my career in industry, and after 14 years in academia the time seemed right. After considering a variety of possibilities, I decided to accept an offer from Sun Microsystems. Eric Schmidt, Sun's Chief Technology Officer, and Bert Sutherland, Director of Sun Microsystems Laboratories, offered me the chance to build a team at Sun Labs and evolve Tcl into a universal scripting language for the Internet. I had always felt that Tcl would eventually need to have profitable businesses built around it in order to survive over the long term, and the Sun offer was a great opportunity to take Tcl to the next level.

I joined Sun in May of 1994 and began building a team of Tcl developers. Over the next three years the Sun Tcl team grew to a dozen members. Up until this point nearly every line of code in Tcl and Tk had been written by me personally, but over time more and more of the responsibility for Tcl code shifted to other members of the Sun Tcl team.

The additional resources provided by Sun allowed us to make major improvements to Tcl and Tk. Scott Stanton and Ray Johnson ported Tcl and Tk to Windows and the Macintosh, so that Tcl became an outstanding cross-platform development environment; today, more than two-thirds of Tcl downloads are for Windows. Jacob Levy and Scott Stanton overhauled the I/O system and added socket support, so that Tcl could easily be used for a variety of network applications. Brian Lewis built a bytecode compiler for Tcl scripts, which provided speedups of as much as a factor of 10x. Jacob Levy implemented Safe-Tcl, a powerful security model that allows untrusted scripts to be evaluated safely. Jacob Levy and Laurent Demailly built a Tcl plugin, so that Tcl scripts can be evaluated in a Web browser, and we created Jacl and TclBlend, which allow Tcl and Java to work closely together. We added many other smaller improvements, such as dynamic loading, namespaces, time and date support, binary I/O, additional file manipulation commands, and an improved font mechanism.

When I moved to Sun many people were worried that Tcl would become a proprietary language, and there were several "spirited discussions" on the comp.lang.tcl newsgroup. Fortunately, as part of my offer Sun had agreed that the core Tcl and Tk libraries would continue to be distributed freely in source form, and Sun honored this agreement faithfully. As new releases appeared with more and more improvements, it became clear that Sun's support for Tcl was a wonderful thing that allowed the language to evolve much more rapidly than it could have otherwise. The concerns were gradually replaced with enthusiasm for all the new features.

During these years Tcl usage continued to explode. By the end of 1997 there were hundreds of thousands of Tcl developers; the rate of Tcl downloads from the Sun FTP site increased from 2000 per week at the end of 1995 to more than 10000 per week by early 1998. It was clear to me that there were huge business opportunities around Tcl. It was also clear that the Tcl community had many needs that weren't being met by the open-source Tcl development. For example, there were almost no development tools for Tcl, and professional services such as training and support were only sporadically available. Many important extensions, such as ActiveX and CORBA support, still needed to be written.

Scriptics

In late 1997 I decided that the best thing for Tcl was to spin out of Sun and form a startup that could focus entirely on Tcl. In January 1998 I founded Scriptics with Sarah Daniels, who became VP of Marketing and Sales. Within a month about half of the Sun Tcl team had joined us and begun development of TclPro, a set of development tools that would comprise our first product. TclPro 1.0 shipped in September of 1998. Its success in the marketplace fueled a major growth spurt at the company.

Scriptics had also taken over from Sun the role of developing the Tcl core facilities, and it continued to release them freely just like Sun did. In 1998, Scriptics made several patch releases for Tcl 8.0 to fix bugs and add small new features, such as a better support for the [incr Tcl] extension. In April 1999, Scriptics made its first major open source release, Tcl/Tk 8.1. This release added Unicode support (for internationalization), thread safety (for multi-threaded server applications), and an all-new regular expression package by Henry Spencer that includes many new features as well as Unicode support. With the 8.1 release, Tcl became the first scripting language to have all the facilities needed for mission-critical enterprise applications.

Tcl: award-winning software

In the spring of 1998 I learned the wonderful news that Tcl had won two major awards. The first is the ACM Software System Award, awarded each year for "a software system that has had a lasting influence". Past winners of the award include such seminal systems as the TCP/IP protocols, the first spreadsheets, the first relational databases, the World-Wide Web, Unix, PostScript, and Smalltalk. The second award was the USENIX Software Tools User Group (STUG) Award, given each year in recognition of an outstanding software tool.

Formation of the Tcl Core Team

This section added by Jeff Hobbs and others

Scriptics was renamed Ajuba Solutions in May, 2000, reflecting the company's growing focus on a series of Tcl-based XML technologies. Ajuba became in part the victim of its own success in creating enterprise class XML server software based on Tcl, and was acquired by Interwoven in October, 2000. Interwoven was not interested in open source aspects of the company however, but rather the XML and server technologies.

During the period of July-October 2000, mechanisms were put in place to transition the "ownership" of core development, which was becoming increasingly widespread, away from a single organization, and towards a broader group not tied to any one particular organization. The Tcl Core Team was formed, and established its basic operating procedures.

Tcl of course still benefits from the involvement of many companies. As one prominent example, Jeff Hobbs, formerly the Tcl Ambassador at Scriptics/Ajuba, moved to ActiveState (already known for their Perl products and development) to head their Tcl technologies group, working both on the open source Tcl core, as well as advancing many of the commercial development tools that had been started at Scriptics.

 

作者簡介

 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章