Need to do something
Avi Bryant
avi.bryant at gmail.com
Fri Oct 14 06:41:52 UTC 2005
On Oct 13, 2005, at 8:40 PM, Daniel Vainsencher wrote:
>>
>> There are manual ways for an experienced developer to integrate
>> Traits into whatever image I give them. There may be challenges
>> unique to any particular image, but they would certainly be
>> solvable.
>>
> Here we dont - the challenges for Traits are not unique for some
> specific image at all. Adrian and I have already created and run
> such a script, so while we don't yet have something I'd put on the
> update stream, we know what the issues are.
>
> They are specific to Traits, but quite independent of the image -
> when you change the mechanism for adding methods, to use new
> methods, then those methods need to be loaded before any changes
> happen. This is true in any image that has never had those methods
> (true across images). Furthermore, from Stef's more recent example,
> this problem happens whenever you change any mechanism that is
> somehow involved in updating methods - such as drawing the progress
> bar... therefore its a technical problems that will happen in many
> cases. Feels very strange to tell you this - the solution in this
> situation is fixing the infrastructure, not smart people applying
> their brains every time, manually, for every image.
>
>
>> And once solved, it's very likely that any further updates to
>> Traits - loading new versions of the various Traits packages -
>> would be much easier. Maybe still a manual process in some
>> cases, but easy enough that it could be done at regular
>> intervals. And anyone who was a client of that image line would
>> get that integration for free, by downloading the newly
>> integrated image.
>>
> So the person most qualified to solve the problem (the person that
> wrote the change) - now finds it impossible to help in the solution
> of this problem. This is because he doesn't even know about, never
> mind take part in the development of all image-lines.
>
> Instead this work is thrown on image-line maintainers (for whom it
> takes time to understand the change) in a way they cannot share
> between them, so each wastes time on it anew..
Ah, good, I was waiting for you to respond ;)
So I think this goes back to our discussion when you were in
Vancouver about how to specify (one-off) dependencies between package
versions: I was arguing that in many cases simply putting a comment
on one saying "you have to load version B of package Q at the same
time" would suffice, rather than coming up with an automated
technical solution (that probably wouldn't solve the interesting edge
cases anyway).
I'd make the same argument here: if you have a script for how to load
Traits, that's great. It certainly makes the job of all of those
fictional image-line maintainers much easier, and the more we can
build tools to make their job easier, the better. Monticello,
obviously, falls into this category, and even if we got rid of the
SqF update stream, I would still be interested in improving MC to the
point where it *could* be used for an update stream (or at least be
95% of the way there), especially since I expect some users (Tweak
etc) to continue to use it in that context.
But there's a big difference between saying "the more we can automate
an update the better", and saying "if we can't automate it, it
doesn't get in". The latter is the situation we're in right now, and
I think it's counter productive - especially when the full burden of
automatability is placed on the (small number of) integrators vs. the
(larger number of) package maintainers. If we're going to ease that
bottleneck, we need as a community to be stricter in what we produce
(eg, MC versions of packages derived from the minimally required
ancestor) and more liberal in what we accept (images and instructions
rather than a perfect automated update stream).
>>
>> I enjoy solving hard problems, but not for their own sake. If I
>> can see a way to be lazy and avoid them, I take it every time...
>>
> But at some point you realize that these are coming all the time,
> and its worth working once to kill them all - if the cost is
> reasonable.
>
> Do you estimate we're not there yet for solving this issue of
> method dependencies?
>
> Just as a quick sanity check, the following code does not
> immediately crash the image
>
> firsts _ ProtoObject withAllSubclasses asArray collect: [:cl | cl
> methodDictionary].
> seconds _ ProtoObject withAllSubclasses asArray collect: [:cl | cl
> methodDictionary copy].
> firsts elementsForwardIdentityTo: seconds
>
> So the atomic load method you suggested is probably not impossible.
That's good to know, and definitely worth experimenting with. As I
said above, I'm very interested in moving MC forward to solve as many
of these problems as possible - but I'd rather that our process
wasn't absolutely dependent on them being solved in the meantime. It
may be that by expecting less of our tools short term, we'll end up
ahead in the long run. I don't know; but it seemed like a question
worth asking.
Cheers,
Avi
More information about the Squeak-dev
mailing list
|