[great-users] Please Fix Versioning Hell!
gabtromb at isis.vanderbilt.edu
Sat May 29 18:33:46 CDT 2004
With the following story, I'm trying to pushing for efforts to be made
to reach an agreement which could allow various versions of GME, UDM,
GReAT, OTIF interoperate.
I'm working on a conversion between PICML (a GME project made here in
Vanderbilt) format to an XML format that reflects Cadena
(http://cadena.projects.cis.ksu.edu/) project structure and vice versa.
I'm working with GReAT for this conversion, and the resulting XML is to
be published on the OTIF backplane.
My work has become _incredibly_ difficult lately, because of the
interface versioning problems of GME (primarily) and UDM, GReAT, OTIF.
In the beginning we (PICML developers) were using GME3.10.13 .
At first my conversion project was not feasible because the GReAT 1.2.3
was using an UDM version which did not allow me to create subtypes and
instances of a model, and this was absolutely a requirement for PICML.
The newer version of UDM (2.14.2 unofficial) could do that. With almost
every other development tool I know, this would just mean overwriting
the current UDM with the new UDM 2.14.2 and going ahead. But instead
this new UDM would not work with GReAT 1.2.3 nor GME3.
So I had to ask Adi to build an unofficial version of GReAT with UDM
2.14.2 for me. At that point it worked, but that version was running for
the latest released GME which was GME4.3.17 .
So I had to detach from the other PICML developers which were still
working with GME3, and migrate my copy of PICML metamodel to GME4.3.17
(also in the repository now we have 2 versions: the official one, and mine)
Our clients (sponsors) also had problems because in order to use my
transformation they had to uninstall GME3 (and possibly UDM), install
GME4.3.17, install GReAT and UDM and perform the transformation.... And
then go back uninstalling everything and reinstalling GME3 which was the
platform of choice for working with PICML. A bit a tedious job for just
performing an export of their model to Cadena!
Then additional problems came:
For my project I need to publish the xml file (output of GReAT) onto the
OTIF backplane. A version of OTIF for GME4 doesn't exist yet. Zsolt
built an unofficial one for me, but that one was using the latest UDM
which is 2.16 and only works with GME4.5.18, while the latest version of
GReAT (which is mine) works only with UDM 2.14.2 and GME 4.3.17 .
So I still could not use OTIF and GReAT together; and to swap from one
to the other required some 30 minutes of uninstalling and reinstalling
the whole world.
Then Kitty found that there were a few serious bugs with the code
generation in all the available versions of UDM, which would make all
the C++ generated code impossible to compile for PICML. This also
affected ME but I hadn't tried to compile the GReAT generated code until
The fixes in UDM have been promptly made by Zsolt, but now we have to
upgrade! Oh Zeus, what will happen now? We will have to ask the GReAT
team to make a new release of GReAT with this new UDM, and the OTIF team
also! The GReAT and OTIF teams in general are not always in sync and
ready to make a release for every version of UDM and GReAT that comes
out, anytime! They might have big changes ongoing, which means that
their code might not even compile at that time.
Now we have 3 softwares: UDM, GReAT, OTIF; and as soon as we find a
show-stopper bug in one of them we have to ask to THREE teams to rebuild
their software before we can go ahead with our project!
And most of those versions I have written about have not been officially
released, which means that our sponsors currently are not even able to
access our work! What do we tell them?
I have never seen such a versioning hell happening before. I'm not sure
where it comes from, but sure it has to be fixed as soon as possible.
I suspect it starts from GME and it's COM interfaces. Well, wherever you
read about COM, you will read that COM was made in such a way to REDUCE
the versioning problems, not to increase them.
AFAIK with COM it is possible to inherit the interfaces, like in CORBA,
right? Then please GME folks, keep the old interfaces available and make
the variations on new derived interfaces. Who cares if you need to
increase the GME size by 200K every new version because you are keeping
the old interfaces and a part of the old code for backward
compatibility, this is *normal* when making software.
At least you have to maintain compatibility within the same major
version number; this is what the major version number is for, isn't it?
Then I don't know what other fixes are needed but I suggest that the 4
leading teams (GME, UDM, OTIF and GReAT) should meet together *soon* to
start ensuring inter-version compatibility.
More information about the great-users