Oddmuse Wiki 引擎
1995 年,Ward Cunningham 为波特兰模式知识库项目创建了第一个 wiki 网站,WikiWikiWeb。自那时以来,已经开发了许多使用各种编程语言编写的 wiki 引擎。Oddmuse 就是其中之一,它是由 Alex Schroeder 使用 Perl 编写的。
尽管 wiki 已经存在了将近十年,但它们似乎越来越受欢迎,许多人现在才接触到 wiki 的概念。因此,简要概述一下 wiki 是有必要的。如果您已经熟悉 wiki,您可以跳到下一节。
wiki 的基本概念很简单:wiki 是一个网站,它允许任何用户仅使用 Web 浏览器即可添加和编辑页面。这种简单的安排非常强大。它使任意大量的志愿者编辑能够为协作创建的网站做出贡献。它还使较小的团体甚至个人能够轻松地创建和组织信息。换句话说,正如 Cunningham 曾经说过的那样,“[Wiki] 是可能工作的最简单的在线数据库。”
根据我的经验,我发现 wiki 是非常有用的工具,它可以使组织项目和创建几乎任何事物的文档等任务比通常情况下更轻松、更省时。要理解 wiki 是什么、它们如何工作以及可以从中产生的文档的规模和质量,最好的方法可能是探索一个成熟、已建立的 wiki。维基百科就是一个很好的例子。
维基百科是一部百科全书,就像多卷本、印刷装订的百科全书一样。然而,与装订的百科全书不同,维基百科拥有庞大的“编辑团队”,该团队由任何拥有 Web 浏览器的互联网用户组成。此外,每篇文章的文本都适当地超链接到其他维基百科文章。网站的任何访问者都可以创建和编辑文章,添加和更改,这些内容会立即对其他用户可见。修订控制系统允许轻松撤销更改,防止错误或恶意编辑。
举例说明向 wiki 贡献内容有多么容易,假设您正在某个 wiki 网站上阅读一篇关于啮齿动物的文章。您注意到,尽管这是一篇不错的文章,但它没有提到世界上最大的现存啮齿动物,水豚。为了纠正这个遗漏,您单击“编辑此页面的文本”链接,然后您将看到一个标准的 Web 表单,允许您编辑文本。您通过添加一个关于水豚的句子来完成此操作,当您保存更改时,文章的新版本会立即可用。就这么简单。
我们再假设一下,您在文章中提到了南美洲,因为 它 是水豚的栖息地,并且您希望将“南美洲”一词链接到一篇关于南美洲的文章。要创建该链接,您可以使用简单的 wiki 链接语法规则之一——如果该站点使用 Oddmuse,则将“南美洲”括在双括号中——并且 wiki 引擎在生成页面时创建指向南美洲文章的链接。如果没有关于南美洲的文章,wiki 引擎则会创建一个指向表单的链接,允许任何人编写一篇。通过这种方式,文章一篇接一篇地增加,wiki 不断发展并变得越来越有用。
另一个例子,也证明了 wiki 对小团体的用处,就是我和我的商业伙伴使用的 wiki。我们使用它来记录技术信息,例如服务器配置更改、项目文档、软件安装、常见任务的标准程序等等。我们还使用它来跟踪业务数据,例如客户联系信息。
对我们来说,好处是显而易见的。根据过去的经验,我们注意到,与不使用 wiki 相比,系统管理和项目文档的记录比例要高得多。此外,信息可搜索且易于编辑。而且,由于我们有文章更改和添加的 RSS 源,因此所有相关人员都可以轻松保持最新状态。
Oddmuse 是一个单独的 Perl 脚本。这使得基本安装非常简单,并支持 Schroeder 的另一个项目目标:保持 Oddmuse 简单易用。Oddmuse 的可扩展性弥补了潜在的灵活性损失。作为证据,您可以在项目网站上找到可用模块的列表。
除了常见的、必需的 wiki 功能,例如自动跟踪最近的更改、强大的链接语法、修订控制和修订的可视化差异之外,Oddmuse 还具有许多值得注意的功能和优势。Oddmuse 最先给我留下深刻印象的事情之一是其文档的质量。Schroeder 将各种语言的丰富文档作为优先事项,并且这方面做得很好。方便的是,他可以使用他正在记录的工具来编写和维护文档。访问 Oddmuse 项目网站既是对引擎运行的演示,也是了解如何设置、使用和自定义引擎的大量信息的途径。
作为一名努力遵守万维网联盟 (W3C) 标准的人,我很高兴地注意到 Oddmuse 生成有效的 HTML 4.01 Transitional。与此相关的是,Oddmuse 与层叠样式表 (CSS) 集成得很好。如果您对通过 RSS 进行联合发布感兴趣,Oddmuse 支持 wiki 的出站 RSS 源和入站 RSS 源聚合。
任何 wiki 的一个明显担忧是页面破坏。毕竟,有什么可以阻止某人编辑页面并有意以某种方式将其搞砸呢?如果您想充分利用 wiki 的最大优势——即任何人都可以创建和编辑页面——只需保持系统开放并在被破坏的页面出现时将其恢复即可。细心的编辑团队可以通过监控“最近更改”页面来捕捉破坏行为。
另一方面,如果您希望放弃开放编辑的优势,并且更愿意从一开始就防止破坏,Oddmuse 提供了两种方法。您可以锁定特定页面或整个站点,并使用密码向某些个人授予页面编辑权限。您的另一个选择是简单地禁止有问题的用户。
Oddmuse 使用平面文件进行数据存储,而不是像 MySQL 或 PostgreSQL 这样的数据库。可以很好地论证为什么这是一个优点,也可以同样很好地论证为什么这是一个缺点。一方面,使用平面文件而不是数据库意味着更简单,管理开销更少。另一方面,数据库在数据存储和检索方面具有优势。如果您认为您的 wiki 必须有数据库支持,那么 Oddmuse 不适合您。但是,如果您担心速度,值得注意的是,搜索速度相当快,例如,在 Emacs Wiki 上,它使用 Oddmuse 并且目前有 2,242 个页面。
Oddmuse 网站的安装部分提供了指向脚本最新版本的链接以及安装和配置指南。基本安装非常简单。下载脚本后,只需将其放在您的 CGI 目录中并使其可执行即可。它应该立即工作。如果它不起作用,请查阅 Oddmuse 网站上的故障排除指南。
即使您没有计划自定义您的 wiki,您也应该在做任何其他事情之前进行一项重要更改。也就是说,您应该将脚本中的 $DataDir 变量更改为您希望 Oddmuse 存储其数据的目录的绝对路径。如果您不更改此变量,Oddmuse 将使用 /tmp/oddmuse 作为其数据目录,并且您可能会在以后丢失您的数据。
您应该采取的另一步骤是,无论您打算使您的 wiki 配置多么简单或复杂,都要设置管理员和编辑密码。要更改的变量分别是 $AdminPass 和 $EditPass。由于密码以纯文本形式存储,因此您的 wiki 的安全性仅与您的服务器的总体安全性一样好。尽管如此,您应该选择强密码。
虽然基本安装提供了功能齐全的 Oddmuse wiki,并且可能就是您所需要的全部,但您可能需要考虑更高级的安装。对于我最近设置的 Oddmuse wiki,我选择了更高级的安装,并且我发现增加的灵活性非常值得在设置过程中所需的少量额外工作。
首先,我使用了网站上清楚解释的包装器脚本策略。此策略消除了每次升级脚本时都需要定义数据目录路径名的需要。其次,我使用了外部配置文件,并在其中指定了外部 CSS 文件。
现在您的 Oddmuse wiki 已经启动并运行,您可以根据自己的喜好自定义它。一些配置是通过 wiki 本身完成的,例如,如果您不想要开放的 wiki,则可以锁定页面或整个站点。
为了通过 wiki 执行配置更改和其他管理功能,您需要将自己验证为管理员。为此,您必须访问密码页面。默认情况下没有指向密码页面的链接,因此您必须手动转到以下 URL:http://www.example.com/wiki/current.cgi?action=password。您必须替换您自己的主机名和路径,当然。此外,根据 Oddmuse 包装器脚本安装说明,上面示例 URL 中的 Oddmuse CGI 程序称为 current.cgi。验证身份后,您可以使用出现在每个页面页脚中的特殊菜单项来进行您想要的配置更改。
其他更改是通过编辑脚本本身来实现的。可以更改许多配置变量以适合您的偏好。如果您选择使用外部配置文件,则可以在那里更改配置变量。
网站提供了所有配置变量的详细说明。它们控制的一些示例包括 wiki 的名称、要使用的样式表、您的徽标的 URL、每个页面的页脚中显示的内容等等。
我很高兴 Schroeder 在 Oddmuse 中包含了 CSS 支持,因为它使得更改 wiki 的布局和外观比原本要容易得多。一旦 wiki 启动并运行,我花了几分钟时间尝试更改样式表,直到 wiki 看起来像我想要的那样。
除此之外,您还可以通过使用可用的模块和扩展程序,甚至编写自己的模块和扩展程序,对 wiki 进行重大的额外更改。有关模块和扩展程序的完整列表,请参阅 Oddmuse 网站。如果您愿意,您甚至可以让 Oddmuse 的行为类似于博客系统。
一旦您对 wiki 的安装和配置感到满意,您就可以开始创建页面。但在您这样做之前,我强烈建议您阅读 Oddmuse 网站的“文本格式规则”部分。一旦您了解了规则,创建和编辑页面就很容易了,但了解您可以通过使用这些规则完成什么是非常宝贵的。
作为新 wiki 的创始人,您需要了解的不仅仅是技术的细节。一个成功的 wiki 取决于贡献者的参与,并且社会组成部分需要像任何技术组成部分一样受到关注。这使事情变得非常复杂。毕竟,社交社区不是以带有 makefile 的 tarball 形式出现的!您需要鼓励和吸引人们参与,并且您需要培育围绕 wiki 成长的社区。这需要时间,而且几乎不是一门精确的科学。
幸运的是,其他 wiki 的创始人花时间写下了他们的经验。MeatballWiki 上的 WikiLifeCycle 页面是一个很好的资源(请参阅在线资源)。在其中,您可以了解吸引贡献者、选择名称、建立有效边界、定义 wiki 的使命或目标、塑造行为规范、防止停滞等等的最佳实践。现在,有了配置良好的 wiki 和对非技术性社会问题的掌握,通往蓬勃发展的 wiki 的道路就在您面前。
Brian Tanaka 自 1994 年以来一直担任 UNIX 系统管理员,并曾为 The Well、SGI、Intuit 和 RealNetworks 等公司工作。可以通过 btanaka@well.com 与他联系。