eclipse-gemoc / gemoc-studio

gemoc-studio
Eclipse Public License 1.0
25 stars 22 forks source link

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

Open ebousse opened 6 years ago

ebousse commented 6 years ago

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:

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.
dvojtise commented 6 years ago

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