Gofer versus Installer was: The Trunk: Morphic-laza.489.mcz

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
37 messages Options
12
Reply | Threaded
Open this post in threaded view
|

Gofer versus Installer was: The Trunk: Morphic-laza.489.mcz

Chris Cunnington
"Lets accept it. For good or bad, monticello packages are the way to go,

and gofer desing is around this observation."

Your position is too extreme. I argued against SqueakMap about as hard as anybody can six, seven months ago.
I got serious push back. Gofer is great and there are lots of reasons to use it. But I don't see any reason to
break things, or decide for people who want to do things in an older mode.

"Better, add to Installer that which Gofer does that Installer doesn't."

This doesn't seem like a great idea. As somebody pointed out, it has no active maintainer. Lukas maintains Gofer
and there are reasons to use it: closer relationship with Pharo, contemporary MC integration (Metacello).


Chris



Reply | Threaded
Open this post in threaded view
|

Re: Gofer versus Installer was: The Trunk: Morphic-laza.489.mcz

Miguel Cobá
El mar, 14-12-2010 a las 15:43 -0500, Chris Cunnington escribió:

> "Lets accept it. For good or bad, monticello packages are the way to
> go,
>
> and gofer desing is around this observation."
>
> Your position is too extreme. I argued against SqueakMap about as hard
> as anybody can six, seven months ago.
> I got serious push back. Gofer is great and there are lots of reasons
> to use it. But I don't see any reason to
> break things, or decide for people who want to do things in an older
> mode.

Why extreme? Gofer made a decision to focus on Monticello because that
is the current de facto format widely in use. I didn't say, kill
SqueakMap or kill universes, I only said that almost nobody uses because
great majority uses squeaksource and monticello to publish new packages
and releases. Even if 10 or 50 people can raise the hand and say that
they use changesets or publish in squeakmap, that, based on observations
on the the squeak trunk, the squeaksouce.com latest activity landing
page and the mailing lists from pharo and squeak, this is a hard fact.
This is akin to the whole blue, yellow, other color click. The fact that
someday the way to use Squeak and smalltalk was with a 3-colors mouse
that doesn't validate the 2010 persistence of those terms to instruct
users to do something. This is plain blindness to the fact that today,
the mice sold and used in windows and linux have only 2 and with luck, 3
button, that in laptops is hard to do a 'middle-click' and the most
evident one that macs have only one button.
Legacy (code|platforms|customs) must be left behind and sometimes even
killed for our own good. :)  (that is indeed extreme, but I believe
it ;)


>
> "Better, add to Installer that which Gofer does that Installer
> doesn't."
>
> This doesn't seem like a great idea. As somebody pointed out, it has
> no active maintainer. Lukas maintains Gofer
> and there are reasons to use it: closer relationship with Pharo,
> contemporary MC integration (Metacello).
>
>
> Chris
>
>

--
Miguel Cobá
http://twitter.com/MiguelCobaMtz
http://miguel.leugim.com.mx




Reply | Threaded
Open this post in threaded view
|

Re: Gofer versus Installer was: The Trunk: Morphic-laza.489.mcz

Igor Stasenko
Miguel, it is never too late to kill old & legacy stuff.
Let people decide what they want by own.
I learned that forcing people making a choice is counterproductive.
You simply can't force it anyways.
So, let the time tell which tool(s) are better and which will rot and die.

--
Best regards,
Igor Stasenko AKA sig.

Reply | Threaded
Open this post in threaded view
|

Re: Gofer versus Installer was: The Trunk: Morphic-laza.489.mcz

Chris Muller-3
In reply to this post by Miguel Cobá
> This is akin to the whole blue, yellow, other color click. The fact that
> someday the way to use Squeak and smalltalk was with a 3-colors mouse
> that doesn't validate the 2010 persistence of those terms to instruct
> users to do something.

Miguel, for a better understanding about this, see:

    http://wiki.squeak.org/squeak/897

The purpose for continuing to refer to colors is for the added level
of indirection required by Squeak's platform-independence...   So we
don't have to say, in all dcoumentation:  "If you're running on
Windows, press the right button, if a Mac the Command-click, etc."

 - Chris



