[squeak-dev] Re: Gofer versus Installer
Andreas Raab
andreas.raab at gmx.de
Thu Dec 16 07:19:14 UTC 2010
Folks -
To illustrate my point about Gofer being an API, here is an
implementation of the same API. Gofer's little brother -called Goofy-
provides an implementation of the Gofer API but it's a bit simpler and
comes in a single class (with a total of 400 LOC or so). It passes most
of the Gofer tests.
The exercise was actually interesting since it points out several things
that are just plain broken from the Monticello perspective. I just
posted a fix for the first issue - a way to get versions and names in a
consistent way from different repositories. Clearly a thing that should
be in Monticello.
Another interesting issue is some of the cleanup that is in Gofer and
pretty much directly replicated in Goofy's #cleanoutWorkingCopy:
#unloadWorkingCopy: and #unregisterRepositories:. These are all things
that need to be folded into MCWorkingCopy but I'll leave that for
another day since I'm a bit tired right now and don't want to
accidentally break MC in the process :-)
In any case, if you look at Goofy I think you'll see the API much more
clearly. It's a good API, but it doesn't need to be spread out amongst
some 20-something classes.
Cheers,
- Andreas
On 12/15/2010 9:54 AM, Andreas Raab wrote:
> On 12/15/2010 9:21 AM, Chris Muller wrote:
>> One question that came to my mind last night: What does> 1000 lines
>> of Gofer code bring to Monticello-loading that I can't already do with
>> just Monticello? or with a couple of facade methods added to plain
>> MC?
>
> I spent the evening yesterday to look at Gofer in detail and it is what
> led me to say that Gofer is really an API to Monticello, not an
> installer. First, there is nothing in there that should not be part of
> Monticello proper; contrary to Installer and Metacello I would expect
> all the stuff that is in Gofer to be readily available in Monticello
> itself. Gofer is simply a good facade to Monticello with a useful API.
>
> Secondly, much of the code in Gofer comes from the "command pattern gone
> wild" problem. Gofer simply overuses the command pattern. Every
> operation is wrapped in a separate class without any need for doing so.
> As a consequence, things that should be a simple "self foo" become
> unnecessarily complex in creation, setup, and execution. If you would
> take this out, it would reduce Gofer to 5 classes or so and the total
> code size by a significant amount while improving clarity.
>
> As an API to Monticello, Gofer is very nice and we should standardize on
> it. But as a "replacement" for Installer it's not even in the same
> ballpark.
>
> Cheers,
> - Andreas
>
>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: Goofy.st
Type: application/x-st
Size: 17449 bytes
Desc: not available
Url : http://lists.squeakfoundation.org/pipermail/squeak-dev/attachments/20101215/33027ad9/Goofy.bin
More information about the Squeak-dev
mailing list
|