Thanks for your interest in this project. General information regarding source code management, builds, coding standards, and more can be found here:
Thingweb is an Eclipse IoT project and as such is governed by the Eclipse Development process. This process helps us in creating great open source software within a safe legal framework.
Thus, before your contribution can be accepted by the project team, contributors must electronically sign the Eclipse Contributor Agreement (ECA) and follow these preliminary steps:
- Obtain an Eclipse Foundation account
- Anyone who currently uses Eclipse Bugzilla or Gerrit systems already has one of those
- Newcomers can create a new account
- Add your GiHub username to your Eclipse Foundation account
- (Log into Eclipse)
- Go to the Edit Profile tab
- Fill in the GitHub ID under Social Media Links and save
- Sign the Eclipse Contributor Agreement
- (Log into Eclipse)
- If the Status entry Eclipse Contributor Agreement has a green checkmark, the ECA is already signed
- If not, go to the Eclipse Contributor Agreement tab or follow the corresponding link under Status
- Fill out the form and sign it electronically
- Sign-off every commit using the same email address used for your Eclipse account
- Set the Git user email address with
git config user.email "<your Eclipse account email>"
- Add the
-s
flag when you make the commit(s), e.g.git commit -s -m "feat: add support for magic"
- Set the Git user email address with
- Open a Pull Request
For more information, please see the Eclipse Committer Handbook: https://www.eclipse.org/projects/handbook/#resources-commit
Eclipse Thingweb uses Conventional Changelog, which structure Git commit messages in a way that allows automatic generation of changelogs. Commit messages must be structured as follows:
<type>(<scope>): <subject>
<BLANK LINE>
<body>
<BLANK LINE>
<footer>
<type>
: A noun specifying the type of change, followed by a colon and a space. The types allowed are:feat
: A new featurefix
: A bug fixrefactor
: Code change that neither fixes a bug or adds a feature (not relevant for end user)perf
: Change improves performancestyle
: Change does not affect the code (e.g., formatting, whitespaces)test
: Adding missing testschore
: Change of build process or auxiliary toolsdocs
: Documentation only changes
<scope>
: Optional. A term of free choice specifying the place of the commit change, enclosed in parentheses. Examples:feat(binding-coap): ...
fix(cli): ...
docs: ...
(no scope, as it is optional)
<subject>
: A succinct description of the change, e.g.,add support for magic
- Use the imperative, present tense: "add", not "added" nor "adds"
- Do not capitalize first letter: "add", not "Add"
- No dot (.) at the end
<body>
: Optional. Can include the motivation for the change and contrast this with previous behavior.- Just as in the subject, use the imperative, present tense: "change" not "changed" nor "changes"
<footer>
: Optional. Can be used to automatically close GitHub Issues and to document breaking changes.- The prefix
BREAKING CHANGE:
indicates API breakage (corresponding to a major version change) and everything after is a description what changed and what needs to be done to migrate - GitHub Issue controls such as
Fixes #123
orCloses #4711
must come before a potentialBREAKING CHANGE:
.
- The prefix
Examples:
docs: improve how to contribute
feat(core): add support for magic
Closes #110
feat(core): add support for magic
Simplify the API by reducing the number of functions.
Closes #110
BREAKING CHANGE: Change all calls to the API to the new `do()` function.
Eclipse Thingweb uses eslint
and prettier
to enforce a consistent coding style.
A Github Actions workflow checks for each Pull Request if the coding style is followed and creates annotations in the "files changed" tab for each warning that is emitted during this linting process.
To avoid such warnings, please use npm run lint
for linting your code and npm run format
to automatically apply fixes before committing any changes.
- Do not merge with master while developing a new feature or providing a fix in a new branch
- Do a rebase if updates in the master such as a fix are required:
git checkout master && git pull && git checkout - && git rebase master
- Pull Requests are merged using rebase
Contact the project developers via the project's "dev" list.