Linux 版 (精华区)

发信人: howdoit (教练让我上场!!!), 信区: Linux
标  题: GNOME计划
发信站: 哈工大紫丁香 (Tue May 18 08:43:47 1999), 转信

《Linux公报》……让Linux更富魅力! 

本文将刊登在Linux Journal 1999年2月号上 

  

                       GNOME 计划

                By Miguel de Icaza     翻译:Zou hongbo

    GNOME 是 GNU 网络对象模型环境 ( GNU's Network Object

Model Environment ) 的缩写. GNOME 提出了一系列 UNIX 世界中没

有的观点 : 

      提供一个统一的用户界面 

      提供用户友好的工具, 以 UNIX 为基础, 更强有力. 

      产生一个组件编程和组件重用的标准. 

      提供一个统一的打印机制. 

    GNOME 的主要目标是提供一组用户友好的应用和一个易于使用的

桌面环境. 同大多数 GNU 的应用一样,GNOME 设计成可以在几乎全部

的类 UNIX 操作系统中运行. 

GNOME 的历史

    GNU GNOME 计划是在 1997 年 8 月首次宣布, 之后经过大约一年

的开发, 在整个世界范围内估计有二百名程序员参与了这个计划(的开

发工作). 

    最初召集开发者的通告通过多个讨论组规划了 GNOME 计划 : GNU

announce mailing lists; Guile mailing list; and the GTK+ and

GIMP mailing lists. 对(本)工程产生影响的主要是不同领域中, 具

备专业特长, 热心于自由软件的人们, 包括图像处理和语言设计等. 

    GNOME 工作组坚定地工作, 为未来的自由软件开发建立一定的基

础. GNOME 提供工具箱和可重复使用的组件, 以构造最终用户迫切需

要的自由软件. 

    我们最近发行的版本是: GNOME 0.20, 第一个展示了整体印象的

版本, 于 1998 年 5 月 发行. 然后是版本 0.25 -- "垂涎三尺的恒

河猴 Drooling Macaque", 有了更多特色. 目前最新的公开版本是

GNOME 0.30, 命名为 "巨大的黑猩猩 Bouncing Bonobo". 

    GNOME 0.20 是第一个通过 CDROM 发行的版本: Red Hat 5.1 随

带了一个专门的 GNOME 桌面环境预览版, 在北卡罗莱纳的 Linux 博

览会上首次出演. 

    在 "Drooling Macaque" 版本之前, GNOME 软件发行工作是由小

组中的两三个人协调. 这越来越成为一个显著的负担, 因为宝贵的时

间被用来协调组织每一次发行工作. 我们已经尝试着使发行工作更加

模块化, 对不同的软件包指定了维护者. 每一个(软件) 包维护者负责

打包, 测试和发行, (他们的工作)独立于主干部分. 我们设想主干部

分 应该是核心库和桌面应用的核心部分. 到目前为止, 我们获得了一

些成功, 但依然存在改进的余地. 我们将继续努力地"打磨"发行工作,

让(它)更简单. 

    在最近的 GNOME 版本 "Bouncing Bonobo" 中, Gnumeric, 一个

GNOME 的电子表格软件首次出现. 

Red Hat 高级开发实验室

    1998 年 1 月, Red Hat 宣布成立 Red Hat 高级开发实验室

(RHAD). RHAD 的首个目标 是通过提供代码和程序员来帮助 GNOME,

同时协助管理工程资源. 

    由 RHAD 向 GNOME 提供的所有代码都是基于 GNU GPL 和 GNU

LGPL 许可声明. 数个 GTK+ 和 GNOME 的开发者已经为 Red Hat 雇

佣, 他们已经迅速地在 GNOME 的几个重要方面作出了贡献. 

    例如, Rasterman 已经实现了 "themes for GTK+"; "GTK+

themes" 允许用户改变 widgets 的外观. 这是通过将 widget 绘图例

程从工具箱中抽象出来, 并放入可以 在运行时才调入的模块中实现.

因此用户可以直接改变应用的外观, 而无需关闭他们或 重新打开桌

面. 

    GTK+ themes 充分可用, 已经有了许多实现. 在书写这篇文章时,

可用的(外观) 主题包括 Motif, Windows95, Metal, native-GTK+ 和

基于位图驱动的一般应用. (具体请查看 "资源" 部分) 

    GNOME 所需要的GTK+ 工具箱的多种重要改进, 例如菜单中键盘导

