« Return to Thread: [vwnc] Bundles

Re: [vwnc] Bundles

by Henrik Johansen-3 :: Rate this Message:

Reply to Author | View in Thread

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

 « Return to Thread: [vwnc] Bundles

LightInTheBox - Buy quality products at wholesale price!