Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Better split the studio into independent components + applying eclipse versionning scheme #97

Open
ebousse opened this issue Jun 22, 2018 · 1 comment
Labels

Comments

@ebousse
Copy link
Contributor

ebousse commented Jun 22, 2018

Observations

Currently, the GEMOC Studio is conceptually split in several components, as shown approximately by this diagram from the documentation :

However, several observations can be made:

  • Each component does not have its own lifecycle, and follows the version numbers and release cycle of the complete studio, regardless of the amount of changes in the component (eg. a new version of the framework is officialy released at each new version of the studio, even if it does not change). This means that if any external person depends on one specific component of the studio, and that this component changes its version number despite any real code change, this can lead to confusion.
  • Each component does not have its own git repository, which means the separation we have between components is not necessarily clear (this is not a big problem per se, but can have an impact on other points)
  • The current split can be discussed on several points, such as:
    • The "framework" part not only contains all mandatory generic extensible components of the studio, but also one optional concrete engine (the K3/Java one) and a few optional concrete addons (notably the debugger). Splitting the mandatory generic extensible part (ie. the framework) from the specific optional extensions made using this framework (eg. the Java engine) into separate components could clarify for contributors what is mandatory and extensible from the optional extensions we officialy provide
    • The "tracing" part contains the trace metamodel - which can be considered as part of the mandatory API of the framework - from tools to build tracers and traces - which are optional when executing models. Again, splitting mandatory from optional parts into well identified separate components could help.

In addition, we discovered that the Eclipse foundation has precise rules for version numbers of software parts: https://wiki.eclipse.org/Version_Numbering , which can be summarized as:

Reminder: In Eclipse, version numbers are composed of four (4) segments: 3 integers and a string respectively named major.minor.service.qualifier.

Each segment captures a different intent:

  • the major segment indicates breakage in the API
  • the minor segment indicates "externally visible" changes
  • the service segment indicates bug fixes and the change of development stream (the semantics attached to development stream is new to this proposal, see below)
  • the qualifier segment indicates a particular build

If we consider the "API" to be "everything that is public", this means that with our current process, almost each new version of the GEMOC Studio should increase the "major" segment (eg. 2.0, 3.0, 4.0, etc.), since it's unlikely that zero public member changes between two releases . We probably would prefer to keep the major segment for big feature changes, instead.

Proposal

Based on all observations above, I would propose:

  1. Separate the version number of the GEMOC studio (ie. the end-user graphical IDE), from the version number of the GEMOC libraries (eg. the execution framework). We could for instance have a GEMOC Studio v12 contaning an execution framework 2.5.3 and a Java engine 1.5.2. This would enable us:
    1. to increment the version number of the studio without incrementing the version number of a component that did not change since the last version. Someone depending on the framework would not need to update its code/manifests in such cases, which is rather nice.
    2. to use the strict eclipse version numbering major.minor.service.qualifier for the librairies, while keeping a more flexible numbering for the Studio itself (it is usually admitted hat the scheme major.minor.service.qualifier does not make sense for an end-user application, so we could consider that "major" means "lots of important features")
  2. Better conceptually separate components, eg. separate the framework from the java engine (this would need discussions)
  3. Better technically separate components, each with one git repository, its own life cycle, its own update site and its own sequence of git releases. This would greatly help implementing the first point.
  4. Ask for a an eclipse github organization dedicated to GEMOC. This would greatly help implementing the previous point.
@ebousse ebousse added the releng label Jul 17, 2018
dvojtise added a commit that referenced this issue Jul 19, 2018
follows #97
recommendations

Signed-off-by: Didier Vojtisek <didier.vojtisek@inria.fr>
dvojtise added a commit that referenced this issue Jul 19, 2018
follows #97
recommendations


Signed-off-by: Didier Vojtisek <didier.vojtisek@inria.fr>
dvojtise added a commit that referenced this issue Aug 7, 2018
Bump version of GEMOC components for next release

according to
eclipse/gemoc-studio-modeldebugging#53 :
and following #97 recommendations

- Bump studio version to 3.1.0
- GEMOC Framework and java execution goes to 4.0.0 due to major api
changes
- Trace and SimulationModelanimation goes to 3.0.1 due to adaptation to
these changes

Signed-off-by: Didier Vojtisek <didier.vojtisek@inria.fr>
@dvojtise
Copy link
Contributor

link to a discussion about Github organisation in Eclipse https://bugs.eclipse.org/bugs/show_bug.cgi?id=488119#c31

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants