协作式虚拟工作空间

作者:Stephen Jones

你走下走廊,走进设计室。这里和往常一样忙碌;东西散落在地板上。首席架构师 Alex 和另外两位设计师 Brad 和 Lynn 都在这里。他们一直在讨论新项目的架构。

“我想我们差不多完成了,” Alex 说,“看看我们的设计。”他递给你一份文档,你仔细地查看了一下。

“还不错,”你回答说,“但你可能需要看看这个。”你走到白板旁,画了一个草图。Brad 看出了你的意图,拿起一支笔,在你的图纸上添加了一些组件。

Lynn 注意到一个问题,说:“我们在这个方面实施安全接口可能会有一些问题。我给安全部门的 Rachel 打个电话。”她拿起电话,简单交谈后,告诉大家安全团队认为这种实施方式会产生什么影响。

“好的,”你说,“听起来你们走在正确的轨道上。我会把这份初步设计交给程序员,让他们粗略估计一下他们需要多少时间来实现它。”当你走出去时,你注意到你的传呼机收到一条来自你秘书的消息,提醒你下午 3:00 与部门主管开会。

像这样的活动每天都在工作环境中发生;然而,在这种情况下,参与者从未实际移动。事实上,一个人坐在走廊的另一端,另一个人在远程站点工作,第三个人在家。然而,每个人都能够像个人、物体和文档都实际在同一地点一样进行互动。

随着计算机在工作场所和家庭中占据主导地位,人与人之间的互动发生了显著变化。会议不再聚集在饮水机旁或小咖啡馆,而是转移到了互联网上。然而,随着场地变化,也带来了一些限制。你再也无法解读一个人的肢体语言,也无法从一个人的语气中推断含义。使用许多互联网协作工具,例如互联网中继聊天(IRC)或即时通讯工具,你只能理解其他人键入的文字。

我目前从事的项目,协作式虚拟工作空间(CVW),旨在为基于计算机的社交互动增加更多意义。CVW 不仅仅依赖口语,还为社交环境增加了动作、音频和视频,以及更具描述性的虚拟环境。此外,CVW 环境中的用户可以创建和传递各种人工制品,例如文档和图片。这是因为 CVW 实现了持久存储机制与环境的结合。在 CVW 中创建的任何内容都可以保存下来,供其他人随时查看。

最棒的是,CVW 是免费提供的。为了进一步鼓励协作系统的创新,MITRE 公司已将 CVW 变成开源软件产品。通过以这种方式传播 CVW,不同的社区可以开始试验和理解同步的基于计算机的协作。我们相信像 CVW 这样的协作系统将继续发展,互联网社区将大有可为。

让我们看看 CVW 的起源以及构成我们虚拟环境的要素。

服务器

从 1994 年的最初构想开始,CVW 就构建在客户端-服务器架构之上。服务器的核心是一个来自 Xerox PARC 的面向对象的 MUD(MOO)(ftp://ftp.lambda.moo.mud.org/pub/MOO/)。MUD 和 MOO 最初只在地下城与勇士玩家的领域内使用,现在已经发展到包含众多社交环境。尽管 MOO 提供了非常具有描述性的环境,但它给当今的普通计算机用户带来了一个挑战——它们主要是文本驱动的。没有花哨的图形界面或精巧的设计,用户只需使用 MOO 客户端程序或 telnet 连接到服务器,登录并开始在环境中互动。

The Collaborative Virtual Workspace

图 1. 房间截图

MOO 服务器真正的优势之一是其可扩展性。服务器包含一种名为“MOO”的面向对象编程语言。使用 MOO 语言,程序员可以创建新房间,实现新动作,并提供在虚拟环境中与他人互动的各种方式。再加上允许大量人员同时连接的能力,很容易理解为什么 MOO 已成为流行的协作环境。

如果你下载 LambdaMOO 源代码并在你的 Linux 机器上运行它,你会注意到默认情况下该环境中没有太多内容。每个 MOO 管理员必须构建一个新的虚拟环境,或者获取其他人编写的代码。

CVW 的 MOO 服务器已经包含了我们虚拟环境的代码。我们扩展了我们的 MOO 服务器,以便创建一个大型建筑物,其楼层平面图在客户端中以图形方式显示。尽管这会将客户端与 CVW 服务器紧密耦合,但它确实为新用户提供了更直观的界面。该建筑物由若干层组成,每层有七个房间和各种其他会议场所(走廊、大厅)。这些都可以修改以适应任何团体的需求。

使用基于房间的隐喻还提供了另外两个明显的优势。首先,会话管理可以进行逻辑分区。每个房间将管理该区域用户的特定会话要求。通过在服务器端控制这一点,连接到服务器的任何客户端都不必配置其音频、视频或文档设置即可与其他用户通信。其次,安全性也可以同样轻松地控制。由于每个房间都可以实施单独的访问控制策略,因此可以创建私人会议场所。同样,这提供了一种非常直观的安全实施方式——如果服务器拒绝用户访问房间,他们通常会理解他们没有进入该区域的权限。

除了 MOO 服务器之外,我们还在协作系统中加入了文档持久性。这使得 CVW 能够涵盖协作框架的角色。如果人们聚在一起讨论一个主题,他们可以使用任何可用的工具(文档编辑器、绘图程序)创建文档或图形。使用 CVW,用户可以导入这些外部文档,并允许其他人查看或编辑它们。尽管 MOO 确实允许用户创建对象,但这些对象通常是简单的文本文档,无法轻松导出到其他外部应用程序。这种持久性功能允许异步协作——用户可以随时进入或离开房间,但他们仍然可以访问正在执行的工作。

由于持久性的添加对 MOO 环境进行了重大更改,我们将此功能实现为一个独特的服务器进程,即文档服务器。此服务器不必与 MOO 服务器在同一台机器上运行,但它应该有足够的磁盘空间来存储用户创建的所有文档。文档的存储非常简单——基本上是一个扁平的数据库目录。到目前为止,这已被证明是足够的,但 CVW 的大型实施可能需要考虑重新设计此过程。

生活在你自己的虚拟世界中

创建 CVW 环境的第一步是获取并安装 CVW MOO 服务器和文档服务器软件。如果你浏览网站(http://cvw.mitre.org/),你会找到可供下载的二进制文件和源代码构建版本。我将逐步介绍二进制版本的安装过程,尽管源代码版本只需要多几个步骤。这两个下载都包含详细的文档,所以我只会强调重要的步骤,并尝试指出服务器运行可能遇到的任何障碍。

至于系统要求,你的 CVW 系统的大小取决于你希望构建的虚拟社区的大小。我的 Linux 系统包含一台 Pentium 300,配备 64MB RAM,运行 Red Hat 5.1 和 2.2 内核。尽管我们尚未在负载下测试此配置,但它至少应该足够 40 到 50 个并发用户使用。我们已经在一台 Sun Ultra 2 双处理器机器上同时看到超过 250 个用户,因此配置适当的 Linux 工作站也应该表现相当。此外,运行文档服务器进程的服务器需要安装 Java 1.1 JRE。

在 CVW 软件下载过程中,在接受许可协议后,系统会要求你提供一些个人信息。MITRE 是一家非营利组织,因此,不使用广告或将用户列表出售给其他组织。我们维护用户列表的唯一原因是通知你软件的任何更改以及 CVW 软件可能发生的任何其他活动。

要开始安装 CVW 服务器,请下载两个二进制包,cvw-moo-server-3.2.0-x86-Linux2-libc6.tar.gz 和 cvw-doc-server-3.2.0-any.tar.gz,并将它们放在一个临时目录中。使用命令 tar xvzf  package_name 解压这些包将创建单独的目录,其中包含所需的二进制文件。

我决定将 /opt/CVWserver 作为我的安装目录。在创建此目录之前,请在你的系统上创建一个名为“cvw”的用户。此用户将是安装的所有者,因此二进制文件不会以 root 身份执行。尽管我们没有发现以 root 身份运行软件有任何实际问题,但这通常是一个很好的经验法则。创建用户后,使用 mkdir 创建你的安装目录,并将你的 cvw 用户分配为其所有者。

将以下文件从 moo-server 二进制目录移动到你的安装目录——moo 可执行文件、restart 脚本和 CVW.db 文件。如果你愿意,你可以将 CVW.db 重命名为更适合描述你的环境的名称。你选择的名称并不重要,但你需要记住它,因为你稍后会用到它。

文档服务器还需要一个文档存储库。此存储库目录必须足够大,以存储 CVW 中的所有文档。根据你的潜在用途,你可以在刚刚创建的服务器目录下创建一个目录,或者在你的系统上挂载一个单独的分区。我创建了一个 /opt/CVWserver/docstore 目录,因为我预计文档数量会很少。你也可以创建一个 /docstore 目录并将另一个磁盘挂载到它。你采取的路线很大程度上取决于你的预计用途。

接下来,文档服务器需要从文档服务器二进制目录安装文件。将 docserver.jar、docserver.cfg 和 start-dserver 脚本移动到你的安装目录中。你需要修改 docserver.cfg 以指向你的文档存储库。最后,将安装目录中的所有文件所有权更改为 cvw 用户所有。

为了在我的系统启动时自动启动这些进程,我们提供了两个 init 脚本。这些脚本包括用于 MOO 服务器的 cvw.boot 和用于文档服务器的 cvwds.boot。将这些脚本移动到 /etc/rc.d/init.d 并根据你的个人配置进行编辑。默认情况下,我们使用 8888 作为我们的 MOO 服务器通信端口,8889 作为文档服务器端口;如果你的系统上的任何其他程序使用这些端口,请将脚本中的数字更改为未使用的端口。然后可以从 /etc/rc.d/rc3.d/S99cvw 和 /etc/rc.d/rc0.d/K99cvw 创建到 cvw.boot 的链接,以及从 /etc/rc.d/rc3.d/S99cvwds 和 /etc/rc.d/rc0.d/K99cvwds 创建到 cvwds.boot 的链接,以允许自动启动和关闭。要手动启动进程,只需键入

/etc/rc.d/rc3.d/S99cvw start
/etc/rc.d/rc3.d/S99cvwds start

要测试服务器进程是否正常运行,可以使用 TELNET 会话。有关运行这些测试的信息,请参见列表 1。

列表 1

为了向你的用户呈现完整的 CVW 体验,你需要构建一个用户图像存储库。这些图像将显示在客户端软件上,当用户从一个房间移动到另一个房间时,允许虚拟的“面对面”感觉。用户图像最好是 50x60 dpi gif 图像(尽管其他尺寸应该在客户端内缩放),可以存储在两个位置之一。首先,如果你有一个分布式文件系统(例如 NFS),则可以将图像存储在那里以允许全局访问。第二个选项是从 HTTP 服务器获取图像。在任何一种情况下,只要图像存储库是全局可访问的,客户端软件就可以配置为查找图像。

让我进去!

现在我们需要获取客户端。由于任何给定区域内通常存在许多计算机平台,因此我们构建了可以在 Unix 平台以及 Microsoft Windows 下运行的客户端程序。即使用户可能更喜欢在不同的系统上工作,他们仍然可以使用 CVW 进行协作。

目前存在两个可以在 Linux 系统上运行的版本:原始的 Tcl/Tk 客户端和较新的 Java 客户端。两者都以源代码分发形式提供,但只有 Tcl/Tk 可以作为二进制文件下载。此外,只有 Tcl/Tk 客户端可以支持管理功能,尽管我们希望有人能尽快修复这个问题。因此,我将讨论 Tcl/Tk 二进制分发版本的安装。但是,稍后我将介绍 Java 源代码分发版本。

下载 Linux 客户端分发版本并将其保存在临时目录中。对于 Tcl/Tk 客户端,请检索名为 cvw-tk-client-3.2.0-x86-Linux2-libc6.tar.gz 的软件包。移动到你想要安装客户端软件的目录,然后运行 tar xvzf package_name。除了我们网站上提供的客户端软件外,还可以从其他网站获取一些工具。这些工具包括用于多播音频会议的 vat 和用于多播视频会议的 vic,最初由劳伦斯伯克利国家实验室(www.lbl.gov)开发。目前,我们不包含这些工具,因为我们没有重新分发它们的权限。一旦清除了这个障碍,我们希望将所有内容都包含在客户端软件包中。

客户端的另一个重要配置步骤是修改 mime 类型。CVW 使用简单的 mime 查找将文件类型与其父应用程序关联。此文件可以在安装目录下的 lib/mime-db 中找到。要添加新的 mime 关联,只需提供一个应用程序来打开给定文档类型的读取和写入。

README 文件完全详细说明了连接到你的 CVW 服务器所需的其余配置。完成后,从你的安装目录执行 bin/xcvw 将启动应用程序。

默认登录名“User: admin, Password: admin”将允许你登录到你的 CVW 服务器和 CVW。在四处查看一分钟后,你需要完成几个配置步骤。

主菜单栏上的“Admin”菜单提供对系统管理员功能的访问。“打开“System Settings”菜单选项并提供请求的信息。请注意,你应该提供一个多播前缀,该前缀不会干扰网络上的其他多播用户。多播前缀的范围可以从 224.0 到 239.255。

在继续介绍你可以在 CVW 中使用的命令之前,我将更多地描述你的虚拟用户。个人通常会在 CVW 中被分配一个普通用户。此用户有能力执行各种操作:在环境中移动,创建和读取对象,将对象放置在房间中或将它们放在携带文件夹中随身携带,以及在 MOO 中与他人通信。用户还可以修改他们的描述以个性化他们在其他人眼中的外观。此外,用户可以成为房间的所有者,允许他或她修改访问列表和房间的描述。

The Collaborative Virtual Workspace

携带文件夹

可以授予用户额外权限,使其成为 CVW 环境中的程序员。尽管 CVW 不认为程序员具有额外的功能,但程序员可以在 MOO 环境中修改代码和创建对象。

CVW 管理员是 MOO 向导的类似物。换句话说,此用户在 CVW 中拥有最多的功能。管理员有能力:创建房间和用户,修改对象,分配权限以及配置 CVW 环境。尽管可以将管理员功能分配给任何人,但建议限制拥有此权限的人数。

登录 CVW 后,你将进入一栋有多层的建筑物。在每一层楼上,你会发现八个房间和连接走廊。除非权限干预,否则你可以在建筑物内自由移动。你也可以拿起并检查 CVW 中存在的对象。

现在让我们试用一下。对于以下示例,在滚动文本区域下方的输入窗口中输入 MOO 命令。要查找更多信息和示例,请使用 help 命令,单独使用或与你要使用的命令一起使用

help say

首先,要与当前房间中的每个人交谈,请使用 say 命令

say Hello, World
你也可以将讲话对象指向特定的人。尽管其他人可能会看到此对话,但接收方会注意到你是直接与他们交谈。
to admin Hello
最后,要进行私下交流,以便其他人看不到,请使用 whisper 命令,或者如果用户在另一个房间,则使用 page 命令
whisper Hello to admin
page admin Hello
page admin !Hello
最后一个示例向管理员用户显示一个弹出窗口。此命令使你的评论更容易被接收方注意到。

就像日常人际交流一样,行动有时胜于言语。默认情况下,MOO 允许进行此类交流。用户可以使用称为 emote 的命令,让他们的行动代替语言

emote types furiously at the keyboard

许多这些命令的快捷方式可以在用户图像上找到。通过右键单击用户图像,你将找到一个弹出菜单,其中包含几种通信方法以及信息选择。此菜单将生成与所选个人的定向通信,所有人都可以看到。

CVW 中支持的另外两种流行的通信方法是音频和视频。CVW 通过与劳伦斯伯克利国家实验室的两个常用 mbone 工具:vic 和 vat 绑定来实现这些功能。要启动这些工具,请按顶部工具栏上的“Video”或“Audio”按钮。你会注意到,无需任何配置即可与房间中的任何人发起会议。CVW 会自动处理会话管理任务。当然,你的 Linux 内核需要支持特定硬件所需的音频和视频驱动程序才能使用此功能。

你可能并不总能通过 CVW 与他人交谈,可能是因为你不在办公桌旁或忙于其他事情。CVW 提供了允许你让其他用户知道你不在线的命令

idle gone fishing
busy working on project proposal

CVW 提供了两种在房间之间移动的方法。首先,你可以使用导航命令(north、south、east、west、up、down)来简单地指示你想去的地方。go to 命令也可以自动将你移动到目的地

go to CVW Help Desk
但是,你可能已经注意到 CVW 地图按钮。单击此按钮将打开一个单独的窗口,其中包含你建筑物的蓝图。此地图还允许你在建筑物周围导航。你可以使用窗口底部的滑块选择要查看的楼层,双击房间可以让你在房间之间快速移动。
The Collaborative Virtual Workspace

图 3. 建筑物地图

进入房间后,当前位于房间中的对象将列在“Contents”窗口中。你将找到的一些对象包括文件夹、文档、白板和 URL 链接。这些对象的菜单可以再次通过右键单击它们的图标找到。通常在这些菜单上找到的选项将允许用户查看、复制、创建快捷方式(链接)或删除文档,具体取决于用户对该项目的权限。你也可以从房间中取出对象,这将把它们移动到你的携带文件夹,也可以将携带文件夹中的项目放回房间。

CVW 客户端将允许你对文档和人员执行更多操作。这些操作包括导入和导出文档,获取连接到服务器的人员列表,查找特定人员或项目,甚至创建人员组以使通信更容易。与其逐步介绍无数可用的选项(这可能需要四个小时来教授),不如指向我们的用户指南,CVW 3.0 Unix 客户端快速参考指南,它可以在我们的网站上找到。

The Collaborative Virtual Workspace

图 4. CVW 截图

CVW 的未来

正如我之前提到的,CVW 也存在 Java 源代码客户端。此客户端使用 Blackdown 组织(http://www.blackdown.org/)最近发布的 Java 2 端口。尽管此客户端确实提供了一些更新和更高级的功能,并且也可以在 Linux 上运行,但它可以被认为是 beta 版本,并且需要进行一些错误修复。但是,我们相信此客户端最终将成为标准的 CVW 客户端。我们希望许多用户会发现它很有趣,并将其构建到与 Tcl/Tk 客户端的功能相匹配的程度。

已经开始对替换文档服务器进行一些调查。尽管当前的服务器运行良好,但它有几个缺点:客户端和服务器之间的交互无法保证安全,存储库由一个大型目录组成,并且不存在真正的身份验证机制。我们希望通过新的文档服务器来解决这些问题,该服务器提供更强大的功能和性能。

由于 CVW 已成为开源项目,MITRE 将更专注于开发下一代协作系统。我们希望许多人会发现 CVW 对他们像对我们一样有用,并继续改进它。由于它作为一个互联网项目来说还是一个新生事物,因此存在许多开发可能性。我们希望 CVW 将继续向许多人展示计算机协作的可能性。

Stephen Jones 目前在 MITRE 公司担任软件工程师。当他不骑他的哈雷摩托车外出时,他喜欢与他的妻子 Lynn、两岁的计算机迷儿子 Bradley 和新来的儿子 Derek 一起玩。可以通过电子邮件 srjones@mitre.org 与他联系。

加载 Disqus 评论