Tag Archives: Why this is cool

Robots Making Robots: Continuous Integration for Non-Developers – Part 1

I was recently discussing what made Web2.0 so different from 1.0, starting from the seminal article by Tim O’Reilly. Since the article was written in 2005, most of the defining characteristics, like rich media on the web, multi-device services, and data-driven applications are a familiar and natural part of my life at this point. However, I work every day with a fascinating part of Web2.0 that is still rapidly evolving in the business world: the Perpetual Beta, the process of which is now known as Continuous Integration.

In traditional software development environments, people would make a piece of software by figuring out what it needed to do, doing the work to actually make it, and then releasing the software so that you could buy a copy and install it. The Windows operating system is a great example. I remember when there was only Windows 98, but then Microsoft released Windows, XP, Vista, 7, and now 8. There are distinct releases of Windows, and you have to install that release yourself to use it. Even when you have automatic updates, you still need to restart your computer for it to get all updated. Also, there are people now that still have Windows 98 while someone else has the beta version of Windows 8.1. On the other hand, while the look and features of Facebook has changed over the years, you’ve never had to upgrade from Facebook XP to Facebook 7, and everyone uses the same Facebook. It just happens completely automatically.

These two opposing sides are essentially the two extremes of how you get software. Your operating system is as fundamental to your computer as you will probably ever care to go, so it’s like the foundation of a skyscraper: you can only build so far up before you need a better foundation to do any more. However, the web is like your favorite restaruant in the skyscraper: whenever you want to get some pan-seared salmon with lime and decorative veggies, the waiter brings you a whole new copy of the dish every time, and the chef could improve on his recipe from visit to visit and you wouldn’t have to do anything more to get the benefit of it.

Spurred on by the popularity of smartphones and of people being connected to the internet almost 24/7, all software development has started to move towards how the internet does it naturally. The apps on your phone now download updates in the background and then install them as soon as you’re not using the app any more. The app store lets this happen by making sure you, your bff, and your cat all have the newest version of Instagram on your phones so that you can share pictures of what food you just ate. Apple has popularized this in the desktop world with the Mac App Store. Now you just have to find the page for Angry Birds and click install, and the Mac App Store takes care of the updates for you.

In a nutshell, Windows 98 had some security patches throughout the years, but the Windows experience was essentially the same until XP came along and everything changed, whereas now, Amazon doesn’t drop entire redesigns of the Amazon store any more, but it tests and changes little things all the time to improve what you can do and how enjoyable it is a little bit at a time. Does a blue ‘Buy Now’ button get more sales, or does the green one? Do people buy more extra things with five related products shown after a purchase or four? This philosophy of developing by updating software very quickly even after it’s been released is what Tim O’Reilly called the Perpetual Beta, and the tools and processes that make it possible are now collectively called Continuous Integration. In the next part of this series, we will take a look at the major types of tools that make Continuous Integration possible, and why they’re so needed and so great.