聚焦.NET 开源世界里的奇葩:Beagle

  • James Vastbinder
  • 霍泰稳

2007 年 8 月 17 日

话题:.NET开源DevOps语言 & 开发架构

就 Beagle 这款著名的开源.NET 应用,InfoQ 采访了 Joe Shaw 和 Pierre Ostlund。Beagle是目前 Linux 平台上最为著名的 Mono 应用之一,为 Linux 社区提供了桌面搜索功能。



InfoQ:是什么推动了 Beagle 项目的创建?



Joe Shaw:Beagle 其实起源于一个称为Dashboard 的项目, 是我和 Nat Friedman、Alex Graveley、Jim Krehl 和其他一些朋友在 2003 年夏天做的。Dashboard(比属于 Apple 自己迥异的 Dashboard 还要早)背后的思想是让计算机了解某 个给定的时间里你在做的事情,比如阅读邮件、和朋友聊天、写文档等,它应该能显示那时和你所做的事情相关的一些信息。我们所做的很多工作是基于人的:如果 我在和 Nat 聊天,系统就会显示给我 Nat 最近更新的博客,或者我从他那儿收到的最新的邮件,以及他的邮件地址和 IM 昵称、电话号码等。另外如果他在窗口 上输入了某个人的电话号码,系统就能进行搜索并提供给我相关的信息等。

在做 Dashboard 的时候,我们发现平台有两个不足的地方:(1)由于各种原因很难访问到数据(和微数据),(2)我们丢失了大量能确定不同数据间关系的微数据。

Beagle 的创建很大程度上是为了解决问题 1。它能索引到文字内容和微数据,因此能被高效地搜索到,而应用只需要到一个单独的地方找到它并快速地取到它即可。

InfoQ:Beagle 的开发是如何赞助的?





Joe Shaw:最初的 时候,Novell 赞助了至少一个全职开发者。开始是 Joh Trowbridge,晚一些的时候是 Dave Camp,我是兼职代码贡献者。Dave 后来去了 Hula,我就变成了全职,和 Joh 一起工作,在 Joh 去年一月份离开后,就是我自己了。曾经有一段时间 Dan Winship 以兼职的形式和我一起工作。

除了这些,Google 还通过它的夏日代码计划(Summer of Code program)在去年和今年的夏天间接地赞助了开发。

但是当然,Beagle 的力量源泉是因为它是一个开源的项目。很多努力都是由个体贡献者提供的,如果没有他们,Beagle 不可能有今天。一年前我列出了所有参与其中的贡献者,数目已经超过了 100。





InfoQ:Beagle 目前进展如何?



Joe Shaw:到目前为止,我认为 Beagle 是今天 Linux 平台上功能最强、最可用的桌面搜索系统。我们支持超过 20 种数据源(文件系统、邮件、IM 记录等)和超过 60 中数据格式(MS Office、ODF、PDF、MP3 等),这是任何一款操作系统上的桌面搜索所不可比拟的。

在大多数 Linux 发行版中都包含了 Beagle,有一些还相当好地在 Beagle 中整合了桌面体验。

对于项目本身,我们正在为 0.3.0 而努力——对我们 0.2.x 系列的一个重要更新——它会支持更快的索引、对存档内容更完全的索引、对像 Tag 和标记等外部存储的微数据更好的支持。





InfoQ:Beagle 和 Google Desktop、MS Desktop Search 等的竞争点在哪里?

Joe Shaw:呵呵,MS Desktop Search 不能运行于 Linux,而 Beagle 还不能运行于 Windows,所以我不认为它们是竞争关系。

Google Desktop 是刚支持 Linux,尽管它索引了 Gmail(我们还没有),但它没有 Beagle 已有的其他类型文件。它不能索引 IM 会话,或者不能和除 Thunderbird 以外的邮件客户端整合地很好。在它索引的时候它降低系统的性能,和现有的桌面应用没有整合。另外它的非开源基本上限制了它的扩展能 力,从而不能够支持新的或者已存在的数据类型,同时也意味着它永远不会和 Linux 桌面绑定的很紧。而 Beagle 的许可开源协议在这一领域是个优势。

