devonfw is truly free and open. We are looking forward to your contribution and are more than happy to receive your feedback and improvements to code and documentation. This page describes the few conventions to follow. Please note that this is an open and international project and all content has to be in English language. Also read our code of conduct.
We are using github.com as social coding platform. Hence, we follow the principles of github to deal with changes:
In case you do not have an account please first join github. If you have a CORP username use it also as GitHub username. If possible and suitable also provide your real name in your profile. Now, that you are logged into github.com you are ready to go.
For devonfw we have the following organizations on github:
-
The official devonfw Platform organization.
-
The organization used for work on incubators and other research projects. New projects start here and in case they evolve properly and get mature, they are moved to the official devonfw organization.
Within the organizations we have many different repositories. In case you want to give feedback or provide contributions you need to know the corresponding repository.
The major technology stacks have their own repository carrying the prefix devon4
followed by a shortcut for their stack or programming language:
Tools we provide typically have a repository named like the tool they provide (omitting prefixes like devon[fw]
):
There is much more to discover. Browse our organizations to find out.
Please note that for trivial changes like a typo in the documentation you do not need to follow a complex process. Please do the following:
-
Just browse to the file online on github
-
Click on the small pencil icon on the top right of the file content
-
Do the proposed changes
-
If available (when editing documentation) verify your change by switching to the
Preview
tab on the top. -
When your change is complete, select
Create a new branch for this commit and start a pull request
at the bottom. -
Comitt your change by clicking the green
Propose file change
button at the bottom. -
Now fill summary and description and click on the green
Create pull request
button. -
That is all. Thank you very much. For details about pull requests see below.
We are working issue-based so check if there is already an issue in our tracker for the task you want to work. Otherwise first create a new issue for it (e.g. a bug report or a feature request).
If you want to contribute actively to resolve the issue (by providing code, documentation, etc.),
please assure via communication in that issue (comments, assigned user, etc.) that this is recognized and accepted by somebody from the community.
Especially in case of more complex issues please get sure not to miss out such consensus with the community
and ensure that there is a common understanding of what and potentially even how to do it.
You surely do not want to invest your valuable work and time into something that will later be rejected by the community.
When you have been assigned to the issue (see Assignees
on the right) you are sure that nobody else will work on the same issue in parallel and ready to go.
Typically the latest development takes place on the develop
branch.
In case there is no such branch it will be the master
branch.
If you plan to contribute a bugfix, please check if there is a maintenance branch for the corresponding release (e.g. if you found a bug in version 3.4.5 and a branch develop-3.4.x
exists this should be the baseline for your work).
The github.com platform supports a wonderful feature to fork a repository. Make use to create your private copy where you experiment and prepare your contribution in an isolated environment:
-
Visit the original repository you want to contribute to.
-
Click on the the
Fork
button at the top right. If asked for a destination choose your personal github account. -
Clone this fork with a git-client to your local machine.
-
Checkout the branch to use as baseline (see above section)
-
From there create and checkout a new feature-branch (named
feature/«issue-id»-«feature-keywords»
) -
Start your work on this new feature-branch.
Before you start with your code changes, please check the following conventions:
-
For each programming language we have a stack repository (see above) containing documentation about the coding conventions (example: Java). Please read and follow this conventions before doing (bigger) changes.
-
Use devon-ide to setup your development environment and get code formatters, etc. configured properly as we do not like "diff-wars" because of inconsistent formatter settings.
-
Thank you, happy coding!
Before you start with your documentation changes, please check the following conventions:
-
Documentation will always be found in the
documentation
folder of the root of repository. -
All our documentation is written in the AsciiDoc format.
-
All documentation files need to carry the
.asciidoc
extension and should be named inlower-train-case
style. -
Common prefixes help to categorize documentation files:
tutorial-
is used for step-by-step instructions,guide-
is used for guidelines on a particular aspect,coding-
is for specific conventions or details about source-code,alternative-
is for less official options that are not recommended as first class citizen but to still share knowledge for people using that option,decision-
is for rationales why a complex (technology) descition was taken. -
Please read and follow our documentation guidelines.
To test your changes all you need to do is run the following command:
devon build
If the build failed, you need to rework your changes.
Always commit your changes in small logical units associated with a issue (see above section) using the commit message format:
#«issue-id»: «describe your change»
Then github will automatically link the commit in the issue.
Example:
#1: added REST service for tablemanagement
In case you worked on an issue from a different repository (e.g. change in ide-settings
due to issue in ide
) we use this commit message format:
«organization»/«repository»#«issue-id»: «describe your change»
Example:
devonfw/devon4j#1: added REST service for tablemanagement
To make your changes public you need to push them.
If you are doing this for the first time since you started your feature branch, you also need to publish that branch (git push -u origin feature/«issue-id»-«feature-keywords»
).
After that a git push
is sufficient.
To complete your changes ensure the following aspects:
-
You have tested your changes and the build succeeds
-
Code and documentation are in sync (if you coded new features you also extended documentation, etc.)
-
You followed the coding conventions and documentation guidelines
-
For new features you have added automated unit tests
Do not worry, we will assist you in case you are unsure or miss something out. However, you make your and our life easier, if you follow this Definition of Done (DoD) before providing your pull-request.
Once you have completed your changes and DoD, you can finally create a pull-request (PR).
Please ensure the following aspects:
-
Follow the same conventions as for commit messages (see above) also for the title of the pull-request
-
In case you are providing a PR that is not yet ready for merging, please prefix the title with
WIP:
. This can be helpful to get feedback from travis or start early discussions on complex changes. Once you reached a state ready to be merged, simple edit the title and remove theWIP:
prefix. -
Also add the issue(s) to the description of the pull-request (e.g.
fixes #«issue-id»
). -
Finally, click on the green
Create Pull Request
button.
Your pull request will automatically be checked if it …
-
can be merged without conflicts
-
builds correctly (no compile or test errors)
-
CLA has been signed. If you contribute for the first time, you need to sign the CLA once.
Please ensure to do the required tasks and reworks unless all checks are satisfied. From here a reviewer should take over and give feedback. In the best case, your contribution gets merged and everything is completed. You might also get review feedback and are request for changes. In that case walk through the review feedback and try to resolve it. Once, you push your new commits, the PR gets updated automatically and all checks will verify again. Also github will automatically make resolved review comments as outdated. If you do not plan to put any further work into your PR before it is completed and merge, please let us know by writing an according comment. We might find resources to get the PR done for you if it is already valuable. In case you should not get feedback for weeks, do not hesitate to ask the community.
Note
|
If one (typically the reviewer) has to change the base branch (because the wrong develop branch was used, see above) onto which the changes will be merged, one can do the same by following the instructions at here. |