I have created a few open source projects based on JavaScript and CSS. In my case, the aim has never been to earn money through it. But, if we take the whole community into consideration, earning no money from open source projects limits its potential.
Recently, an ad-based revenue generation experiment was tried out and stopped (https://feross.org/funding-experiment-recap/). Though the execution faced a backlash from some of the stakeholders, most of the people were supportive of the idea behind the experiment.
This incidence made me convert an idea I have had in mind into an on-paper proof-of-concept for discussions.
I have shared a proposal for distributed revenue sharing model for open source contributions at: https://github.com/webextensions/distributed-open-source-contributions/blob/master/README.md
Here is the gist.
Problem statement
Open source developers spend a generous amount of time in developing and maintaining open source projects. But, the currently popular monetary compensation models are skewed in favor of only a few open source projects which are popular and being used directly by the sponsors. Due to this, the transitive dependencies of those open source projects are not able to attract enough monetary benefits.
Note: Some of these transitive dependencies may be detectable, for example, via package.json for Node.js projects. While some others may be getting used in background and hence they are not automatically detectable, for example, a tool like GIMP.
Proposed solution
Every open source project should be able to share a specific percentage of the sponsorship amount they receive, to the other open source projects.
Sample workflow
- Let's consider that we have a Node.js based open-source project called
awesome-contributions
- A considerate company, which makes use of the
awesome-contributions
project, decides to sponsor that project with a contribution of 200 USD per week. - The team behind the
awesome-contributions
project has used many other open source projects, without whichawesome-contributions
couldn't have been built. That team wishes to share the contributions it receives with those open source projects (let's call them "transitive projects"). -
awesome-contributions
project uses the following "Contribution sharing rules" on the platform which has implemented this proposal:
{
"contributionsShare": {
// Out of all the sponsorship amount received via "GitHub Sponsors", this
// percentage of the amount would be shared to other projects listed in
// "shareContributionsWeightages". The remaining sponsorship amount would be
// transferred to the accounts listed in the object "projectPartnersWeightages"
"sharePercententageOfContributionsReceived": 50,
// These "weightages" are just another way of representing share "percentages"
"projectPartnersWeightages": {
// Using "@" symbol to indicate that it is a project-partner account
"@webextensions": 60,
// "*" indicates remaining project-partners, who are not listed in the
// object "projectPartnersWeightages"
"*": 40
},
// These "weightages" are just another way of representing "percentages"
"shareContributionsWeightages": {
"eslint/eslint": 1,
"facebook/react": 0.95,
"GoogleChrome/puppeteer": 80,
"jquery/jquery": 0.05,
"webextensions/live-css-editor": 8,
// "*" indicates remaining projects listed in "package.json"
"*": 10
}
}
}
-
This means, from those 200 USD, in a week:
- 50% would go to the project-partners of
awesome-contributions
, i.e., 100 USD - 50% would go to the transitive project-partners for the transitive projects mentioned under
shareContributionsWeightages
, i.e., 100 USD
- 50% would go to the project-partners of
-
This effectively means, from those 200 USD, in a week:
-
eslint/eslint
would get 1 USD -
facebook/react
would get 0.95 USD -
GoogleChrome/puppeteer
would get 80 USD -
jquery/jquery
would get 0.05 USD -
webextensions/live-css-editor
would get 8 USD - Other transitive projects would get, in total, 10 USD and those 10 USD would be equally distributed among them
-
@webextensions
would get 60 USD in a week - Other project-partners would get, in total, 40 USD in a week and those 40 USD would be equally distributed among them
-
Other projects would also have their own "Contribution sharing rules" which would distribute the sponsorship amount even further.
More
This article represents the super-simplified version of the revenue sharing model which would auto-scale. More details and edge cases are handled in the detailed document.
Detailed document is available at: https://github.com/webextensions/distributed-open-source-contributions/blob/master/README.md
Comments are welcome here.
Issues and pull requests are welcome at the GitHub page of the document :-)
PS: While writing this article, I got to know about a recent announcement from NPM that they would be taking an initiative to make it easy to fund projects via their registry. I'm hoping that their solution blends with this model and later on extends to all open source projects, like described in this proposal.
Top comments (0)