[squeak-dev] Re: Gofer versus Installer
Andreas Raab
andreas.raab at gmx.de
Thu Dec 16 18:13:35 UTC 2010
On 12/16/2010 9:20 AM, Eliot Miranda wrote:
> How about a class comment that gives an overview of intended usage, plus
> an example or two, and sketches the API?
(HTTPSocket httpGet: 'http://www.lukas-renggli.ch/blog/gofer')
copyReplaceAll: 'Gofer' with: 'Goofy'.
:-))
Cheers,
- Andreas
> pant, pant.
>
> Eliot
>
> On Wed, Dec 15, 2010 at 11:19 PM, Andreas Raab <andreas.raab at gmx.de
> <mailto:andreas.raab at gmx.de>> wrote:
>
> 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
>
>
>
>
>
>
>
>
>
>
More information about the Squeak-dev
mailing list
|