Node: [Question] Income via Open Source

Created on 28 Aug 2018  Â·  18Comments  Â·  Source: nodejs/node

Hello Node.js developers, creator of Boost Lab here.

First of all, I love what you are doing! I built & deployed a Node server to serve Boost Lab. From my experiences, the Node.js technology, documentation, and community are absolutely amazing. 👍

Boost Lab is a new startup that’s on a mission to give all developers the ability to receive continuous income for their open source work.

The idea behind my app is simple. Donors use it to support the repos they love. And when a pull request gets merged, an algorithm will pay the authoring developer a portion of the available funds.

With this approach, funds are automatically distributed without any additional work from maintainers or developers. And each developer gets paid (somewhat) proportionally to the amount of work they contribute.

My app is not perfect. And I know there are a lot of ways I can improve it. I would love to work with a couple of open source projects to refine the idea. If you are interested, it would be an honor to work with the Node.js developers.

Cheers!

meta

Most helpful comment

The process described by the website and system used for assigning monetary worth to pull requests make me very uncomfortable. I believe the idea that different contributions have different worth is against our core values. There are also a lot of people working on things that are immeasurably important to node that aren't represented as code, and this leaves them out.

/cc @nodejs/tsc @nodejs/community-committee

All 18 comments

The process described by the website and system used for assigning monetary worth to pull requests make me very uncomfortable. I believe the idea that different contributions have different worth is against our core values. There are also a lot of people working on things that are immeasurably important to node that aren't represented as code, and this leaves them out.

/cc @nodejs/tsc @nodejs/community-committee

It seems more appropriate to discuss about this in https://github.com/nodejs/admin?

Given that we do have a foundation (which does pay people, just not for technical work), it's more complicated to use a system like this even setting the values issue mentioned by @devsnek aside.

/re @devsnek @joyeecheung

You are absolutely correct. There are a lot more work involved in running an open source project than just making commits and pull requests. For example: code & issue review, administration, advocate work, some projects even distribute merchandises, and etc. Therefore, the Node.js Foundation still plays a vital role in supporting the core members and core developers. And Boost Lab was not designed to change that.

However, Boost Lab can be used as a tool to pay the non-core developers for the contributions they make. And if the foundation wants to financially support those non-core developers, a “month budget” can even be allocated for them. This, in theory at least, could incentivise more developers to work on Node.

@jing-c Is Boost Lab affiliated with the Node.js Foundation? If not it might be worth checking the trademark guidelines here for using the Node.js logo.

Tbh, I do not see the usage on the website as implying affiliation, so I wouldn’t want to make any legal fuzz about that.

AFAICT there isn't anything the Node.js foundation needs to do for this, if people want to sign up for this service (either as donors or contributors) they can do. Boost Lab's algorithm will transfer money from donor -> collaborator.

Whether we allow external paid services to advertise in Node core issues is of course a separate question.

_EDIT:_ Actually it looks like we could influence developers by adding labels to the repo, but that's not actually required for the service to function.

Thanks for the feedback. I must admit, I have not read the trademark guidelines. I will definitely review that document. If my app infringes the trademark guidelines in any way, I will 100% push an update to fix this!

/re @gibfahn

Yes, maintainers can use labels to affect the value of each issue. The reason why I choose those keywords (e.g. “urgent” or “high difficulty”) is because a lot of repos already use them in their labels.

Without some kind of human input, it would be hard for an algorithm to guess the value, and I didn’t want maintainers to waste time entering a numerical value for each issue.

agree with @devsnek 's opinion; trying to imagine the scenario with this proposal implemented, I feel scary of many things:

  • PRs being priotitized based on their market value rather than technical merit
  • Same features being worked by plurality of developers causing unhealthy competetion
  • Maintainance (LTS, CI, platform coverage etc.) taking a back seat
  • Individuals / Vendors who can influence the progress with money power
  • Negatively impacting trust between contributors
    ...

On the other hand, I see this as an opportunity to incentivize the issue backlog reduction. Organizartions that have invested heavily in Node.js will be keen to see a timely response to production issues that were raised here. Regulating the proposal through the issue backlog, it addresses three things in one shot:

  • Stability to the backlog [ Project ]
  • Timely resolution to usability issues [ Consumers and potential Donors ]
  • Monetory benefits and motivations [ Contributors ]

But defenitely, due to the aforementioned challenges (value, gaming the system, priorites etc.) I guess a steering committee must overseer the whole proceedings and a well defined guideline over the workflow.

/re @gireeshpunathil

Thank you for your feedback. I had those exact same concerns when I first wanted to develop a funding app for open source.

