[Chandler-dev] [Sum] The Great Architecture Discussion of 2007
D John Anderson
john at osafoundation.org
Mon Oct 15 18:39:34 PDT 2007
On Oct 15, 2007, at 5:31 PM, Katie Capps Parlante wrote:
> Hi all, sorry for jumping in to this thread late.
>
> IMHO, Phillip is correct to point out that we're not really looking
> at a dichotomy between "powerful generality" and "simple app
> limited to mail/calendar".
>
> In particular, we want to keep the ability to extend app with new
> kinds of end-user visible data types (content items: photos,
> tweets, yadayada). This includes the ability to dump/reload the new
> types as well as the ability to share the new types. EIM always had
> these requirements in mind, for example.
>
> It would be nice to have a path to:
> - item history (though as PJE points out, this could be modeled
> directly)
> - end user modification of the schema (in a limited way -- end user
> adding fields to stamps, for example)
>
> What would we be losing?
> - Persistence of every aspect of the UI in the repository, block by
> block
Persisting some UI state is easy (and desirable) -- after all that's
what most preferences files contain. It would be easy to save state
someplace other than the repository, e.g. a Python pickle.
> - UI objects (and possibly assorted other lower-case-i-items)
> looking indistinguishable from user-content-items, generically
> editable from a generic UI
>
> I'm happy to lose these things in service of better performance and
> scalability for Chandler. (Not to mention better testability for
> faster development cycles, cleaner extensibility, etc.)
>
> Cheers,
> Katie
>
> Phillip J. Eby wrote:
>> 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
>
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
>
> Open Source Applications Foundation "chandler-dev" mailing list
> http://lists.osafoundation.org/mailman/listinfo/chandler-dev
More information about the chandler-dev
mailing list