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