航代码和增强的 ``Drag and Drop'' 协议 (XDND 和 Motif DND), 是

由 Owen Taylor 完成, 一个著名 的 GTK+ 黑客, 他现在为 Red Hat

实验室工作. 

    目前 GNOME 各种应用也由 RHAD 产生或维护: 如 the

Ghostscript front end (Jonathan Blandford), the GNOME Help

Browser 和 the GNOME RPM interface (Marc Ewing 和 Michael

Fullbright), the GNOME Calendar 和 GNOME Canvas (Federico

Mena) 及 the ORBit CORBA 2.2 实现 (Elliot Lee). 

其他捐助者

    GNOME 计划早期的主要资金捐助者 GNU/Linux Debian 工作组,

同时 Alpha 布告栏 是由 Quant-X Service 和 G.m.b.H 提供帮助.

对他们的贡献, 我们在此表示深深地谢意. 

一些关键的 GNOME 技术特征

    GNOME 库提供了一个框架结构, 用于开发统一的应用和简化编程

者的工作. 今后将会描述更多的技术特征. 下面将讨论一些目前开发

中的 GNOME 库的技术特征. 

Metadata(元数据) 

    一个问题是在桌面环境中常常需要一种机制 -- 存放一个文件的

属性信息. 例如, 应用也许需要为某一种特定的执行文件帮定一个图

标, 或者为一个由图像文件产生 一个略图. 这些图标附属于主文件. 

    Macintosh OS, 例如, 他提供了一种方式将这些信息存放于 "资

源分支" 文件中. 这种机制在 UNIX 环境中实现有些尴尬, 主要原因

是那些"非元数据敏感"的应用 会与元数据(metadata)信息失去同步. 

    GNOME metadata(元数据) 由 Cygnus 的 Tom Tromey 实现, 给出

了设计约束和协调. (在他们的网站上有详细描述). 下面是 GNOME

metadata 的特征列表: 

   1.每一个用户拥有自己对每一个文件的信息描述, 由自己管理. 系

      统在这之上提供缺省描述. 

   2.绑定信息根据文件特征决定, 正如 UNIX 命令 file 所做的一样. 

   3.可以使用正则表达式识别一类文件 : 例如, 正则式 *.\.gif$ 表

      示 gif 文件, 从而给它们一个缺省图标. 

   4.元数据系统可以充分, 紧密地与 GUI 方案配合, 而不仅仅是当

      前的命令行的组合. 

   5.大多数常用的文件可以继续运行, 无需元数据系统, 正如(它们)

      目前的状况. 

    现在, GNOME 已经有了大量的标准(元数据)文件属性. 例如,

"View" 存放一个查看文件内容的动作; "Open" 存放类似编辑的动作;

"Icon" , 它包括一个图标, 用来在桌面上显示该文件. 

    元数据类型属于 MIME. 

Canvas(画布) 

    GNOME 提供了一个 Canvas(画布) widget, 它以 Tk 中出色的

Canvas 为原型. 这个 widget 简化了那些需要控制图象属性应用的工

作. GNOME Canvas 最引人注目的特点是它提供了一个平滑的绘图区

域, 在其上可以无抖动地插入和调整高级对象. 基本的放缩和滚动功

能也是 Canvas(功能)的一部分. 

    插入到 Canvas 中的高级对象如同普通的 Widget 一样, (他们)

可以收到 X 事件, 可以获取(输入)焦点, 可以获取鼠标等等. 与 Tk

中的(Canvas)类似, GNOME 中 的 Canvas 可以在运行期间使用类似

Tk 中的机制改变它们的属性. 

    GNOME Canvas 带有许多衍生自 GnomeCanvasItem 对象的东西: 直

线, 矩形, 椭圆, 箭头, 折线, 及一个可以嵌入 GTK+ Widgets 的

Widget 容器. Canvas 的设计框架易于扩展. 可以证明它的扩展性的

一个证据是, GNOME 的电子表格 就是以 Canvas 为核心驱动, 然后加

以附加的, 电子表格特有的 CanvasItems. 

    注意, 当前 Canvas 使用 Gdk(一个对 Xlib 的简单包装)来绘图,

因此(图像的)质量和 特效局限于(这些工具), 下面是一些增强(这方

面功能)的工作. 

    Raph Levien 正在为 Canvas 制作一个高级渲染驱动. 最初, 在

他的 Type1 外廓字体编辑器 gfonted 中作为一个独立的 widget 出