GDL 有很多很好的功能:它能做一些版本控制和对缓存数据的存储;能更好地在硬盘上处理空邮箱文件;支持对 Gmail 的索引等,但是所有的这些功能没有一个是 Beagle 所不能实现的。





InfoQ:Beagle 的目标用户是谁?

Joe Shaw:Beagle 既面向最终用户,也面向开发人员。对于开发人员,我们提供一些真正好用的 API 以扩展 Beagle 能索引到的数据类型和搜索到这些索引。这意味着开发人员能将索引和搜索整合到他们的应用中,或者围绕搜索构建全新的用户接口。

面向最终用户,Beagle 的目标只是让发现数据变得更简单。对用户而言,文件系统就是一个必须要面对的神秘咒语,很多情况下人们是直接忽视它们了事。他 们只是将所有的文件放到“我的文档”文件夹。某种程度上我自己也是这样,我所下载的所有东西都放到一个指定的文件夹,日积月累,文件堆积如山,最终的情况 就变成如果你要找某个东西就像要从一个干草垛里找一根针那么困难。然后将邮件存档到文件系统或者一个服务器上,且只能通过邮件系统访问这些邮件。对地址簿 里的联系人或者日历事件也是一样。从前在 Linux 平台上,用户根本没有办法(非命令行)访问 IM 聊天日志。你的浏览器缓存了 Web 页,但你却基本上访问 不到。

通过一个图形的搜索界面,Beagle 解决了这些问题,使得它们功能完备而且易于访问。你再也不需要浏览一层一层的文件夹,再也不需要在目录里面一个一个 地查找那些可能自己已经忘记名字的文档。你所有的邮件、IM 日志、RSS 种子、Web 历史和地址簿联系方式和其他文件一起变得唾手可得。

当然,那是一个理想境界。有些人,比如我,因为组织能力不足,这样的工具对我就非常有帮助。而有些人,组织能力特别好,钟情于文件夹,那么桌面搜索也许对 他们完全是多余的。事实就是如此,Beagle 不是针对所有人的。但是,在将来我们也许能看到一些基于桌面搜索的更多创新应用,对那些组织能力很强的个人 也非常有帮助,就像我刚才提到的 Dashboard 项目。

InfoQ:对 Beagle 的未来设想是什么?

Joe Shaw:总是有更多的数据需要索引,更多的性能优化需要处理等。那是一个令人头疼的未来:

除了上述的两点,我们正在计划增加网络搜索,这样你就可以在多台机器上允许搜索。在这儿我们想使用具有多点传输 DNS 和服务查找功能的 Zeroconf, 使得用户能在不需要任何配置的情况下在本地网络上进行搜索。另外一个潜在的功能是通过对文档做一些状态分析,自动识别文档的语言……针对这些功能,我们会 提供一些补丁。

我乐意看到 Linux 桌面上的平台能扩展到用 del.icio.us 样式的标签标注所有数据,包括文件、邮件和网页等,使得这些数据让 Beagle 可以索 引到;我乐意看到更多的应用能够进步,不再固步自封,将数据开放给其他的应用,包括 Beagle;我乐意看到应用能存储数据间固有的关系,比如当我保持一 个邮件附件的时候,能够在磁盘上存储发给我邮件的这个人的相关信息,从而使得 Beagle 能够索引得到;我乐意看到更多的应用将 Beagle 作为它们的内 部搜索引擎使用等。对 Beagle 自己来讲,所有的这些都不是必须要改变的,我们要做得是更好地提高用户的体验。

欢迎访问 InfoQ 网站上的其他Mono 相关报道

查看英文原文:.NET Spotlight on Open Source: Beagle

.NET开源DevOps语言 & 开发架构