[V3dot10] V3dot10 process and meta-problems
Keith Hodges
keith_hodges at yahoo.co.uk
Thu May 17 13:25:51 UTC 2007
Dear Jerome,
I am all in favour of your suggested improvements to MC, and have been
working on a few myself. Actually I have now refactored some of MC so
much there is no going back!
Ideas include:
An MC equivalent of a changeset, so that changesets can be managed,
browsed and now loaded (order-doesnt-matter) with the same tools as
normal monticello files.
I think this would be particularly useful for back porting, develop
in the latest squeak, and have a managed patch for '3.7 can load 3.8
packages compatability patch.mccs'. This patch can then be loaded
"prior" to any packages which may use it. It may patch squeak or the
package, either way.
Now Monticello (1.5 ;-) can theoretically do things like, load a
class, in the middle of a class hierarchy, rather than only as a leaf
class (If I can debug it) the mechanism is in place. It can also
add/remove instance vars (etc) to other classes as well as extending
them. I haven't had time to test these out yet.
What I dont agree with you is on your incremental process.
The incremental process guarantees that everyone who wants to
contribute is working on a moving target. This leaves one person in the
driving seat to guide the continuous integration, and that is why there
is so much pressure involved.
My suggestions would be to plan a number of items and see them all
worked on together. Integrating all of the tasks simultaneously and
regularly. This is effectively what I have done on 3.9.1
I will attempt a diagram!
Your process:
Squeak + MCUpdate1 + SMUpdate2 + KernelFix (breaking MC1 and MC2) +
MCUpdate1b + SMUpdate2b.
My Process.
(fixed point) + MC Latest
Squeak-stable -> + SM Latest -> Squeak-unstable (test, fix
and iterate)
+ KernelFixLatest
The aim is a list of tasks to be completed, and have a script that loads
all of the results of the tasks in.
For example: 3.11
"Project to harvest bug fixes"
"Project to make all UI elements Scriptable" via Scripter
"Project to make a nice UI display for interrupting a progress bar
in progress"
"Project to implement proper logging facility"
"Project to migrate the kernel to use the logging facility"
"Project to mark up packages, to generate minimal functional
versions automatically".
"Project to develop further tests for the base image"
"Project to integrate flow for the primary stream support"
"Project to replace FileDirectory"
"Project to get and keep old packages loadable"
add Compiler, Tools, Morphic3, etc etc etc
All of these could be worked on simultaneously and continually
integrated in a script to generate an 'unstable' release.
This was not viable before, because such a build script would constantly
run into problems. For example, rather than tweak the TTFFont Speedup
fix to make it loadable, I spent a couple of days fixing the loader so
the problem should not reoccur. Removing loading order dependencies
should also make this simultaneous-integration approach one step closer
to reality.
> Several comments
>
> 1) time
> It takes a minute or two to download an image zip file
> on a high speed broadband.
>
> Compared to that 20-30 minutes for updating seems
> unacceptably long.
>
>
So one machine automatically runs the build integration script, and
everyone else can download it.
Individual developers can have their own -unstable branches so as not to
break other peoples work in progress.
I demonstrated this 4 months ago, and Installer supports the ability to
have stable/unstable/personal versions of each script, via its search
'path' parameter.
> 2) MC will have more problems on large chunks than on
> small. And it will take a good long time to report the
> problems. The crash-fix-tryAgain-crash cycle is too
> long IMHO.
>
>
MC only installs the changes, I guess it is the download and anaylsis
that takes much of the time.
> 3) With 1 and 2 being true the tendency to burn out
> the helpful image updater will be great.
>
Lets automate the image updater, and the rest of us can work on Squeak.
> The problem with 7109 happened in a different way
> earlier (First try never got into the image.)
> So this is the second attempt.
>
>
Thats the problem with a moving target, multiple platforms etc.
> This multiple attempt is typical of worthy problems.
> At the end of 3.9 finding a way to insure changeset
> current was not nil took more that half a dozen tries.
> Each yeilding a small amount of information that got
> us closer to the solution.
>
> My impression is that Stef did a lot of work to get
> though each cycle because MC is heavy and slow
>
Again I advocate using MC, but not for small incremental changes.
Suggest to use it as a publishing Source code control mechanism.
On every iteration, save all packages that have changed.
To final gm-release, load from repositories.
> a) Somehow it seems to me that not only should
> changeset be able to automatically become MC package
> updates. It should work the other way also. You
> should be able to specify a specific diff and have mc
> create a change set that would recreate that
> difference.
>
>
I have made MCDictionaryRepositories available , and 'System Changes
Sets' is an in memory virtual Monticello package.
> Those MCdiff equivalent change sets should then be
> able to be archived. and downloaded locally and
> installed or filed into an image. This at least
> creates a ratchet process of small steps. Saving time
>
> overall for test pilots. Producing and equivalent
> result to what we are attempting to do now.
>
> b) You might need to have two co-located people
> sharing the image creating task so they can spell each
> other. And increase the possiblity of avoiding either
> of them burning out. Colocation is to insure a wide
> stream of communication between the two of them.
>
> Finding this kind of resource would be maybe
> difficult. But it wouldn't hurt to ask.
>
> c) IMHO it needs to be admitted that the current
> choice for maintaining an image is not a good final
> choice. Some real deep though needs to be given to
>
It is a good choice for partitioning an image, and source controlling
those partitions.
It is just not a good choice for the little tweaks and fixes, or the
broad across the board fixes that a release team needs to do.
My plan allows both. By allowing a Package to have a subset, being a
minimal functional version, more and more stuff can be unloaded from the
base image, and managed in packages. The remainder can be looked after
any which way you like as long as the image can be saved to the
repository(s) and loaded back in again successfully.
> I am pretty sure I have left out good and obvious
> ideas. Its important to communicate what I have
> observed and thought of so far. Can you add something
> that might help?
>
>
I think that the majority of the problems that previous teams had can be
resolved by improving the tools.
best regards
Keith
p.s. I did get your email
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.squeakfoundation.org/pipermail/v3dot10/attachments/20070517/f6c86aba/attachment.htm
More information about the V3dot10
mailing list