The quote from Newton is particularly apt. Open Source contribution is a lot like the collaborative/competitive model of scientific discourse that we've had since the Enlightenment. While that may make it sound academic, much of pre-20th Century science was carried out by amateurs, even by entrepreneurs. OS the new form of something quite old and very well-proven.
Open source is a kind of post-scarcity economy. It's an economy of attention and status, and although money can be made in the process monetarism is relatively unimportant in comparison to the other factors.
The scarcity paradigm has its roots in our mammalian past. But it is very important to understand that as soon as any single human achieved the level of security that insured his survival (an abundance of food, shelter and the other needs of life) post-scarcity became a reality. The fact that it hasn't been achieved for all humans has nothing to do with the fact that POST SCARCITY HAS ALREADY BEEN ACHIEVED BY THE HUMAN RACE. The technology and advanced science which enables even one person to live an entire lifetime without needing to fight/kill or die of starvation or exposure to the elements is the proof of concept -- a concept that hasn't been equaled by mammals or apes. So when people say that post-scarcity is not possible that is a social issue based on greed and fear -- it is not based on the facts of science and the laws of physics. We live in a world of post-scarcity technology with an outdated scarcity mindset. It is the mindset that needs to change to suit the sophistication of our technology.
I find it hard to understand how writing open source software has a strong value proposition for someone who isn't worried about "getting the next job" or "looking good in front of peers". For me, I believe the best use of those extra hours I have is to learn entirely new subject areas, not writing tests for code I don't care about, answering support or setting up documentation. I don't care if people know what I am doing, I'm not in it for the glory or whatnot.
Instead, over the last few years I have added two entirely new subjects to my repertoire (mathematical statistics and neuropsychology) to a level where I can read, critique and contribute to the latest research in the field. Over the next few years I plan on repeating this process with other subjects. Comparing this with writing more software about things I already know seems to me to be comparing progress with diminishing returns.
If you believe I'm wrong, I'd love to know why. Convince me there's value in opening up the 20+ projects sitting in my source control.
If it's your project and you're the maintainer, you get periodic free testing, enhancements, and bugfixes from your users. If you're a power user of an open source project and need to patch it for some reason, you first of all have the ability to do that, but secondly if you contribute it upstream your patch becomes someone else's problem.
Basically it's a trade between power users, who contribute enhancements, and project maintainers, who take on the burden of maintaining the project. Usually, the project is useful to the maintainer in some way, and the maintainer now has a better piece of software due to having open sourced it.
"you get periodic free testing, enhancements, and bugfixes from your users"
The amount of this is miniscule, in my experience; not only that, but the level of testing and quality of bugfixes is usually so low that it's more efficient to not bother reading emails like that at all. I guess it's different for bigger/other projects, although the dozens of mailing lists I've been on over the years haven't shown many differences.
"but secondly if you contribute it upstream your patch becomes someone else's problem"
This, too, is vastly overstated. I have contributed dozens of patches over the years that were just left in bug trackers or tracs, or were ignored on mailing lists - sometimes because nobody cares, sometimes because people just like to hack on their own use cases instead of somebody else's problems, sometimes because its against the (usually unstated) 'philosophy' of the software.
Not to be negative, there are many useful open source projects, and I use many. But they're usually run by one or a few highly committed people.
I too have a bunch of projects in local repositories - I don't see any reason to open them up. A bunch of projects out there with no activity for 3 years looks quite bad too - once you start advertising your public repos, you have to keep up on them. The trade off is usually not worth it for me (for new projects, that is - I keep the ones I've worked on in the past on the web).
I agree, I was describing the best case scenario, which, however, does happen. I think R, SciPy, and emacs are great examples of projects that benefit by accruing contributions from power users.
I upvoted your comment, as that's what I was going to say.
For example I just created a small script that synchronizes my photos on Flickr, but that also takes care of duplicates (that were tagged with a machine-tag representing an md5 of the file).
I could just keep it on my computer, and even lose it in case my hard-drive breaks, or I could improve it a little and release it on GitHub -- after which I'd have a backup of my script and maybe even some fixes for free.
Then somebody else might want to do this synchronization in reverse and add his own stuff to this little script.
That's how open-source happens, besides companies throwing projects over the fence, or doing it for the free publicity.
Why would we need to convince you? It's not like you should feel an obligation that you have to. It might be that open source simply is not for you.
A big part of it for me is the social aspect:
I enjoy sharing my code with others, improving other people's code, and of course using code that is already available so that I don't have to write it myself. But also seeing what other people manage to do with my code is fun.
Another thing that I like about open source is that everything is flexible. If something doesn't work the way I want (or can work productively with), I can fork it and and change it.
Also: If you don't intend to sell some program or library, and you think it can be useful to other people, why not make it open source? That doesn't give you the obligation to support it or write extensive documentation.
There are a lot people who do open source stuff and make a big thing out of it ("I think a github link is more important than a CV" etc.) to the point where those of us who don't, the silent (majority?), may feel we are somehow lesser programmers as a result.
Why do I open source? Because of the licenses of the (freakin awesome) libs I'm using. Will commercialize the "add-on packages" (aka the Real Meat) later on though...
It's still all market-driven. 12+ years ago The Ecosystem for the majority of developers was MS-supplied. These days The Ecosystem is the open source web stack (or -- iOS). Back when MS provided "the grooviest platform", that's what coders built on. Now the grooviest platform is built by many indie lib coders, the majority of whom open source. Since it would be too cumbersome to strike individual commercial-licensing deals with them all, the path of least resistance is open-sourcing too. Then figure out commercializing via hosting services, support services, value-adding extra packages ... the whole freemium.
Also in some markets / niches, open sourcing a substantial portion of your offering is rather beneficial for driving initial user adoption... but all this is nothing new and I realize I'm not even relating to the core contents of the OP here. =)
Why do I enjoy it? I dunno. I think that mostly it allows me to feel karmicly balanced. After all, it's open source technologies like Rails and jQuery that have allowed me to quit my job and work from my own sweet office doing as I please for the most part. Now I can give back, and maybe one day, one of my projects will help someone else do the same.
Also, writing open source projects feels kinda like the geek's ultimate networking tool. I came from the business side of things, and had started getting burned out on networking events. Contributing to open source projects helps me meet awesome like-minded developers from around the world and build productive relationships with them.
You tend to get feature requests, bug reports (with a surprising low level of accuracy) and emails of gratitude. But seldom do I receive ‘Here is patch that allows you to d x, y, and z ‘ emails.
This has been my experience exactly, with everything from my jQuery EasyTabs plugin, to the Remotipart gem, to the Rails jQuery UJS adapter. The bug/feature requests always outweigh the patches-with-tests by a factor of 10 to 1. This is usually when I have to start justifying the time in my mind with thoughts like, "it builds clout for the consultancy, just keep at it." The good news, is even the bug reports/feature requests make me feel good that at least people are using it.
Of course, the status and recognition are nice too. Coming from the non-coding side originally, it's nice to feel accepted by the community.
Why do so many people think of patents and copyright as capitalism? Patents are an artifice created by the government, distorting the natural incentives of a free-enterprising, free-contracting capitalist marketplace. I never understood the European brand of anarchism.
I'm genuinely interesting in understanding it, if there was anyone who wants to explain rather than just downvote.
The defining feature of capitalism is enforcement of private property rights. Patents and copyrights ("intellectual property") are a type of enforced private property right.
Enforcing something as a property right doesn't mean it should be enforced as a property right. I think capitalism also implies that certain things should be property but not other things. And I'm not saying here whether or not IP in particular fits, that's a debate to be had.
Copyrights may not be capitalist, but open source is socialism, since everybody has equal access, and people contribute according to their ability (and desire, which I guess is what distinguishes it from state socialism). And it somehow works. This is what opened my eyes to the fact that self-interest isn't always necessary to produce something useful.
It also shows you the flaws in socialism. Since there is no monetary gain, most people work on open source on their free time and important bug fixes and features are many times never implemented. There are thousands of projects like this and only a handful of truly successful open source projects. This is opposed to the thousands of successful commercial/proprietary ones.
Almost all large, successful open source projects are sponsored by a company with money and they are benefiting financially from the work involved (It might be helping their services or support).
Is this bad for software? Not necessarily, it just results in bug-ridden and outdated code. However, when the same principals are applied to an economy, the results are much worse.
Linux and GNU started as fun projects though, right? Company support came later.
And in a sense, maybe one could say that each company is in a sort of socialism vis a vis each other? The Linux foundation is made up of multiple companies. Yes it is for monetary gain, but in the extreme case of total socialism, everybody works toward personal gain, and that's all that monetary gain represents in the end anyway.
You're right it's clearly not total anarchy, but the anarchist aspect works out way better than I would have expected before I was exposed to it. I think it's got aspects of both personal interest and cooperation. I think both have their place in life.
Why would a company pay an engineer with a college degree to build something, when they can get it for free and hire a software mechanic to make changes? It also makes it much easier to farm jobs out to countries like India and the Philippines.
26 comments
[ 2.7 ms ] story [ 113 ms ] threadInstead, over the last few years I have added two entirely new subjects to my repertoire (mathematical statistics and neuropsychology) to a level where I can read, critique and contribute to the latest research in the field. Over the next few years I plan on repeating this process with other subjects. Comparing this with writing more software about things I already know seems to me to be comparing progress with diminishing returns.
If you believe I'm wrong, I'd love to know why. Convince me there's value in opening up the 20+ projects sitting in my source control.
If it's your project and you're the maintainer, you get periodic free testing, enhancements, and bugfixes from your users. If you're a power user of an open source project and need to patch it for some reason, you first of all have the ability to do that, but secondly if you contribute it upstream your patch becomes someone else's problem.
Basically it's a trade between power users, who contribute enhancements, and project maintainers, who take on the burden of maintaining the project. Usually, the project is useful to the maintainer in some way, and the maintainer now has a better piece of software due to having open sourced it.
The amount of this is miniscule, in my experience; not only that, but the level of testing and quality of bugfixes is usually so low that it's more efficient to not bother reading emails like that at all. I guess it's different for bigger/other projects, although the dozens of mailing lists I've been on over the years haven't shown many differences.
"but secondly if you contribute it upstream your patch becomes someone else's problem"
This, too, is vastly overstated. I have contributed dozens of patches over the years that were just left in bug trackers or tracs, or were ignored on mailing lists - sometimes because nobody cares, sometimes because people just like to hack on their own use cases instead of somebody else's problems, sometimes because its against the (usually unstated) 'philosophy' of the software.
Not to be negative, there are many useful open source projects, and I use many. But they're usually run by one or a few highly committed people.
I too have a bunch of projects in local repositories - I don't see any reason to open them up. A bunch of projects out there with no activity for 3 years looks quite bad too - once you start advertising your public repos, you have to keep up on them. The trade off is usually not worth it for me (for new projects, that is - I keep the ones I've worked on in the past on the web).
For example I just created a small script that synchronizes my photos on Flickr, but that also takes care of duplicates (that were tagged with a machine-tag representing an md5 of the file).
I could just keep it on my computer, and even lose it in case my hard-drive breaks, or I could improve it a little and release it on GitHub -- after which I'd have a backup of my script and maybe even some fixes for free.
Then somebody else might want to do this synchronization in reverse and add his own stuff to this little script.
That's how open-source happens, besides companies throwing projects over the fence, or doing it for the free publicity.
A big part of it for me is the social aspect:
I enjoy sharing my code with others, improving other people's code, and of course using code that is already available so that I don't have to write it myself. But also seeing what other people manage to do with my code is fun.
Another thing that I like about open source is that everything is flexible. If something doesn't work the way I want (or can work productively with), I can fork it and and change it.
Also: If you don't intend to sell some program or library, and you think it can be useful to other people, why not make it open source? That doesn't give you the obligation to support it or write extensive documentation.
It's still all market-driven. 12+ years ago The Ecosystem for the majority of developers was MS-supplied. These days The Ecosystem is the open source web stack (or -- iOS). Back when MS provided "the grooviest platform", that's what coders built on. Now the grooviest platform is built by many indie lib coders, the majority of whom open source. Since it would be too cumbersome to strike individual commercial-licensing deals with them all, the path of least resistance is open-sourcing too. Then figure out commercializing via hosting services, support services, value-adding extra packages ... the whole freemium.
Why do I enjoy it? I dunno. I think that mostly it allows me to feel karmicly balanced. After all, it's open source technologies like Rails and jQuery that have allowed me to quit my job and work from my own sweet office doing as I please for the most part. Now I can give back, and maybe one day, one of my projects will help someone else do the same.
Also, writing open source projects feels kinda like the geek's ultimate networking tool. I came from the business side of things, and had started getting burned out on networking events. Contributing to open source projects helps me meet awesome like-minded developers from around the world and build productive relationships with them.
You tend to get feature requests, bug reports (with a surprising low level of accuracy) and emails of gratitude. But seldom do I receive ‘Here is patch that allows you to d x, y, and z ‘ emails.
This has been my experience exactly, with everything from my jQuery EasyTabs plugin, to the Remotipart gem, to the Rails jQuery UJS adapter. The bug/feature requests always outweigh the patches-with-tests by a factor of 10 to 1. This is usually when I have to start justifying the time in my mind with thoughts like, "it builds clout for the consultancy, just keep at it." The good news, is even the bug reports/feature requests make me feel good that at least people are using it.
Of course, the status and recognition are nice too. Coming from the non-coding side originally, it's nice to feel accepted by the community.
I'm genuinely interesting in understanding it, if there was anyone who wants to explain rather than just downvote.
Almost all large, successful open source projects are sponsored by a company with money and they are benefiting financially from the work involved (It might be helping their services or support).
Is this bad for software? Not necessarily, it just results in bug-ridden and outdated code. However, when the same principals are applied to an economy, the results are much worse.
And in a sense, maybe one could say that each company is in a sort of socialism vis a vis each other? The Linux foundation is made up of multiple companies. Yes it is for monetary gain, but in the extreme case of total socialism, everybody works toward personal gain, and that's all that monetary gain represents in the end anyway.
You're right it's clearly not total anarchy, but the anarchist aspect works out way better than I would have expected before I was exposed to it. I think it's got aspects of both personal interest and cooperation. I think both have their place in life.
Why would a company pay an engineer with a college degree to build something, when they can get it for free and hire a software mechanic to make changes? It also makes it much easier to farm jobs out to countries like India and the Philippines.