Apps

Open source's profound impact on the development community

Justin James gives a brief overview of open source's evolution and how perceptions about it have changed. He also explains how open source gives developers new career options.

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.Ja

Keep your engineering skills up to date by signing up for TechRepublic's free Software Engineer newsletter, delivered each Tuesday.

About

Justin James is the Lead Architect for Conigent.

6 comments
CodeCurmudgeon
CodeCurmudgeon

Is that companies are still demanding five years of experience with whatever exact technology they use. I've been around since the days of COBOL and FORTRAN, and programming is the same, only the details have changed. Programming is still about thinking logically and breaking down tasks into steps the machine can do. All the rest is trivial. Back in the '70s, a good friend went to MIT to study software engineering. What languages did they teach? None. No point in agonizing over the details, pick 'em up as you go.

Duke E Love
Duke E Love

Back in the bad old days of the 90's, when I got my start. Before Linux, PHP, and Mysql if you wanted to start a dot com and have a data driven website you had a choice of Windows NT or Solaris. We went with Windows. The Windows stack cost $5k for SQL Server and another $800 for a server licence and another if you wanted a dedicated machine for the database. Now you can do it for the price of the hardware or rent a cloud solution like Amazon AWS. The barrier of entry is next to nothing now. Even NET has a FOSS alternative in Mono and Railo and Open Blue Dragon have breathed new life into my beloved CFML (Best dead language EVAR).

Tony Hopkinson
Tony Hopkinson

is not commercially oriented. Technical debt is minimised, innovation is maximised. Short cutting monolithic over modular and so forth is not tolerated. Those of us who do commercial development operate with intrinsic technical debt, with quality being an optional extra to achieve good enough, and where code quality and product quality are considered to be separate issues. Effective open source development assumes all these issues are addressed, indeed it's detractors would say that design and implementation override product quality in open source. The biggest reign on more is there are far too many who see open source is free as in beer. They are quite happy to use it, but their only contribution is to whine about it not doing what they want.

daboochmeister
daboochmeister

But I'd be interested in your thoughts on the bigger picture - what open source and the related market and technical dynamics have meant to IT as a whole. My sense (somewhere between opinion and educated judgment) is that open source has had a commoditizing effect on many different types of software. IT is a very young field, and through the mid-00's, companies have been able to take advantage of very high profit margins for software that had unique characteristics or capabilities (Oracle and Microsoft come to mind); but now, even complex software like databases and operating systems are being commoditized. More and more companies are realizing that they don't have to pay the kinds of fees they used to just to have a capable database -- they can take advantage of PostgreSql or MariaDB etc. OS - pay for Windows, or use CentOS or OpenBSD. Separately, open source's impact on innovation has been huge ... you obliquely reference that by noting that cloud computing likely wouldn't have happened without open source as a foundation. Proprietary software companies almost universally have a scarcity mindset, viewing their market as a 0-sum game. Open source project teams sometimes fall into the same trap, but have much more latitude to adopt an abundance mentality - and there's plenty of research that shows that abundance-based thinking leads to innovation, among other positive effects. Crystal balls are hard (ha ha) ... but it would very much surprise me if 25 years from now, there is anywhere near as much proprietary software as now. What do you think?

Tony Hopkinson
Tony Hopkinson

it almost makes you wonder if they know what they are talking about. :(