• Pharo architect since 2012
• Owned a company to develop in
Pharo back in 2008
• Java senior architect for 7 years (and
15 years overall java experience)
• Web, microprocessors, etc., etc., etc.
ASM and lots of languages no longer
exist or have been long-time
• 24 years (!) programming experience
(yes… I’m becoming old)
What is iceberg
• A front-end to work with git using
• Yes, it can be other things tomorrow, but now is that.
Big thanks to Nicolás Passerini
He started iceberg development sponsored by the Pharo
consortium, then I took over.
• Nicely move Pharo into git world
• Allow Pharo development itself on it
• To grow incrementally
- Starts with some few use-cases
- Add functionality as needed
- That’s why there are a lot of functionality missing
• Monticello is showing age
• With time, the “package” metaphor became insuﬃcient.
- We now use more complex “projects”
- Programs often have diﬀerent kind of sources
Backend Monticello Metamodel
• Version 0.5 released and integrated into Pharo 6.1.
• Tested in several projects and working (some minor
problems on diﬀerent platforms)
• It works for Pharo 7.0 development, so it should work for
• Hot-ﬁxes and updates are being incorporated.
• Still some problems with Windows support, mainly
because of long paths.
Pharo process in a nutshell
• Clone from pharo-project/pharo
• Create a branch with issue number (or feature name)
• Work on it as needed
• Push to your fork
• Submit a Pull Request to “development” branch
• 0.5.* : Lot of work on optimisation and bug ﬁxing
- Love to windows users (because performance issues
- Win64 lacks iceberg support (and that’s one of the
reasons why there is not oﬃcial version yet)
• 0.6 : Add Cypress format alternative: Tonel
- speeds up ﬁle IO
- reduces real space taken
• Easy to read
• better encoding of classes/methods using STON for deﬁnitions
• Allows source exchange also between platforms
• Support for multiple directories (allow subtrees)
• Update to libgit2 0.26 (just to keep us up-to-date)