As member of the Sugar community, I'm very happy to read from Jono Bacon the Ubuntu plans about what he calls opportunistic programmers. In Sugar we believe that doing is an important part of learning, that's one of the reasons for considering free software a fundamental part of what we do.
Though the goals stated in the referred post match almost exactly what we are aiming for as well, I find something missing: bigger components to create your applications with. Python, the GNOME platform and DesktopCouch are awesome technologies that fit very well for this purpose (Sugar itself is built on Python and GNOME) but the components provided are rather small, meaning that you need to build all the functionality you need from these small bricks. What if you want to generate a PDF and want a real-time preview? Or an ODT document? One that users edit collaboratively across the network in real time? Would you have to write those thousands of lines yourself?
We have thought that by also providing coarse components such as Abiword, Evince, Mozilla and Gnash that people can use in their applications, what user-programmers can do widens considerably, keeping the complexity of their own code to a minimum.
I know this will sound to some as too much like Bonobo, but really, this is so much more light-weight both in computational and human resources terms, and most importantly, it's being widely used today. My post about embedding evince is the most popular in this blog, one year after it was written.
I would like to see a bigger effort from GNOME application developers so their code can be reused in this way. It helps to all those people building new user experiences based on GNOME (no more #ifdef HILDON!) and also can lower the pressure that users with marginal or specially complex needs put sometimes on GNOME developers.