Development and Releases

Development

The modelix project is developed open-source under the Apache-2.0 license. All components and software of the platform as well as issue tracking and project management are done in repositories in our GitHub organisation.

Currently, we use GitHub actions to build, test, and publish the components. We deploy all relevant artifacts to the itemis Nexus server as well as GitHub Packages

Issues are managed in our issue tracker over at https://issues.modelix.org.

Release Cycle

With many components being in various development stages - from stable to early and conceptual - they are released individually for each repository. Generally, we follow the Semantic versioning scheme for releases. However, anything based on JetBrains MPS (e.g. MPS plugins or extensions) are prefixed with the corresponding MPS major and minor version number followed by our own patch version number. For example, the org.modelix.mps-model-plugin version 2021.2.103 is the 103rd release which is compatible with MPS 2021.2.*.

To make it easier for developers, the modelix platform is currently released twice a year as a single "platform release" which references compatible component versions. We aim to provide a Spring release (e.g. 24.1) and an Autumn release (e.g. 24.2). All development in-between is carried out as patches on the releases. This release cycle starts from 2023 with the first release during the 'MPS Community Meetup' in May: 2023.R1.

To gain an overview over existing components, please refer to the list of components here.

Our roadmap outlines the current goals on our agenda for modelix.

Experimental features

Sometimes we want to implement a feature or expose an API that is experimental.

When doing so, we mark the APIs as experimental. In TypeScript, we use the documentation tag @experimental. For Kotlin, we use the annotation @UnstableModelixFeature for an opt-in requirement

When marking something as experimental, we document the reason for it being experimental and our plans for stabilizing the feature.

An example in our Kotlin code can be found here. An example in TypeScript can be found here.