On Tue, Dec 14, 2010 at 3:06 PM, Miguel Cobá <[hidden email]> wrote:

> El mar, 14-12-2010 a las 15:43 -0500, Chris Cunnington escribió:
>> "Lets accept it. For good or bad, monticello packages are the way to
>> go,
>>
>> and gofer desing is around this observation."
>>
>> Your position is too extreme. I argued against SqueakMap about as hard
>> as anybody can six, seven months ago.
>> I got serious push back. Gofer is great and there are lots of reasons
>> to use it. But I don't see any reason to
>> break things, or decide for people who want to do things in an older
>> mode.
>
> Why extreme? Gofer made a decision to focus on Monticello because that
> is the current de facto format widely in use. I didn't say, kill
> SqueakMap or kill universes, I only said that almost nobody uses because
> great majority uses squeaksource and monticello to publish new packages
> and releases. Even if 10 or 50 people can raise the hand and say that
> they use changesets or publish in squeakmap, that, based on observations
> on the the squeak trunk, the squeaksouce.com latest activity landing
> page and the mailing lists from pharo and squeak, this is a hard fact.
> This is akin to the whole blue, yellow, other color click. The fact that
> someday the way to use Squeak and smalltalk was with a 3-colors mouse
> that doesn't validate the 2010 persistence of those terms to instruct
> users to do something. This is plain blindness to the fact that today,
> the mice sold and used in windows and linux have only 2 and with luck, 3
> button, that in laptops is hard to do a 'middle-click' and the most
> evident one that macs have only one button.
> Legacy (code|platforms|customs) must be left behind and sometimes even
> killed for our own good. :)  (that is indeed extreme, but I believe
> it ;)
>
>
>>
>> "Better, add to Installer that which Gofer does that Installer
>> doesn't."
>>
>> This doesn't seem like a great idea. As somebody pointed out, it has
>> no active maintainer. Lukas maintains Gofer
>> and there are reasons to use it: closer relationship with Pharo,
>> contemporary MC integration (Metacello).
>>
>>
>> Chris
>>
>>
>
> --
> Miguel Cobá
> http://twitter.com/MiguelCobaMtz
> http://miguel.leugim.com.mx
>
>
>
>
>

Reply | Threaded
Open this post in threaded view
|

Re: Gofer versus Installer was: The Trunk: Morphic-laza.489.mcz

Ken G. Brown
In reply to this post by Chris Cunnington
At 3:43 PM -0500 12/14/10, Chris Cunnington apparently wrote:

>"Lets accept it. For good or bad, monticello packages are the way to go,
>
>and gofer desing is around this observation."
>
>Your position is too extreme. I argued against SqueakMap about as hard as anybody can six, seven months ago.
>I got serious push back. Gofer is great and there are lots of reasons to use it. But I don't see any reason to
>break things, or decide for people who want to do things in an older mode.
>
>"Better, add to Installer that which Gofer does that Installer doesn't."
>
>This doesn't seem like a great idea. As somebody pointed out, it has no active maintainer.

I think this is a bogus argument. If that line of reasoning were followed, then one could easily say Monticello has no active maintainer. Otherwise why was all the work done to pull all the previous forks of Monticello together, and improve it for the future with v 1.5/1.6 thrown away, with trunk using some ancient version, and Pharo ditto.
As far as i know, Installer repo on Squeaksource is available for people to post to in the open source way of doing things.

> Lukas maintains Gofer
>and there are reasons to use it: closer relationship with Pharo, contemporary MC integration (Metacello).

I can accept using Gofer in trunk, for things that require it like reading it's own scripts.
But I don't want to see Installer go away... because of all the things Installer does that Gofer doesn't.

Ken G. Brown

>
>Chris


Reply | Threaded
Open this post in threaded view
|

Re: Gofer versus Installer was: The Trunk: Morphic-laza.489.mcz

Miguel Cobá
In reply to this post by Chris Muller-3
El mar, 14-12-2010 a las 15:35 -0600, Chris Muller escribió:
> > This is akin to the whole blue, yellow, other color click. The fact that
> > someday the way to use Squeak and smalltalk was with a 3-colors mouse
> > that doesn't validate the 2010 persistence of those terms to instruct
> > users to do something.
>
> Miguel, for a better understanding about this, see:
>
>     http://wiki.squeak.org/squeak/897