Currently, there are existing bounty platforms (e.g. Bountysource, Gitcoin, GitCash, etc.) that allow a donor to attach a dollar value to an issue (i.e. solve my issue #X and receive $Y). With the bounty model, platform abuse can create conflicting interests between maintainers and donors. If donors push for goals that are not aligned with my vision, as a maintainer, what should I do?

Boost Lab is not a bounty platform. Donors cannot not attach a dollar value to a specific issue. Donors can only donate to the entire repo. As @gibfahn pointed out previously, actually it’s the maintainers that holds the power to influence developers by adding labels to issues.

For example, if there is a backlogged issue that needs to be resolved quickly. Attach a “Urgent” label to it. That will increase the value of that issue by a factor of 2. In theory, this will give a stronger incentive for developers to work on it.

Also, a pull request’s value is calculate only after it has been merged. This is because a PR can still be modified to resolve other issues until it's merged. Therefore, a PR value is still uncertain until the merge happens.

While I totally get the idea behind, this does make me feel uncomfortable for many reasons.
Just to be sure though, I'm going to assume that this needs to be enabled on a per-repo basis and that this won't be enabled on this repo without the approval of the project. We've already seen some platform rewarding commits/PRs without the consent of the maintainers/owners of repos, and I quite frankly dislike this.

Second disclaimer, I'm not talking on behalf of the CommComm or anyone else but myself.

My reasons then.
First of all, the Node.js Project is not only about code. there is a lot of work going on outside of this repo, in the others repos of the Project, and not all of them include code and pull-requests. By enabling such features, I fear we may send the signal that we are prioritizing code over everything else. Even if it gets enabled on every single repo of the project. How do you reward discussion in issues? Outreach efforts? Translations on Crowdin? This would mean we would prioritize only one part of the project, or rather de-prioritize the rest.

Then, I fear this may bring an image of disparities between paid contributors and "traditional" contributors. I do acknowledge that anyone can register, but not anyone may want/know that this is a thing. This, along with the first point would be a huge step back in the development of the Node.js project as I see it.

Anyway, right now, I think this would be a mistake. There's great potential on your platform, but as long as there's no way to reward non-code participations, I see it as in opposition to our core values. But I'm just one person, some may see it differently.

Just please, everyone, remember that this project is so much more than code. Code is a part of what brings us together, a great part, but not all of it.

I agree with @Tiriel. Also, I don't think automated weighting of contributions based on a more or less arbitrary algorithm will produce fair results and I don't like the idea of a third party managing donations and dispensing them based on that.

First of all, the Node.js Project is not only about code. there is a lot of work going on outside of this repo

I totally agree with this. Running an open source project is more than just code. (e.g. discussion & review, admin work, advocate work, and etc.) And you are right, Boost Lab cannot be used to support those activities because it was only designed as a tool to pay developers for their PRs. Thus, the foundation still plays a vital role in financially supporting the development and operation Node.js.

If the foundation decides Boost Lab offers no value to the Node.js project, I will close this issue.

Also, if the foundation requests Boost Lab to not enable any donations or payments for Node.js repos, I will respect that decision. I will remove all Node.js projects from my app. I will also push an update to disable any future donations to Node.js projects as well.


As an aside: Just out of curiosity, how does the Node.js Foundation currently pay core-members and core-developers for their work? Is it an hourly rate? Or do members submit expenses and the foundation reimburses them?

@Tiriel -

We've already seen some platform rewarding commits/PRs without the consent of the maintainers/owners of repos

can you please show one example? sorry, I am unaware of those.

IMO, as open source project maintainers, we can be open to opportunities and possibilities, trial-and-error, fail-fast-and-learn in ways to address problems that are not getting solved otherwise.

there were many (individual and group) attempts in the past to reduce the issue backlog but the count was simply too huge to be contained by those attempts.

If there are folks who can fund the work, and if it attracts motivation to do the work, and if we maintainers and the leadership team control and influence the whole proceedings and dictate what is valuable for the project and what is not, then I don't see any problem, but can see real benefit.

If this found to cause adverse effects on the project and the community, we could snap the theme - anytime.

For example, if there is a backlogged issue that needs to be resolved quickly. Attach a “Urgent” label to it. That will increase the value of that issue by a factor of 2. In theory, this will give a stronger incentive for developers to work on it.

For this particular repo, I don't think we need "stronger incentive" for most of our issues. Issues labeled with "help wanted" or "good first issue" always get snatched within a day, and urgent issues such as regressions are also dealt within a fairly short amount of time. The real obstacle in getting a fix out is the pace of the person who takes the issue - once someone indicates that they will work on it, or if a few collaborator follow up on it, other people will stop trying. If the person working on it gets stuck or don't have enough time that week or just happen to have a huge backlog, the progress would be slow and sometimes the issue might just get stalled. Other times the person reporting the bug doesn't follow up and there really isn't anything that we can do without enough information on the issue. Having a system like Boost Lab doesn't really solve any of these problems.

However it may help with issues like flaky tests, or issues in https://github.com/nodejs/build, or backports, which people do need incentives to work on. But those are mostly grunt work and are way less glorious than fixing bugs or working on features in this repo.

From my understanding of Open Source, the foundation owes you nothing for contributing to any project governed by them.

We all do this because, for some reason we love making Node.js better either by code-contributions or non-code-contributions.

Your algorithm for paying developers for PRs, can be seen as a part of appreciating the work they do.

But I think this is something that should be discussed by the top-level committees before if becoming public.

We can’t have an algorithm working on this project without an approval from the administration of the project. I think this issue should be discussed properly by the committees before this is fully implemented (if it hasn’t already).

IMO, a proper break down of the intentions and how companies fund should be stated carely. And if this companies includes members of the Node.js Foundation.

@nodejs/community-committee @nodejs/tsc

This seems to be an open-ended discussion and not really appropriate for this repo. In the interest of better managing our backlog, I'm going to close this issue. If any Collaborator strongly disagrees, feel free to re-open, although I'd appreciate a statement of anticipated decision/outcome.

If the decision sought is to add labels and whatnot, I'm pretty sure TSC and CommComm consensus on that would be "thanks, but no" for the reasons outlined by some participants above (and for some other reasons, such as the fact that the site being discussed here is not the only funding site for open source projects). But if you really want to try to surface it, you can try the admin repo.

Thank you all for the discussion and feedback. 🙏

I believe that the Node.js Foundation is doing a fantastic job of leading the community, and the developers are doing a fantastic job of maintaining & improving Node.js.

I can tell that all of you are very passionate about Node.js. And as a user of Node.js, this gives me confidence in the product.

Also, if any time in the future, the foundation decides to give Boost Lab a try, like I said before, it would be an honor to work with you all.

Cheers! đź‘‹

Was this page helpful?
0 / 5 - 0 ratings