This document describes the implementation of the Firefox Places component.

It is a robust system to manage History and Bookmarks through a database on the backend side and a model-view-controller system that connects frontend UI user manipulation.

History and Bookmarks

In Firefox 2, History and Bookmarks used to be kept into separate databases in the Resource Description Framework format (RDF format).

However, Firefox 3 implemented the Places system. It has been done due to multiple reasons, such as:

  • Performance: certain search or maintenance operations were very slow

  • Reliability: the filesystem facing side of RDF was not so robust, often causing corruption or unexpected states

  • Flexibility: being able to cross data allows for interesting features, like the Awesome Bar

  • Maintainability: the future of RDF was unclear, while SQLite is actively maintained and used by a large number of applications

Where to Start

For the high-level, non-technical summary of how History and Bookmarks works, read Nontechnical Overview. For more specific, technical details of implementation, read Architecture Overview.