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 introducingan [Open Source Maintenance Fee](https://opensourcemaintenancefee.org). Thisfee 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, aEULA 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
-
Follow these instructions on GitHub to enable Sponsors.
-
Add a “Maintenance Fee” monthly sponsorship tier at $10 with this text:
The Maintenance Fee is required for anyone using this project aspart 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 MaintenanceFee 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 MaintenanceFee 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 MaintenanceFee 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 MaintenanceFee](https://opensourcemaintenancefee.org). While the source code isfreely available under the terms of the LICENSE, all other aspects ofthe project--including opening or commenting on issues, participating indiscussions and downloading releases--require [adherence to theMaintenance Fee](./OSMFEULA.txt).
In short, if you use this project to generate revenue, the [MaintenanceFee 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.