Contribution Guide

If you have any comment or advice, please report your issue, or make any change as you wish and submit an PR.

# Reporting New Issues

Egg group members will confirm the purpose of the issue, replace more accurate tags for it, identify related milestone, and assign developers working on it. Tags can be divided into two groups, type and scope.

# Useful Tags

# Documentation

All features must be submitted along with documentations. The documentations should satify several requirements.

# Submitting Code

# Pull Request Guide

If you are developer of egg repo and you are willing to contribute, feel free to create a new branch, finish your modification and submit a PR. Egg group will review your work and merge it to master branch.

# Create a new branch for development. The name of branch should be semantic, avoiding words like 'update' or 'tmp'. We suggest to use feature/xxx, if the modification is about to implement a new feature.
$ git checkout -b branch-name

# Run the test after you finish your modification. Add new test cases or change old ones if you feel necessary
$ npm test

# If your modification pass the tests, congradulations it's time to push your work back to us. Notice that the commit message should be wirtten in the following format.
$ git add . # git add -u to delete files
$ git commit -m "fix(role): role.use must xxx"
$ git push origin branch-name

Then you can create a Pull Request at egg

No one can garantee how much will be remembered about certain PR after some time. To make sure we can easily recap what happened previously, please provide the following information in your PR.

  1. Need: What function you want to achieve (Generally, please point out which issue is related).
  2. Updating Reason: Different with issue. Briefly describe your reason and logic about why you need to make such modification.
  3. Related Testing: Briefly descirbe what part of testing is relevant to your modification.
  4. User Tips: Notice for Egg users. You can skip this part, if the PR is not about update in API or potential compatibility problem.

# Style Guide

Eslint can help to identify styling issues that may exist in your code. Your code is required to pass the test from eslint. Run the test locally by $ npm run lint.

# Commit Message Format

You are encouraged to use angular commit-message-format to write commit message. In this way, we could have a more trackable history and an automatically generated changelog.

<type>(<scope>): <subject>
<BLANK LINE>
<body>
<BLANK LINE>
<footer>

(1)type

Must be one of the following:

(2)scope

The scope could be anything specifying place of the commit change. For example $location, $browser, $compile, $rootScope, ngHref, ngClick, ngView, etc...

(3)subject

Use succinct words to describe what did you do in the commit change.

(4)body

Feel free to add more content in the body, if you think subject is not self-explanatory enough, such as what it is the purpose or reasone of you commit.

(5)footer

e.g.

fix($compile): [BREAKING_CHANGE] couple of unit tests for IE9

Older IEs serialize html uppercased, but IE9 does not...
Would be better to expect case insensitive, unfortunately jasmine does
not allow to user regexps for throw expectations.

Document change on eggjs/egg#123

Closes #392

BREAKING CHANGE:

Breaks foo.bar api, foo.baz should be used instead

Look at these files for more detials.

# Release

egg uses semantic versioning in release process based on semver.

# Branch Strategy

master branch is the latest stable version. next branch is the next stable version working in progress.

# Release Strategy

In the release of every stable version, there will be a PM who has the following responsibilities in different stages of the release.

# Preparation

# Before Release

# During Release

All tags mentioned above refere to adding tags from npm in package.json.

"publishConfig": {
"tag": "next"
}