I have been working on deploying a simple web app over the last 2-weeks. The experience has been one that has highlighted how Open Source is changing programming for all of us. First up: the pleasures of open source 🙂

The goal of the app was to get something very basic and quick out there. I was taking a very simple utility – one that had been built over a day and making it available to everyone. Doing this meant adding what is commonly expected of most apps these days: storing results in a database, adding support for accounts and authentication, and integrating with a couple of external systems to make the utility easier to use.

When building such apps – it is really helpful to use libraries/frameworks and external tools. Doing this can help speed development significantly. The interesting part was just the how many such external projects were actually used. I added 65+ libraries (jars) and used 10+ tools. I feel like there were many points that just jumped up at me:

Open Source is great for basic capabilities: Most of the basic nuts and bolts of the app required capabilities that have been built for decades – tools like Postgres, and frameworks like Hibernate helped immediately. But, yes – there were a number of things that the app did differently – and most of this ‘innovative’ stuff was left to me to do.

Open Source helped me not get locked in: Deploying to the cloud with Google App Engine or Heroku was not hard. Yes, these are commercial services/tools, but using open source helped me not take on these dependencies one at a time. Open source really has become an approach to standardization without committees.

Open Source helped me take advantage of the latest technologies: Software development is rapidly evolving – with new client side technologies for CSS, browser-based MVC frameworks, client-server communication technologies like WebSockets, server-side frameworks like Play Framework, and just tools for distributed version control. Between playing with these frameworks when I get the chance, to a serious evaluation for a new app – api’s to open source projects help in experimenting with new technologies easily.

I am curious – what’s your favorite part of Open Source?

Coming next week (as soon as I get a chance to write it down): the pains of working using Open Source.