[E-Lang] E Project, Documentation, and new programmers

Mark S. Miller markm@caplet.com
Sat, 07 Apr 2001 14:46:51 -0700


At 07:02 AM Saturday 4/7/01, steve jenson wrote:
>The first issue that I'm having is how the language seems to be in
>a near constant state of flux. [...]  
>It's also to be expected that people won't want to develop
>in a language that appears to be changing. [...]
>The idea of having to port my code for every new release
>isn't something that sits well with me and so I'll avoid developing in it.
>
>How this fits into OpenCola is that we're not going to be building
>production code on top of a rapidly shifting language. We want to wait
>until a stable 1.0 (or equivalent) release is around.

I'd like to let everyone know how personally painful I find this decision, 
especially because of how perfectly sensible I find it on openCOLA's part.  
This incident reminds me quite forcefully of the need for more inertia and 
conservatism in the design, at this point, of E.  For example, before Steve 
and I had this conversation, I was thinking about the dot issue mostly in 
the terms I was discussing it -- in terms of E's goals as if E was a brand 
new language and design changes were cheap.  Now that we have users (and we 
still have some!), we have different tradeoffs than we did when MarcS was 
the only E language programmer.

This does not mean we should argue about things any less.  Far from it. It's 
just that, when weighing all these arguments and making tradeoffs about what 
to do, we all need to remember the costs imposed by non-upwards compatible 
on actual current users.  Likewise, the costs of scaring away potential 
users -- as they look at E's recent history, they may very well rationally 
decide to wait for stability.

Both actual and perceived instability creates actual costs for us: in the 
recent round of syntax changes, I carefully engineered and tested the 
pocket-switches mechanism, so code using the old syntax could run without 
problem during the transition.  This should have done much to reduce the 
actual costs of this change on our users, but it didn't adequately reduce 
the perceived costs. The result: we lost a terribly important opportunity.

None of this is to say that we could make E truly stable today, or make any 
real commitment to make only upward compatible changes.  Today we can't, 
and we won't be able to until at least we understand how our persistence 
choices effect E.  But even without firm commitments, E is usable today and 
should be accumulating users.  For these early adopters, actual or 
potential, stability is valuable.  I'm only saying that there's a big new 
tradeoff that we must start seriously taking into account alongside the 
others.  Other than this blind spot, I think our collaborative design 
process has been wonderful.


        Cheers,
        --MarkM