Shedding Bikes: Programming Culture And Philosophy Shedding Bikes What do you think? [1][email protected] By Zed A. Shaw The Long Beard's Revenge I recently heard that RMS is pissed at cloud service companies because they are causing the decline of open source. I do have to say I agree with him that there's a decline in open source, but I'm going to lay out a completely different reason why. This is based on my experience as being classified a "Long Beard" during an era where consumer internet shifted and the front-end became king. Take it with a grain of salt, since it's just my observation and guess. Stallman's Argument Richard Stallman's argument about cloud services is that they use many open source technologies, but they don't have to release their derivative works because they are a network enabled service. This is apparently the motivation behind the AGPL, which aims to force a company using a piece of free software to release their contributions no matter what. His worry is that there will be a decline in FLOSS contributions because corporations will simply steal and never give back. It's my belief that he's right about the decline of open source, but /wrong/ about why. It has nothing to do with cloud services and them "stealing" but everything to do with the simple economics of open source back-end software and the current cultural climate that pits "Product Guys" vs. "Long Beards". Is There A Decline? Of course, first we have to establish that there is a decline. I'll give two indicators. First, a graph came up today from [2]Oholoh showing open source contribution declining and that got me interested in writing my ideas on this. If you look at this graph you see there's a marked decline across the board in open source contribution. Second, you're starting to see projects that have been closed old boy's clubs open up and consider a more liberal commit access. It's common enough that I'm starting to think it has less to do with a sudden change of heart and more to do with the fact these projects can't find new blood. If you look at many of the long established projects the contributors are getting older and are not as active. In the past finding new people to help was easy, but I'm seeing all projects having a harder time (minus any that have insane fadish popularity). For the sake of argument, let's say there is a decline in open source contribution and creation of new projects, or at least the /start/ of a decline. It's possible for say github to have stats that counter this, but let's go with it for now and talk about what might be causing it. "We Don't Need Backend Guys" The first clue is the complete lack of respect many companies that benefit from open source have for the people who make their tools. I recently heard that [3]Quora basically said they don't need back-end people anymore. Of course, a few days before they said that Facebook had a huge outage that I'm sure didn't require /any/ Long Beards to fix (that's sarcasm). Another example of the disrespect is Meebo and their use of libpurple without ever giving credit, and in fact claiming they did it all on their own. Every time I mention this some pissed off libpurple fan or developer emails me about it. As I've [4]said before the operations at a company are all about cost reduction. They're the other half of making a /profit/ (revenue - cost = profit). If you are just a company that needs to build up insane revenue for a giant IPO and can gather enough investment to maintain operations loss levels then yes, you do not need operations to be that good. The rise of consumer internet companies, Product People, and cheap small scale hosting means you can actually run a company for a very long time with a minimal knowledge of operations. Many of these consumer internet companies then run for as long as possible, but because they never try to get off these more expensive-at-scale hosting options they tend to [5]grind out. Their technical debt effectively limits their growth. The only way these companies can exist however is if there's /free/ software they can use. If they tried to build the same companies on Microsoft or Oracle technologies they'd need a much /much/ larger infusion of investment to even get started. With PHP, Apache, MySQL and a $12/month VPS they can get started and service quite a few customers before even considering investment. Instead of realizing this dependency on FLOSS software and communities, many of these companies just scoff at the programmers powering their world as if they aren't needed. They fail to give out recognition, offer ridiculous low paying "sysadmin" positions, openly disrespect in the name of "User Experience", and are generally just rude and condescending to the people running their operations. The Unwritten FLOSS Contract What has happened though isn't so much that these companies are "stealing" but that they forgot the contract. The unwritten contract held between corporations and FLOSS developers was basically this: "I, FLOSS developer, agree to create software and release it for free so long as you, corporation, give me recognition, a job, or at least help build it." Consumer internet companies however are just not bothering with this. They frequently will use software and then slander the author of it claiming it's "crap". They often will hide the software they use rather than admit they couldn't build it all themselves. And, as RMS is finding, they keep innovations and improvements to themselves rather than share. As this trend rises, the value proposition for releasing software for free begins to dwindle. If you're not really going to get that great a job, and nobody can see who's using your software, and even worse the companies using it claim it's crap even though they use it, well then why bother? But, people who are classified "Long Beards" still like writing this software, even if they're never trusted to implement it when they get hired. What are they to do then? Enter Cloud Services Before the cloud if you wanted to hack on a web server, or virtual machine, or some cool piece of hosting software, you pretty much just did it on your own and released it, or did it at a company and let them sell it. Very rarely would you find an employer willing to release the software open source if you wrote it on their dime. In some states even just being employed by them means they own it. As consumer internet increased and started taking advantage of open source (in both the positive and negative meaning of "taking advantage") you saw people who wanted to write server back-end software flee to web frameworks. A web framework let you work on the back-end, but had the interesting quality that anyone who used it pretty much had to admit it or contact you. If the web framework was tied to a specific platform (Python, Ruby, Java, .NET, JavaScript) then it was even better. Then the latest trend of putting a service online and calling it a "cloud service" gave a new out for back-end people. If you could write documentation, create a REST or email interface, and build some servers you could put your cool back-end up for people to buy /without actually having to give them the software/. This was key because now the Long Beards could have their revenge. They could take advantage of the same economies of scale Product People exploited, but /also/ use their skills at cost reduction to make the price good enough that Product People wanted to buy it. Since consumer internet companies are all about the front-end user experience they're very into not having to deal with any icky hardware and servers. Now a someone who's purely back-end can actually take software he's written, and just throw it on some EC2 instances and sell it directly to consumer internet companies. There's no need to take a job with these companies now and.../there's no need to release your software/. In fact, releasing your new software hurts your business except in a few special cases. Another way to put this is the Long Beards aren't stupid. They want to write this kind of software, and they see that the contract is broken in open source, so now they just go and make a service and sell it. Simple. My Predictions This is where RMS is wrong, the decline of open source won't be because of a reduction in contributions to /existing/ projects, but because cloud services and the rise of consumer internet will reduce /new/ projects. Existing projects will simply just slowly stagnate until an extinction event wipes them out like the internet wiped out BBSes. However I can see this inflexion point going one of two ways, and I'll make a few predictions with some indicators to watch. In fact you could see both trends play out for years before something changes it. The first possible trend will be internet services cannibalizing new open source, but a rise in the number of and quality of the available services. I think this next wave of *AAS will be similar to the recent switch in consumer internet from "crappy Enterprise looking web apps" to "Web 2.0 user experience web apps". You'll see a shift from "crappy strung together with duct tape horrible docs services" to "well designed cost effective well documented services". This next wave of internet services is what I'm aiming Mongrel2 squarely at (and yes I understand the irony of giving Mongrel2 away). I think the indicator for this trend will actually be improved documentation and a focus on language agnosticism. Yes, that's what Mongrel2 has, and that's why it has it. The second possible trend though is that the consumer internet companies get their head out of their asses and realize they need a /Total Product Experience/ not just a user experience. They'll realize that what keeps them from going the distance and becoming huge is the massive technical debt they build up from poor infrastructure and a general lack of operations and system quality. They'll then actually start hiring and treating their operations people with the respect they deserve, and probably start holding up the original contract they had with FLOSS. Additionally, I think people working on cloud services right now should be aiming to bring this trend to the consumer internet companies by focusing on providing the operations quality they seem to be unable to create for themselves. I believe, and you'll call me crazy, but the indicator for this second trend will be a focus on automated testing (not just unit testing) and operations cost at consumer internet companies. Right now I think maybe 5% or 10% of consumer internet companies even run one bit of test automation, hell automation at all. Look for this as an indicator that they've figured out automation reduces costs and increases agility. The interesting thing about these two trends is that they're not mutually exclusive, and they're not very new. Both of these parts of the technology business machinery have been around for a while, it's just they have been at odds with each other mostly. My overall prediction is that there will be a general focus on this Total Product Experience idea, and getting away from the stupid "Back-end Long Beard Old Guy" vs. "Hot Young Front-end Product Person" attitude we have now. [6]Mongrel2.org Programming Language Agnostic Web Server. [7]FretWar.com Guitar Competition and Education. [8]Andt.hn Collaborative choose your own adventure never ending concept album. [9]Shedding Bikes Essays on programming culture and philosophy. [10]Oppugn.us Rants by everyone. [11]Gear.FM Music Gear. [12]SongBe.At A music microblog. [13]@zedshaw My Twitter. [14]Librelist.com Free mailing lists for open source projects. ------------------------------------------------------------------------ [Image] References: 1. mailto:[email protected] 2. http://www.ohloh.net/languages/compare?commit=Update&l0=c&l1=html&l2=java&l3=php&l4=ruby&l5=shell&l6=xml&l7=python&l8=-1&measure=commits 3. http://quora.com 4. http://sheddingbikes.com/posts/1285436217.html 5. http://techcrunch.com/2010/10/03/if-web-1-0%E2%80%99s-kryptonite-was-the-bus... 6. http://mongrel2.org 7. http://fretwar.com 8. http://andt.hn 9. http://sheddingbikes.com 10. http://oppugn.us 11. http://gear.fm 12. http://songbe.at 13. http://twitter.com/zedshaw 14. http://librelist.com/ -- Salud! Nicolás Reynolds, xmpp:[email protected] omb:http://identi.ca/fauno blog:http://selfdandi.com.ar/ gnu/linux user #455044