Sure, I now, but I didn't know until three years after my first contact
with Squeak. That is not good and we can expect that every new user read
a wiki page to learn what the issue with the colored buttons is. This is
not going to (and have not) work. Aim to the lazy user. To the user that
"know" that the mouse have 2 buttons (or sometimes 3) or the mac user
that only have a big square button  and that is not going to learn why
is good to have more than one button.


>
> The purpose for continuing to refer to colors is for the added level
> of indirection required by Squeak's platform-independence...   So we
> don't have to say, in all dcoumentation:  "If you're running on
> Windows, press the right button, if a Mac the Command-click, etc."

Maybe, but you're exchanging that for "read XXX wiki page and learn what
a blue button/menu is, no matter that in the real no new computer comes
with blue buttons"

>
>  - Chris
>
>
>
> On Tue, Dec 14, 2010 at 3:06 PM, Miguel Cobá <[hidden email]> wrote:
> > El mar, 14-12-2010 a las 15:43 -0500, Chris Cunnington escribió:
> >> "Lets accept it. For good or bad, monticello packages are the way to
> >> go,
> >>
> >> and gofer desing is around this observation."
> >>
> >> Your position is too extreme. I argued against SqueakMap about as hard
> >> as anybody can six, seven months ago.
> >> I got serious push back. Gofer is great and there are lots of reasons
> >> to use it. But I don't see any reason to
> >> break things, or decide for people who want to do things in an older
> >> mode.
> >
> > Why extreme? Gofer made a decision to focus on Monticello because that
> > is the current de facto format widely in use. I didn't say, kill
> > SqueakMap or kill universes, I only said that almost nobody uses because
> > great majority uses squeaksource and monticello to publish new packages
> > and releases. Even if 10 or 50 people can raise the hand and say that
> > they use changesets or publish in squeakmap, that, based on observations
> > on the the squeak trunk, the squeaksouce.com latest activity landing
> > page and the mailing lists from pharo and squeak, this is a hard fact.
> > This is akin to the whole blue, yellow, other color click. The fact that
> > someday the way to use Squeak and smalltalk was with a 3-colors mouse
> > that doesn't validate the 2010 persistence of those terms to instruct
> > users to do something. This is plain blindness to the fact that today,
> > the mice sold and used in windows and linux have only 2 and with luck, 3
> > button, that in laptops is hard to do a 'middle-click' and the most
> > evident one that macs have only one button.
> > Legacy (code|platforms|customs) must be left behind and sometimes even
> > killed for our own good. :)  (that is indeed extreme, but I believe
> > it ;)
> >
> >
> >>
> >> "Better, add to Installer that which Gofer does that Installer
> >> doesn't."
> >>
> >> This doesn't seem like a great idea. As somebody pointed out, it has
> >> no active maintainer. Lukas maintains Gofer
> >> and there are reasons to use it: closer relationship with Pharo,
> >> contemporary MC integration (Metacello).
> >>
> >>
> >> Chris
> >>
> >>
> >
> > --
> > Miguel Cobá
> > http://twitter.com/MiguelCobaMtz
> > http://miguel.leugim.com.mx
> >
> >
> >
> >
> >
>

--
Miguel Cobá
http://twitter.com/MiguelCobaMtz
http://miguel.leugim.com.mx




Reply | Threaded
Open this post in threaded view
|

Re: Gofer versus Installer was: The Trunk: Morphic-laza.489.mcz

Nicolas Cellier
2010/12/14 Miguel Cobá <[hidden email]>:

>>
>> The purpose for continuing to refer to colors is for the added level
>> of indirection required by Squeak's platform-independence...   So we
>> don't have to say, in all dcoumentation:  "If you're running on
>> Windows, press the right button, if a Mac the Command-click, etc."
>
> Maybe, but you're exchanging that for "read XXX wiki page and learn what
> a blue button/menu is, no matter that in the real no new computer comes
> with blue buttons"
>

