There are many ways to contribute to mojo.js, this guide will show you a few of them.

Reporting Bugs

We use the GitHub issue tracker, so you'll need to create a (free) GitHub account to be able to submit issues, comments and pull requests.

First of all, make sure you are using the latest version of mojo.js, it is quite likely that your bug has already been fixed. If that doesn't help, take a look at the list of currently open issues, perhaps it has already been reported by someone else and you can just add a comment confirming it.

If it hasn't been reported yet, try to prepare a test case demonstrating the bug, you are not expected to fix it yourself, but you'll have to make sure the developers can replicate your problem. Sending in your whole application generally does more harm than good, the test directory of this distribution has many good examples for how to do it right. Writing a test is usually the hardest part of fixing a bug, so the better your test case the faster it can be fixed. ;)

And don't forget to add a descriptive title and text, when you create a new issue. If your issue does not contain enough information or is unintelligible, it might get closed pretty quickly. But don't be disheartened, if there's new activity it will get reopened just as quickly.

Reporting Security Issues

Please report security issues directly to Sebastian Riedel ([email protected]), and give us a few days to develop and release a proper fix.

Resolving Issues

There are many ways in which you can help us resolve existing issues on the GitHub issue tracker.

Can you replicate the problem on your computer? Add a comment saying that you're seeing the same. Perhaps you can provide additional information that will make it easier for others to replicate the problem, maybe even contribute a better test case.

And for all code contributions we very much appreciate additional testing and code review, just add a comment to show your approval or to point out flaws that need to be addressed.

Contributing Documentation

One of the easiest ways to contribute to mojo.js is through documentation improvements.

Pull requests with additions or changes to the documentation included in the mojo.js distribution follow the same rules as code contributions. Please don't send pull requests for overly simplistic changes, such as the addition of a comma or semicolon.

Contributing Code

All code contributions should be sent as GitHub pull requests. But please try to avoid pull requests with very simplistic changes, such as a single typo fix somewhere in the documentation or comments.

An expressive title and detailed description are invaluable during the review process, which usually ends when members of the community have voiced their opinions and the core team reviewed the changes. For a pull request to get merged it requires three positive reviews from voting members of the core team.

All code changes should emulate the style of the surrounding code, include tests that fail without them, and update relevant documentation.

While the mojo.js distribution covers a wide range of features, we are rather conservative when it comes to adding new ones. So if your contribution is not a simple bug fix, it is strongly recommended that you discuss it in advance in the Forum, or the official Matrix channel, to avoid unnecessary work and to increase its chances of getting accepted.

The following mission statement and rules are the foundation of all mojo.js development. Please make sure that your contribution aligns well with them before sending a pull request.

Code of Conduct

Like the technical community as a whole, the mojo.js team and community is made up of a mixture of professionals and volunteers from all over the world, working on every aspect of the mission - including mentorship, teaching, and connecting people.

Diversity is one of our huge strengths, but it can also lead to communication issues and unhappiness. To that end, we have a few ground rules that we ask people to adhere to. This code applies equally to founders, mentors and those seeking help and guidance.

This isn't an exhaustive list of things that you can't do. Rather, take it in the spirit in which it’s intended - a guide to make it easier to enrich all of us and the technical communities in which we participate.

This code of conduct applies to all spaces managed by the mojo.js project. This includes Matrix, IRC, GitHub discussions, the issue tracker, and any other forums created by the project team which the community uses for communication. In addition, violations of this code outside these spaces may affect a person's ability to participate within them.

If you believe someone is violating the code of conduct, we ask that you report it by emailing Joel Berger ([email protected]) or Sebastian Riedel ([email protected]).

  • Be friendly and patient.

  • Be welcoming.

    We strive to be a community that welcomes and supports people of all backgrounds and identities. This includes, but is not limited to members of any race, ethnicity, culture, national origin, colour, immigration status, social and economic class, educational level, sex, sexual orientation, gender identity and expression, age, size, family status, political belief, religion, and mental and physical ability.

  • Be considerate.

    Your work will be used by other people, and you in turn will depend on the work of others. Any decision you take will affect users and colleagues, and you should take those consequences into account when making decisions. Remember that we're a world-wide community, so you might not be communicating in someone else's primary language.

  • Be respectful.

    Not all of us will agree all the time, but disagreement is no excuse for poor behavior and poor manners. We might all experience some frustration now and then, but we cannot allow that frustration to turn into a personal attack. It’s important to remember that a community where people feel uncomfortable or threatened is not a productive one. Members of the mojo.js community should be respectful when dealing with other members as well as with people outside the mojo.js community.

  • Be careful in the words that you choose.

    We are a community of professionals, and we conduct ourselves professionally. Be kind to others. Do not insult or put down other participants. Harassment and other exclusionary behavior aren't acceptable. This includes, but is not limited to:

    • Violent threats or language directed against another person.

    • Discriminatory jokes and language.

    • Posting sexually explicit or violent material.

    • Posting (or threatening to post) other people's personally identifying information ("doxing").

    • Personal insults, especially those using racist or sexist terms.

    • Unwelcome sexual attention.

    • Advocating for, or encouraging, any of the above behavior.

    • Repeated harassment of others. In general, if someone asks you to stop, then stop.

  • When we disagree, try to understand why.

    Disagreements, both social and technical, happen all the time and mojo.js is no exception. It is important that we resolve disagreements and differing views constructively. Remember that we’re different. The strength of mojo.js comes from its varied community, people from a wide range of backgrounds. Different people have different perspectives on issues. Being unable to understand why someone holds a viewpoint doesn’t mean that they’re wrong. Don’t forget that it is human to err and blaming each other doesn’t get us anywhere. Instead, focus on helping to resolve issues and learning from mistakes.


If you have any questions the documentation might not yet answer, don't hesitate to ask in the Forum, on Matrix, or IRC.