现, 在我写这篇文章时, 与 Canvas 整合的工作已经开始了. 

这个驱动的特点包括(以下为术语, 望专家级的网友帮助): 

      Anti-aliased rendering of all items 

      Alpha transparency 

      Items for vector and bezier paths 

      Items for RGB and RGB plus alpha images 

      Vector operations, including clip (intersect), union,

      difference and stroke layout 

      PostScript Type1 font loading and rendering 

    这个驱动的设计目标是支持大多数 PostScript (alpha

transparent)图像模型. 如此, 希望它是高质量图像应用的一个良好

起点. 

    尽管有着实现所有的 anti-aliased 和 alpha-composited 特性

的野心, 它的性能还是 不错, 可以与使用 原始 Xlib 驱动的 Canvas

相比. 

    他的代码将尽快地融合入 Canvas 主要代码. 

独立于窗口管理器 

    GNOME 不依赖于任何一个特别的窗口管理器 -- 任意一个目前的

窗口管理器都可以. GNOME 为窗口管理器制定了提示, 窗口管理器实

现(它们)可以给予用户更好的融合入桌面 的感觉,但是这些(提示)不

是必须(实现的). E 窗口管理器实现了所有的 GNOME 提示, 那些想扩

展他们的窗口管理器, 实现 GNOME 兼容的人们可以参考(E 窗口管理

器). ICEWM 管理器一直在追从那些开发工作, 它也是一个 GNOME 兼

容的窗口管理器, 虽然, 它现在有点滞后. 人们希望 WindowMaker 和

FVWM2 的维护者能够提供 GNOME 兼容的补丁. 

构件编程 

    很长时间以来, UNIX 有一个诱人的理论, 那就是设计小的工具,

每一个只作好一件事, 而将他们组合起来, 只使用管道和简单的

shell 角本, 就可以完成复杂的工作. 当数据 对象是一般文本和作过

滤操作时, 这种机制工作得极好. 但是, 这种基于命令行的理论 却不

能更好地适应当前的多媒体对象. 

    因此, GNOME 最好能够建立一种可以架构, 可以使软件重用和构

件联结, 相互作用, 例如, 将小的专业工具联结起来完成复杂的工作.

有了适当的基础框架, GNOME 应用就可以重温 UNIX 那种简单而专业

的工具的理论了. 

    为了提供这类功能, 一个 RPC(远程过程调用)系统是需要的. 所

以, 我们决定使用 CORBA (the Common Object Request Broker

Architecture), 它来自 the Object Management Group (OMG).

CORBA 可以人为是一个面向对象的 RPC 系统, 它正巧有着各种语言的

标准实现. 

    CORBA 向我们展开了一系列的应用. 构件编程允许我们将程序和

共享库组织 成为一个程序服务器, 以实现一个特定的(应用)界面. 

    举例来说, GNOME 邮件程序, Balsa, 实现了 GNOME::MailMessage

界面, 它(界面)允许任何 CORBA-aware(能识别CORBA)的应用远程编写

和定制一封邮件, 然后发送它. 这样就可以使用任何实现了 

GNOME::MailMessage 界面的程序替代(专门的)邮件程序. 只要安装了

GNOME 桌面, 进程只需实现 GNOME::MailMessage 界面(调用)即可. 这

意味着, 例如, 我可以继续使用 GNUS 去读我的邮件, 可以使 GNUS

完全融合到我的桌面中. 同时(这种功能)也提供给 其他的 GNOME 构

件: 地址簿, 文件管理器, 终端仿真器, 帮助浏览者, 办公应用等等.

    除了提供 GNOME 基本界面外, 应用可以可以实现他们自己的特定

界面. 这是通过 COBRA 的界面继承性做到的. 一个特定界面可以衍生

自较普通的界面. 例如, GNUS 可以实现 GNOME::MailMessage 界面, 然

后扩展为 GNOME::GnusMailMessage, 带有一些 GNUS 自己的特色. 设想

一下, 这个界面允许用户在用 Lisp 定制, 而其他一些邮递者则不能.

另外一个例子是, GNOME::MozillaMailMessage 界面允许用户配置

Mozilla 邮件程序中的 HTML 实现. 

    COBRA 不仅仅只是完成这些工作, 它还可以作为内部进程之间的

通讯引擎. 无需发明一种新的内部程序通讯系统, 一个 COBRA 界面就

