-
-
Notifications
You must be signed in to change notification settings - Fork 26.6k
01. How to contribute
Ilkka Seppälä edited this page Dec 7, 2019
·
61 revisions
To work on a new pattern you need to do the following steps:
- If there is no issue for the new pattern yet, raise new issue. Comment on the issue that you are working on it so that others don't start work on the same thing. You are encouraged to present your implementation idea so others can participate in the design phase and help.
- Fork the repository.
- Create a new folder for the pattern. The rough structure of the new folder would be as follows:
-
etc
(every resource related to the pattern, like diagrams) -
src
(the source code of the pattern) -
README.md
(the description of the pattern) -
pom.xml
(the Maven project file)
-
- Implement the code changes in your fork. Remember to add sufficient comments documenting the implementation. Reference the issue id e.g. #52 in your commit messages.
- Format the code according to project Checkstyle configuration
- The build fails if the code is not properly formatted (see coding conventions)
- Add description of the pattern in pattern-
README.md
. All internal links must be relative to the pattern subdirectory, otherwise the links don't link properly on the website. All code samples need to be annotated with correct language for the syntax highlighting to work e.g. ```java xxx ``` - The parent pom.xml is configured with urm-maven-plugin which creates a class diagram for your pattern automatically in
etc
subfolder. To create a png out of this you can use locally installed PlantUML or online version. - Create a pull request.
Structure of the pattern-README.md
file
--- # this is so called 'Yaml Front Matter', read up on it here: http://jekyllrb.com/docs/frontmatter/
layout: pattern # layout must always be pattern
title: Best Pattern Ever # the properly formatted title
folder: best-pattern-ever # the folder name in which this pattern lies
permalink: /patterns/best-pattern-ever/ # the permalink to the pattern, to keep this uniform please stick to /patterns/FOLDER/
description: # short meta description that shows in Google search results
# both categories and tags are Yaml Lists
# you can either just pick one or write a list with '-'s
# usable categories and tags are listed here: https://github.com/iluwatar/java-design-patterns/blob/gh-pages/_config.yml
categories: creational # categories of the pattern
tags: # tags of the pattern
- best
- ever
- awesome
---
## Name / classification
...
## Also known as
...
## Intent
...
## Explanation
...
## Class diagram
...
## Applicability
...
## Tutorials
...
## Known uses
...
## Consequences (the good and the bad, add criticism here)
...
## Related patterns
...
## Credits
...
To add a new category or tag you need to edit the _data/categories.yml
or _data/tags.yml
file of the gh-pages
branch.
In there you should find a yaml list that can be extended.
To work on one of the non-pattern issues you need to do the following steps:
- Check that the issue has
help wanted
badge - Comment on the issue that you are working on it
- Fork the repository.
- Implement the code changes in your fork. Remember to add sufficient comments documenting the implementation. Reference the issue id e.g. #52 in your commit messages.
- Create a pull request.