At 02:05 PM 9/5/2007 -0700, Katie Capps Parlante wrote:
Phillip Eby and Grant have been exploring some options (at my request),
I'll let them introduce that work.

Broadly speaking, there are three options regarding the architecture:

1. Start with the current architecture and evolve it in-place
2. Define a new architecture in terms of "off-the-shelf" Python components
3. Develop an architecture specifically to suit Chandler's current goals

Each of these approaches has trade-offs. #1 is heavily burdened by inertia in the long run, and has a high risk of not being able to meet future goals, but is extremely attractive (even addictive) in the short run due to the "high" of being able to get more features quickly, at the cost of later "hangovers" at release time.

That doesn't mean it's necessarily the wrong choice. It's certainly a valid (if risky) choice to leave things as they are, and say, "we'll fix it when (if) we have funding".

The other two approaches carry a significant up-front cost: "porting" existing code to a new architecture. But the immediate trade-off is that every bit of code ported can be verified as covered by automated tests, and the other issues can be resolved.

To a certain extent, these approaches *appear* riskier because there is a definite up-front cost, and the human brain is biased towards options that lead to a sure short-term gain and a possible later loss, over options with a sure up-front cost, for a possible later gain -- even if the two options are mathematically indistinguishable in terms of net gain or loss!

So it tends to come down to the question of what kind of delays we'd prefer: relatively predictable up-front delays, or release-time delays of unpredictable duration?

This might seem like rigging the question -- after all, it's not possible to 100% rule out release-time problems from a new architecture.

Or is it?

If the issue is adequate test coverage (and having a test-driven development culture), then I think we *can* have a considerably more predictable release cycle. In a test-driven model, the architecture is forced to be modular (and acyclic!) in ways that we currently aren't.

Ultimately, this is a "bet the farm" decision, and all choices are equally risky in the sense that the wrong one will sink the project. The major advantage of option #1 is that its failure mode doesn't carry any *personal* risk to the individuals involved.

That is, in the "nobody got fired for buying IBM" sense, it makes sense for *everybody* involved (me included) to CYA by recommending option #1. If it fails, nobody can point a finger at any of us -- especially since the most likely form of failure is just that the project just fades slowly into obscurity.

To choose option #2 or #3 is to open one's self to possible ridicule; every setback, however minor, may be used by the ignorant as an excuse to attack the decision.

For that reason, I do not suggest that we take option #2 or #3 unless there is a 100% commitment to a test-driven culture from everyone involved. Without that, we'll be taking all the risks of a port without gaining the benefit of a 100%-coverage, fully-vetted codebase.

But without that test coverage, Chandler as a project will be on life support. It's not reasonable to expect that volunteer maintainers are going to step up and match the amount of build and QA infrastructure that OSAF currently has, to work around the current level of testability.

So, I think we need to be clear about what path we're choosing, and I think that detailed proposals are actually beside the point at the moment. If we *want* a test-driven Chandler, we can have it. (And we may not even have to give up that many features to get it!)

But we should answer that question first, and *then* worry about the how. Otherwise, it's all too easy to delude ourselves into thinking that we're making the right choice because there weren't any viable proposals for anything else (because none of them will be *perfect*), thereby avoiding the tough choice of what it is we actually want, and why.

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

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

Reply via email to