The evolution of open source
Open source software has had a tumultuous history. In the late 1990s it seemed like billion dollar IPOs were a guarantee just by saying your business had something to do with open source. After the dot-com blowout, we saw a lot of these companies (that did not have sustainable business models) disappear or shrink. In the last several years, we have seen a slow evolution of open source, which now has three major scalable, repeatable business models.
- The support model: Companies create (or heavily contribute to) open source, hoping the open nature and zero cost will grow a community, and then they provide support for a fee. This support can take a variety of forms, but the model is the same.
- The "free for non-commercial, pay for commercial" model: This model has a dual license, which allows the creator to gain adoption and pick up revenue along the way.
- The hosted model: This is where a company sells a subscription to a cloud-based installation of the software. This is a fantastic model, because it provides instant gratification for software that can otherwise be a headache to install and maintain.
Changes in perceptions
There has also been a change in enterprise IT departments' perceptions about open source. Ten years ago, most enterprises viewed open source as a risk unless it had a huge corporation behind it (like Sun with Java). As a result, most of the innovation in the open source space was pretty much locked out of the enterprise. As the business models have proved themselves, when developers say, "hey, there is an open source package that can solve this problem" the question is no longer "isn't that a risk?" but usually "where do we start?"
I think the biggest change has been in the development community. As open source has become less political (it's been a while since I saw a good MIT/BSD license vs. GPL flame war), and less thought of as a business model in and of itself (like in the dot-com days), and viewed more as an attribute of a successful business model, the quality has skyrocketed. And when I say quality, I do not just mean the quality of the application but the entire package. Most notable is the improvement in documentation. As recently as five years ago, even major open source packages were barely documented for the most part. In the last year or so, I have been using a lot of things like jQuery, and I am amazed at how good the overall package is in terms of documentation, video tutorials, and more.
The overall effect for software developers is astounding. Five years ago, there was some buzz around Ruby on Rails. I remember the timing well, because I took a Ruby book on my honeymoon, and afterwards I looked at using it, and it was a mess. There were a few IDEs out there, but they felt rough to me. The documentation was poor, and it was not well supported by Web hosts. The price of admission was higher than I was willing to pay.
Today, if you want to become a Ruby on Rails developer, the only things stopping you are lack of motivation, ability, and time limits. The tooling is very good, cloud-based hosts abound (and in many ways, look better than what is available for .NET or Java), and there are a lot of great documentation, books, and tutorials out there. Indeed, it seems like Rails (and Node.js and Python/Django) are where all of the "cool kids" hang out now. It is to the point where Microsoft, which once was a major force for pushing concepts into the mainstream, is now playing catch up with concepts that have already gone mainstream.
What does this mean for developers?
For one thing, you have a lot more choices than just Java, .NET, and C/C++. I keep seeing people launch new, innovative applications and successful businesses on the backs of these systems; meanwhile, I don't see as many innovations from people who are leveraging .NET or Java. Using a provider like Engine Yard or Heroku to get up and running (and portable) is a lot easier than dealing with the various .NET and Java cloud systems. The round trip from "idea in my head" to "running code" is shorter and less painful.
Even with .NET and Java, open source is giving you new options. One of the better things to come along with ASP.NET MVC was the popularity of NuGet, which makes it much easier to live with open source while running the .NET stack. jQuery works pretty painlessly now with ASP.NET MVC, and REST and JSON are finally pretty well supported, which is important for working with a lot of the common open source packages out there.Best of all, open source gives you new career options, whether it comes to getting a job or striking out on your own. Developers who contribute to open source projects are often getting jobs working with those projects. Increasingly, package creators are getting to write their own tickets, as the opportunities for open source usage increases.
The irony of it all is that as open source as an idea matures and grows farther away from its political roots, it is shaping the fabric of the development community and having a profound impact in the way we do things. The cloud revolution, for example, could likely not have happened without open source under the hood. As developers, we owe it to ourselves to see how we can use open source to improve our products and make out lives easier.
J.JaKeep your engineering skills up to date by signing up for TechRepublic's free Software Engineer newsletter, delivered each Tuesday.
Justin James is an OutSystems MVP, architect, and developer with expertise in SaaS applications and enterprise applications.