Thursday, July 31, 2008

New Beginnings

I'm back from my fantastic sailing trip from Quebec to Newfoundland on the Canadian Sailing Expedition's Caledonia. Isn't she a beauty!


I've seen parts of Canada I've never seen before and that's served to remind me that I live in a truly spectacular country with a rich diversity of cultures and natural beauty.


Quebec City has all the charm of an old European village, which isn't surprising given that it's celebrating its 400th birthday! Vive le Québec!!

What could be more inspiring than a minke whale swimming in the foreground of this tiny Newfoundland village?


This trip has really helped to make my spirit soar with new passion.


As always, all good things must come to an end, and so the sun sets on another vacation.


Coming back to find not a single EMF newsgroup question in need of my attention was certainly very gratifying. It's a great new beginning for my journey into the unknown.

Saturday, July 19, 2008

Bon Voyage

Yesterday was the official last day of my 16 years of employment at IBM. I marked the occasion with a trip down to the Markham lab to drop off all the old hardware along with a few other odds and ends. After that I went out for a "last lunch" with some of my lab colleges which was followed by a very short EMF "planning" meeting with Nick, Dave, and Marcelo back at the lab. I thought I would be more emotional, but perhaps it hasn't all sunk in.

Today I spent time preparing for my 10 day cruise on the Caledonia.


It's exceedingly good timing to start my new adventures in life with a particularly cool new adventure. By tomorrow night, I'll be sailing into the sunset.


I don't know if they have internet on the ship, but I'm going to pretend they don't even if they do. So don't expect to hear anything from me until after July 29th at which point I should have some really cool new pictures. I hope the rest of the EMF community helps to look after the newsgroup.

Wednesday, July 16, 2008

Statistical Trends in Modeling

Yesterday's posting about BIRT job trends was interesting and naturally it prompted me to do a few searches of my own, not that I'm competitive or anything like that! I thought I'd share the fruit of my labors.


Searching for "EMF" all by itself turns up some bogus matches, so I used "Eclipse EMF" instead.


That's quite the growth spike. If we look at the absolute scale though, the graph has the same shape, but the axis changes to show the percentage of all jobs that match the search term, i.e., around 0.001-0.002.


If we do a more general search for "Eclipse Modeling" the graph doesn't have the same thousands of percent growth spike to it, so that appears far less exciting.


But switching to the absolute scale is interesting because it reveals that while the growth curve is not spectacular, that's because a significant number of matches have existed for quite some time. Even more interesting is the fact that there are 10-20 times as many matches.


Three lessons we've learned:
  1. Take any statistics with a grain of salt because it's easy to to get a distorted perception if you're not careful about exactly what's being measured and what those measurements really mean.
  2. Learn about EMF and modeling. It will help you find a good job.
  3. EMF jobs are breeding like flies.

I'm eagerly anticipating my next trip to see parts of the world I've never seen. There are bound to be some good photo opportunities! I wonder what it will feel like to be unemployed on Saturday?

Sunday, July 13, 2008

Specifications and Standards: The Good, The Bad, and The Ugly

I think our industry might soon have more specifications than stars in the known universe. Fortunately, even if we run out of meaningful names for them, we'll never run out of UUIDs. Goodness knows many modeling types just love their UUIDs, even if a UUID does use up more space than the object it's identifying; but I digress. Not surprisingly, there's even a UUID specification, so we can be absolutely certain that no two specifications nor two modeled objects need ever unintentionally use the same identifier. It would really be a fly in the ointment for there to be confusion, it would be very antithesis of what specifications are all about.


Specifications and standards are the cement that props up and binds our growing, global software edifice without which we'd be using an abacus or slide rule. And of course in this day and age, there's nothing finer than an open standard, given that being open, like motherhood, is simply an unassailable virtue. To get a good sense of what specifications are all about, just have quick glance at this this poster:


Clearly standards help to simplify the lives of users and developers alike by precisely spelling out expectations for well-defined behavior so as to facilitate interoperability. I know this poster is exceedingly lovely and that you can't truly appreciate all the virtues of the fine print unless you render the original PDF on paper the size of a wall poster, but please don't do that, the world's trees are disappearing at an alarming rate already and it would be very sad if standards contributed toward global warming and the loss of wetlands.


