How to choose the good ingredients to get a good UML?
In novembre 1996, I was lucky to attend the OMG meeting in Nice, France. The weather was splendid and at that time OMG was still organizing meetings outside USA, in wonderful places. But this meeting was particularly important because it was there that the main initial decisions about UML were taken.
The big player in the game was Rational (at that time Rational had not been acquired by IBM). The main opposition was coming from IBM, allied to a small canadian company called ObjectTime (Bran Selic was behind this company). The problem was to unify different proposals to the ongoing RFP. I remember having been asked by IBM to present at the time our three-layer metamodeling system (sNets) in a private IBM meeting. I believe that, at the same meeting, Trygve Reenskaug also tried to convince them to make the concept of role first class in UML, without more success.
But the rule of the game was different. It was obvious that Rational proposal was going to be overwhelming accepted. The only question was about how. It was difficult to accept 100% of the Rational proposal and 0% of the IBM proposal. IBM should be allowed to make a marginal contribution to UML.
As a matter of fact, IBM was proposing two important contributions to UML: The schema organization and the OCL annotation language. The guy behind both proposals was Steve Cook (the same Steve that is today still working on UML, but on behalf of Microsoft). Steve was not present in Nice, but he was probably the main artisan of IBM proposal. If I remember well, the IBM negotiation team was led by Dipayan Gangopadhyay (I met him at TOOLS much later and he had left IBM).
The following slide presented the IBM/ObjectTime main contribution:
The proposal was quite clear. OCL on one side and a clean mechanism for modeling language extension called Modeling Schemes on the other side.
This is the place where history was made. Probably not in a full OMG meeting at the main hotel, but in some café of the”Promenade des anglais”. I suspect that the discussion went somehow as follows: “It is impossible to ignore IBM proposal, but on the other side we don’t want to take their full proposal. Which one shall we chose? OCL or Modeling Schemas?“
I dont claim that they used coin tossing, but the result was clear: OCL was choosen for the best and the worst and the second proposal of Modeling Schemes was simply ignored.
This is the sad story. This is why we have to deal today with the ugly OCL syntax. And this is probably why we miss so much a clean extensibility scheme or all the OMG modeling languages. I remember this with a lot of sadness and I often look to the following slide that was also presented in Nice by the IBM/ObjectTime team:
Of course, Steve Cook was probably proposing ideas in advance of their time in 1996. But some cycles later (i.e. some OMG meetings later), people had completely forgotten this. And they started complaining of missing parametrization and openness of UML. Guess what they did at that time: invent the notion of UML Pofile! What a pity. But this is another story that we may discuss later.
By the way, if you want to know the main culprits, here is a list of people involved in this OMG meeting in Nice.
As you can see, Steve Cook is not on the list but he was certainlythe “eminence grise” at IBM at the time.
Anyway, this story shows that UML started from the beginning as a “salade niçoise” as they call it there!