A History and Roadmap of the MC IDE Project
Richard Gaskin
ambassador at fourthworld.com
Sat May 8 14:13:18 EDT 2004
An overview of the MC IDE project may be useful at this time, worth
taking a moment for any of the readers here who may have joined after
the acquisition (long, but consider it a rough outline for an eventual
FAQ entry):
A History and Roadmap of the MC IDE Project
Phase I: Getting it going (the long road to v2.5.1)
---------------------------------------------------
The MC IDE project is an unusual animal, borne from a unique history
giving rise to a uniquely democratic process.
While every project is different, most successful open source projects
have this in common: they are driven by one strong programmer, usually
the one who delivered v1.0 single-handedly. By delivering a successful,
completed v1.0, it's clear to other team members who come on board later
who's driving the show and why that person deserves to.
Many orphaned open source projects are those that never shipped a v1.0
because they started out attempting consensus before any coding started
(why that's so frequently the case is a complex issue probably best left
for another time).
The MC IDE project differs from these because it already had a v1.0 (and
a v2.0 and a v2.5), but the person who wrote it (Dr. Scott Raney) had
said he will encourage migration to an open source process only if he's
not the one responsible for "herding cats" (a phrase that comes up a lot
in discussions of open source project management <g>).
In the absence of Scott's day-to-day management of the project (though
he remains available for consulting and contributes to the engine) the
next question was, "Who will replace him?"
Personally, since Scott also wrote the engine which drives all IDEs, I
don't think he's replaceable. He's not a god, but he is an uncommonly
smart person and he knows more about the engine than anyone else.
Clearly anyone other than Scott would be a very distant second choice.
In the discussions here last summer after the acquisition of the engine
by RunRev, the natural best second choice seemed to be Everyone.
Of course, as with any democracy, there will rarely be total consensus
on issues. But we all agreed on one thing: we really like MetaCard,
just as it is and has been for years. We all appreciate Scott's good
work on the IDE, and note that he rarely made changes to it over its
long history.
To allow healthy and sometimes necessary changes while avoiding a
"tyrrany of the majority" which might adversely affect stakeholders with
a minority view (always the greatest risk in establishing a democratic
system), a simple mandate evolved -- in essence:
1. When in doubt, leave it out.
2. Consistent with the IDE's history, any final release
must be completely bug-free.
Since the one thing everyone using the MC IDE always agreed on is that
we like it, a mandate of minimal change seemed a simple and effective
checks-and-balances system which allows everyone to at least maintain
the high value they've been getting from the IDE for years.
And Everyone stepped up to the plate: there was a lot of research by
nearly a dozen people presenting the pros and cons of various open
source licenses, a lot of evaluation of various hosting options for the
files, etc. Major kudos to all who participated in those efforts, as
they've allowed us to continue using the IDE through two new engine
releases thus far and have given us a workable process for continuing to
use it indefinitely.
Of course when the talking's done someone needs to do the grunt work of
implementing the community's recommendations, so some sort of vote was
needed to assess how to proceed. Given the understandably sporadic
participation of most of the list members, a rather loose voting method
evolved which seemed at least inoffensive: issue are proposed here on
the MetaCard list, arguments for and against are weighed on their merit,
and when a clear majority of vocal members express a consistent opinion
if it does no harm it goes forward.
The first vote held was for how long a volunteer "project manager" (I
prefer Ray Miller's less formal term, "poohbah") would remain in place,
and the second was for who should be first to do that grunt work.
A term of six months was decided as a useful minumum, and since no other
volunteer was as excited about doing close to nothing as I was, I became
poohbah largely by default. At the time, most of the groundwork was
administrative in nature (rewriting the license for the IDE, putting it
into the IDE, coordinating its release with Scott, replacing the 'Get
MetaCard' page to reflect the current copyright holders, etc.) so it
wasn't very glamorous, and hence not a very compelling set of activities
for anyone.
But as I reminded the folks here in January, formally my term expired on
Groundhog Day. If folks feel like having another vote my position from
last summer remains: I'll continue volunteering as code monkey until
someone else comes along who wants to do as little. ;)
Phase II: Plugins Manager (v2.6)
--------------------------------
To allow nearly infinite extensibility with minimal effort, a Plugins
Manager is being added with contributions from Robert Brenstein, Wilhelm
Sanke, and myself.
With the Plugins menu now exceeding expectations, other than a few bug
fixes here and there to accomodate engine changes no further work should
be necessary until the next licensing change.
Phase III: Anything and Everything (concurrent with v2.6)
---------------------------------------------------------
With the Plugins Manager nearly done, if we may please consider the B5
implementation the last word on that spec we can move on to a much more
interesting set of enhancements: anything anyone wants, done as plugins
so folks can mix and match their favorites to tailor the environment for
their own needs however they like.
There are many benefits to using plugins for enhancing the environment:
- They are easy to build, and easy to trade with others.
- As self-contained modules they encourage following the
"best practice" of high-cohesion/minimal-coupling (i.e.,
connections between a plugin and the host environment
are few and well defined, so changes to one should not
affect the other).
- They require no complicted integration with the IDE code.
- Many already exist, with more written every week.
- They allow MC developers to share their enhancements with
the majority of Transcripters using Rev, and for the most
part vice versa.
- It obviates the "herding cats" syndrome: now that there's
a feature-rich plugin system, no one has to decide anything
anymore about whether an enhancement needs to be added --
anyone can knock themselves out and add any enhancement they
like; folks can use the ones they like and simply not install
the ones they don't need.
- Jacque's "Blocker" runs well as a plugin. ;)
Phase IV: Documentation (independent of specific versions)
----------------------------------------------------------
The MetaTalk Dictionary is getting long in the tooth, with some 10-20%
of tokens added to the language since the Dictionary was frozen in time
with v2.5. It's too much work to replicate the good writing in Rev's
Transcript Dictionary, so finding a way to use that documentation within
MC seems in order.
Rev's content is not governed by the X11 license and therefore may not
be allowed to be included in the MC package, but it's not hard to craft
a shell that imports that content for use in MC. Since the MC IDE
cannot be run without having first licensed the Rev package, every MC
user already has the content installed on their drive.
A prototype of such a shell was developed by Ray Miller, Jacque Gay, and
myself, and will be posted to the MC IDE group for consideration once I
clean up a couple things in it. There are some details that still need
to be worked out, but this sub-project is independent of any other IDE
considerations so it can run on its own timeline (and few here complain
about the current dictionary anyway).
It may also be useful to draft a more complete Read Me detailing IDE
functions and maybe even an FAQ. But to be honest, with so few people
using this IDE I'm not motivated to do much on those myself, though I
would welcome contributions from others.
Phase V: Licensing Change (v2.x?)
---------------------------------
When the inevitable licensing change happens it'll require working with
Scott and possibly an NDA, and since I maintain a correspondence with
him and have an NDA in place I'm happy to contribute to that set of
changes in any capacity that's useful.
Note that these changes will affect the Home stack, likely requiring you
to replace yours. So if you've modified your Home stack you may want to
consider migrating those changes to a plugin now that the mechanism for
that is in place.
Conclusion
----------
Given the unique history of this project, I feel that anyone acting as
poohbah du jour best serves the project if they see themselves as merely
a conduit for the needs of the community. Such a servitude is not at
all demeaning, but arguably a good way to further the lifelong journey
of learning to design to meet the needs of a specific audience. With
any luck, by the time I'm 70 I'll start getting good at it. ;) This
project is good practice, and since the functional needs are few it
usually takes little time away from billable work anymore.
--
Richard Gaskin
Poohbah du jour 1.0
___________________________________________________________
Ambassador at FourthWorld.com http://www.FourthWorld.com
More information about the metacard
mailing list