We Should Expect To Pay For Small Open Source Projects
itistrivial.com
itistrivial.com
For instance, whenever I'm the sole developer of a "type 0" OSS project, supporting users is typically the most difficult part. This is because, many times, the software is something that I wanted for my own needs, and those needs have been met.
The one saving grace I often have in those situations is that, as demanding as some users might be, at least it's not the potential shitstorm of a user who has paid for something and isn't completely satisfied.
I even think carefully about offering a vector for donations these days. Because inevitably, it will eventually lead to a difficult to parse email from a user who wants help right now, because they just donated $2.
As in many other situations, simply setting boundaries is often enough. In this case, user expectations.
Successful projects, in terms of numbers of users and contributors, seem to happen in places where many people need something complex and pool their resources to all share in a better solution than any individual one could have been.
Putting the whole thing under economic norms, and encouraging communities to think in those terms is probably extraordinarily counter productive. There isn't enough money available to pay open source developers what they are worth in dollars. If open source operated under economic norms it wouldn't work, since it operates under social norms it does [1]. There is a reason that everyone here doesn't get paid to work on whatever cool fun they feel like working on.
A "type 0" project is a hobby project and your github account isn't there to get you paid. Open sourcing it is socially acceptable public charitable giving crossed with academic publishing.
The next step isn't consulting monetization models or aquisition/IPO. The next step is more contributors so that a team of motivated people can solve a complex problem, for everyone, once and for all (that's the ideal version anyway, about as likely as an IPO or aquisition). That might bring some money, maybe for some core peole but more important is that now everyone else, and especially those that contributed and have expertise, can go on and build/do that thing that this complex problem was stopping them from doing.
Looking at this as an progression from github project to aquisition and defining the stage of a project by revenue misses nearly every lesson learned from watching this strange new market succeed so spectacularly entirely because it is based on different norms and therefore attacks different problems.
Knowing that you've solved an unsolved problem in some niche, putting it out there, and seeing others voluntarily use it is far more gratifying than whatever small sum of income such a scheme might net you. This applies even more when those others start helping contributing back.
Anyway, I think this misses the spirit of the community. There's also this idea that I've heard Joel Spolsky talk about, such as once you introduce money, you change the situation drastically. Imagine an kernel module programmer building the module for the usual reasons, now say someone provided the programmer a method to pay some trivial amounts, like $5 or $10 ... Now, you introduce a very small amount of money and it can give the programmer a feeling of "this is a waste of time" because, say, someone working at MS doing a similar job is making much more money doing basically the same thing. This is not to say the programmer doesn't deserve or that making $20 is not better than $0 but it changes the dynamic in an odd way.
In fact I would presume that the reason people are not going to pay up front is that they assume the developer is doing it as a favor to the community, and that giving them money for it would break the philosophy of giving out of free will. The real issue though seems to be an overall lack of resources. A one man shop, even with the ability to work on their projects full time, still has a maximum output capacity. Without others to assist there is the chance they would get swarmed with bugs and feature requests leading to burn out.
I think that open source developers need to step back and consider the costs and benefits of their projects. Doing a large amount of projects by oneself without a good job to support on the side will lead to burnout, as we've seen here. It may feel like bestowing a great gift on the community, but if you burn out and halt all development where has that feeling of contribution gone?
Which begs the question of which is more valuable: financial contributions or code contributions?
Virtually no open source project makes it big without some kind of full time commitment and/or corporate patronage.
However, there also isn't really any incubation mechanism in place for OSS. It sort of grows organically or it fades into obscurity, and that's not necessarily an optimal model.
The solution being that financial contributions early on might inject energy into a project which might otherwise lose steam. It makes sense to me. We've probably lost at least a few cool projects to atrophy-and-entropy land, which is a shame.
You know. Linux. GCC. emacs. gdb. you name it. In fact, some of those still don't have financial backing. Heck Linux certainly wasn't started with Linus thinking he'd gain anything _financial_ with it.
Forced? Don't think that was ever suggested nor even a remote possibility.
>You have to turn the complaint on the head and ask yourself are we better with the code out in the wild even if it's unsupported than not existing at all?
Well, yeah. I don't think anyone's really claimed this is some stark choice betwee financial support or nothing at all. The article, to me, was about improving the existing model.
The relationship is a little more symbiotic than you're implying. Financial backing is as much a "side effect" as it is a necessary pre-cursor to any kind of genuine wider adoption.
> Linux. GCC. emacs. gdb. you name it.
Hadoop, Mongo, Android, My/Postgre/SQL
> Heck Linux certainly wasn't started with Linus thinking he'd gain anything _financial_ with it.
Don't think I ever implied otherwise. This isn't really about motives.
Financial backing quite often simply means that a developer(s) can work on a given project full time. There are real limits to what can be achieved part time and with crowd-sourced code. Take video editing in Linux as an obvious example of this phenomenon.
Yes it's quite a shame that we may have lost a few projects that might have gone somewhere with investment, but I believe that to be the nature of the beast. Also my thought was that the open source movement was about contributing out of good will, and if you made some money off of it great.
I think OSS contributors are driven by a fairly wide variety of motivations. Linus, for instance, has spoken out on this issue :
I do not see open source as some big goody-goody "let's
all sing kumbaya around the campfire and make the world
a better place". No, open source only really works if
everybody is contributing for their own selfish reasons.
Now, those selfish reasons by no means need to be about
"financial reward", though.[1]
I made sure to include the last part, because it's both relevant to this discussion and it "completes" the statement. OSS contribution isn't necessarily about monetary reward, nor did the article claim it was.However, money does happen to be necessary to devote time to a given endeavor. Without it, the best a project can hope for is a collection of part-timers, which is ultimately limiting.
Last time I saw it manifested in this particular form, it was Zed Shaw's "Premium Branch Manifesto" (http://premium-branch.org/) in which he breathlessly warned of impending doom:
> If this balance of power is not corrected I
> fear FLOSS will actually die.
I think it's kind of sad that so many people apparently don't see one of the main things I find so amazing about free software. We're a community of people who give stuff away to others for free often for no other reason than the fact that building it is fun enough in itself. This is simply not a thing on this kind of scale in most other professions, and I feel a little defensive when somebody says we should put a stop to it.I get that it's more fun to just hack for fun and just throw stuff out there than it would be to be doing it for a living. But we all have to make a living somehow. Are you better off with a day job that leaves you a little time for open source, or spending all your work time on open source but having that be more like a job?
I'm sure different people will answer that question differently, but I think there have to be more people out there that would like to get paid for OSS work than have currently managed to find a way to do that.
I'm sure there are a lot of people who would like to get paid (and feel they deserve to get paid) for making OSS in whatever area interests them. But the vast majority of them should mostly be solving specific tasks for specific people for money and practice. Their occasional bug fixes in OSS that affects them is more valuable then whatever project they may create if they were given money.
It is the nature of learning, expertise (and human self deception that is needed for growth?) that if you think you are the best person for the job then you are probably a beginner.
Not all developers have (or want) regular-paying jobs. Many of us want to work on open source projects full-time, but cannot afford to because there's a general assumption that their software will be beer-free.
Now I agree that giving stuff away for free is awesome and is a huge reason why so many open source projects have a large, sustaining community to keep them alive, but I don't think we should poo-poo developers who believe they could do a better job if they expect (EDIT: some of) their users to pay for their software.
Full stop.
You may be a wonderful person who creates amazing software that you deserve to be paid top dollar for. But it is proprietary software, not open source software. And trying to call something open source when it is not just confuses people. Don't do that.
But the prospect of open source developers being paid other than per-copy, per-user is plausible. Alex Tabarrok demonstrated in 1996 that it should be possible to do it even without altruism given enforcement of contracts and someone with sufficient information about demand. (I don't know if that kind of information is often achieved in practice.)
Karl Fogel just ran a successful Kickstarter campaign to fund creation of the second edition of Producing Open Source Software, which will be distributed on terms closely parallel to open source software (all recipients of the book can redistribute and modify it, and nobody is required to pay a per-copy license fee). The payment to Karl happened up front and ahead of time. The same structure might have worked if Karl were to apply this funding to software development instead of to writing about software development -- and indeed Joey Hess did that a while ago with his git-annex-assistant Kickstarter, which as far as I know has worked out quite well.
In the Kickstarter case there is a significant potential free-rider problem; for example, I didn't personally fund Joey's project but I might still benefit from his work on git-annex. Kickstarter seems to use various aspects of social norms and psychology to address free riding, often with good results.
I think we need more work on this even as we continue to insist on not diluting the meaning of open source.
The first person that I am aware of to be hired exclusively to develop open source software (though he of course called it free software) was Brian Fox in 1985.
The first company that I am aware of to establish a successful commercial business exclusively around open source software (though of course again it was called free software) was Cygnus in 1989. The business model is that people developing new chips needed a compiler for their chip, and would hire Cygnus on a contract to port GCC for them. (The resulting port then got folded back into GCC.)
There are thousands of people today whose paid job is developing open source software. Are there more people who want this type of work who don't get it? Absolutely. Are there a lot of useful projects that don't get funded? Of course. But there are a lot of these projects out there.
Item 1 of http://opensource.org/osd disagrees with you. You may charge anything you like for open source software. But once someone gets it, they are free to redistribute it for any price that they want - including nothing. If your software does not have that property, then it is not open source.
(That web page has been up for nearly 15 years, with only minor modification, and the principles of that definition go back farther than the creation of the term "Open Source" as a marketing campaign for free software almost exactly 15 years ago. I've been personally using that term for over 14.5 years.)
Please re-read what I wrote, without skipping the sentence, You may charge anything you like for open source software.
The reason that people push back on the idea that you should get money because your git origin is a public GitHub repo is that that in itself does not solve any problems.
Is there some deep lack of new and exciting open source projects? I don't see it. Things are vibrant and exciting. New free stuff is appearing every week that is worth looking at. All the "big" projects, of course, are very well funded already, and projects continue to get funding (via diverse mechanisms) as they become "big".
We didn't need this for jquery or rails or pick-your-favorite-web-technology. We don't need it for the lower level stacks either.
I'm sure everyone would be happy to be paid for open source work. And some people want to work on open source but can't for financial reasons. But the only question here that matters is if enough people are willing to release their code without compensation. And clearly the answer is yes.
tiers 0 to n-1: creating product/features
tier n: release as open source (community votes for license) on day 1
I mean in all honesty if I saw a link to some awesome fucking shit and I saw that it was $500 away from being open source, I'd probably do it. It would probably happen yearly or less, but honestly there are a lot of developers making big bucks and we all know how much certain tools could make our lives so much easier.
[1] http://www.kickstarter.com/projects/jmathai/openphoto-a-phot...
It works differently from Kickstarter; for one thing, it emphasizes maintenance over new development. You really have to have an existing successful project to make use of it... which is probably why no one is using it yet :-(
We'd love to help, and if it's for open source - use this promo code, and we'll waive the Crowdtilt fee: ctdevs123
For example, at my current job we need plupload, or something like it. If it didn't exist, we would be forced to create and maintain something like it. There's no reason why we wouldn't release the code as open source and then continue maintaining it as necessary for our software. The company wins, and so does everyone else.
Similarly, I'd rather share my open source project for free rather than spend my effort on selling it, and hope to get some support via other means.
I don't like barriers.
More generally, when you sign a contract, or release something under a license, you should understand what you are doing, why you're doing it. If the legal agreement doesn't accomplish what you want, then don't do it. That goes whether you're a hobbyist, a business, are releasing open source for free, or are selling incredibly expensive per CPU licenses. In general, releasing software for free is not the best way to get paid for the act of writing it. That's common sense, and if that is a problem for you, then you really shouldn't be releasing your software as open source. But you have no grounds to complain that other people choose to.
So why do people release software as open source?
- Fun. It can be nice to say, "Here, look what I did!" Why not give it away for free?
- Learning. Participating in open source software is a good way to get feedback from experienced developers you could never learn from otherwise.
- Marketing. At the worst, you wind up with software to show people that has your name on it. At its best, an individual will wind up with a network of connections who can get you jobs that you like. Then for companies you get into dual licensing business models, ease of attracting developers, etc.
- Gratitude. A lot of developers gained a tremendous amount from using and reading other people's open source software, and feel like they are paying that gift forward.
- License requirement. Some open source software is only available under licenses that say you cannot restrict redistribution of your changes. (The GPL is an example.) Thus you can find that you can get a lot of what you're looking for already done, and the cost is reciprocity. (Hey, if you don't like the license, don't use the software...)
- Maintenance costs. Many companies find that they need something "almost the same as" something out there. But maintaining a fork over time gets expensive as you have to track future improvements, security advisories, and so on. But if you contribute your changes back into the project, then you avoid this cost. (Supporters of the BSD license prefer motivating people this way.)
- Reducing the price of complements. Customers often want to buy a solution, and have a price they are willing to pay. That solution will include multiple pieces of software. If you make other pieces of software cost less, then your piece can cost more. As a concrete example, for many years Oracle pushed customers towards Linux, and then charged a higher price to run on Linux than to run on Solaris.
...and so on and so forth. There are many valid reasons to give away open source software for everyone from individual hobbyists to big companies. But the fact that there are lots of reasons that lots of other people want to do it doesn't mean that it makes sense for you. If it doesn't make sense for you, then don't do it. But don't try to tell everyone else that they shouldn't do what they want to do for their own reasons..
I do not see open source as some big goody-goody "let's
all sing kumbaya around the campfire and make the world
a better place". No, open source only really works if
everybody is contributing for their own selfish reasons. [1]
[1] http://www.bbc.co.uk/news/technology-18419231Personally I like this whole "civilization" concept, so far ranking altruistic motivations higher than selfish ones has turned out wonderfully. Things get ranked on arbitrary scales regardless, that's what people do.
In this case, my comment was in direct response to your assertion about "altruism" being the "best" reason for OSS contribution.
My software isn't "better" because I wrote it altruistically than if I wrote it for a million bucks and open sourced it so I could legally take advantage of other peoples code in it.
Actually, the quintessential open source project is a developer scratching his own back. That's not particularly altruistic.
He wrote the software to scratch his own back, and now he needs a reason to release it as open source for others to use. My point was that altruism would be just a good (if not better) a reason to release it as any of the other reasons listed by btilly.
This is one of the two motivations that Stallman listed when I asked him what motivated his work on free software. "Community" is the word he used for it.
Parenthetically, the second motivation Stallman listed is "freedom", and when he spoke that word I got the sense that he was referring to a pleasant feeling or at least an absence of an aversive feeling (namely, the feeling of being restricted) more than he was referring to an abstract moral principle.
Interestingly, he specifically disavowed an altruistic motivation. More precisely, when I asked whether he contributed because it was an efficient way to benefit many people, he said, no, that was not a significant motivation for him personally.
I don't think it does. Copyright law allows you to license five separate rights, and attach conditions to all of them. For software redistribution is one of those rights, "use" (the right to perform/display) another.
IANAL, but I would say it's possible to craft a OSD compatible license that requires users (but not distributors) to pay incredibly expensive per CPU licenses, or as the OP suggests a more reasonable fee.
From what I can tell it's also possible to place that restriction on derivative works (modified versions), because the OSD only requires that the license allows for them "to be distributed under the same terms as the license of the original software".
The performance right you refer to is not a right to limit performance, it is the right to limit public performance. But what constitutes a public performance of software? I don't know, but I would be shocked if a private, personal viewing qualifies. But perhaps a website does. It is a murky area. And one that had not been thought of when the OSD was written.
However if you tried to use the public performance right to make people pay money, I would argue that you're implicitly failing OSD #6, no discrimination against fields of endeavor. Because if my field of endeavor requires public performance then I'm treated very differently than if it doesn't.
* Feedback with ideas I wouldn't have come up with myself, that helped me to improve my software.
* Free testers, that reported bugs, I wouldn't have found myself.
* Free contributors, that sent me patches for features and bug fixes I would had to spend my own time on otherwise.
* A nice portfolio, future employers can look at, making it more likely that they hire me.
However making people pay for using my software, will reduce the number of people using my software, and so the number of people who will give feedback, report bugs, and contribute patches. Also people paying for something are less likely to contribute. They are more likely to expect that it is my job to make sure that the software behaves like they expect, since they are paying me for it. But 10-15$ per user, is much less money as I would save by releasing it for free, increasing the number of users/testers and their motivation to contribute.
Proprietary software companies like to point out that while FOSS might be free in distribution, the lack of support means that you pay for it in other ways - and to some extent that's very true. Very few open-source projects get to the point where they can sustain themselves while still giving out their main product for free.
I think developers should be able to sustain themselves working on open-source projects, even with relatively small adoption and scope, by treating it like a business. If you don't want to support it - give it for free, if you want to take it to the next level, start charging for distribution. The important thing in my opinion is getting as much quality and useful code out in the open.
If its not free, not everyone will use, test, expand it.
That shouldn't stop anybody from donating of course. But donating is not a _required_ payment. I personally donate to projects I like from time to time, expecting it covers the infrastructure costs, but never expecting it pays somebody to code for it.
I think the author simply wants to express his frustration, because some projects he likes died, or because he expected to get money/investors in his open source projects.
Guess what. All the big open source projects which started the movement were given away with NO expectation. THAT is what made open source successful. The free sharing of knowledge.
The general idea was to tithe a certain portion of profits/revenue towards open source projects. Only a few accepted it though (myself included). Only two really seem to have made any contributions though (I would love to but not making any money yet).
I've been thinking of seeking out sponsors for urllib3 (Python http library, core of Python Requests which recently broke 2 million downloads). After maintaining and enhancing the library since 2009 (with on/off contributors of varying quality), keeping the code quality high while not using the library myself[0] has been hard. Motivation to work on it has been hard to come by, but at the same time it's not as easy to give away to another maintainer as some of my other projects (workerpool and s3funnel have had very smooth transitions).
Getting some hours per month paid by a sponsor would definitely make some of these weekends easier to swallow, but I'm not sure which pricing model is best to pitch. Maybe offer to charge something like 1/2 of my normal hourly rate and let them dictate some feature/bug prioritization? Or maybe a tiered Kickstarter-like approach would be better?
Does anyone have experience with this?
--
[0] I love the library myself, but I haven't had any excuses to do http-related stuff lately.
Maybe I'm just not seeing them, but other than Red Hat, I don't know of companies like that. I think they could make money for two reasons: first, people (especially businesses) are willing to pay for convenience, and second, they would be making money for collecting, configuring and modifying software, which means doing actual work. They could pretty easily make the case that if their customers didn't pay them, they would have to do the same work themselves.
The companies would have an advantage because, unlike a small IT department at a mid-sized company, they could afford to hire enough developers to have someone who really knew all of the software in a standard GNU/Linux system. And they could afford to hire those people because they would have lots of different contracts. They would have an advantage over proprietary software companies because they would have a huge amount of flexibility to modify the software they use.
Again, I think Red Hat does something like this, but we need a few different companies that compete with each other to really grow an ecosystem. I've been hoping that Canonical will turn into something like this (and I think they might hope that too). Having multiple vendors makes customers feel safer, because they can't be locked-in.
I think a lot of developers would want to work at a place like that, as long as they had any sort of reasonable division of labor between working on specific customer projects and maintaining software. Maybe you'd spend half of your time working directly on a project, and the other half refactoring the coreutils (or whatever). But that's really a business necessity, because if you didn't take the time to refactor, you'd never be able to help other customers in the future because the code would become a mess.
The main cost of commercial software licensing generally isn't the monetary cost, it's the friction leading to all these annoying tradeoff evaluations.
That said, I think "we", the collective group of people who makes money off the back of open source software projects, probably could be a lot better at throwing some money at developers of the software we use.
Are we so much more evolved beyond greet then the rest of the planet ?
Open source but not free.
I agree that developers need to taken care and that not enough people chip in voluntarily but Open Source is associated with free. If I pay $5 and then give the 'open source code' to John and Jane, who will go after me?
Thankfully, most people who need software both a) are comfortably employed and b) aren't perfect models of economic self-interest.