Personal tools
You are here: Home Google Summer Of Code 2008 Graphical browser for ZODB (zodbbrowser enhancements)
Document Actions

Graphical browser for ZODB (zodbbrowser enhancements)

by Rafael Oliveira last modified 2008-04-06 17:02


The goal of this project is to provide an easy way for an user of ZODB to look inside a ZODB instance and browse through the objects. The goal will be accomplished by extending zodbbrowser, a desktop program that has the same goals but is on an early stage of development.


Currently zodbbrowser [1] presents only a tree view of the objects on a ZODB instance and a text panel where the attribute values are displayed. The following enhancements and new features are proposed:

  1. Make the UI more user-friendly.

    1.1 Make it look more like a file system browser (e.g Windows Explorer),

    where the composite objects (list, dict, tuple, etc) behave like directories and the simple objects (str, int, etc) behave like files.

    1.2 Many minor UI enhancements can be done, e.g use an image icon for each

    object type.

  2. Display object sizes.

  3. Transaction history viewer, with ability to undo a transaction. This will be much like Zope's undo functionality.

  4. Search. The user will be able to search for objects IDs and/or values.

  5. Open console. The user will be able to right-click on an object and open a Python console in order to execute arbitrary commands to manipulate the objects on the DB.

  6. List of all objects by oid (the object ID).

Optional new features (these are optional due to possible time constraints):

  1. New openers. Candidates: ZEO, RelStorage.
  2. Provide some way between the lists (like I'm browsing through the object tree, and I want to see the history of an object in the tree).

Some project decisions

  1. zodbbrowser will remain as independent from Zope as possible. The main reason is ZODB is a great DBMS and can be used standalone on any kind of application.
  2. A Web UI is not on the scope of the project. I think it's easier to implement the proposed features on a desktop app. Also, the same reason for project decision holds here too.
  3. As is known a Web UI would be a plus, effort should be done in order to keep the code as UI independent as possible.


A tool like zodbbrowser is something that users coming from the RDBMS world really miss. All the popular RDBMS have a tool to browse through the data. Also, with the proposed enhancements and new features it will be a great debugging tool. Perhaps it would help ZODB become more popular even on non-Zope related projects.


  1. Study ZODB and zodbexplorer code and documentation to become familiar with it (I've never hacked with ZODB internals). This should take 1 to 2 weeks.
  2. Discuss the project with the mentor and the dev team in order to produce a detailed specification of the new features. Also a detailed time line will be produced at the end of this step.
  3. Implement the new features.
  4. Test, possibly with the help of ZODB community and/or the dev team.

About Me

Current Activities

I'm a software developer and technical leader at Paradigma [2], a company headquartered in Belo Horizonte, MG, Brazil, where I live. Currently I develop custom web applications using the Python/Zope/Plone stack and other technologies.

Also, I'm an Information Science Master Program student at Universidade Federal de Minas Gerais (UFMG) [3]. I have a BSc (Bachelor of Computer Science) degree from the same university. Both the Information and Computer Science departments are at least among the top 5 best in Brazil.

Background on Python and Zope

I've been using Python continuously since mid 2005, when I used it to develop simulations of wireless sensor networks during as a graduation project. By mid 2006 I started to work with Zope professionally and I'm doing it since then.


To Adam Groszer who started to develop zodbbrowser and first proposed the majority of the new features listed in this document.

To Martijn Faassen and other folks who gave me feedback about the project ideas on the Zope mailing lists.


Powered by Plone CMS, the Open Source Content Management System

This site conforms to the following standards: