[Pharo-project] Personalized systems with Treated

Chris Muller asqueaker at gmail.com
Thu May 5 04:35:12 CEST 2011

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

More information about the Pharo-project mailing list