After a while I decided that Umbrello didn't quite have the extensibility that I was looking for. The design isn't right and it was missing standards compliance by a fairly wide margin. I ended up getting really ambitious and a little naive because I decided (with some group consensus) that Umbrello needed a new ground up version - the ill-fated Umbrello2 project. The source code is still available under the umbrello2 module in the Umbrello SourceForge CVS repository. I basically sat down with the standards and created a rough design based on what I wanted to do and what I thought would work. I ended up with a fairly complete UML object model that, admittedly, had some inherent problems and a rough GUI framework. I did manage to stick to my original design of using KParts (KDE's component technology to uninitiated) for the GUI, but the separation of data and graphics started "bleeding" together. After about 3 months of really just hacking on the project by myself, I gave up on it. There was too much to do and I wasn't able to keep everything in my head.
I wasn't entirely done with the idea though... I still wanted to make a better modeler, but decided that building my own application probably wasn't the right way. Besides, the main development branch of Umbrello had picked up and I was unable to convince anybody to really commit time to v.2.0. Also around this time, I was forced to start working out some ideas for a thesis project and I wasn't ready to give up on all the work that I'd done. So... I just trimmed the fat from the Umbrello2 project, scrapped any notion of writing any UI and decided to focus entirely on the UML object model. And that is how the OMF was born.
Some years later, the OMF is now in its second incarnation and has gone through one more complete rewrite to address some of the unfortunate design decisions made in the first version. As of now, the OMF is nearly ready for real use, pending the development of a couple "small" subsystems. Moreover, the OMF is truly unique in the market place because of its Python bindings - a system that allows the use of the Python programming language to work with MOF and UML models.