可以做到. 

    将一种文档嵌入到其他文档的方式随着微软的对象联结与嵌入体

系结构已经越来 越普及. 一套 GNOME 文档嵌入模型正在被设计

(Baboon模型), 这个模型中所有 的内部进程通讯是使用 COBRA 界面

描述. 

    起初, 我们为 COBRA 呈现出的可能性感到兴奋, 但是我们很快意

识到在 GNOME 桌面中使用 COBRA 远比设想的困难. 

    我们尝试使用施乐的 ILU COBRA . 那时(它的)许可证还不允许修

改代码和重新发布. 对于自由软件群体来说, 这可是一件重要的事,

所以我们必须寻找替代产品. 施乐因此改变了许可证策略. 

    在试用了几种不同的免费 COBRA的实现后, 我们选定了 MICO, 因

为它是实现 COBRA 特性最全的一个. MICO 设计为 COBRA 的一个教学

工具, (因此)其清晰的编码是它的主要特点. 

    很不幸, 我们很快发现 MICO 不是一个产品质量级, 适合于

GNOME 的工具. 其中一点是, 我们发现, 相当杂乱的 C++ 模板使用

(同时存在于 MICO 和生成的接口) 浪费了大量的资源. 编译一点

GNOME , 即使使用了最简单的 COBRA, 竟然也需要 48MB 内存, 这减

慢了我们的开发速度. 另外一个问题是 MICO 只支持 C++ 语言. 虽然

在开始时期曾经尝试提供 C 语言帮定, 最终并未完成和很好的维护. 

    为了解决这些问题, i2it 的 Dick Porter 和 Red Hat 实验室的

Elliot Lee 写了一个称作 ORBit 的基于 C 的, 瘦型快速的 COBRA

2.2 实现版本. 一旦 ORBit 开始稳定, 贯穿于 GNOME 的 COBRA 的运

用便开始了, 不过已经 差不多耽误了 8 个月. 

正是有了一个高效的, 产品质量级别, 由我们控制的 COBRA 的实现版

本, 我们能够保证对应用开发者来说, COBRA-enable(COBRA激活的)内

部进程通讯是一项有价值的服务, 而不只是一个杀手或者 "黔之驴" .

仔细剖析一个 GNOME 桌面应用

工具包 

    GNOME 桌面应用建立在面向对象的 GTK+ 工具包中之上, GTK+ 工

具包原来是设计为 GNU 图像制作程序(GIMP)的 GUI 工具包. 

    GTK+ 的实现是基于一套简单的窗口和绘图 API , (它)被称为

Gdk(GTK 绘图包). 最初的 Gdk 版本完全是一套 Xlib 的简化包装,

但是最近向 Win32 和 Y 窗口系统的移植正在 alpha 测试阶段. 

    GTK+ 使用 C 实现了一个对象系统. 这个对象系统具有相当丰富

的功能, 包括标准的单继承, 动态产生新的方法和类, 和一个"信号"

机制 -- 它可以动态地将用户界面上发生的不同事件与处理(函数)联

系起来. GTK+ 一个巨大优势是它具有广泛地(编程)语言支持, 包括

C++, Objective-C, Perl, Python, Scheme 及 Tom. 在使用 GTK+ 和

编程生成新的对象时, 我们有着众多的选择. 

    GNOME 的一个附加的特点是 Rasterman 的 Imlib 库. 它是和

Gdk 平行生成的, 提供了一个快速而灵活的存取图像, 并在屏幕上绘

出的界面. 使用 Imlib 的应用 可以快速地, 直接地处理 PNG, GIF,

TIFF, JPEG and XPM 文件, 使用外部的转换过滤器处理其它格式(的

文件). 

支持的库 

    基于 C 的 GNOME 应用使用 Glib 实用库. Glib 提供给 C 编程

者一套有用的数据 结构: 链表, 双链表, 哈希表(一对一映射), 树,

串操作, 内存块重用, 查错的宏, 断言和流水记录便利函数. Glib 也

包括了一个可移植的, 动态模块界面. 

GNOME 库 

    GNOME 库加入了为产生完整的应用而工具包中缺少的部分, 规定

一些策略, 帮助 产生统一的用户界面, 还有本地化 GNOME 以在不同

的国家地区使用. 

    当前的 GNOME 库是: GTK+-xmhtml, gnome-print, libgnome,

libgnomeui, libgnorba, libgtop, gnome-dom and gnome-xml. 其他

