I am nowhere near their numbers, but I run a boostrapped business that would never be possible if it wasn't for Clojure (and specifically ClojureScript). A while ago I decided that I'd be permanently setting aside a percentage of revenue that will go towards sponsoring open-source developers that write and maintain libraries that my project uses. The contributions are very small, but growing steadily.
I think what matters mostly is not the contribution size, but the mindset. If every company using open source contributed at least a little, we would have a healthy ecosystem.
I'm very curious. Could you explain what is so special about clojurescript and why wouldn't it be possible to build your business with react and typescript?
The complexity would have been too much if I didn't have Clojure and ClojureScript. They let me remove a lot of incidental complexity and deal mostly with the problem domain (which is complex enough).
You can do anything with any language/technology, it's just a question of how many resources you are willing to dedicate to the task. In my case, as a solo bootstrapper, the resources are very limited.
Main advantages:
* a single language for both client-side (browser) code and server-side code
* a single data representation (maps with namespace-qualified keys), so no conversions necessary
* spec which helps validate data in multiple places (such as :pre/:post conditions)
* core.async which lets me write asynchronous code both in the JVM and in the browser, same primitives
* a library of excellent sequence manipulation functions
* transducers, which let me build composable data pipelines
* the Rum library which lets me use React as a rendering engine, basically a function of my data
* most of my domain code is shared between the browser and the server
There is more, but these were what I could come up with immediately.
I mostly spend time thinking and working on the problem domain, not writing boilerplate (there is none in Clojure, really).
I've been using Clojure for about 12 years now. I don't have any specific pointers, but the Clojure web site is a great starting point. There are plenty of talks from conferences, as well as several good books.
I run a small ~10 person startup and we spend $2-3k/mo sponsoring various open source projects we use.
I highly encourage other founders to do the same. It doesn't require your company to be massively profitable with hundreds of employees to make a $20-30k annual commitment to supporting open source.
We applaud you for your altruism, but how does this benefit your firm?
It's been established that this may be achievable for a small startup. However convincing key stakeholders that this would lead to an increase in a quarterly return may prove to be a unique challenge.
You will be surprised how far even a small amount of support goes in having your issues prioritized on future roadmaps and in attracting help from the community during pressing critical bug reports.
Literally instead of having to hire potentially dozens of software engineers to reinvent the wheel, they are able to use open-source software, and this altruism is peanuts compared to what the former would cost.
Helping to ensure the stability and continued evolution of the software the company depends on? I don't see how this is such a difficult concept for some to understand.
I think what GP was trying to say is that it's difficult to prove that, especially since it's longer term. It just requires better framing, i.e. Priority support on software package used.
We applaud you for your altruism, but how does this benefit your firm?
Separate from a 'what will the shareholders think?' vantage point, this is a valuable question depending on your tax jurisdiction. In the UK, such sponsorships will be tax deductible only if you can answer this question in a satisfactory manner (or if the recipient is a registered charity, which is unlikely).
Hence the patio11 post about requesting a custom commercial license from the maintainers; the tax office will happily let you deduct 20k of software licensing but donations look like fraud.
Yep. I don't even need bespoke legal work; I'm happy if people just send an invoice with Commercial License as a line item and agree via email "Our Commercial License is the MIT license in the README and is available for $1,000 per year."
HNers often ask whether this is somehow dodgy, which it is not. Both of the tax agencies which care about my business give me virtually carte blanche to determine which products/services are necessary to keep the business running, subject to their standard regulations, and it is my considered judgment as a business owner that the software I use is necessary and that the amounts I pay are appropriate to the value received.
I've seen patio11 say things like this over the years, but hadn't connected the dots with this particular issue - genius. Certainly something we'll consider doing as a CYA against HMRC (or even our own bookkeeper who is rather strict with us).
> In the UK, such sponsorships will be tax deductible only if you can answer this question in a satisfactory manner
As long as you can show the directors aren’t benefiting indirectly from this then I think it’s unlikely to be an issue, especially if you’re using the libraries in question? HMRC don’t require you to prove that you’re running your business to maximise profit, just that you aren’t disguising director payments as expenses.
You're not wrong, but it's also more complex than that. They could choose to apply "commerciality tests" which include things like whether you're paying over the odds or whether other forms of sponsorship would have a better commercial effect. https://www.gov.uk/hmrc-internal-manuals/business-income-man... is HMRC's own guidance to its tax inspectors on some of these points.
For example, if my company fancied donating £1000 a month to the curl project because we think it's a fantastic tool worth supporting (it is!) but we only use it in a handful of scripts, HMRC might give us some grief if it came up in an inspection. I dare say given the expected technical knowledge of the average tax inspector that a typical HN reader could prevail in such a challenge ;-)
At first this follow-up comment really upset me. However, isn't it just a reflection of where we are now? So much is being discussed about AWS (and the likes) profiting from open source solutions without giving anything back. Isn't this comment just the pure reflection of a market place short-term trying to optimize profit without any regards to long-term benefits?
The lead of the OP is something to follow, though!
It'll be a lot easier to get the company I work at to do the same if I can convince them that it will benefit their monetary bottom line. So I, for one, would really like selfish benefits to helping FOSS projects.
How does your company feel about "priority support"? You might phrase it in the same way: we're using package X so we're paying mantainer to fix the bugs we encounter and help us in critical times. It'll cost us twice to do this internally.
When a project you rely on dies, what then? Also it sets the culture of a company before it becomes large, which can help with recruiting (the people you want to work for you might be the type to be driven by said altruism and it could be a pipeline to talent). Also those who donate get better support and recognition by the community. Also when asking the developer of the project for something they would be more likely to listen.
When you donate a sizable amount to an open source dependency, you get clout with the devs of that dependency, it's easier to rely on them for support if you need it. You can expect them to care more about the bug reports you send in vs. other people, etc.
In addition, you ensure that the project is healthy, less likely to have serious bugs and issues that could destroy the value of your firm, etc.
This is also why many open source developers sell support contracts or paid support in any shape or form.
I think it is crazy that a brazillian bank owns Cognitect, the creator of Clojure, and Plataformatec, the creator of Elixir. I had never heard of them or new about them being acquired by the same company until a few weeks ago. It must be a really interesting bank to work at :)!
As a user of their services, I'm really happy. It's the only bank I have used with no bureaucracy, zero fees, good phone app, fast and reliable customer support. It's no wonder they have grown so much.
I've also only heard great things about the company culture, specially in the engineering side.
This is potentially the savviest of business models. For companies which can't employ full time staff to work on open source they use, they still need the ecosystem to provide updates, features, fixes, and tools for integration. There are an infinite number of startups to be born based on leveraging open source software, and getting engaged to ensure software is reliable, secure, and robust is key to a successful launch.
Imagine you have a bunch of fishermen surrounding a lake. After a while, they notice that each year they catch fewer and fewer fish. One realizes that what they're doing is unsustainable and they need to change their practices. He buys a billboard that says, "We must stop fishing at the lake." The others correctly point out that he still fishes there. "Fine", he says. "I'll stop." So he stops, and his income stops. Eventually he can't afford to keep that billboard up. Meanwhile, the others are doing better than ever now that the man isn't taking any fish out. They use the extra income to put up billboards saying, "Fishing here is fine."
In general, I'm a big fan of leading by example. But in situations like open source where there's a tragedy of the commons effect, leading by example can simply mean deliberately putting yourself at a competitive disadvantage. Companies that pay open source developers are doing the right thing morally, but end up with less money available to compete against other companies that don't.
I don't know what the right solution is. Maybe it requires organized action and legislation. Maybe it requires the open source developers themselves to restrict who they let use their code. (Sort of like the fish choosing which fishermen get to catch them.) I don't know. I applaud what Cognitect is doing, but I don't know if it will have any ability to influence other companies that extract value from open source without giving anything back. It may just make them relatively more powerful.
Companies still compete to attract and retain top devs. What if those devs insisted that the companies they work for sponsor open source, and prefer sponsoring companies when making decisions about where they'll work? If companies spent just somewhere near 1% of what they spend on devs on open source sponsorship they could transform the ecosystem. As a result they'd have more and better open source to leverage. That's before you consider the risk mitigation of ensuring stable suppliers.
Yeah, I don't disagree. Just to be clear I want to re-emphasize that I applaud you or any other organization that unilaterally takes steps like this. It is a good thing.
I just always think about the indirect incentives our choices make in the broader ecosystem. Some systemic problems can be solved by individuals incrementally making different choices, but I think some require larger organization and coordination. And, to some degree (but not enough to cancel out the merit of an individual moral choice) a choice to do the right thing can actually make it easier for others to exploit more.
I don't understand your analogy. Using OSS is not like fishing because there isn't a finite number of times a project can be depended on downstream. When I use a lib I don't "take a fish out of the lake".
While many companies support LARGE open source projects by supplying dev time, I'm glad to see this sort of corporate monetary support that helps developers pay for dinner.
This appears to be a great side effect of Cognitect joining Nubank.
Thanks! After Cognitect joined Nubank we have mostly wound down that part of our business. But if you're in the market for a database, please check out https://www.datomic.com/ !
This is great. They should also consider spending money on less mainstream or well-adopted Clojure projects.
After all, if an open source project hits off with users without the money, it clearly didn't need the money. While who knows what really great things die because the authors needed to focus on stuff that pays them directly instead.
I agree. This is being done currently by the Clojurists Together organization. They fund 4 open source Clojure projects per quarter, and based on the desires of their members (anyone who pays into it), I think they fund 50% established projects and 50% speculative.
Hey! Secretary for Clojurists Together Foundation here. This is roughly correct. It's not a strict 50/50 split from quarter to quarter as it depends on applications and what our members are looking for, but we try to fund a mix of established and experimental projects.
This quarter we funded Calva and clj-kondo which are more established, and O'Doyle Rules and ClojisR which are more experimental.
Are there any pledges one could try and get companies to sign up to? Like there is a the 'fair tax mark' in the UK. Is there a similar? e.g. % of profit or revenue donated to open source mark
Nubank is a Brazilian fintech company of some kind. Cognitect employs the Clojure core developers and also does (did?) consulting work: they were recently acquired by NuBank.
Sponsoring of open source projects is a problem that bitcoin aims to solve. That and many others. The electronic cash bitcoin not the currency bitcoin. The owners of the project will be able to construct an electronic company, and any value that a user gives, will be shared to the shareholders, in line of the shares any shareholder has to the project, i.e. how much he has contributed. A user wants a new feature or a fix of a bug? He gives coins to the open source company, and they will implement it. This will give incentive for programmers to increase the quality of the code, better documentation etc.
Besides the fact that existing systems work fine for this, the idea that users pay for a fix or feature is ludicrious.
Users are terrible project managers. They report things as bugs that aren't bugs, they request features that don't improve the product, they in general have a low hitrate in terms of providing successful direction for a project.
Setting up a system where users pay for a _specific_ thing to happen is just asking for trouble.
Users paying for development they already find useful, or for concepts that they believe have promise - that's the way to do it.
Yeah, that's all true, that users sometimes think of something as useful and it is not. Nothing to be done about it, except education. But let's say some users want of an open source program to integrate some graphs somewhere. They go to a social media and they ask the users. "How many find useful these graphs?" The users hit like to the feature, and they immediately transfer a small value to the owners of the project. In case the sum of all the values of all the users is enough, the owners of the project may go forward, accept the funds and allocate resources to implement this feature.
Well if a company wants to give a large sum of money to an open source project for a feature, say a hundred dollars, or a thousand then it is the same. Electronic cash, i.e. bitcoin work better than the traditional ways of payment when there is a necessity for crowdfunding a little bit of money less than a penny, a 1/10 of a penny or 1/100, or 1/1000, from thousands of users. The reason bitcoin works better in that case, is because bitcoin is absolutely automated while in traditional payment systems a human is required to oversee the payments in case there is a fraud somewhere. That means a human is required to be paid, and humans are expensive to employ. That increases the cost of every transaction, as well as increases the minimal amount of the transferable value.
The electronic money that are known now as bitcoin, took a different turn from the white paper of Satoshi. That's why i said the electronic cash Bitcoin, not the currency Bitcoin. Some people wanted to take that electronic cash idea, and turn it into currency. That's a bad idea.
Well when bitcoin first started, i didn't have any transaction fees. Afterwards the protocol changed, forks did happen, and confusion ensued. However some programs start to emerge, about incentivizing social media users to post good content[1]. And of course open source developers should be incentivized by their users to fix the bugs, implement popular features that theirs users want etc. So some things start to happen, well mainstream adoption is a little bit far, but it will happen eventually.
Are there any movements to get bitcoin accepted by established platforms used for sponsoring development? (GitHub Sponsors, Patreon, Open Collective, Ko-Fi etc..)
Who knows where it is accepted! The things that can be implemented are for example contributing computational power. Lichess users do that [1], i use it all the time, but they do it for purely altruistic reasons. Altruism doesn't go very far by himself when the donor consumes valuable resources. That's why there is a cap on the total games someone can analyse, to avoid the tragedy of the commons.
In lichess billions of games are played each month, and lichess is accepting donations of big amounts of money, i.e. 10 dollars, 100 dollars. How about with every game that is played the players pay less than a penny, 0.1 penny of a dollar? Personally that would cost me less than a penny for each day of playing. Lichess would make a lot more money, than individual donors who pay big amounts, and everyone else playing for free.
See how ruthlessly i got downvoted, maybe it is the case that no one knows what bitcoin is. Bitcoin is nothing for free, everything is paid for. Using supercash almost infinitely divided, to small amounts. If that is implemented already in the traditional financial systems how come no one is doing it?
I think what matters mostly is not the contribution size, but the mindset. If every company using open source contributed at least a little, we would have a healthy ecosystem.