At 10:39 PM 10/9/2007 -0700, Andi Vajda wrote:

On Tue, 9 Oct 2007, Phillip J. Eby wrote:

The thing is, once you look at this from the app layering perspective, the mismatch between the relatively simple things the app is trying to do, and the very powerful generality of the repository, becomes more apparent.

So, I ask again to the general readership of this list - Phillip, I think
your opinion is pretty clear - do we want to compile Chandler into a
"relatively simple" app like Mail.app or do we want to keep the "powerful
generality" part of the vision and implementation of Chandler when I joined
the project in 2003 ?

This is both a false dichotomy and a red herring, because:

1. It is not an either-or choice, and
2. Nothing I have proposed removes any ability of Chandler to have "powerful generality".

In fact, the domain refactoring Grant and I are working on significantly *improves* the generality of the application, as it decouples dashboard information from content items, so that it's possible for plugins to have "content items" generate an arbitrary assortment of dashboard entries. The same is true for reminders.

(That is, we have a way to fully generalize recurrence and reminders, in a way that's quite extensible and reusable by plugins, that the current model does not support.)

This is only one example of the many ways in which I expect Chandler's current level of "powerful generality" to be expanded as a side-effect of the refactoring.

So, it would be helpful if you could clarify precisely what "generality" you're referring to, that you're afraid we're losing.

Note, too, that nothing that is being contemplated rules out the possibility of having user-defined schema at a later date. Nothing stops anyone from writing a plugin that contains a static schema that meta-models dynamic schema elements, for example.

However, the reality of the project is that OSAF actually creating such a plugin is out of scope for the foreseeable future, and was already declared such two years ago.


If that's the route we'd like to take Chandler to, fine. That should be clearly stated.

I believe Katie has already stated it, even as far back as the creation of the schema API. But I imagine she will clarify it again if needed.

Katie, I certainly missed your earlier statement in this direction.
What is your take on this ? Where do you stand on this ?

Based on your comments above, I suspect that the "this" which I am talking about is not the same as what you think you have missed.

What I'm referring to is that end-user programmability of Chandler has not been a primary goal of Chandler development for about two years now, and there has been a moratorium on new investment in that direction. Indeed, even platform improvement was designated as secondary, with priority to be given only to platform issues affecting the core PIM application development.


Phillip's opinions in this area are not news to me. I even offered him my repository job shortly after he joined OSAF when we had a similar conversations. For various reasons, he didn't take it then.

And one of those reasons is that it's a silly thing to offer. You're not a samurai, so there's no need to commit hara-kiri just because some features got re-prioritized. Put the sword away, already, nobody is questioning your honor. :)


I'm ready to
make the same offer again as we're ready - it seems - to abandon another -
major this time - part of the early vision.

It hasn't been abandoned, but it was re-prioritized and deferred... even before I ever sent my resume' to OSAF.

I know, because I checked out the Chandler wiki before deciding to apply. What I read there indicated quite clearly that end-user programming and "development platform" goals had been deferred, in favor of a focus on out-of-the-box functionality.

(If it had *not* said that, I wouldn't have bothered to apply. Projects without a clear vision of what to *exclude* from a current milestone, don't ever finish... like setuptools 0.6. ;) )

To defer or exclude from a release, however, is not the same thing as to "abandon".


I mean that by implementing a skiplist *inside* of BerkeleyDB rather than using a native BerkeleyDB structure, we're adding an "interpretation" layer there.

What is the native Berkeley DB structure that corresponds to a skiplist ?

A BTree. And the native Python equivalent is a list. You may recall that at one time, I compared the performance of the skiplist implementation with a simple Python list object, and found that for lists of up to 50,000 items, Python lists were faster -- often significantly faster. This is another good example of where we are reinventing wheels in Python code that somebody already wrote a mature implementation of in C.


I don't know where you're getting that the repository is slow in doing its
persistence job. It slows down in its mapping layer, in the layer between
the persistence layer and the app. We have so many sorted indexes because of
the generality of the Sidebar that whenever a trivial change is made in an
attribute, they all have to be indexed. I don't see where this work comes
for free, either code-wise, or perf-wise, in a relational model.

Surely you're not comparing the way the repository does indexes with the way it works in a relational DB? There aren't any "notifications" there, certainly not at the Python level.

I'm a little confused by your argument, though. On the one hand, you've been saying that the application layer is what's causing performance problems. However, if we were to refactor the application layer for best performance, it would no longer conform to the repository's view of the world as a persistent object store.

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

Open Source Applications Foundation "chandler-dev" mailing list
http://lists.osafoundation.org/mailman/listinfo/chandler-dev

Reply via email to