[Chandler-dev] Architecture Pilot Project Proposal

Grant Baillie grant at osafoundation.org
Mon Oct 15 15:49:44 PDT 2007


Since the architecture thread got increasingly bogged down in some  
specific and pretty low-level discussion of storage specifics, it  
seemed like a good idea to outline specifically what it is Phillip  
and I are proposing for a pilot project. Some of these details have  
been exposed within the previous thread, but in the interest of  
transparency I'd like to collect them here.

What we're proposing is, to devote approximately 6 person months(*)  
(i.e. 3 people for 2 months, probably, or 2.5 people for ) to have  
the following in place:

* Testable (and doc/unit tested) interaction model (i.e. "the app  
without the GUI"). Includes:
    * sidebar
    * dashboard
    * calendar (including recurrence)
    * reminders
    * triage
* Testable (and unit tested) domain model
* Testable presentation layer hooked up to wx

Subsidiary goals (i.e. things we are making sure we have a story for  
while designing the code):

* Extensibility
* Scriptability
* Performance

Explicit non-goals:

* Persistence layer: i.e. not saving user data (import from a format  
like .ics is possible, especially for performance testing purposes).
* Sharing/email import.

The lack of persistence is likely to be controversial in some  
quarters. The above course is really based on the observation that  
the twin goals of

   * removing persistence from CPIA
   * separating out a testable 'app' layer

necessarily involve implementing extensive scaffolding to emulate the  
existing repository usage (notifications, including collection  
observation, for example). If our long-term strategic aim is to have  
at least the prospect of attacking scalability and performance at all  
levels, this path gives a clear picture of what the app requirements  
are for storage. Said another way, it's a way to ensure that we can  
know whether there are performance/scalability bottlenecks in what  
has been termed the "app level", and to have specific performance  
goals for the storage level (for which chandlerdb is an option).

--Grant


(*) a.k.a. "mythical man months"



More information about the chandler-dev mailing list