Paying contributors

Background information

In 2020 the Mautic Community launched on Open Collective and GitHub Sponsors, providing an opportunity for individuals and organisations to financially support the Mautic Project.

This policy sets out how we plan to use the funds that we raise through these channels to support the development of Mautic.

Sponsoring contributors

With a largely volunteer-driven community it can be difficult to have a reliable cadence of resources available both to support the ‘keep the lights on’ activity such as reviewing pull requests and answering forum threads, and to ensure that we are able to proactively respond to bug reports and issues which require timely attention.

While many individual contributors do work for or on behalf of organizations who financially support them to contribute to Mautic, there is a large body of people for whom this is not an option, and who cannot afford to consistently contribute to Mautic without being financially compensated to do so.

There are also situations where the Mautic Project requires expertise and skills which are not found in the community, therefore needing to seek freelancers to work on clearly defined tasks.

This policy provides a guideline of how we will use the funds which we have available for use in this context.

Proposing sponsored contributors

Team Leads can propose any contributor from their teams who are in good standing within the community for being sponsored by the Mautic Community. These will be reviewed by the Community Council with the final decision being approved by the Project Lead. It is important to note that we are unable to pay people who live in certain countries for legal reasons. Please check the Financial Policy for further details.

A clear proposal will be made which outlines the benefits to the Mautic Project through sponsoring the individual, with examples of their previous contributions and a plan for the first three months of what they will work on. This should also specify the number of hours per week that the individual will be sponsored for, and which budget the funds are to be allocated from. If fundraising is required, a project on the Open Collective can be established.

The proposal should include clear outcomes which are demonstrable - for example they will refactor the top three sections on the developer documentation and publish the work via PRs on the new developer documentation repository, or they will work on reducing the backlog of open pull requests by 20% by testing and code reviewing outstanding PRs.

Sponsored contributors will initially be supported for a period of three months, with a review at the end of this period.

Rate of remuneration

Finding an hourly amount which is appropriate worldwide for all levels of experience is always going to be a challenge.

At this early stage we have taken into consideration information from salary surveys from StackOverflow and other sites such as Glassdoor alongside learnings from other open source projects such as ESLint and Drupal who have implemented similar policies.

The Community Council has agreed that from the date of this policy, an hourly rate of $40 will be the standard rate for sponsored developers who are contributing to Mautic - this rate will be reviewed on an annual basis by the Community Council. Sponsored contributors will have an agreed maximum weekly limit of hours to be worked and an ideal range agreed with the Project Lead.

Contributors will not be able to claim for any incidental expenses without explicit approval from the Project Lead in writing, in advance of incurring any costs.

All sponsored contributors will be required to raise an invoice on Open Collective at the end of each month for the hours worked the previous month, or have a regular monthly sponsor tier on Open Collective which Mautic can select to sponsor them for ongoing agreements.

Contracts

Where a freelancer is being hired, the Mautic Community will use the UpWork team account to post roles, interview candidates and hire the candidate.

Where a contributor is being sponsored outside UpWork, a contract will be drawn up by Open Collective’s HR provider, Oyster. The Mautic Project does not currently employ staff, therefore at this time all contributors being paid by the Mautic Project will be responsible for managing their tax and insurance obligations in their locality.

Terminating an agreement

Generally speaking, agreements to sponsor a contributor are subject to the expected performance and outcomes being delivered, whether an ongoing or project-based agreement.

The contributor or the Mautic Project may decide to terminate the agreement with four weeks' notice for any reason in the case of an ongoing agreement, or one weeks’ notice in the case of a project-based agreement. All work completed up to the point of the contract ceasing will be paid in the final invoice.

Bounty programme

Any repositories within the Mautic organisation on GitHub which are eligible have the BountySource integration enabled. This allows individuals and organisations (including the Mautic Project) to add a bounty to issues that they want to see fixed.

The Product Team can place bounties on issues which they need to have addressed in a forthcoming release, with the funds coming from their budget line for this purpose.

Read more about BountySource here.

Initiatives and new feature development

There is an RFP process which is used for the proposing of projects and Strategic Initiatives which may have a financial compensation allocated to the project. These will be managed through the Mautic Open Collective as individual projects.

Credits

Inspiration has been drawn from numerous sources including:

https://ardupilot.org/dev/docs/how-the-team-works-development-fund.html

https://dev.to/rudderstack/devs-wanted-get-paid-to-contribute-to-rudderstack-s-open-source-software-bjp

https://github.com/obsproject/obs-studio/wiki/OBS-Project-Bounty-Program

https://www.drupal.org/governance/d8accelerate

https://eslint.org/blog/2020/10/year-paying-contributors-review

Found errors? Think you can improve this documentation? edit this page