Now don't get me wrong. I'm not suggesting that specifications and standards are simply bad, I'm merely suggesting that they aren't pure virtue. When entire organizations such as WS-I are dedicated to cutting out the cruft produced by other organizations, something has obviously gone more than a little wrong. In fact, standards are even used as political weapons. Can you think of a better way to tie up your competitor than to have them wasting their time implementing a tainted specification rather than spending their time wisely on something innovative and hence competitive? Standards can be a great way to enforce mediocrity.


It should be clear that standards bodies are not the place to innovate new things. It should also be clear that while large organizations might look like bottomless pits of resource, their massive inertia makes it difficult to turn on a dime. Hence they tend to thrive on standards and often more so than smaller organizations. Innovation thrives on agility and the willingness to explore radical new ideas, while standards and specifications, when working properly, thrive on codifying well-established best practices; this dividing line is too often blurred these days so it's best we remain vigilant about the flies that might get into the ointment.


I particularly love working at Eclipse because it's the kind of place where the two worlds meet. Most gratifying of all, at Eclipse the committer is king; specifications are just a tool, a means toward an end, rather than an end unto itself. Developers know politics when they see it, and the good ones, when given a choice, will focus on implementing innovative things, even if those aren't yet standard things. We can let politicians worry about standardizing innovations after the fact, as should be the case in the natural scheme of things.

Thursday, July 3, 2008

Where's the Modeling Package?

I'm a little disappointed now that Ganymede is finally out. Of course I'm generally in a funk whenever I actually reach whatever goal I've ever tried to achieve.


It helps to remind me that goals are nice for setting direction but are generally disappointing when you get there; it's best to enjoy the journey itself as much as possible because it lasts a lot longer than does the goal. But I digress, and so quickly too. Speaking of which, our neighbor had a very nice Canada Day party complete with spectacular fireworks.


Getting back to my disappointment, have a look at the Eclipse home page with its lovely moon shot that includes a "you can't miss it" link to the Ganymede downloads. It's just so clickable and soon you'll be at the Gaymede download page itself. But where the heck is the modeling package? And since I don't see it there, how do I find it? The navigation bar has a Download Packages link, but isn't that where I am already? As an exercise to the reader, see if you can figure out how to find it...


Well, if you hunt long enough, perhaps you'll find the "More Packages..." link in the far right hand column; it's not listed under the names of the other packages in the left column where you might find it more easily. This link takes you to the annex where the second class packages live; the ones not popular enough for the main download page with its precious real estate that's carefully tailored based on the "less is more" principle. You have no idea how much I dislike the "do more with less" principle; I'm sure many readers will understand exactly what I mean, but I digress yet again.


If we really wanted to do more with less on the main download page, isn't it a little odd that the page has a banner with a link that navigates back to the same page itself? Doing more with less seems to argue that a circular link along with a big banner are actually doing less with more.


Now have a close look at the 10 most popular projects on the right. Given EMF and MDT on the list, it's a little odd that the modeling package is so unpopular. And speaking of popularity, given that accurate download statistics can't be computed, 239389, what exactly does determine popularity? It seems to me that making something hard to find might well impact its popularity.


It's been argued that adding more packages would move the member distros farther down the page and make them less reachable. But if that's such a big concern, perhaps we should put the member distros at the top, and hey, we might even add a link for it in the navigation bar. After all, member revenue drives the foundation's budget and having your distro be prominently displayed helps derive value from Eclipse membership fees. Or perhaps the distros could be put side by side with the packages to make better use of the precious real estate. In any case, on a 1050 line monitor, the distros aren't visible anyway, so it seems like a weak argument at best.


Note that Borland, Itemis, and Obeo are strategic developers heavily invested in modeling so I expect some board discussions on this topic of membership value on the main download page. I think the random appearance of distros along with their own separate overflow page is also kind of bogus.


It all makes me wonder if it wouldn't be better to have an expansion swizzle that lists additional packages/distros on the same page rather than having to navigate to a different page? Or even just to make the overflow link be more noticeable? Of course I'm far from being an expert on marketing or proper web page design, but I'm disappointed that the main download page is picking favorites. No matter how you look at it, it's certainly clear that the current approach doesn't market Modeling well at all, and that fundamentally disappoints me.

