Development and contribution Workflow

Here you can find a general workflow, how a contribution can be started, executed and finished

Important: For correct task finishing please check the Definition of done


Workflow

Before you can start take a look at the Create fork and setup IDE guide.

1. Get a task

On our task management tool Redmine you can find a complete list of the open tasks in the Gentics Portlet Suite Project

-> if you dont have an account to our redmine system or dont have access to this project please contact one of our project team

2. Pull from upstream

Before you start with a new implementation it is always a good idea to pull all changes from the original upstream that you configured in the setup guide mentioned above:

# Fetches any new changes from the original repo
git fetch upstream

# Merges any changes fetched into your working files
git merge upstream/dev

Detailed information on how to handle a fork you can find in this github guide.

3. Implementation

Implement the functionality of the task. Please respect the code guideline.

4. Write tests

// TODO

5. Write documentation

For every new feature or general functionality add new documentation to this site. In the git maven project you can find the existing doc here:

portletsuite\src\site\markdown

The page structure of this documentation will be generated of the content of this folder. Generally new documentation should be added to existing files in this folder.

Add a new page to the documentation

If you want to add a new page you can do that by adding a new item in the site.xml file here:

portletsuite\src\site\site.xml

Add a new <item> in the menu section:

<menu name="Project Documentation">
       ...
       <item name="Your new Menu Item" href="{yourNewDocFile}.html" collapse="true" />
       ...
</menu>

Add a new file in the markdown folder here:

portletsuite\src\site\markdown\{yourNewDocFile}.md
6. Check the Definition of done
7. Commit the code

If you are sure that everything is included in your work (implementation, documentation, tests), then you can commit the code and push it to your fork:

# add all changes to a commit
git add .

# check the status of your new added or modified files
git status

# do a commit
git commit -m "{Redmine/Github} issues {IssueNumber, redmine or github}: Good description of your commit, with new feature description."

# push to your fork
git push origin {your fork branch, in general 'master'}
8. Make a pull request

Now you can do a pull request so that we can merge your new code into the original repository. There is a guide on how to make a pull request on github.

7. Mark the task as closed

Now you can mark the task in the task management tool Redmine as closed. Task is finished, proceed with step 1. :)

Definition of done

Here you can find a detailed description of our definition of done. That means: to really finish a project tasks this is the final check list you should be aware of:

  1. Function is implemented
  2. Code is documented (Inline Javadoc): also try to document why you are doing something
  3. User Documentation (if needed): if you implemented a new feature, provide a good documentation
  4. Code quality measures (Checkstyle)
  5. Automated tests (JUnit)
  6. manuel tests: check manually if the new feature really works
  7. commited and pushed
  8. changelog entry (if needed)