#Contributing to Durandal
We'd love for you to contribute to our source code and to make Durandal even better than it is today! Here are the guidelines we'd like you to follow:
- Code of Conduct
- Question or Problem?
- Issues and Bugs
- Feature Requests
- Submission Guidelines
- Coding Rules
As contributors and maintainers of the Durandal project, we pledge to respect everyone who contributes by posting issues, updating documentation, submitting pull requests, providing feedback in comments, and any other activities.
Communication through any of Durandal's channels (GitHub, mailing lists, Google+, Twitter, etc.) must be constructive and never resort to personal attacks, trolling, public or private harassment, insults, or other unprofessional conduct.
We promise to extend courtesy and respect to everyone involved in this project regardless of gender, gender identity, sexual orientation, disability, age, race, ethnicity, religion, or level of experience. We expect anyone contributing to the Durandal project to do the same.
If any member of the community violates this code of conduct, the maintainers of the Durandal project may take action, removing issues, comments, and PRs or blocking accounts as deemed appropriate.
If you are subject to or witness unacceptable behavior, or have any other concerns, please email us at [email protected].
If you have questions about how to use Durandal, please direct these to the Google Group discussion list or StackOverflow.
If you find a bug in the source code or a mistake in the documentation, you can help us by submitting an issue to our GitHub Repository. Even better, you can submit a Pull Request with a fix.
Please see the Submission Guidelines below.
As of version 2.1, we are locking down Durandal to its current feature set. The best way to add new features is through authoring plugins or specialized monkey patching of the API. The library has been designed in such a way as to make this easy.
If you want to help improve the docs, it's a good idea to let others know what you're working on to minimize duplication of effort. Before starting, check out the issue queue. Comment on an issue to let others know what you're working on, or create a new issue if your work doesn't fit within the scope of any of the existing doc fix issues.
You should also make sure that your commit message is labeled "docs:" for clarity.
Before you submit your issue, search the archive. Maybe your question was already answered.
If your issue appears to be a bug, and hasn't been reported, open a new issue. Help us to maximize the effort we can spend fixing issues by not reporting duplicate issues. Providing the following information will increase the chances of your issue being dealt with quickly:
- Overview of the issue - if an error is being thrown a non-minified stack trace helps
- Motivation for or Use Case - explain why this is a bug for you
- Durandal Version(s) - is it a regression?
- Browsers and Operating System - is this a problem with all browsers or only IE8?
- Reproduce the error - provide a live example or an unambiguous set of steps.
- Related issues - has a similar issue been reported before?
- Suggest a Fix - if you can't fix the bug yourself, perhaps you can point to what might be causing the problem (line of code or commit)
If you get help, help others!
Before you submit your pull request consider the following guidelines:
-
Search for an open or closed Pull Request that relates to your submission. You don't want to duplicate effort.
-
Make your changes in a new git branch
git checkout -b my-fix-branch master
-
Create your patch, including appropriate test cases.
-
Follow our Coding Rules.
-
Run the full Durandal test suite and ensure that all tests pass.
-
Commit your changes using a descriptive commit message.
git commit -a
Note: the optional commit
-a
command line option will automatically "add" and "rm" edited files. -
Push your branch to GitHub:
git push origin my-fix-branch
-
In GitHub, send a pull request.
-
If we suggest changes then
-
Make the required updates.
-
Re-run the test suite to ensure tests are still passing.
-
Rebase your branch and force push to your GitHub repository (this will update your Pull Request):
git rebase master -i git push -f
-
That's it! Thank you for your contribution!
After your pull request is merged, you can safely delete your branch and pull the changes from the main (upstream) repository.
To ensure consistency throughout the source code, keep these rules in mind as you are working:
- All features or bug fixes must be tested by one or more specs.
- All public API methods must be documented.
- Try to follow the existing code style.
Many thanks to the AngularJS team. The content of this document is based on the "Contributing" and "Code of Conduct" guides of their project.