一、起源
我想很多人都像我一样,收藏网页经历了从多到少,又从少到多的过程。
一开始,网络上信息比较少,比较集中,一类信息往往集中在少数“中心”、“门户”网站,而搜索引擎又还不那么发达,于是用户比较多地依赖于浏览器的书签功能,将那么几个网站收藏起来,以备日后使用。
后来,网络上的网站数量、页面数量和信息量都迅速增加,并且越来越分散、“去中心化”。很少网站能够独占某方面的最好、最新的信息,更多的信息分散在大量不起眼的小网站和个人主页上。另一方面,搜索引擎也应需要而迅速发展起来,需要的信息只要网络上确实有,基本上就能通过搜索引擎找到,质量也有一定保证。那为什么还要收藏呢?为什么要绞尽脑汁地分类呢?在“层次森严”的收藏夹里找一个网页可能还没有通过搜索引擎找快! 于是收藏夹里的内容停留在很久以前的状态,人迹罕至,杂草横生。
但是,应该说,用户使用书签的需求并没有完全消失。比如:
1) 已经看过的网页中有些网页的质量是受到用户本人检验和肯定的,难易程度是适中的,内容和文章结构是用户熟悉的。所以相比搜索引擎每次提供的新内容,这些网页更适合再次参考和查阅,用户能够迅速定位到文章中满足需要的相应信息。
2) 待读功能。看到一篇似乎不错的文章,但当时又没时间细看,这个时候就可以收藏起来,等到有时间的时候再细看。
所以,书签功能被冷落的原因是浏览器的书签功能没有跟上网络环境和用户需求的变化,这包括:添加书签的过程不够轻快、树形层次结构(目录结构)分类困难、不能以较高的效率支持大量书签、不支持灵活的搜索等。
再后来,Web进入了2.0时代。用户开始释放表达和分享的热情。表现在书签上就是del.icio.us这样的社会化网络书签。因为它是网络的,所以有强大的数据库支持,轻松支持大量书签,并且使用tag而不是死板的层次分类法,比如,看到一个小狗的视频,用户不用苦苦思索是应该放到“视频”目录,还是应该放到“狗”目录,又或者放到“可爱”目录,可以同时打上这三个tag,这样添加书签的过程变得轻松愉悦。同时,网络服务能够提供强大的搜索功能,能够迅速响应对大量书签的查询,甚至是全文查询。另一方面,因为是“社会化”的,人们可以分享对某个网页使用的tag,分享用某tag标记的网页。而且在线书签还有可以跨平台、跨系统随处使用,并且不占用本地资源的好处。这样,一方面使用书签的阻力大为减少、另一方面动力大为增加,书签复兴了。
甚至,网络书签开始入侵浏览器的地盘了。del.icio.us Bookmarks这样的Firefox 2扩展在提供在线服务之外也支持本地存储,可以离线使用,可以导入Firefox本身的书签,这样的扩展已经完全可以替代Firefox 2原有的书签系统。
终于,浏览器开始坐不住了,要与时俱进,守住自己的地盘了。Firefox 3要在本地提供支持tag、支持大量记录、支持灵活迅速的查询的书签系统。为此,Firefox 3在后台使用了轻量型本地数据库引擎sqlite作为书签的数据管理系统。sqlite具有关系数据库的基本功能,相比以往简单的文件读写来说,应该说要强大和灵活得多了。但是Firefox 3并不是要取代在线服务,不是要取代其表达和分享的社会化功能,或者在搜索上与之一较高下,而是要为在线服务和扩展们提供更好的本地数据存储和离线功能。毕竟浏览器本身提供的支持一般来说拥有更高的性能。这有助于在线服务商和扩展开发者将精力集中在其它方面。当然,扩展仍然有使用自己的一套本地数据管理系统的自由。另一方面,这也给用户提供了更多的自由,使其不必受限于某个在线服务商。可以想象,Firefox 3正式发布后,各个网络书签服务商很快就会纷纷提供与Firefox 3本地书签数据库相连接的扩展,用户可以很方便地从一个迁移到另外一个。甚至会有独立的扩展,同时支持多个在线服务,用户可以同时使用多个在线服务,而只保持一份本地数据。
二、Firefox 3
因为书签不过是标记了的浏览历史,浏览历史和书签无论在数据模型和功能方面都类似,所以Firefox 3里历史和书签是统一用sqlite存储和管理的。数据属性方面,目前来看,相对以往似乎倒还没有增加很多。除了以往的name(title), location(URL), last visit date, visit count, keyword, description, add date, last modify date这些,增加了favicon(网页图标)和tag。
在界面方面,主要的变化包括:
1. 快速收藏,打tag
以往收藏网页要经过以下步骤:选择菜单“添加书签”或使用快捷键 -> 在添加书签对话框中选择文件夹/分类 -> 按“确定”按钮。这才正式收藏。现在可以一步完成:使用快捷键,或者用鼠标点击地址栏里的星形图标(如下图所示)。只需一次按键或一次鼠标点击。当然还是可以通过菜单操作。关键是,不再需要确认,可以先不关心分类,收藏起来再说。当然,保存到本地也不存在网络延迟的问题,不需要等待。这使得收藏的过程得以轻快化。
(注:测试和截图使用的版本是: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9b3pre) Gecko/2007122605 Minefield/3.0b3pre,下同。)
当然也可以立即在“下拉”收藏小窗口里进行分类,包括打tag和选择目录(仍然兼容老的树形目录分类方法)。以往使用过的tag已经自动列了出来,可以直接用鼠标选择。
另外,那个星形图标总是显示的,如果当前页面已被收藏,则显示为黄色/实心,否则为白色/空心,这样用户浏览时总是能够立刻知道当前页面是否已被收藏。
2. 书签菜单(Bookmarks Menu)、书签工具栏(Bookmarks Toolbar)、书签管理器(Bookmarks Manager)含义的变化
以往,书签菜单里列出了所有书签,书签工具栏是书签菜单里的一个目录:Bookmarks Toolbar Folder。现在,因为书签项目可能累计到非常大的数目,全部放在书签菜单里会造成不必要的程序负担,所以现在书签菜单不再包含所有书签,也不包含书签工具栏,书签菜单和书签工具栏分别作为“所有书签”下的两个子目录。另外,增加了”Unfiled Bookmarks”分类,用来容纳既不在菜单、工具栏里,也不在其它任何自建目录里的书签。也就说,所有书签 = 书签菜单 + 书签工具栏 + 自建目录 + Unfiled Bookmarks。用户可以将最常用的书签放在工具栏上,次常用的放在菜单里,快速添加的和其它的就放在自建目录和Unfiled Bookmarks里好了。
Bookmarks Manager也有了变化,不再只用来管理书签,还用来管理历史(其实主要是查询),所以名字也改了,叫Library(中文如何翻译?)。见下图。
3. 复杂查询
有了后台数据库的支持,实际上所有字段的组合查询、排序都是可以轻松实现的。界面上要考虑的主要是如何在功能和界面的简洁易用性之间平衡。目前在Library里,可以实现的组合查询条件包括:文字(title,URL,tag,注释)、网站/域名、访问时间段,这些条件可以“与”,也可以“或”,可以针对书签,也可针对历史。查询结果可以按所有字段排序。这样,可以设计出一些有用的查询,比如所有一个星期内访问过的包含”firefox”的网页、收藏的所有被tag为”待读”和”bookmark”的网页、一个月内访问过的网页按访问次数排序等等。虽然这种查询似乎技术味太浓,但是当收藏有几百个记录,历史有几千个记录时,应该会派上它的用场。
更加方便的是,查询条件可以保存下来,可以像普通目录一样放到书签菜单或书签工具栏上,不同的是,这是一个“动态”目录,里面的内容是按照所指定的查询条件随着用户的使用不断更新的。比如可以将“包含文字‘iPhone’和‘评测’,并且在一个星期内访问过”这个查询条件/动态目录放到书签工具栏上,这样,用户这个星期每访问一个包含‘iPhone’和‘评测’的网页,该网页都会自动出现这这个动态目录里。
Firefox 3也预置了一些动态目录(或者叫做”智能目录”),包括:最常访问的网页、最近收藏的网页、最近使用的tag、使用最多的tag等。
感觉目前这部分界面,包括上面的“下拉”收藏小窗口和这个Library的界面,都还不是很美观,至少Windows版是这样的。另外功能上也还有些问题,比如Library里项目不能拖动、不能直接进入高级查询(必须先再搜索框中输入任意内容)、Bookmark All Tabs时不能指定tag等等。但是我想Firefox 3正式发布时,这些问题应该能得到解决或大为改善。
Firefox做为开源软件,其核心团队的注意力更多的放在核心功能和平台框架上,并不追求太花哨的界面或不常用的功能。只要有了平台框架的可定制性和可扩展性,即使在美观和小的功能方面不符合部分用户的喜好和需求(这是无法避免的),也能通过扩展和主题来弥补。相信Firefox 3正式发布后,会出现针对书签和历史的不同侧重的扩展,比如合并书签侧栏和历史侧栏,固定添加书签时的缺省目录/缺省tag,tag分级浏览,tag云等。甚至是更复杂的图形表现,比如用户在一段时间内对各个站点的浏览趋势图等。
性能方面,目前每次添加/删除书签时,感觉(主要是听觉)硬盘都有非常“急促剧烈”的读写操作,如果一次添加100个书签,硬盘会剧响20秒左右。这给用户的感觉是很差的。另外新的数据管理系统也消耗了更多的内存、硬盘空间和CPU资源。这些性能问题应该说是十分关键的,处理不好就破坏了Firefox轻巧的特点。功能和性能之间的权衡总是很难的,希望Firefox 3最终发布时在这方面能让人感到惊喜。
数据库很灵活,sqlite也可用来存储和管理其它数据,比如下载记录,扩展也可用它来管理自己的数据,这样也进一步增强了Firefox“平台”的特性。
三、期望
最后说一下在Firefox 3里可能不会实现、但是我感觉非常有用的关于书签的功能。希望将来的浏览器、扩展或在线服务商能够实现。(与网络书签的连接前面已经说过,这里略过。)
1. 全文搜索
虽然有了网页的标题、描述、tag等信息,但仍然是不完整的信息。如果能像搜索其它网页一样,对自己的历史或书签网页进行全文搜索,则要方便得多。如果与普通的网页搜索整合起来,则更加方便。比如说在浏览器的搜索栏里输入关键词进行搜索后,同时显示对自己的历史/书签的全文搜索结果和对所有网页的全文搜索结果。
2. tag建议
当用户要对一个网页打tag时,浏览器能够自动给出一些tag建议,用户只要用鼠标点取就可以了。就像del.icio.us提供的功能那样。建议的来源可能包括网页的meta-data、对网页文字内容的分析提取、其它人对这个网页使用过的tag等。当然,可以直接利用社会化网络书签服务的这部分功能。
3. 收藏图片,视频和文档
虽然能够收藏图片,视频和文档所在的网页,但是如果能够直接收藏它们,会更加方便。
4. tag的语义问题
即如何处理“计算机”和“电脑”这样的同义词,如何处理英语单词不同形式(比如单数复数)的同义性,如何处理缩写和全称的同义性,如何处理其它一些词的近义性、包含性,等等。不过,这些是tag分类法本身目前存在的问题。
参考:
Firefox 3 Product Requirements Document: Places
Places Wiki
Intelligent Bookmarking [Draft]
How to build a better web browser
User:Dria/On Tagging
Bookmarks Design Discussion
Mozilla2:Unified Storage
Places:User Interface
places@bugzilla