Hi
The Eclipse Versioning rules are strong; annoying and arguably
not even strong enough.
The last UML major version change forced OCL to make a major
version chnage even though it wasn't necessary from an OCL point
of view. However OCL took the opportunity to remove UML from the
re-exported API so that the next UML version change will not
mandate an OCL version change.
Whenever you choose to re-export another project's bundle, you
decide to be tightly coupled to that project; any major change in
the referenced project mandates a major version change in the
re-exporter. For primary platform and EMF plugins it is obviously
impractical to avoid a tight coupling so why bother. But for
secondary facilities such as EMF codegen or EMF compare, hiding
the dependency may be highly beneficial. Thus Guice and Guava
should never be re-exported.
But Xtext is almost uniquely troublesome since the autogeneration
of code for the user imposes a requirement for both backward and
forward compatibility. With such a rich API, Xtext would be frozen
if it really imposed perfect API compatibility. EMF has a similar
problem that is largely solved by a run-time compatibility level
genmodel option. Injection perhaps makes Xtext's API too rich to
realistically do the same.
Even the platform has now decided that a major version change to
4.x plugins is too horrible and so there are regular announcements
of removal of long-deprecated API. The removal totally violates
versioning policies.
Xtext similarly needs to follow a pragmatic policy. In practice
Xtext 2.3 and Xtext 2.8 involved breaking changes that actually
mandated major version changes.
org.eclipse.xtext currently re-exports com.google.inject but not
org.objectweb.asm
org.eclipse.xtext.util currently re-exports com.google.inject and
com.google.guava
Too late for Xtext 2.15.
It could be announced that in Xtext 2.16 all usage of
Guava/Guice/... in interfaces will be deprecated. Alternative API
must be provided. This can be developed and tested by removing the
re-exports and escalating all non-API-in-interface warnings to
errors. However in the Xtext 2.16 release the re-exports must
remain.
It could also be announced that in Xtext 2.18 all re-exports of
Guava/Guice/... will terminate (without a major version change).
The old deprecated API could remain for much longer but would only
work for users who avoid inconsistent Guava choices.
Currently OCL's editors do not impose a Guava version preferring
to allow the re-exported Xtext version to be used avoiding an
incompatibility. Once Xtext stops re-exporting, OCL's editor
plugins will have the freedom to choose a different version to
Xtext's plugins. In the past this was really bad, but if there is
no leakage of Guava in interfaces, perhaps this problem is also
solved. OCL's editor plugins can then, albeit accidentally, use a
different Guava version to the underlying Xtext support plugins.
I am not aware of any Guava in Xtext interfaces that OCL uses, so
once the missing imports are added, OCL editors should remain
compatible across a broad range of Xtext releases. Deferring the
removal till Xtext 2.18 without a major version change follows the
two-releases-notification that the platform now uses.
Regards
Ed Willink
Hi Christian,
those libraries are used by users, so those changes will be
exposed to them. I haven't looked closely into what API has
changed in those versions, but if they have bumped the major
version, there might be something in it that breaks. I assume
they follow semantic versioning, too.
That said, bumping Xtext's major version will be a huge
problem for Eclipse clients, because older existing versions
will not work with it. And because we have singleton plug-ins
in every Eclipse installation there can be only one version of
Xtext. We have discussed this for years. Bumping the major
version is a bad idea.
Sven
Hello guys.
i need your assistance with regards the rules op api changes
and version
bumps.
if we increase our dependency at Xtext to Guice 4.x and Guava
23.x would
that require a Xtext 3.0? i am not sure if binary
compatibility is given
by such a change.
Thanks
Christian
--
Christian Dietrich (Diplom-Informatiker (BA))
Softwareentwickler / -Architekt
Tel.: +49 (0) 711 / 34 21 91-0
Fax.: +49 (0) 711 / 34 21 91-29
Mobil: +49 (0) 151 / 173969 17
Mail: christian.dietrich@xxxxxxxxx
XING: https://www.xing.com/profile/Christian_Dietrich8
Web: http://www.itemis.de
Skype: christiandietrich1982
ICQ: 125801794
itemis AG
Niederlassung Süd
Industriestraße 6
70565 Stuttgart
Rechtlicher Hinweis:
Registergericht: Amtsgericht Dortmund HRB 20621 | Sitz der
Gesellschaft:
Lünen
Vorstand: Jens Wagener (Vorsitzender) | Wolfgang Neuhaus
Aufsichtsrat: Prof. Dr. Burkhard Igel (Vors.) | Michael
Neuhaus |
Jennifer Fiorentino
_______________________________________________
modeling-pmc mailing list
modeling-pmc@xxxxxxxxxxx
To change your delivery options, retrieve your password, or
unsubscribe from this list, visit
https://dev.eclipse.org/mailman/listinfo/modeling-pmc
_______________________________________________
modeling-pmc mailing list
modeling-pmc@xxxxxxxxxxx
To change your delivery options, retrieve your password, or unsubscribe from this list, visit
https://dev.eclipse.org/mailman/listinfo/modeling-pmc