Edit on GitHub

Contributor expectations

To contribute to Mattermost, you must sign the Contributor License Agreement. Doing so adds you to our list of Mattermost Approved Contributors. Please also read our community expectations and note that we all abide by the Mattermost Code of Conduct (CoC), and by joining our contributor community, you agree to abide by it as well.

Before contributing 

There are many ways to contribute to Mattermost beyond a core Mattermost repository:

  • You can create app integrations for Mattermost to provide additional functionality and host them anywhere.
  • You can create lightweight external applications that don’t require customizations to the Mattermost user experience by using incoming and outgoing webhooks, or by using the Mattermost API.
  • You can activate external functionality within Mattermost by creating custom slash commands.
  • You can extend, modify, and deeply integrate with the Mattermost server, its apps, and its UI/UX by using plugins. However, please note that plugin development comes with the highest level of overhead and must be written in Go and React.
  • You can use Mattermost from other applications, by embedding and launching Mattermost within other applications and mobile apps.

To get started:

  1. Identify which repository you need to work in (see point below), then review the README located within the root of the repository to learn more about getting started with your contribution and any processes that may be unique to that repository.

    These are the Mattermost Core repositories you can contribute to:

    • Server: Highly-scalable Mattermost server written in Go.
    • Web App: JavaScript client app built on React and Redux.
    • Mobile Apps: JavaScript client apps for Android and iOS built on React Native.
    • Desktop App: An Electron wrapper around the web app project that runs on Windows, Linux, and macOS.
    • Core Plugins: A core set of officially-maintained plugins that provide a variety of improvements to Mattermost.
    • Boards and Playbooks core integrations.
  2. To contribute to documentation, you should be able to edit any page and get to the source file in the documentation repository by selecting the Edit on GitHub button in the top right of its respective published page. You can read more about this process on the why and how to contribute page. You can contribute to the following Mattermost documentation sites:

During the contribution process 

  1. Check in regularly with your Pull Request (PR) to review and respond to feedback.
  2. Thoroughly document what you’re doing in your PR. This way, future contributors can pick up on your work (including you!). This is especially helpful if you need to step back from a PR.
  3. Each PR should represent a single project, both in code and in content. Keep unrelated tasks in separate PRs.
  4. Make your PR titles and commit messages descriptive! Briefly describing the project in the PR title and in your commit messages often results in faster responses, less clarifying questions, and better feedback.

Writing code 

Thoroughly test your contributions! We recommend the following testing best practices for your contribution:

  1. Detail exactly what you expect to happen in the product when others test your contributions.
  2. Identify updates to existing product, developer, and/or API documentation based on your contributions, and identify documentation gaps for new features or functionality.
  1. If your PR adds a new plugin API method or hook, please add an example to the Plugin Starter Template.
  2. If your code adds a new user interface string, include it in the proper localization file, either for the server, the webapp, or mobile.

Writing content 

Always consider who will consume your content, and write directly to your target audience.

Write clearly and be concise. Write informally, in the present tense, and address the reader directly. See our voice, tone, and writing style guidelines, and the Mattermost Documentation Style Guide for details on general writing principles, syntax used to format content, and common terms used to describe product functionality.

Did you find what you were looking for?

Thank you! We appreciate your feedback.

Tell us more

Your feedback helps us improve the Mattermost developer documentation.

Have a feature request? Share it here.

Having issues? Join our Community server.