LJ 采访 John Ousterhout

John Ousterhout 为开源社区提供了免费的 Tcl 脚本语言及其配套工具包 Tk。如今,他正忙于经营自己的公司 Scriptics,在那里他正在开发用于开发 Tcl/Tk 应用程序的商业工具。1998 年 12 月,Scriptics 发布了适用于 Linux 的 TclPro 1.1 版本,我通过电话采访了他。
Marjorie: 我首先想知道的是,移植到 Linux 有什么大不了的?难道 Tcl 产品不是一直都可以在 Linux 上运行吗?
John: 大不了的事!您必须区分 Tcl 语言和 TclPro 产品。Tcl 脚本语言、其工具包 Tk 以及可用于它们的所有各种扩展已经在 Linux 上运行多年,可能五年或更长时间。它们存在于大多数流行的 Linux 发行版、Red Hat 和其他公司的各种 CD 中。我们现在正在谈论的新闻是我们公司的 TclPro 产品,它是一套开发工具。我们刚刚发布了一个新版本,首次支持 Linux。我们之前的版本不支持 Linux,尽管您可以在 Linux 上运行 Tcl 程序,但我们使开发 Tcl 脚本更容易的开发工具尚不可用。
Marjorie: 它们在什么操作系统上运行?
John: Scriptics 是一家相当年轻的公司——我们成立大约一年了。我们在 9 月份发布了我们的第一个产品 TclPro 1.0,它可以在 Windows 95 和 98、NT 以及两种 UNIX 变体 Solaris 和 HP-UX 上运行。我们从一开始就考虑加入 Linux 支持,但我们猜测由于 Linux 是一个免费平台,因此没有多少人有兴趣为其购买产品。TclPro Toolset 是一款商业产品。
因此,我们最初不支持 Linux。我们认为我们最终可能会这样做,只是不是马上。然后,当我们去年夏天发布第一个 beta 版本后,我们收到了大量关于 Linux 的请求——看到 Linux 社区对此如此感兴趣,真是一个惊喜。我们开始意识到,事实上,Linux 用户实际上对这种工具感兴趣,甚至愿意为此付费。
Marjorie: 这太令人惊讶了,不是吗?——他们竟然愿意付费!
John: 嗯,我的看法是,Linux 最初可能有一个由热情的用户组成的社区,他们被它的免费性所吸引。我认为现在越来越多的人使用 Linux 是因为 Linux 提供了复杂的功能和可靠性,而它是免费的事实是一个额外的奖励。人们愿意为那些为他们的 Linux 系统增加价值的软件付费。
Marjorie: 我也这么认为,当然。
John: 一旦我们开始收到所有这些关于 Linux 的请求,我们就意识到我们在第一个版本中没有计划支持 Linux 是一个错误。我们考虑将其纳入 1.0 版本,但这会严重扰乱计划。因此,我们在第一个版本之后尽快计划了 1.1 版本。这就是我们现在正在做的事情。自从我们发布 1.0 版本以来,已经大约三个月了。1.1 版本增加了对 Linux 和 SGI 平台的端口。
Marjorie: 进行移植需要多少工作?我们从一些人那里听说,他们所要做的就是运行 make。
John: 是的,Tcl 非常便携,TclPro 也是如此。唯一的麻烦实际上是弄到一台 Linux 机器并使用 C 编译器等设置构建环境。一旦我们完成这些,只需一两天的工作即可让 TclPro 在 Linux 上运行。
Marjorie: 我们很高兴听到它快速而简单。
John: Tcl 最棒的事情之一是它是一个极其便携的编程环境——Tcl、它的所有应用程序以及所有 TclPro 工具实际上都是用 Tcl 构建的。因此,它们都非常便携。从某种意义上说,对于 Scriptics 来说,这是一个相对次要的公告,因为它是一个升级版本。它有一些新功能,但在功能方面没有什么惊天动地的。但是,我认为这是一个非常有趣的发布版本,因为它再次证实了对 Linux 商业产品的需求有多大。我还认为,这有趣地证实了 Tcl 对 Linux 社区的重要性——使用 Linux 的人们都在呼唤它。Tcl 是在 Linux 上进行图形用户界面以及各种其他应用程序的最佳方式之一。
Marjorie: 您认为 Tcl 比其他脚本语言有哪些优势?
John: 问得好。Tcl 带来的真正力量在于它非常适合创建集成。与其他脚本语言相比,Tcl 的优势在于它可以用于各种各样的应用程序。大多数其他脚本语言都是为特定领域设计的。例如,Perl 最初是为系统管理和报告任务设计的;JavaScript 是为 Web 浏览器中的脚本编写而设计的。这些语言在它们被设计的领域中工作得很好,但有时在其他领域中工作得不太好(例如,JavaScript 在 Web 浏览器之外几乎不使用)。Tcl 被设计用于许多不同的领域,并且在这方面效果很好。因此,如果您有各种各样的事情要集成,Tcl 很可能提供最灵活的平台。
Marjorie: 您认为 Tcl 中包含的哪些工具最受 Linux 开发人员欢迎?
John: 嗯,绝对是调试器——所有程序员都需要这个工具。此外,错误检查器和包装器对于 Linux 程序员也很有用。实际上,在进一步思考之后,我认为所有四个 TclPro 工具都对 Linux 开发人员有用。Linux 开发人员与其他开发人员没有太大区别,所以我认为他们会使用所有相同的工具。
Marjorie: Tcl 一直是开源的;TclPro 是商业的。Scriptics 未来打算如何平衡这种行为?
John: Tcl 和 Tk 的核心代码将始终免费提供。这是我们对开源社区做出的承诺。我们将在商业上做的是开发诸如 TclPro 之类的产品,以帮助 Tcl 程序开发。如果我们把我们所有的产品都送出去,我们就无法长期经营下去。
我们允许人们从我们的网站下载 TclPro,并提供 30 天的免费评估许可证。自 11 月初 Linux 版本以 beta 形式发布以来,它已成为受欢迎程度排名第二的平台。约 55% 的评估下载是针对 Windows(95 和 NT)。Linux 位居第二,约占下载量的 21%。我们原本预计成为第二大平台的 Solaris 仅占下载量的 13%,远远落后于第三位。
Marjorie: 您认为免费软件会完全取代商业软件的那一天会到来吗?
John: 不会,但我很乐意被证明是错的。
Marjorie: 有人说,有了免费软件,程序员可以通过咨询和支持来谋生。
John: 如果您考虑一下做这件事的人的性格,这是一个有趣的想法。他们很可能会构建一些他们自己想用的东西,然后将其赠送给其他人。他们往往不会生产其他类型的软件,这为商业软件开发留下了许多领域。
我认为这就是为什么您会看到操作系统内核、脚本语言、邮件传递工具、Web 服务器以及其他专家程序员喜欢自己使用的东西作为开源软件,而您还没有看到企业资源计划应用程序,甚至像文字处理器和电子表格这样的东西。
Marjorie: 嗯,有一些应用程序在那里——它们只是还不太成熟。
John: 像 Eric Raymond 这样的人认为我们只是处于开源软件进化发展的初期,并且所有这些其他应用程序都会及时出现。也许他是对的。我个人的预感是,开源开发主要将是平台和工具类型的软件。
Marjorie: 我认为 Eric 给出的电子表格和文字处理器的两个例子是 Maxwell 和 xxl。
John: 嗯,我也很乐意在那件事上被证明是错的,你知道的。
Marjorie: 嗯,我一直想知道它会如何运作。正如您所说,人们在某个时候必须谋生。
John: 我认为整个开源运动非常有趣,对于个人来说是一种令人惊叹和赋能的工具。一个聪明的人,有一个好主意和一点空闲时间,可以利用成千上万其他人的能量,构建出被成百上千或数百万的人使用的软件。世界上有多少个行业可以找到一个人可以产生如此令人难以置信的影响?聪明的人有好的想法可以改变世界,这真是一件很棒的事情。
Marjorie: 最近有人告诉我,他们听到您在一次会议上发言,您认为开源运动目前没有满足不成熟或新用户的需求。这是真的吗?
John: 我认为这通常是真的。再说一遍,这回到了开源开发人员的心态——他们通常是为自己构建程序。因此,当他们向其他人提供程序时,他们倾向于拥有适合相当成熟的程序员而不是新手程序员的文档和安装级别。再说一遍,这是商业努力可以通过提供使事情更容易使用的方法来填补空白的领域。Linux 领域的一个很好的例子是 Red Hat、Caldera 和 SuSE 等公司的出现,它们提供的 Linux 发行版比以前更容易安装。
如果您回顾一下在这些公司存在之前的两三年,安装 Linux 是一项更大的挑战——不适合胆小的人!
Marjorie: 最初是什么促使您决定编写一种新的脚本语言?
John: 像许多其他做开源工作的人一样,我正在解决我自己的问题。我遇到的问题是,我正在构建一堆不同的工具,这些工具需要有命令语言,我希望它们有一个强大的命令语言。我没有时间为每个工具构建一个单独的命令语言。所以 Tcl 的想法是构建一个小型的解释器,我可以将其插入到不同的工具中,从而使用相同的基本语言作为许多不同程序的命令语言。我通过构建一种可扩展的语言来实现这一点;Tcl 提供了所有基本知识。然后,它可以放入一个应用程序中,该应用程序的所有功能都作为扩展程序连接到 Tcl,从而添加到语言的基本功能中。这样,我在每个程序中都有一个非常强大的命令语言,并且所有程序都共享语言的相同核心部分——Tcl 解释器。这就是基本思想。从那里,我添加了一个扩展来做图形用户界面,称为 Tk。然后我们突然发现,实际上可以编写许多有趣的 Tcl 脚本,而无需将 Tcl 放在另一个应用程序中,而是独立使用它。有了 Tcl 和 Tk,您可以编写出色的 GUI 和其他类型的集成应用程序。一旦发生这种情况,其他程序员的使用量就会激增。
Marjorie: 我们收到的关于 Tcl/Tk 的第一篇文章之一是关于使用它来编写 GUI 的。
John: 当我编写 Tcl 时,这种能力并不是我首先想到的,但事实证明,在解决我的问题的过程中,我还构建了一些非常容易用于开发通用 GUI 的东西。
Marjorie: 问一些关于您个人的事情怎么样?您有什么爱好?
John: 我和家人一起做有趣的事情。在担任一家初创公司的 CEO 和努力成为孩子的好父亲之间,没有太多时间做其他事情。但我很喜欢和家人一起进行各种活动。
Marjorie: 好的,您在哪里上学,诸如此类的事情呢?
John: 我在 70 年代初在耶鲁大学读本科,并于 1980 年在卡内基梅隆大学获得计算机科学博士学位。从 1980 年到 1994 年,我是伯克利大学的教授,之后我去了 Sun 公司。我在 Sun 公司运营一个 Tcl 开发团队,直到 1998 年 1 月分拆出来创办 Scriptics。
Marjorie: 非常感谢您抽出时间。