Sunday, June 29, 2008

Out With the Old, In With the New

After a whirl wind week of upheaval, I've arrived in geek heaven. I blogged about the OMG Eclipse Symposium, but I didn't have time to blog about the next day, which I also spent in Ottawa. On Thursday, I visited the my colleges at the OTI lab. John Duimovich is my mentor so we had a chance for a good chat. It seems someone held him accountable for my impending departure; they've demoted him to flipping burgers and weenies. He mumbled something about less responsibility and more time for fishing.


It was great to spend time with so many of my platform buddies. I expect I'll be working with them a lot because of e4. That evening I'd booked a very late flight home so I could attend the Ganymede demo camp in Ottawa.


There were some interesting demos. When Lynn asked if I had anything to demo, I didn't realize I was committing to having to give an "official" demo. So I had an extra class of wine and showed the graphical Ecore Tools editor in action. As you know, I love that thing!


Ian gave out some prizes at the end. It was a fun event and I'm glad I stayed for it.


I got home late Thursday and then the next morning I began setting up my brand new T61p which I've named toad. It's got a 1920x1200 resolution display, duo core 2.5 GHz, 3 GM RAM, and 200GB drive. It's a heck of a lot better than what I had before! So it was time to ditch all the old hardware and setup all the new hardware. Check out the great setup I have now.


Of course KC uses my chair any time I'm not using it. There's a dog basket on the floor should the girls tire of being in my lap. I also have a nice foot rest. There's no longer a desktop machine, which was actually more of a floor top. Note how many frogs are in the room? If you could see the frog calendar up close, you'd see July 4th and July 18th marked with "woo hoo" because the former is my last work day (US Independence Day coincidentally enough) and the latter is the end of my two weeks of paid vacation time. Let me show you a closeup of the work area where all the magic happens.


Some things to note. I have a docking station that lets my Thinkpad hook up directly to the network, printer, keyboard, monitor, and power backup; though I do have wireless as well. I can't live without my little red ultranav mouse controller, so now I have two. See how I've hooked up the monitor as a dual monitor. I'll be able to keep things like Thunderbird and my chat windows in full view all the time; I've hooked Thunderbird up to the newsgroups and to my gmail account, Ed.Merks, using IMAP. Of course I have a pretty picture of the garden as background. I have pidgin installed, which I can use to chat with folks on IRC, Google, MSN, and Yahoo with just that one application. And I have Skype, which for $30 lets me talk to anyone in North America for a whole year; see the nice Logitech head set I use for that.

I installed Firefox 3.0 and went extension crazy. There are a few really cool ones, like Interclue which shows a little icon when you hover over a link and when you hover over that icon, it shows you a preview of the page at that link; the picture above shows this in action. I can also faviconize my tabs like the one for planet eclipse so I have room for lots of tabs. The tab to undelete a deleted tab is handy too.

Here's a close up of the little shrine I have for my treasured Eclipse Community Awards. Without community-inspired confidence, I would not have taken the bold steps I did this week.


There's a beautiful beta in the jar beside my monitor.


He and the blue damsel in the salt water tank right next to the jar like to square off through the glass.