库是为特定的应用使用: libPropList (很快将被一个新的配置引擎替

代)和音频文件. 

    主要的非图像类库是 libgnome. 它提供函数跟踪最近使用的文

档, 配置信息, 元数据处理(见下面), 游戏积分功能和命令行参数处

理. 这个库的使用无需一个窗口系统. 

    由于我们使用 COBRA 来部分完成桌面的融合, 因此提供一个特殊

的库去处理不同的 COBRA 主题, 它被称为 libgnorba. 它提供了

GUI/COBRA 整合 (让我们的 GUI 应用表现为服务器), 在 GNOME 框架

内的认证, 和服务激活. 

gnomeui 库, 则正相反, 需要一个窗口系统才能运行. 它包括如下分

支: 

      GNOME 对话管理支持 

      Widgets, 包括 GTK+ 的直接扩展和设计成独立于 libgnome 的

      部分 

      一套标准对话框, 不同于 GTK+ 中的, 与其他 GNOME 库很好地

      集成 

      标准属性配置对话框 

      标准顶层窗口处理 

      多文档界面(gnome-mdi) 

      窗口提示 

      需要 CORBA 整合的地方 

    GTK+-XmHTML 是对 Koen D'Hondt 的 XmHTML widget for Motif

的移植, 被用来实现我们的 HTML 显示需要. 我们所做的改变已经融

合入主放行包中. 

    gtop 库允许系统应用轻松地向不同的操作系统移植; 它提供系

统, 进程和文件系统信息. 

        gnome-xml 使 GNOME 应用能够加载, 分析, 保存 XML 文件, 它

用在 GNOME 的电子表格 (Gnumeric) 和 GNOME 的文字处理程序中.

gnome-dom 是为 GNOME 应用实现了 World Wide Web 组织的文档对

象模型. 当你在阅读这篇文章时, gnome-dom 已经在 GNOME 办公类应

用中广泛地运用. gnome-xml 和 gnome-dom 都是由 World Wide Web

组织的 Daniel Veillard 开发的. 

        gnome-print 实现了 GNOME 的打印体系结构. 它包括一个插座式

的描述引擎, 以及一套 Widgets 和选择及配置打印机的标准对话框.

另外, gnome-print 负责管理轮廓字体, 也包括自动搜索系统中已经

安装字体的脚本. 

    GNOME 打印成像模型仿照 PostScript. 基本操作包括矢量和 B

样条路径诠释, 平滑, 填充, 剪裁, 文字(使用 Type1 字体, 不久加

入 TrueType)和图像. 

    当前, gnome-print 只能生成 PostScript 格式输出. 但是图像

模型的设计最终将 与画布的 anti-aliased 描述引擎同步. 这两个模

块将期望能够协同工作. 特别地, "打印"到一个画布中是可能的, 这

对于高质量的屏幕预览是有用的, 也将 实现打印一个画布的内容. 这

个特性将简化使用画布应用的设计, 只需要增加一点 额外的代码去支

持打印. 

    同一个描绘引擎将用来描绘打印页, 直接地, 无需经过

PostScript 这一步. 这条捷径是令人振奋的, 对于那些向彩色喷墨达

因机进行高质量, 高性能打印工作, 即使是复杂的页面, 包括透明物

体, 倾斜, 和其他在商业类 PostScript 图像模型 中认为是"需要技

巧"的元素. 

帮定(程序设计语言) 

    GNOME 一个清楚的目标是支持广泛的设计语言支持, 因为很明显

不可能存在一种语言 对于每一个应用都配合地天衣无缝. 为此, GTK+

和 GNOME 库提供了许多种设计语言 的帮定, 目前有 C, C++,

Objective-C, Perl, Python, Scheme 和 Tom. 

    早期的帮定 Scheme, Tom 和 Perl 到 GTK+ 和 GNOME 工程的复

杂工作使 GTK+ 和 GNOME 的 APIS 易于向其他不同语言移植. 多设计

语言支持在 GTK+ 和 GNOME 的 设计过程中就已经是再三考虑的事,

而不是"亡羊补牢"之计. 

开发模式

    GNOME 是由世界范围内的几个松散的开发者小组进行的. 工程的

协调工作是通过 不同的 GNOME 邮件列表进行的. 

    GNOME 源代码保存在 GNOME CVS 服务器

(cvs:cvs.gnome.org:/cvs/gnome/). 使用 Netscape 的 Bonsai 和

