To support Magma 1.2, I introduced some changes to OrderedCollection into the Squeak trunk some time ago. To deliver Magma to Pharo users, I needed to have these same enhancements in Pharo 1.1 and 1.2. But they were already released, so how was this solved?
My first instinct was to deliver a change-set; the classical way to modify the system. But I know dirty packages are unattractive, and besides that the only way to achieve one-click load of something involving a change-set + MC-packages in Pharo is with a SAR - overkill since Magma is just MC packages; no resources. I really wanted to release Magma 1.2 to Pharo with just a Gofer script.
So, I decided to import the same changes I made to Squeak's OrderedCollection into Pharo's and then save that new version to the Inbox and adjusted my Gofer script for loading Magma to merge that version of Collections from repositories: Pharo, Inbox, TreatedInbox.
I knew they would accept it, thank you Pharo, BUT it's nice to know that I could actually deliver my application without having to wait for it to be integrated, or worry even if it didn't get accepted; that chain of repositories should work immediately and forever, no matter the outcome of acceptance.
Thanks to MC merging, this is as unintrusive as it can be; in case someone runs with their own "personalizations" to the Collections package, loading Magma won't clobber them; nor will updating with official Pharo-released patches, because those are merged too.
With the context of this experience, I came to view the "Treated" repository with a new respect; enabling a non-core developer to personalize system packages for my application..
- Chris