[squeak-dev] Re: Gofer versus Installer

Andreas Raab andreas.raab at gmx.de
Fri Dec 17 04:55:34 UTC 2010


On 12/16/2010 4:37 PM, Dale Henrichs wrote:
> In my experience implementations that are written using only a few
> classes are more difficult to extend because the key assumptions are
> spread throughout the methods rather than isolated in classes ... you
> have to copy/modify/maintain a lot of code that is not related to what
> you are trying to accomplish...

Generally speaking, yes. If you dump everything in a single class or two 
then you're going to end up in a mess. However, if most of your classes 
end up having a single method or two for no tangible benefit, there's a 
bad smell there as well.

> I haven't looked at the goofy implementation to see how easy it would be
> to use from within Metacello I don't need to ... gofer works just fine
> for what I need:)

Abso-freaking-lutely! Let's not forget what this discussion is about. It 
is *not* about Gofer vs. Goofy. It's about Gofer versus Installer. And 
in this context, I've been trying to make a couple of points with Goofy:

1) Gofer is a thin veneer over Monticello with a better client API. I 
think Goofy shows this very clearly, much more clearly than Gofer does.

2) One of the reasons we're having this discussion is because people 
feel that Gofer is "sizable" enough that they wouldn't want to have both 
Gofer and Installer. But the reality is that Gofer is tiny. The reason 
it feels sizable is that it has 20-something classes lingering around 
for no particular good reason.

3) Another issue in this this discussion is that Lukas uses Pharo 
exclusively and the issue of maintenance has been brought up. Which is 
largely a function of complexity. One of the things that Goofy shows is 
just how trivial it is to reimplement the API if that were ever needed.

That's it. I am absolutely in favor of having a good client API for 
Monticello. I would prefer if the class representing would be called 
"MCClient" or "MCClientAPI" instead of "Gofer", but other than that I'm 
making an argument *for* Gofer not against it. Unfortunately, people 
only hear what they want to hear, so to make really, really sure 
everyone is hearing what I'm saying I'll say it five more times:

I want Gofer *in addition to* Installer.
I want Gofer *in addition to* Installer.
I want Gofer *in addition to* Installer.
I want Gofer *in addition to* Installer.
I want Gofer *in addition to* Installer.

Oh, and @Lukas: Sniping from the back seats is never helpful.

Cheers,
   - Andreas

PS. Also, one additional reason for Goofy was that I wasn't sure if 
there might be hidden gotchas with the implementation that would turn 
out to require the command pattern. I've seen that happening before and 
didn't want to be caught with egg on my face :-)



More information about the Squeak-dev mailing list