For me, the value in open source comes from being able to learn the depths of a code base, or to see how a pattern was applied to solve a type of issue that I may be trying to solve in an unrelated technology. If I find a bug I will submit a PR where I can, if I understand the code base well enough.
That said, I think it's a Utopian ideal that going open source means that people will flock to contribute to a project. Companies like Microsoft are learning this the hard way I feel. Have a look at their .net core repos. The vast majority of users are simply "throwing issues over the wall" without trying to contribute any fixes or discussion.
I would love to live in a world where everyone attempted to produce more than they consume, but we just aren't there.
EDIT: P.S. I love Couchbase!
We're not going to get there, either. The number of users with the time available to dig in any depth into an issue they find is always going to be dwarfed by the total number of users contributing issues. That number in turn is dwarfed by the number of users who don't even go that far, and just work around problems they find (probably by silently switching to an alternative product). This isn't a moral issue, it's simple economics.
I'm going to modify that a bit to say it's mostly economics but also barrier to entry. Wirth's Oberon etc work was designed to be easy to understand from language to architecture to tools. Students with little experience regularly ported it, redid it, and so on. I've seen similar in FOSS projects well-designed for easy understanding. I think many of these popular projects were not designed that way to the point the real and incidental (i.e. implementation) complexity is to high for most to justify time in. I know it is for me for several, major projects.
So, we need to remember that. More FOSS being designed for contributors as much as users might increase number of contributions.
Usually you have to fight for the right to contribute back, which in big companies means lots of fun with upper management layers and legal department before you get the green light to do that little pull request.
So in my career I have seen lots of open source being used at Fortune 500, sometimes with internal forks of bug fixes and zero contributions being done back.
Yes it is.
But once you start making serious changes to the source-code, it's probably less painful than trying to deal with all the merge conflicts from your own fixes every time you upgrade to a new version. At some point it's just easier to push all of that stuff to the common version.
What matters are all those companies that no one heard of, or whose business has nothing to do with producing software.
> a world where everyone attempted to produce more than they consume
Personally, the reason why I don't contribute but consume from many projects is that I produce other stuff. All those projects are input, they are incidental and in the end replaceable. How would I do that anyway? I may use a dozen projects regularly enough. Any one of them already is complicated enough.What I do is try to write easily reproducible bug reports. However, if I were to even attempt to contribute any code I would have to make a major effort. There are few problems on a foreign code base that can be solved in an hour or a few hours.
This is why I ended up using Intellij instead of an open source editor: I once submitted an issue on Github and the response was basically "where is your pull request". I understand the developer(s), but sorry, I am just not able to do that. Imagine that a sizable number of OS projects only deal with your reports if you are an actual contributor. Sounds like a good idea? But how would any person even manage to be a contributor to even half the projects that I am using? Anyway, back to the IDE, I pay Jetbrains and give them great bug reports and they fix most issues.
I think it is completely normal, just from a statistics and system modeling perspective, that only a tiny number of developers contribute to a project, and that those mostly are people for whom that particular project is a core issue. It is just not feasible any other way.
--
Here is a crazy idea (only half serious, meant mostly to bring a new direction into the debate - so no need to point out potential problems, it is not a suggestion made to be implemented).
Imagine we had a worldwide organization that you pay a certain amount to. Several levels, flat fee but with levels.
The organization watches what "free stuff" you use. Software, code, anything that's bits and bytes, could easily be extended to 3D printer models photos movies etc.
Then they distribute the money they got from the (semi)flat tax to the makers of the various things.
The different payment levels indicate a) amount of use, someone using only a little bit of free stuff vs. someone who uses tons of it, b) level of sophistication, so use of the left-pad npm package and similar stuff is a different level than someone using Blender, for example.
Actually, such organizations do exist. In Germany there is one that collects fees from copy shops and distributes it to right holders of printed works ("VG WORT"), and there is another one collecting fees for music and film ("Gema"). Lots of problems, of course, just saying that the idea itself is not all that outlandish and attempts at partial implementation for specific countries and sectors already exist.
Again, just to show another option compared to no solution and continuing what we do, lots of problems of course, like how do you prevent someone from inflating their usage count, privacy, etc.
How about a limited implementation of something like this? We need some way for contributors of "free stuff" to be able to live a life. I think it is bad to a) accept and b) rely on such people making a living somewhere else. It is too random.
I am not a "socialist". It is entirely "capitalistic" to expect that there should be a reward system for actually useful contributions (as measured by usage). I just think our 19th century system is very badly suited to handle the new digital world, from copyrights to open source.
The problem of individual payments also is that the per-payment cost is too high - and I also mean the psychological cost. Imagine you had to buy a car screw by screw instead of as a whole package, being asked for every single tiny piece "how much are you willing to pay or contribute?"
It could also be a potential solution for this problem also on the frontpage right now, because those people could go from the official job market where they are noz wanted into the system I describe: https://news.ycombinator.com/item?id=12724104
---
I also want to make a connection to the Universal Basic Income discussion. I am skeptical of the "pure" idea, I think we are still far away from allowing universal leisure and I don't believe that most people will voluntarily do something useful. But how about the above idea can be connected? If you do something useful that's all that's needed, but you have much more freedom to decide what that is. Mostly, "distributing free stuff" now works as a business idea!
Just had this experience - reported something in the grails slack channel, and one of their engineers hit me up, we exchanged info... he wasn't quite able to replicate my exact issue (but I wasn't able to either, reliably), but based on the stacktrace, he found the likely source, and patched it. No pull request, no forms to fill out, etc. Was a pleasant experience. :)
Without an actual reward-connection though this comes down to luck on many levels. I mean it's nice for me when somebody gets paid from a completely unrelated source and yet is willing to help me, but that's not a very reliable thing to rely on a population level, or let's say I think the success rate can be greatly improved by establishing a reward connection.
SPECIFICALLY, this was in relation to a Jetbrains IDE - IntelliJ - the paid version has Grails support. Sorry that wasn't clear.
Doesn't that mean you do produce more than you consume, just in different directions?
>I once submitted an issue on Github and the response was basically "where is your pull request".
As a clear up from someone who has seen this kind of thing in Github often. Most of the time it's not meant as a "will not fix", usually I see maintainers use it as a "You are welcome to give it a shot if you want!". Some people need that express permission to put in the time to actually do it.
--
As for the rest of your post it went way over my head, caffeine hasn't quite kicked in yet.
The solution as I see it is Supported Source (https://supportedsource.org/)
This is what FOSS actually made in the last decade, moved many that would never pay for software from pirating it to just downloading whatever they can find in open source repositories.
But the developers still don't get anything back.
Which isn't the case in many countries.
Similar reason why companies like Netflix exist. Imagine each movie would try to sell itself, they would get their own webshop, one per movie... and similar to why subscriptions exist and many other bundling arrangements. Making payment decisions comes at a psychological cost, but just because it's "psychological" and your brain doesn't pay some other part of itself with coin or credit card doesn't mean it's not a cost economics cares about. Cost in economics is not just money.
Another example is Twitch. In addition to giving mostly gamers (but they also have programmers streaming and other non-gaming activities) a technical platform to stream content from home they also give them a monetization opportunity. While you can subscribe to streams individually, which is of course not what I suggested, they now have a program where you can subscribe to a handful of channels for free if you have an Amazon Prime subscription (http://www.theverge.com/2016/9/30/13125824/twitch-prime-amaz...). So this is a partial example of this "bundling" of small individual items to increase the overall spending of money compared to having to make individual purchases.
I see this as an opportunity for achieving something similar for people who contribute code, there could be a business opportunity to bundle a large number of those offerings and in turn offer the programmers a way to monetization, to get paid out of the subscription pool. It's much more difficult though because the audience on bot sides, those offering as well as those buying, is much more discriminating, and the situation already is far more fragmented. For things like gaming streams it never was (very fragmented) to begin with. Imagine Github had a subscription and would pay out to projects according to use (stared, downloads, whatever).
Also, it seems that the community versions are drops from the commercial product - that generally causes lack of community.
Users having the ability to edit with the code, and provide detailed bug reports is a massive benefit - and is probably a reason that these customers are using the product.
(ex couchbase employee)
I work on a proprietary product (SaaS + on-prem models), but this is also a very strong consideration for us in choosing basically anything we use (whether part of the product or part of our infrastructure).
If you're a small shop and not open source, unless you're literally the only option (or you're trivially replaced by a dozen other products), you're basically ruled out, unfortunately. This includes SaaS stuff.
It's not that we don't have the money, it's we don't have the risk tolerance. If you disappear, or get purchased and stop offering your product, or decide not to fix our bugs because they're too niche to us, I don't want to be hung out to dry.
Lots of examples. Convergent's CTOS, OpenVMS temporarily, QNX's "open" source, most desktop OS's, many commercial compilers, and recently FoundationDB I had hopes for. I simply don't use something commercial unless I can export the data out of it easily to an OSS alternative that I have ready-to-go. Also need to regularly export and test that data as the closures or licensing changes sometimes happen without warning.
We don't have any users who contribute to the codebase. But there are a few elite users out there who build their own components for debugging purposes. This lets them send us very precise bug reports that get acted on quickly.
So, all in all, we get a little bit of benefit from being mostly open source.