Contributions

Last Updated: 2021-02-02

First, Thank You! Grouparoo relies on the contributions of many people just like you to create the best marketing infrastructure & automation tools.

All changes to Grouparoo should be contributed via Pull Requests to our Github Project. Changes by any other method will be rejected. GitHub allows us to coordinate and communicate in a single place. Pull requests also allow us to run our test suite against all new code to ensure that things still work the way they are supposed to after your change.

Getting Started

Before you start, please create a new Discussion Topic to discuss your plans for the new feature with us. Use the ideas category. We want to be sure that you won't be duplicating work, and that we will be able to merge in your work. Failing that, members of Grouparoo Inc will endeavor to quickly comment on an open Issue or Pull Request regarding it's mergeability.

At this time, Grouparoo Inc. is focused on expanding and enhancing our core features, in addition to developing our paid plugins. With that in mind, there are some areas of the codebase that may not be stable enough to accept Pull Requests, or areas of the product that are undergoing significant changes. There are also categories of work which fall outside the scope of of the core product which should be moved to a plugin. Similarly, Pull Requests that drastically change the functionality of an existing section of the product are unlikely to be merged, as they likely conflict with our roadmap.

The best place to contribute to Grouparoo is by adding a new connection to add a new Source or Destination via a plugin.

Ownership

By contributing to Grouparoo, you agree that you have granted ownership of the work to Grouparoo Inc, to be maintained and distributed in accordance with our open-source License (Mozilla 2.0).

Testing

Grouparoo is a large project with lots of different plugins and tools. We don't expect you to know about everything, so that's why we have a robust test suite. This allows us to ensure that no matter who makes a change, Grouparoo will continue to work the way it is supposed to.

With that in mind, all new features to Grouparoo must also include additions to the test suite to ensure that in the future, we can maintain your work. When writing tests, write the smallest test that ensures that your work is tested. Every contribution to the codebase should have an associated test.

Be sure that your changes pass the test suite! Run npm test to run the full test suite. You will need redis, postgres, chromedriver along with Node.js installed. You can find instructions on getting started as a developer here.

Linting

We use prettier.js to manage our code style and lint rules. We run prettier as part of our test suite, and your contributions must pass. Prettier is very opinionated and inflexible such that we cannot inject our own opinions. There are no eslint/jshint files to manage in this project.

Comments

If your contribution adds a new feature of modifies an existing behavior, document your changes using Typedoc. We use Typedoc to automatically document Grouparoo. There are many plugins to help you with this, and are built into editors like VSCode.