My utopia:
Categorize my code in bundles/packages as I see fit.
Press "publish" on the bundle/package I want in source control.
Get one item in store.
Load that item, and have my code load itself in whatever order it
needs to.
End up with a view identical to the one I had when I published.
Alternatively, if someone else has published modifications:
- If I've made no modifications, load the new version.
- If I've made modifications, get a view like the current merge view,
then publish back to store as a new version after merge is complete.
In short, other than because there needs to be a load order, why
should I have to care about the load order?
- As far as I can tell, the NewPrerequisiteEngine does quite a good
job of figuring it out just by clicking a button...
- Make non-essential tasks like messing with the load order the
exception rather than the rule.
- At the very least, find a way to easily define a correct one,
without messing with my daily productivity by forcing my
categorization of code in the tool I use every day for browsing,
making it harder to remember where stuff is than necessary. (And no,
prereqs doesn't cut it when your project has over 200 packages, and
there's no centralized GUI for the ordering/you can't be sure they're
correct before you load from store )
In any case, it would be nice to have a separation of concepts.
For any beginner previously familiar with... other languages(speaking
for both myself and another programmer I just held a short
introduction to), the difference between parcels/packages/bundles/
prerequisites roles when it comes to categorization/loading order/
storage can be rather confusing.
Cheers,
Henry
A short background/user story:
One of my first tasks when starting in Smalltalk was to reorganize the
existing codebase into something loadable from Store. The previous
method was pretty much sharing fileouts of new code between
developers, and reconciling a "base" image for each release.
As such, the starting point consisted of bundles/packages mostly for
code categorization, with some prereqs sparsely sprinkled where the
developers had felt it would look nice.
The structure was one of 3 levels, 1 top bundle, 11 sub bundles, and
about 250 leaf packages.
I started adding additional package prereqs to make it load from store
after publishing from an image, but that quickly turned into somewhat
of a game of ping-pong between internal project packages which might
or might not actually need each other.
Not to mention I couldn't find any equivalent to the "Validate" button
for prereqs, and had to republish/reload every change to find new
errors, which for a project this size takes quite awhile.
Since no one was ever going to want to load these packages one by one
though, i cleared all the package prereqs, and used the Validate
button in the bundle specification to iterate into a loadable state.
Then added the external prerequisites to the top bundle, ending up
with a big chunck of code which was loadable from a base image.
Quite possibly it could've been split into smaller loadable modules,
but I felt the effort that would've been needed with the current tools
was too large to be worth it.
In essence, I ended up using the top bundle as a "Super package", with
the sub-levels upholding a valid load order, but still providing most
of the initial categorization.
As of now, we're always publishing changes all the way up to the top
bundle, as that's provided for the easiest method of reconciling as
far as our experience goes. (merge - reconcile - publish).
We've long ago given up having any meaningful version numbers on the
sub-bundles/packages, since they bork up once you forget the middle
step above, and that happens from time to time.
Apparently when you're merging with a higher version number (not a
different branch), what you really want to do is to branch off the
common base, not publish a new version including your local changes as
well.
P.S. On the topic of categorization, am I the only one shivering
whenever I look at the UIBasics bundle, and crying myself to sleep
when I have to modify a component there?
_______________________________________________
vwnc mailing list
vwnc@...
http://lists.cs.uiuc.edu/mailman/listinfo/vwnc