Contributing to Mongoose
If you have a question about Mongoose (not a bug report) please post it to either StackOverflow, our Google Group, or on the #mongoosejs irc channel on freenode.
Reporting bugs
- Before opening a new issue, look for existing issues to avoid duplication. If the issue does not yet exist, create one.
- Please describe the issue you are experiencing, along with any associated stack trace.
- Please post code that reproduces the issue, the version of mongoose, node version, and mongodb version.
- The source of this project is written in javascript, not coffeescript, therefore your bug reports should be written in javascript.
- In general, adding a "+1" comment to an existing issue does little to help get it resolved. A better way is to submit a well documented pull request with clean code and passing tests.
Requesting new features
- Before opening a new issue, look for existing issues to avoid duplication. If the issue does not yet exist, create one.
- Please describe a use case for it
- it would be ideal to include test cases as well
- In general, adding a "+1" comment to an existing issue does little to help get it resolved. A better way is to submit a well documented pull request with clean code and passing tests.
Fixing bugs / Adding features
- Before starting to write code, look for existing issues. That way you avoid working on something that might not be of interest or that has been addressed already in a different branch. You can create a new issue here.
- The source of this project is written in javascript, not coffeescript, therefore your bug reports should be written in javascript.
- Fork the repo or for small documentation changes, navigate to the source on github and click the Edit button.
- Follow the general coding style of the rest of the project:
- 2 space tabs
- no trailing whitespace
- comma first
- inline documentation for new methods, class members, etc
- 1 space between conditionals/functions, and their parenthesis and curly braces
if (..) {
for (..) {
while (..) {
function (err) {
- Write tests and make sure they pass (tests are in the test directory).
Running the tests
- Open a terminal and navigate to the root of the project
- execute
npm install
to install the necessary dependencies
- execute
make test
to run the tests (we're using mocha)
- or to execute a single test
T="-g 'some regexp that matches the test description'" make test
- any mocha flags can be specified with
T="..."
Documentation
To contribute to the API documentation just make your changes to the inline documentation of the appropriate source code in the master branch and submit a pull request. You might also use the github Edit button.
To contribute to the guide or quick start docs, make your changes to the appropriate .jade
files in the docs directory of the master branch and submit a pull request. Again, the Edit button might work for you here.
If you'd like to preview your documentation changes, first commit your changes to your local master branch, then execute make docs
from the project root, which switches to the gh-pages branch, merges from the master branch and builds all the static pages for you. Now execute node static.js
from the project root which will launch a local webserver where you can browse the documentation site locally. If all looks good, submit a pull request to the master branch with your changes.
Plugins website
The plugins site is also an open source project that you can get involved with. Feel free to fork and improve it as well!
Sharing your projects
All are welcome to share their creations which use mongoose on our tumbler. Just fill out the simple submission form.