September 2003 Data Model Status
0.2 Release Status
The 0.2 release includes a number of new components for handling Chandler data: tools for describing data, storing data, and viewing data. The 0.2 release includes:
- Our new Chandler Repository
- The repository is the persistent data store for Chandler items, and it also provides a Python binding so that items loaded from the datastore are instantiated as Python objects. The repository code includes a handful of Python classes that represent the data model abstractions like Kind, Type, Item, and Attribute.
- Our Chandler PIM schema and item data files
- We have a handful of schema files representing our embryonic Chandler PIM schema. And scattered around in the different parcels we have Python classes that correspond to the Kinds described in the schema files. The repository uses these Python classes when it instantiates stored items as Python objects.
- We also have a few item data files that contain dehydraded Chandler items. Some of the parcels have code that knows how to read those files and instantiate new items.
Data Model Status
All of those components listed above have one thing in common. They all share a common a notion about how data in Chandler is represented. They all rely on a common set of abstractions about what an Item is, and what Kinds and Types are, and so on. The data model itself is not a concrete component in Chandler, but just a set of abstractions we use to describe data in Projects. For a basic introduction to the data model, see the
DataModelIntro page, particularly the last section about
items and attributes.
Data Model Features and Open Issues
The Chandler data model is still a work in progress. We've got the foundation work done, but we still have lots of open issues that we're working to resolve. For documentation about the data model issues, see the
Sept 2003 Feature List, which has lists of what's been resolved so far, and what the open issues are.
Self-Describing Schema
We have a formal description of the Chandler data model, done using only the primatives found in the data model itself. We call that a self-describing schema. Some object-oriented languages also have self-describing kernels. For example, Smalltalk has a class named "Class" which serves as the root of the class hierarchy, and the class "Class" is and instance of class Class. Similarly, in the Chandler data model, we have a kind called "Kind", and the kind Kind is an item of kind Kind.
Our self-describing schema exists in two separate places in the CVS source tree:
- bootstrap schema
- The repository implementation has a set of XML format files that it loads to bootstrap the data model. Those XML files are the definitive description of the data model as it exists today. They all live in the directory Chandler/model/packs/schema/model, in the form of dozens of files with extensions of .kind, .type, .alias, and .attr.
- CoreSchema.xml
- We also have another representation of the data model, in the single file CoreSchema.xml. The CoreSchema.xml representation is done using our newer XML schema format. It's very similar to the bootstrap schema, but there are some subtle but significant differences that we're in the midst of sorting out. The CoreSchema.xml version also has some additional attributes that the bootstrap version doesn't have.
When Chandler launches, it loads the boostrap schema first, and then tries to load the CoreSchema.xml on top of it, deffering to the boostrap schema whenever there are identically named items. That results in not all of CoreSchema.xml being faithfully loaded, which is something we should have resolved by the 0.3 release.
PIM Schema Status
Release 0.2 has very little actual PIM schema built on top of the data model. In the CVS source tree we have just a handful of schema files representing our embryonic schema, as well as a modest number of Python classes that correspond to the Kinds described in the schema files. Here's a list of the schema files included in Chandler 0.2, all of which are in our new
XML schema format:
Right now the schema is small, but in future releases the schema will grow a great deal, as Chandler gradually gains new parcels, and as those parcels gradually grow to have more and more features that require new kinds of items, like
Calendar Event Reminders, and
Email Attachemnts, and
Access Permissions. The PIM schema will end up growing fairly organically as the Chandler code base grows, but we have done some early thought-experiment type explorations into what the Chandler PIM schema might eventually look like. That work was done some months ago and is rapidly growing dated, but if you're intereseted, it's still available on the
Data Model Schema page.
Item Data Files
Release 0.2 includes a few files that contain dehydraded Chandler items. Some of the parcels have code that knows how to read those files and instantiate new items. Here's a list of those data files:
Contributors