As I understood it, even the Alto rarely had coloured mouse buttons,
they were most often black.
So virtuality of these colours does not appear to be a new thing.
Is that true ?

Nicolas

Reply | Threaded
Open this post in threaded view
|

Re: Gofer versus Installer was: The Trunk: Morphic-laza.489.mcz

Chris Muller-3
In reply to this post by Miguel Cobá
Well, I think those are good points.

On Tue, Dec 14, 2010 at 4:03 PM, Miguel Cobá <[hidden email]> wrote:

> El mar, 14-12-2010 a las 15:35 -0600, Chris Muller escribió:
>> > This is akin to the whole blue, yellow, other color click. The fact that
>> > someday the way to use Squeak and smalltalk was with a 3-colors mouse
>> > that doesn't validate the 2010 persistence of those terms to instruct
>> > users to do something.
>>
>> Miguel, for a better understanding about this, see:
>>
>>     http://wiki.squeak.org/squeak/897
>
> Sure, I now, but I didn't know until three years after my first contact
> with Squeak. That is not good and we can expect that every new user read
> a wiki page to learn what the issue with the colored buttons is. This is
> not going to (and have not) work. Aim to the lazy user. To the user that
> "know" that the mouse have 2 buttons (or sometimes 3) or the mac user
> that only have a big square button  and that is not going to learn why
> is good to have more than one button.
>
>
>>
>> The purpose for continuing to refer to colors is for the added level
>> of indirection required by Squeak's platform-independence...   So we
>> don't have to say, in all dcoumentation:  "If you're running on
>> Windows, press the right button, if a Mac the Command-click, etc."
>
> Maybe, but you're exchanging that for "read XXX wiki page and learn what
> a blue button/menu is, no matter that in the real no new computer comes
> with blue buttons"
>
>>
>>  - Chris
>>
>>
>>
>> On Tue, Dec 14, 2010 at 3:06 PM, Miguel Cobá <[hidden email]> wrote:
>> > El mar, 14-12-2010 a las 15:43 -0500, Chris Cunnington escribió:
>> >> "Lets accept it. For good or bad, monticello packages are the way to
>> >> go,
>> >>
>> >> and gofer desing is around this observation."
>> >>
>> >> Your position is too extreme. I argued against SqueakMap about as hard
>> >> as anybody can six, seven months ago.
>> >> I got serious push back. Gofer is great and there are lots of reasons
>> >> to use it. But I don't see any reason to
>> >> break things, or decide for people who want to do things in an older
>> >> mode.
>> >
>> > Why extreme? Gofer made a decision to focus on Monticello because that
>> > is the current de facto format widely in use. I didn't say, kill
>> > SqueakMap or kill universes, I only said that almost nobody uses because
>> > great majority uses squeaksource and monticello to publish new packages
>> > and releases. Even if 10 or 50 people can raise the hand and say that
>> > they use changesets or publish in squeakmap, that, based on observations
>> > on the the squeak trunk, the squeaksouce.com latest activity landing
>> > page and the mailing lists from pharo and squeak, this is a hard fact.
>> > This is akin to the whole blue, yellow, other color click. The fact that
>> > someday the way to use Squeak and smalltalk was with a 3-colors mouse
>> > that doesn't validate the 2010 persistence of those terms to instruct
>> > users to do something. This is plain blindness to the fact that today,
>> > the mice sold and used in windows and linux have only 2 and with luck, 3
>> > button, that in laptops is hard to do a 'middle-click' and the most
>> > evident one that macs have only one button.
>> > Legacy (code|platforms|customs) must be left behind and sometimes even
>> > killed for our own good. :)  (that is indeed extreme, but I believe
>> > it ;)
>> >
>> >
>> >>
>> >> "Better, add to Installer that which Gofer does that Installer
>> >> doesn't."
>> >>
>> >> This doesn't seem like a great idea. As somebody pointed out, it has
>> >> no active maintainer. Lukas maintains Gofer
>> >> and there are reasons to use it: closer relationship with Pharo,
>> >> contemporary MC integration (Metacello).
>> >>
>> >>
>> >> Chris
>> >>
>> >>
>> >
>> > --
>> > Miguel Cobá
>> > http://twitter.com/MiguelCobaMtz
>> > http://miguel.leugim.com.mx
>> >
>> >
>> >
>> >
>> >
>>
>
> --
> Miguel Cobá
> http://twitter.com/MiguelCobaMtz
> http://miguel.leugim.com.mx
>
>
>
>
>

Reply | Threaded
Open this post in threaded view
|

AW: Re: [squeak-dev] Gofer versus Installer was: The Trunk: Morphic-laza.489.mcz

Tim Felgentreff
In reply to this post by Igor Stasenko
Agreed. Tools that aren't used enough, will not get enough maintenance and slowly rot away. Open source is not about forcing such decisions on people. It's part of an open project's "fitness function" to have competing implementations for a given number of tasks.


Igor Stasenko <[hidden email]> schrieb am 14.12.2010 22:35:

Miguel, it is never too late to kill old & legacy stuff.
Let people decide what they want by own.
I learned that forcing people making a choice is counterproductive.
You simply can't force it anyways.
So, let the time tell which tool(s) are better and which will rot and die.

--
Best regards,
Igor Stasenko AKA sig.


Reply | Threaded
Open this post in threaded view
|

Re: Gofer versus Installer

Janko Mivšek
In reply to this post by Ken G. Brown
Hi guys,

Cross posted to Squeak and Pharo.

On 14. 12. 2010 22:56, Ken G. Brown wrote:

>> Lukas maintains Gofer
>> and there are reasons to use it: closer relationship with Pharo, contemporary MC integration (Metacello).
>
> I can accept using Gofer in trunk, for things that require it like reading it's own scripts.
> But I don't want to see Installer go away... because of all the things Installer does that Gofer doesn't.

What if someone:

 1. adds to Gofer loading from SqueakMap and other
 2. then Lukas is kindly asked to rename it to the Installer.

That way we will have a maintained installer with a meaningful name and
everyone will be happy. Because we really need one and only one
installer for both Squeak and Pharo.

Best regards
Janko


--
Janko Mivšek
AIDA/Web
Smalltalk Web Application Server
http://www.aidaweb.si

Reply | Threaded
Open this post in threaded view
|

Re: Gofer versus Installer

Andreas.Raab
On 12/15/2010 6:27 AM, Janko Mivšek wrote:
> What if someone:
>
>   1. adds to Gofer loading from SqueakMap and other
>   2. then Lukas is kindly asked to rename it to the Installer.
>
> That way we will have a maintained installer with a meaningful name and
> everyone will be happy. Because we really need one and only one
> installer for both Squeak and Pharo.

Slightly wrong. Gofer isn't an installer. Gofer is the API for
Monticello. If you wanted to rename it you should rename it simply to
"Monticello" and merge it with the MC core packages.

Cheers,
   - Andreas

Reply | Threaded
Open this post in threaded view
|

Re: Gofer versus Installer

Chris Muller-3
In reply to this post by Janko Mivšek
I think my suggestion would be more palatable to folks concerned about tidiness:

  - Strip Installer of all features that can be handled by Gofer.
  - Make Installer USE Gofer for those things that Gofer does
(Monticello packages).
  - That way folks like Miguel can have only Gofer loaded, old fogies
like me can have Installer+Gofer loaded.

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?



2010/12/15 Janko Mivšek <[hidden email]>:

> Hi guys,
>
> Cross posted to Squeak and Pharo.
>
> On 14. 12. 2010 22:56, Ken G. Brown wrote:
>
>>> Lukas maintains Gofer
>>> and there are reasons to use it: closer relationship with Pharo, contemporary MC integration (Metacello).
>>
>> I can accept using Gofer in trunk, for things that require it like reading it's own scripts.
>> But I don't want to see Installer go away... because of all the things Installer does that Gofer doesn't.
>
> What if someone:
>
>  1. adds to Gofer loading from SqueakMap and other
>  2. then Lukas is kindly asked to rename it to the Installer.
>
> That way we will have a maintained installer with a meaningful name and
> everyone will be happy. Because we really need one and only one
> installer for both Squeak and Pharo.
>
> Best regards
> Janko
>
>
> --
> Janko Mivšek
> AIDA/Web
> Smalltalk Web Application Server
> http://www.aidaweb.si
>
>

Reply | Threaded
Open this post in threaded view
|

Re: Gofer versus Installer

Igor Stasenko
In reply to this post by Andreas.Raab
On 15 December 2010 17:46, Andreas Raab <[hidden email]> wrote:

> On 12/15/2010 6:27 AM, Janko Mivšek wrote:
>>
>> What if someone:
>>
>>  1. adds to Gofer loading from SqueakMap and other
>>  2. then Lukas is kindly asked to rename it to the Installer.
>>
>> That way we will have a maintained installer with a meaningful name and
>> everyone will be happy. Because we really need one and only one
>> installer for both Squeak and Pharo.
>
> Slightly wrong. Gofer isn't an installer. Gofer is the API for Monticello.
> If you wanted to rename it you should rename it simply to "Monticello" and
> merge it with the MC core packages.
>

+1 just had the same impression.

Gofer looks like a fine-shaped MC frontend.

> Cheers,
>  - Andreas


--
Best regards,
Igor Stasenko AKA sig.

Reply | Threaded
Open this post in threaded view
|

Re: Gofer versus Installer

Andreas.Raab
In reply to this post by Chris Muller-3
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

Reply | Threaded
Open this post in threaded view
|

Re: Gofer versus Installer

Andreas.Raab
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
>
>



Goofy.st (23K) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: Gofer versus Installer

Edgar De Cleene



On 12/16/10 5:19 AM, "Andreas Raab" <[hidden email]> 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


Nice ! Like to see into image.

We should check all repositories still have sense.
http://squeak.saltypickle.com/ is not more a place for us, any knows about
John Pierce ?

Edgar



Reply | Threaded
Open this post in threaded view
|

Re: Gofer versus Installer

Igor Stasenko
In reply to this post by Andreas.Raab
Nice hacking session :)

I agree that it would be goof to have good & refreshed MC api , which
comes with MC,
not separately.
I just dont know how it is possible today: MC implementation have
spread among multiple dialects,
and asking everyone to update and sync will be an organizational nightmare.
Which gets us back to the question that it was bad idea maintaining MC
as in-image tool instead of separate package, loadable
from public repository & maintained there.

I stumbled over following:

Goofy>>url: repoUrl username: username password: password
        "Creates a repository from the given URL"

        | repo url |
        (repoUrl beginsWith: 'ftp://') ifTrue:[
                url := repoUrl asUrl.
                repo := MCFtpRepository host: url authority directory: url
pathString allButFirst
                                        user: username password: password.
        ] ifFalse:[
                repo := MCHttpRepository location: repoUrl user: username password: password.
        ].
        ^self repository: repo.

this could be nicely repaced just by:

MCRepository location: url user: username password: password.

which then dispatch to its subclasses to find appropriate repo class
based on url schema.

--
Best regards,
Igor Stasenko AKA sig.

Reply | Threaded
Open this post in threaded view
|

Re: Gofer versus Installer

Eliot Miranda-2
In reply to this post by Andreas.Raab
How about a class comment that gives an overview of intended usage, plus an example or two, and sketches the API?

pant, pant.

Eliot

On Wed, Dec 15, 2010 at 11:19 PM, Andreas Raab <[hidden email]> 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









Reply | Threaded
Open this post in threaded view
|

Re: Gofer versus Installer

Andreas.Raab
In reply to this post by Igor Stasenko
On 12/16/2010 3:50 AM, Igor Stasenko wrote:
> this could be nicely repaced just by:
>
> MCRepository location: url user: username password: password.
>
> which then dispatch to its subclasses to find appropriate repo class
> based on url schema.

Good point. I posted a simplified initial version and leave it as an
exercise to some student to change (and post) the code to something that
traverses the subclasses :-)

Cheers,
   - Andreas


Reply | Threaded
Open this post in threaded view
|

Re: Gofer versus Installer

Andreas.Raab
In reply to this post by Eliot Miranda-2
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 <[hidden email]
> <mailto:[hidden email]>> 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
>
>
>
>
>
>
>
>
>
>


12