Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
RE: [stellation-res] Stellation on Mckoi

On Tue, 2003-07-22 at 18:48, Jonathan Gossage wrote:
> >
> > Basically, we just plain got the Location stuff wrong. The original
> > idea was to have something URL-like for specifying repository
> > locations. But it just never worked well. Even if the command-line code
> > were the cleanest, most comprehensible code in the world, the
> > whole location notation would still cause endless confusion and
> > grief. In the next version of the command line, we're going to
> > discard location strings in favor of multiple command-line
> > parameters.
> 
> In fact, the location problems are the least of the problems with the
> command line.There are also some absolutely horrendous performance problems
> with workspace management. Last year, after I had got the MySql stuff going,
> I started to do a high volume benchmark involving about 200K directories and
> about 1.5M files. It took over 30 hours simply to add the files into the
> workspace with the "add" command. I know why this happened but it would be
> hard to fix in a robust manner with the current implementation. I have some
> suggestions regarding the command line but I will present them in a separate
> post.

I think that pretty much everyone is in complete agreement here. The
current command line code is a total disaster area, and it's 
completely beyond our abilities to fix it. Replacing it is the
way to go.

To come to the defense of the author of that code (since he no
longer subscribes to the list, and thus can't defend himself),
the command line code was never really intended to be kept. The
initial implementation of it was written before we really understood
what we wanted from a workspace. It was initially tossed together
just to give me a way to test the back-end. But the initial
implementation of it was *really good*. I know that's kind of hard to
believe looking at it now. But it was good enough that instead of
discarding it as we originally expected, we decided to keep it. 

That initial design was *really* good. I was thrilled when I
saw it. It was a beautiful, clean design; literally good enough
to be used as a textbook example of software design.

Unfortunately, the rest of its history is a textbook example of
the typical problems of software evolution: from the time the initial
implementation was finished, the guy writing never gave *design* a
moments thought. It just kept growing in a totally haphazard fashion,
totally out of control, until it degenerated into total chaos that
no one but its author has any hope of understanding. 

There's some *astoundingly* inefficient stuff going on in there.
Bizzare amounts of line-by-line IO, file copying, archive generation,
and logging. There are times when (I think) the same change involves
making three different copies of the file in different places. 

The current tentative plan is to just leave the current command-line
code alone as much as possible: do absolutely necessary bugfixes,
but nothing else. Meanwhile, we're trying to write the Eclipse 
workspace plugin so that it can be used by either a GUI driver inside
of eclipse, or by a standalone command-line driver. This is totally
new code, with not a single line from the old command-line. This
will replace the current CLI once it's finished.

	-Mark




Back to the top