Welcome to the Eclipse TM4E contributor land, and thanks in advance for your help in making Eclipse TM4E better and better!
🏠 The official Eclipse TM4E Git repository is https://github.com/eclipse-tm4e/tm4e.
The project license is available at LICENSE.
This Eclipse Foundation open project is governed by the Eclipse Foundation Development Process and operates under the terms of the Eclipse IP Policy.
Before your contribution can be accepted by the project team, contributors must have an Eclipse Foundation account and must electronically sign the Eclipse Contributor Agreement (ECA):
For more information, please see the Eclipse Committer Handbook: https://www.eclipse.org/projects/handbook/#resources-commit.
Eclipse TM4E use mainly 2 channels for strategical and technical discussions
- 🐞 View and report issues through uses GitHub Issues at https://github.com/eclipse/m2e-tm4e/issues.
- 📧 Join the [email protected] mailing-list to get in touch with other contributors about project organization and planning, and browse archive at 📜 https://accounts.eclipse.org/mailing-list/tm4e-dev
Latest builds, for testing, can be found at https://download.eclipse.org/tm4e/snapshots/.
- Download and install the Eclipse IDE for Eclipse Committers from https://www.eclipse.org/downloads/packages/ or another Eclipse installation with the Plug-in Development Environment (PDE) installed.
- Clone this repository .
- File > Open Projects from Filesystem... , select the path to the TM4E Git repository and the relevant child projects you want to import
- From the command line run:
- on Windows
mvnw clean verify
- on Linux
./mvnw clean verify
- on Windows
- From within Eclipse with M2E installed: right-click on the tm4e root folder > Run As > Maven build
TM4E's GitHub Actions wokflow is compatible with nektos/act a command-line tool that allows you to run GitHub Actions workflows locally.
- Install Docker
- Install nektos/act
- From the command line navigate into the tm4e project root
- Run the command
act
- On subsequent re-runs you can use
act -r
to reuse previous container which avoids re-installation system packages and reduces build times.
In case of build failures the docker container will still be running and you can SSH into it for analysis
using docker exec -u root -it <CONTAINER_ID> /bin/bash
, e.g.:
container_id=$(docker container ps --filter status=running --filter name=act-Build-build --format {{.ID}})
docker exec -u root -it $container_id /bin/bash
The TM4E project adopts Semantic Versioning on release level, ensuring the proper exposure of API contracts and addressing potential breakages.
To alleviate confusion among end-users regarding the effectively installed TM4E release and to ease the development process and troubleshooting, starting with version 0.9.0, individual TM4E features/plugins are no longer versioned independently (OSGi semantic versioning). Instead, they are aligned with the overall TM4E release version, following a practice that is common in other Eclipse Platform projects, such as EGit, Mylyn, or Xtext, as well as popular projects outside the Eclipse Platform universe, like the Spring Application Framework or Quarkus.
In this versioning approach, when any plugin introduces new features necessitating a minor version increment, the versions of all TM4E plugins/features are updated collectively, and the next release version will be adjusted accordingly.
To simplify version increments, utilize the bump-versions.py
Python script located in the root project directory. This script
facilitates the recursive update of the project version and plugin dependencies in all relevant files, including pom.xml
,
feature.xml
, and META-INF/MANIFEST.MF
.
The usage is as follows:
$ python bump-version.py (major|minor|micro)
Where
micro
(+0.0.1
) is for a backward compatible bugfix, or an internal change that doesn't surface to APIsminor
(+0.1.0
) is for a backward compatible API or feature additionmajor
(+1.0.0
) is for an API breakage (needs to be discussed on the mailing-list first)
TM4E only accepts contributions via GitHub Pull Requests against https://github.com/eclipse-tm4e/tm4e repository.
Before sending us a pull request, please ensure that:
- You are working against the latest source on the main branch.
- You check existing open and recently merged pull requests to make sure someone else hasn't already addressed the issue.
To send us a pull request, please:
- Fork the repository.
- Modify the source while focusing on the specific change you are contributing.
- Commit to your fork using clear, descriptive semantic commit messages.
- Send us a pull request, answering any default questions in the pull request interface.
GitHub provides additional documentation on forking a repository and creating a pull request
- Decide of a version name, we'll call it
x.y.z
here. Ensure all plugins have this version set in their MANIFEST.MF. You can use thebump-versions.py
Python script to set the version as needed. - Get the main code locally, e.g.:
git fetch eclipse main && git checkout FETCH_HEAD
- Tag it
git tag x.y.x
- Push tag, e.g.
git push eclipse x.y.z
- Re-run a build from https://ci.eclipse.org/tm4e/job/TM4E/job/main/ and ensure it passes
- Upon completion of the build, run https://ci.eclipse.org/tm4e/job/promote-snapshot-to-release/ with version
x.y.z
- Create a new
x.y.z
release entry on GitHub, from thex.y.z
tag. - Create a new
x.y.z
release entry on https://projects.eclipse.org/projects/technology.tm4e - Create a PR to update https://github.com/eclipse-simrel/simrel.build/blob/main/tm4e.aggrcon
- For SimRel release dates see https://github.com/eclipse-simrel/.github/blob/main/wiki/Simultaneous_Release.md
- (Optionally) Announce on mailing-lists. social media...
- Run
python bump-version.py patch
and commit all changed pom.xml/feature.xml/MANIFEST.MF files tomain
branch