While the frogs don't do a great job on eliminating the flies that occasionally sneak into the house, if KC doesn't get them (and he's quite good at that), I can always drop them into my pitcher plant.


When I looked out my window on Friday, the fox came scurrying by. I couldn't grab my camera quick enough to get a really good shot.


I feel like I've reached nirvana!


Well, it's time to do some more planting.

Wednesday, June 25, 2008

Eclipse OMG Symposium

The symposium started with an introduction by Kenn Hussey who talked about the nature of open specifications, open source, and how the two relate. Interchange is a key aspect. Reference implementations speed delivery of solutions to market through cost savings gained from a shared collaborative effort. Value is derived by specializing the common basis for integration. He talked about the large number of OMG specifications implemented at Eclipse and described the principles that drive Eclipse; a focus on extensible frameworks being one of them.


He pointed out that it seems problematic that Eclipse projects are not considered reference implementations of OMG specifications; clearly a specification cannot be proven sound without a reference implementation. Past experience with the implementation of UML2 has demonstrated that the feedback from problem determination in the reference implementations to their resolution in the specification has value. Ecore's influence on MOF leading to EMOF is another example.

He talked about the various processes driving specifications at the OMG and those driving project development at Eclipse. They're quite similar. Eclipse has very regular release cycles (e.g., today, woo hoo!) so trying to synchronize the OMG's specification to have a more regular delivery pattern would have value. Tying specifications to reference implementations would improve the likelihood of success for both the project and the specification. There is often a gap between the high level intent and the actual realization of that in code. The people and organizations working on the specifications are often an entirely different group of people than those working on the project. Surely that can't be ideal. A certified reference implementation would eliminate issues such as ambiguities in how a specification is interpreted. The audience asked questions about how problem reporting at the OMG can be more easily tracked in a way similar to how bugzilla is used at Eclipse.


After an overview of the rest of the day's agenda, Pete Rivette, CTO of Adaptive presented some background about the challenge of CMOF (Complete Meta Object Facility). He talked about the history of MOF and how it gradually evolved away for its CORBA roots and about the need for IDL interfaces for everything. At the MOF 1.4 level, its mapping to Java was codified in the JCP as JMI. MOF 2.0 was developed in tandem with UML 2.0 and included a better separation of concerns. The separation into EMOF and CMOF which of course was driven to a large extent by the influence of EMF's Ecore, and hence model driven Java development, was the primary montivator. CMOF was more driven by the needs for meta model developers. He described the overall MOF2 structure and its dependencies. He discussed the Java Interface for MOF, JIM effort, which is basically a stalled effort.


CMOF includes things like full fledged associations, association generalization, property subsetting and redefinition, derived unions, and package merge. He motivated the use cases for these capabilities. Then he talked about what Kenn has done to support CMOF on top of EMF's more basic EMOF support. He'd like to see more complete support for CMOF, e.g., a UML profile and a MOF DSL, i.e., a GMF tool. Better package merge tools for metamodel selection and static flattening. Conversion between UML2 and CMOF XMI is mostly done. A standard conversion or mapping between EMOF and CMOF would be very useful. He'd like to see a CMOF Java API that's compatible with EMOF/EMF and of course to see a specified mapping of EMOF onto Java.

He too would like to see better coordination between OMG and Eclipse. We need to think about what to do about MOF 2.1 and what's the best direction for that. Constraints are important when defining models so improved support for expressing and validating them is key. Diagram definition for visual rendering of models would be useful. He mentioned some interesting future work, such as Semantic MOF, which supports things like an object changing its class and having multiple classes at once. It sound cool, but makes me cringe. A few questions came up, related to semantic MOF, and that started to hurt my brain.


After the break, James Bruck gave a presentation to share his experiences with implementing an OMG specification, namely UML2. He described the split between "those who make things happen," i.e., the developers, and the folks working on the standards. Issue resolution in the specification is very important when driving an implementation. A specific recent issue that's come up is with how to represent Java-style generics in UML. Certainly profiles could be used, but it would be better expressed directly in the meta model. He gives many examples where the language of the specification is inconsistent with the normative model underlying that specification. These things come to light when folks implement the specification and compare the implemented behavior with the descriptive text guiding their implementation decisions. It's very hard to track changes to the specification when updating the implementation to conform to the latest version of the specification.


He suggests the specification should include architectural intent to motivate the reasons for the design. Proper summary of changes as the specification evolves is very important for understanding the impact on the implementation. Harvesting information surfaced by reference implementations is key. A proper tracking mechanism, like bugzilla for issues would be very useful; in fact, why not just use bugzilla. There's certainly some room for improvement. Communicating the developer's ideas back to the OMG is sometimes like a game of telephone that involves information loss and information injection. There was some discussion about the organizational structure at OMG that make individual involvement difficult.

Victor Roldan of Open Canarias talked about their approach to implementing QVT. They had problems with the specification including inconsistencies, ambiguities, insufficiencies and lack of a reference implementation basis. Why is there a V in Query View Transformations when it doesn't really factor into the actual specification, he asks. The split between base and relations is imperfect. There is just a long list of things that obviously didn't come to light until someone tried to implement what was described in English. No one seems interested in Core and instead Relations are tackled directly. And it's just not expressive enough beyond toy examples.


Their solutions is analogous to Java's translation to byte code, i.e, they have Atomic Transformation Code, ATC, to represent low level primitives and then provide a Virtual Transformation Engine to execute those primitives. He gave a quick demo of the tool in action. He expressed frustration with interacting with the OMG as a non-member.

Victor Sanchez followed up with more specific details to motivate the virtues of a virtual machine approach to tackling the QVT problem. Of course it's a widely used approach taken in a number of other situations and hence is an approach that's proven itself. Some problems he noted were things like lack of support for regular expressions. He sees QVT as analogous to UML as a standard notation in the sense of being unified, but not universal. One size fits all is never ideal for anything in particular though, so he imagines domain specific languages as being a good way to specialize the power and generality of QVT.


Victor believes there would be value in having a low level OMG specification for a transformation virtual machine. It would make it easier to build new transformation languages and provide a separation of concerns that would allow for focus on optimization at the virtual machine level. It would be an enabler to drive transformation technology in general. There was some discussion about how this technology relates to existing technology being provided by ATL at Eclipse.

Next up was Christian Damus of Zeligsoft to talk about OCL. It started out as an IBM Research project in 2003 and was part of RSA 6.0 in 2006. It was contributed to Eclipse in 2006 as part of EMFT and is current in the MDT project. It currently supports both Ecore and UML as the underlying target meta models. The specification has been a moving target with quite significant changes from version to version. Of course changes to UML also had impacts and it's not as well aligned with UML 2.x as it should be with many references still to older versions of UML. Often diagrams and descriptions are inconsistent. Even informative descriptions verses normative definitions are not always in agreement. There was confusion between the invalid type and the invalid value.


There also seemed to be important things missing, such as a concrete syntax for CMOF, missing descriptions for TypeType. There is no support for reflection, i.e., for getting at the class of a value. Often he was a position to have to guess how to interpret the specification and some guesses proved inconsistent with subsequent clarifications. OclVoid and OclInvalid are problematic to implement since they are each values that must conform to all types. There are issues with expressiveness, such as a poor set of string-based operations. Serialization of demand created types are a problem. Eclipse's API rules don't alway allow one to easily address changes in the specification in a binary compatible way. A normative CMOF model would be very useful to have.

Elisa Kendall of Sandpiper Software talked about Ontology Definition Model. Ontology is all about semantics. There is a need to describe the underlying meaning of documents, messages, and all the other data that flows on our information web. We need to bring order to the syntactic chaos we have today. So what is an ontology? An ontology specifies a rich description of the terminology, concepts, and nomenclature, properties explicitly defining concepts and relations among concepts, rules distinguishing concepts, refining definitions and relations, constraints, restrictions, and regular expression, relevant to particular domain or area of interest. In a knowledge representation you have vocabulary (the basic symbols), syntax (rules for forming structure), semantics (the meaning of those structures), and rules of inference for deriving new facts. Elisa is interested in rebooting the EODM project at Eclipse. There is increasing interest in ODM in the industry as ODM itself matures.


Here's my personal summary of the problems that I raised in my closing remarks.
  • Lack of reference implementations to validate specifications leads to lower quality specifications.
  • The divide between developers and specification writers results in a communication gap that leads to loss of information.
  • Problems with issue reporting and then tracking them to their resolution is frustrating; it's not a transparent system.
  • How best to involve non members who have something to contribute?
  • Alignment between release schedules of the implementations and the specifications would have value.
  • Specification changes are not as consumable as they could be and sometimes result in binary incompatible API changes.
I had a few questions and comments of my own as well.
  • Why does modeling have a bad reputation?
  • Doesn't it take much longer to work on a specification rather than do something innovative in open source; de facto standards are common place.
  • Communities are empowered by open source. Those who make things happen, lead the way; those who talk will be spectators.
It turned out to be a very interesting meeting with some great discussions about controversial issues.


After the meeting I spent time with Dominque and Diarmuid, seen here with Jean.


Then I went to the OMG reception and finally I had dinner with Jean and company. Finally it was time for this late blog, in accordance with my same-day blog policy. Gosh but it's a tiring policy! I wonder how many notes I'll have to look at after I'm done...