0.4 Architecture Diagram
Python
Although it is not in the diagram,
Python is a key piece of Chandler's technology stack. Chandler is distributed with a full Python installation; more for user convenience than because we've substantially altered Python. We're currently having a spirited debate about whether or not including Python in the distribution this way makes sense on all platforms; we're exploring various alternatives.
As of the 0.4 release, we're using Python 2.3.2; generally you should be able to rely on standard Python 2.3 documentation.
wxWidgets
Creating a first class application on Macintosh, Linux, and Windows is one of OSAF's top priorities. We're using
wxWidgets (with the
wxPython bindings) as our cross platform GUI framework. We chose wxWidgets because we wanted a native experience on each platform under one abstraction, with the option of writing platform specific code when necessary.
That said, the OS X port is new and still needs a lot of work. As we are actively working with the wxWidgets and wxPython team on improving wxWidgets on all three platforms, we tend to upgrade to new versions of wxWidgets frequently.
As of the 0.4 release, we are using wxWidgets version 2.5.2.
Repository
Chandler's repository and its relationship to data will be one of its most distinctive and compelling features. Inspired by RDF and associative databases, we put a lot of thought into using a flexible data model (and a lot of work into an implementation of that data model). Chandler's repository stores and retrieves persistent objects called
Items. One of the interesting features of the data model is that schema information is stored similarly to all other data;
Kinds and
Attributes are types of
Items. For a glimpse at the data model and the repository in more detail, check out the
Repository Busy Developers Guide. The repository itself is implemented on top of
Sleepycat's dbxml and Berkeley DB. We've also integrated
Lucene, to use as a full text search engine. More information on the repository project can be found at
Repository Framework.
Parcels
Parcels are Chandler's units of modularity and extensibility. Outside of the core subsystems, most of Chandler is written in parcels. Third parties will be able to extend Chandler by writing their own parcels. The foundation of our data driven application, parcels contain a set of
Items that get loaded into the repository. A parcel is not a place that the user visits in the UI, although the parcel might define
Items that are used to construct the UI (
Blocks,
Views). A parcel might include
Kinds and
Attributes that define a schema, UI elements, and/or user data items. A parcel might also include python code, images, and other resources, referred to by the
Items in the parcel. More information about parcels can be found at
Parcel Framework.
Services
The services layer encapsulates several services used by the Chandler application and available to 3rd party parcels.
Content Model
The
Content Model is Chandler's domain model, the model for the user's content in Chandler: Email Messages, Calendar Events, Notes, Tasks, Contacts, etc. The content model also contains a notion of an
Item Collection, a user's collection of items.
Item Collections are new in 0.4. Most of the content model is PIM related, but one could imagine that third parties might define new types of
Items: RSS items, MP3s, documents, etc. We
auto generate documentation for schema items from all parcels -- a good way to explore the current state of the content model.
Application
3rd Party Parcels
See
DevelopmentHome for links to Chandler's subprojects.
--
KatieCappsParlante - 20 Jul 2004