Supporting Jackson project financially

@cowtowncoder
5 min readDec 19, 2024

--

First of all, disclaimer: fear not, I am not planning for quarterly pledge drives like NPR. This is only the second time (*) that I have brought up the issue of financial support for any of the OSS libraries that I have written and maintain. Last time was almost 5 years ago, see “Support Jackson development with Tidelift Subscription”.

Having said that, I realized that the situation has changed regarding options available. And since I do get occasional questions along lines of “how can I/we express my/our gratitude for work you do?” I thought I should describe options I am aware of.
And if you can think of easy ways to add more, please LMK in comments — I think it is good to have multiple options to express your support.

Tidelift OSS Subscription

First of all there is the OG support method: Tidelift OSS Subscription.
As I wrote earlier, paying for Tidelift (about to be part of Sonar, very recent movement) subscription is a viable method for supporting Jackson development. The basic idea is that the revenue from companies that subscribe to Tidelift (Subscribers) is spread across participating maintainers (“Lifters”), based on usage estimates of various libraries (across multiple languages/platforms, Java, JavaScript, Python being most prominent). So things that your company uses (as determined by dependency scans, I think) get a share of payments your company makes, relative to how heavily used they are. Or something like that (exact formula is proprietary for various reason, including possibility of system being gamed).

So if your company uses Jackson and has a Tidelift subscription, it will be sponsoring me, even if a bit indirectly.
Currently this is what brings the majority of my OSS income (in tune of over 75% or so). So thank you to all corporate benefactors!

Also note that I am not the only Lifter of Jackson modules: currently 2 other Jackson team members also earn income via Tidelift. I plan to increase this more over time so that support is more equitably split in a fair and sustainable way. This is relatively easy to do compared other revenue sources — I think it is even possible to have multiple Lifters for a single component.

Github Sponsors

I also set up my Github Sponsor page a bit over year ago (May 2023): since then I have gained a few sponsors (15 so far, including 6 recurring ones).
This is a simple, direct and transparent way to support me as well.

Come to think it now, it would also make sense to add a page on Jackson Portal repo, with links to profile pages of other Jackson maintainers.
Will add to my mental TODO list. :)

Thanks.dev donations

The newest mechanism (enabled just this week) is Thanks.dev. I don’t know a lot of details but it seems somewhat similar to Github Sponsors; Github repo owners (ones with Admin access) can enable donations for their repos, and donations can be channeled through a couple of routes, including Github Sponsors, Stripe payments and Open Collective.
For me the first option is most convenient, even though there is a fee (3%) taken from donations.

One cool thing about Thanks.dev is that it is bi-directional: one can both receive donations and/or donate to other projects (dependencies). I am planning to donate to projects that I use, passing things forward.
I especially like the possibility of conveniently picking about any Github-hosted project (that has enabled Thanks.dev donations)

As of now, there aren’t too many donations, but this does look like a cool way, esp. for micro-donations — small individual contributions that could add up to sizable totals. We’ll see how things develop.

How do Options Rank for Maintainer Convenience?

To me Github Sponsors and Thanks.dev seem quite similar: both are super easy and low effort. Tidelift is somewhat more involved, as the idea is that maintainers (Lifters) provide additional metadata about support scheme, security policies and so on. But these are very easy to do and modest effort. Plus they are… useful things to have, I think. That is: I don’t even mind adding such metadata — at most I hope that information could be made available, in some form, to wider community. And some of it is — Tidelift works closely with security organizations so CVE information is contributed as part of vulnerability disclosure process (if Lifter has chosen that method for their project).

Overall I like all the options so far: 2 for basic donations, and third (Tidelift) for loosely coupled Open Source Work.

How Convenient Are The Options for Maintainers (me)?

One thing that many maintainers (esp. those who do not yet accept donations) wonder about is the question of work associated in accepting donations or payments. Specifically, transfer of funds, book-keeping and tax liabilities.

For me this has been a pleasant surprise, actually: I am US-based so both Tidelift and Github Sponsors:

  • Allow sending payments directly to (US?) bank account
  • Produce necessary tax documents for tax returns, accessible online

(since Thanks.dev can be configured to work “through” Github Sponsors I don’t include it separately)

The only extra step I do need to do (and had to learn about) is making “Quarterly Estimated Tax” payments — since no income tax withholding is performed by sponsors/providers (Tidelift, Github), I need to basically “write a check” once per quarter to pay estimated tax for revenue; this will then be included in my tax return and hopefully balances out.
In practice it means that every 3rd month I will just pay that months income to IRS, using their web site (that is, 33.3% estimated tax rate). Convenient enough and simple to do (one could also opt to not do this but if the difference between tax withholding and actual calculated taxes is too high (over 10% I think) IRS may add penalty — something best avoided).

So all in all this has been a smooth experience, I think. I realize this may be different for maintainers outside of US, however. I hope to learn more about this, discussing this with other Jackson maintainers, many of who are not US-based (from EU, east Asia, mostly).

Aspirational Goals

One of the things I have thought about is that if the income from various sources increases enough, I would consider making OSS maintenance my actual full-time job. Right now the revenue is not enough to allow that: in theory I could almost afford to “buy” one full work day per week, with the revenue I get (if my employer was open to kind of 4 day work week — but these are not always easy in tech companies), but no more.

But if all went well, perhaps at some point I could decide to move on and become full-time maintainer. That would be interesting :)

--

--

@cowtowncoder
@cowtowncoder

Written by @cowtowncoder

Open Source developer, most known for Jackson data processor (nee “JSON library”), author of many, many other OSS libraries for Java, from ClassMate to Woodstox

No responses yet