Skip to content

Set up the Maintenance Fee

Enabling a Maintenance Fee for your project can be done in five simple steps. For projects hosted on GitHub, the easiest way to get started is to use GitHub Sponsors for your Maintenance Fee.

1. Communicate the change

Change is hard. Make sure to communicate the introduction of the Maintenance Fee to your community broadly before enforcing it.

First, consider opening an issue with the enforcement date of the Maintenance Fee. If your community uses GitHub Discussions or some other forum, post and pin an announcement with a link to the issue. Finally, use your blog, mailing list, and/or social media to inform your community.

Here’s some text to use as starter content for your announcement:

# Open Source Maintenance Fee Introduction
To ensure the long-term sustainability of this project, we are introducing
an [Open Source Maintenance Fee](https://opensourcemaintenancefee.org). This
fee is required to be paid by all users of this project who generate revenue.
You can [pay via GitHub Sponsors](https://github.com/sponsors/<YOURORGNAME>).
We plan to enforce the maintenance fee starting on `<DATE>`. At that time, a
EULA on binary releases requires payment of the Maintenance Fee.
Please see the [Open Source Maintenance Fee](https://opensourcemaintenancefee.org)
for more information.

Feel free to personalize the text to your project and community.

2. Activate GitHub Sponsors

  1. Follow these instructions on GitHub to enable Sponsors.

  2. Add a “Maintenance Fee” monthly sponsorship tier at $10 with this text:

    The Maintenance Fee is required for anyone using this project as
    part of revenue-generating activities.

Optionally, you may consider adding additional tiers so larger organizations pay a higher fee than smaller organizations. For example, you could add the following three tiers based on the size of the organization:

  • Add a “Small Organization Maintenance Fee” monthly sponsorship tier at $10 with this text:

    Organizations with fewer than 20 employees must pay this Maintenance
    Fee when using this project as part of revenue-generating activities.
  • Add a “Medium Organization Maintenance Fee” monthly sponsorship tier at $40 with this text:

    Organizations with 20 to 100 employees must pay this Maintenance
    Fee when using this project as part of revenue-generating activities.
  • Add a “Large Organization Maintenance Fee” monthly sponsorship tier at $60 with this text:

    Organizations with more than 100 employees must pay this Maintenance
    Fee when using this project as part of revenue-generating activities.

3. Update your README

Add the following to your project’s README file. You are welcome to personalize the text for your project. We recommend placing it near the top of your README so it is noticeable.

## Open Source Maintenance Fee
This project requires an [Open Source Maintenance
Fee](https://opensourcemaintenancefee.org). While the source code is
freely available under the terms of the LICENSE, all other aspects of
the project--including opening or commenting on issues, participating in
discussions and downloading releases--require [adherence to the
Maintenance Fee](./OSMFEULA.txt).
In short, if you use this project to generate revenue, the [Maintenance
Fee is required](./OSMFEULA.txt).
To pay the Maintenance Fee, [become a Sponsor](https://github.com/sponsors/<YOURORGNAME>).

4. Add the OSMF EULA to your project

Add an OSMFEULA.txt file to the root of your project’s repository. This file should contain the text of the End User License Agreement that requires the Maintenance Fee. Use the template EULA to get started.

5. Add the OSMF EULA to your package

.NET Example

Add the following to your .csproj to include the OSMFEULA.txt and require license acceptance:

<PropertyGroup>
<PackageLicenseFile>OSMFEULA.txt</PackageLicenseFile>
<PackageRequireLicenseAcceptance>true</PackageRequireLicenseAcceptance>
</PropertyGroup>
<ItemGroup>
<None Include="..\path\to\OSMFEULA.txt" Pack="true" PackagePath="OSMFEULA.txt"/>
</ItemGroup>

Build and publish your package.

JS Example

Add the following to your package.json to include the OSMFEULA.txt and reference it as the license:

{
...
"license": "SEE LICENSE IN OSMFEULA.txt",
"files": ["../path/to/OSMFEULA.txt"]
}

Build and publish your package.