LXR 工具(http://cvs.gnome.org)可以得到 源代码, 帮助程序员熟悉

GNOME 代码基础. 

    许多贡献过代码, 修正过主要 BUG, 和 GNOME 文档的书写者对

CVS 有写的权限, (大家)共同养育了一种非常开放的氛围. GNOME 开

发者有着不同的背景, 不同的技巧 和经验水平, 有时缺少经验的人们

能够给予令人吃惊的帮助, 年长的, 更富智慧的 编码者乐于提携组中

的年轻人. GNOME 开发者社区重视干净的, 可维护的编码. 甚至有着

多年编程经验的程序员也说 GNOME 工程帮助他们写出了更好的代码. 

GNOME 办公应用套件

    随着 GNOME 基础库的更加稳定, 开发大程序工程也具备了可能

性, 也允许各个开发小组将他们的应用整合起来, 组成 GNOME 办公套

件. 

    随着 GNOME 构件的整合, GNOME 办公套件正在追上商业类软件.

通过提供一个 坚固的, 快速的, 基于构件的办公套件, GNOME 工程也

许会成为自由软件开发 进程中一个新纪元的开端. 

    GNOME 办公套件的不同构件的开发在过去一年中赋于了我们中许

多人大量的知识. 我们的编程水平提高了,编码质量提高了, 编码更清

晰, 更健壮了. 

    这些应用也提供给我们测试的温床, 使我们得以完成文档嵌入界

面(Baboon 模型)。 

    有两个字处理项目正在进行: 一个是 GWP, 由 Hungry

Programmers 的 Seth Alves 负责; 另一个是 Chris Lahey 的 GO.

GWP 目前领先一些, 已经可以和 GNOME 中 的打印框架协同进行打印

工作. 

    Gnumeric, GNOME 电子表格项目, 目标是提供一个带有更先进特

性, 商业软件级别 的电子表格. 它提供了一个舒适的, 强大的用户界

面. 为了同 GNOME 的其它构件 协同工作, 我们将继续工作希望能够

为未来的开发提供一个坚固的, 可扩展的框架. 

    最近, 启动了 Acthung 项目, GNOME 介绍(presentation)程序.

它依然处于早期 开发过程中. 

获取 GNOME

    经过测试的源代码可以从 GNOME 的 ftp 站点下载:

ftp://ftp.gnome.org/. 

    也可以从匿名 CVS 服务器得到最新的 GNOME 开发中的代码. 查

看 GNOME 的 主页以获得如何直接从 CVS 服务器得到最新版本的方

法. 

    关于 GNOME 的新闻将发布在 GNOME 主页

http://www.gnome.org/, 还有关于 如何运行 GNOME 和如何开发

GNOME 应用的文档. 

答谢

    在这里, 无法向每一位为 GNOME 工程做过贡献的人表达谢意, 只

能向所有的捐助者 表示深深的感谢. 

我特别向 Alan Cox, Nat Friedman, Raph Levien 和 Richard

Stallman 表示感谢, 他们花时间审阅了本文档的草稿. 

资源

bonobo: GNOME 工作组获悉 Bonobo(倭黑猩猩), 与人类血缘最近的灵

长类 动物, 正面临绝境. 如果你想知道如何帮助倭黑猩猩, 查看这个

主页: http://www.gsu.edu/~wwwbpf/bpf/ 

GIMP: http://www.gimp.org/ 

GNU: http://www.gnu.org/ 

GTK+: http://www.gtk.org/ 

GNOME: http://www.gnome.org/ 

Gnumeric: http://www.gnome.org/gnumeric/ 

gnome-print: http://www.levien.com/gnome/print-arch.html 

GWP: http://www.hungry.com/products/gwp/ 

OMG: http://www.omg.org/ 

ORBit: http://www.labs.redhat.com/orbit/ 

RHAD: http://www.labs.redhat.com/ 

Themes: http://www.labs.redhat.com/themes/ 

Tom Tromey:

http://www.cygnus.com/~tromey/gnome/metadata.html 

Y: http://www.hungry.com/ 

                       版权所有 (C) 1998 NJLUG

          出版于第35期《Linux公报》1998年12月 中文版第二期

                            

  

  


--
☆ 来源:.哈工大紫丁香 bbs.hit.edu.cn.[FROM: bin@mtlab.hit.edu.cn]
[百宝箱] [返回首页] [上级目录] [根目录] [返回顶部] [刷新] [返回]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:205.823毫秒