Browse files

2012 retrospective

  • Loading branch information...
1 parent 783c904 commit 0254cbdf72ccce39a009f25bf34e7271ef2540a9 @svenfuchs svenfuchs committed Dec 30, 2012
Showing with 295 additions and 0 deletions.
  1. +295 −0 blog/_posts/
295 blog/_posts/
@@ -0,0 +1,295 @@
+title: "2012 at Travis CI - what a blast!"
+created_at: Sun Dec 30 12:00:00 CET 2012
+layout: post
+author: Sven Fuchs
+twitter: svenfuchs
+permalink: blog/2012-12-30-2012-at-travis-ci-what-a-blast
+When I started collecting some facts for this year's retrospective, I couldn't
+believe how many fanstastic, game-changing and also humbling things have
+happened in just a single year.
+If Travis CI has been a toddler when [Josh]( and I
+started touring conferences in 2011 to tell everyone about the idea and vision
+then in 2012 it was a kid growing up, went through some heavy duty rock'n'roll
+and all night party times.
+In 2011 the [initial experiments](
+formed into a vision: We wanted Travis CI to be for tests and builds what
+RubyGems is for distribution. But not just for Ruby, for any language. We
+wanted to target Open Source code first. And we wanted dead-easy and public
+continuous integration to become a standard for Open Source.
+Over time we got more and more serious, also because we got such great and
+encouraging feedback. Since we were quite limited on resources, we've had to
+adhere to a "build the simplest thing possible" rule pretty strictly. The
+result was a rather simple app that showed an exciting vision, but also already
+proved useful enough for people to rely on on a daily basis.
+Then in 2012 Travis CI saw [rapid growth](
+It became obvious that we'd need a much better foundation, so we could scale
+things out with the exploding demand. We've collected some money from the
+[crowdfunding campaign]( This allowed us to grow
+our team and implement the things we've promised to build.
+### What we've been working on in 2012
+Here's what we've been doing in 2012 in terms of code:
+[![travis activity 2012](](
+If you're really interested you can [play around](
+and add/remove team members, repositories or change the scale. I've built this little
+app to get a good overview for this retrospective.
+You can see nicely how the crowdfunding campaign (orange) took quite a few
+resources in the first weeks of the year, but then zeroed out. Instead we
+started working on Travis CI Pro (blue) which took a huge part, and still does.
+In addition, somewhere around June we started working on the new Ember.js web
+client as well as the new API (yellow, see below) and split up the app more and
+more (red) towards the end of the year.
+And if you really want to stalk us more then you can find even more detailled information
+[in a feature list]( and
+[a summary of our commit history](
+Haha, don't worry. I'm going to sum it all up for you. :)
+### The Travis Crowdfunding "Love" Campaign
+Conceiving, planning, designing, realizing and launching the crowdfunding
+campaign including the [Stripe]( payment integration,
+founding a company (so we could legally accept money), production of
+ringtones and a few rounds of private feedback from fellow developers took
+about two months in total, one developer mostly.
+We were already amazed by the fantastic amount of support and great feedback
+that we were getting while we were putting the campaign together. But when the
+site went live in February and raised a remarkable amount of money in no time,
+we were just blown away and plain humbled.
+If you have a spare minute then please take the time to review our fantastic
+sponsors and the amazing list of private donors.
+The overall revenue of the crowdfunding campaign to date amounted to roughly
+125,000 USD. Without this money Travis CI would not be what it is today.
+There's so much to say about the crowdfunding campaign that doesn't fit into
+this post. We'll write it up. Expect a more detailled summary early next year.
+### The Travis Team
+In the course of 2012 the team behind Travis CI has more than doubled.
+If you go to Berlin and ask around who people would really like to work with -
+who do you think would be on the list? I'm obviously biased, but I'm sure
+Konstantin and Mathias would rank very high within the Ruby community.
+To say the very least, we were super happy that with
+[Konstantin]( and [Mathias](
+two of the best Ruby developers we know joined the team in January full time.
+It took us a while to change the company contract and fully get them on board,
+but finally in April we were all set. They've changed the face of Travis CI
+entirely. Having these guys join the team was the best thing that could happen
+to the project.
+![travis team in oniesies](
+Then in March and April one of our earliest and most supportive sponsors,
+[Enterprise Rails](, sponsored Lucas to work
+on Travis CI on a halftime position, fixing bugs and adding features.
+[Lucas]( is a Rails developer at Avarteq (and an
+active coach in the [Railsgirls Berlin]( group,
+[high five](!) and helped us a lot, fixing bugs and adding
+In October [Engine Yard]( started sponsoring a
+fulltime position for Piotr in the most [broadminded
+as part of their Open Source Grant program. [Piotr](
+is a fantastic Ruby developer. He has been active as a Rails core member and
+worked on distributed applications, as well as Ember.js based clients in the
+past, so he was the perfect addition to our team. We are super happy to have
+him on board, and super thankful for Engine Yard's sponsorship!
+[Michael](, one of the first members on the
+team, luckily was able to continue to maintain our VM cookbooks, one of the
+most important and mature components of the system, in the most dilligent and
+trusty way.
+We'd also like to mention [Henrik](, who's done some tremendous work on community
+support, tickets and a lot of bug fixing over the last months. He's also built
+the Mac OS X toolbar ["watcher" app]( for Travis CI
+as well as [Travis Lite](, an alternative, light-weight
+web client for the Travis API.
+### More languages, pull request support, secure env vars and build artefacts
+One year ago, Travis CI offered native support for [six languages](
+Clojure, Erlang, Node.js, PHP, Ruby and Scala. Today we are proud to say that
+(after adding C/C++, Go, Groovy, Haskell, Java, Perl and Python) there is
+native support for [14 different languages](
+on Travis CI, including support for JVM switching and a generic JVM language
+builder. Besides these officialy supported languages, there are also projects
+testing EMACS Lisp, Smalltalk, Bash and [many other languages](
+on Travis CI.
+We believe this is huge.
+Next to that, the most exciting and popular new feature on Travis CI is
+the [pull request support](
+and later the tight [integration with GitHub's UI](,
+that has been added. Konstantin has done an amazing job at this, also adding a
+new [layered GitHub API client]( that now makes our
+life much easier at Travis CI.
+Then later this year, Piotr added two more features that gave tremendous
+value to Travis CI, as they open up an entire new space of usecases and
+possibilities: [secure env vars](
+(so users are now able to add sensitive data to their public .travis.yml config
+files) and (building on that) [build artefacts](
+### Pure JS client and a shiny new API v2
+If something is broken and then gets fixed we tend to entirely forget about
+that unfortunate previous situation because we're so happy with the new one. However,
+we still remember how many issues we had with both the old API and the old JS
+browser client.
+We've started working on a new Travis CI web client in early June and a new [Sinatra](
+based API app shortly after that. Since we also had to tackle so many other
+things in parallel, the whole thing wasn't ready to launch into beta
+[until October](
+But we were super happy with the result, as it's all much faster, much
+easier to maintain and add features to it. We've since ported the client to
+[Travis CI pro](
+and fixed a good number of edge cases around the new JS based OAuth sign-in
+### Travis Hub and the army of apps
+One year ago Travis CI consisted of a web app, a bunch of worker machines and a
+central message crunching app called Hub. Today there's an entire small army of
+apps that all share their their part in getting your builds run:
+[Listener]( picks up requests from GitHub (created Dec 2011).
+configures them and takes care of syncing user data with GitHub (Oct 2012).
+queues build jobs based on a rate limiting strategy (Oct 2012).
+still is a central node that picks up state changes and triggers events.
+sends out notifications to external targets (like Email, IRC, Campfire etc.,
+created Aug 2012).
+ does nothing else but processing logs that are streamed
+over from the workers (Aug 2012).
+There are also other apps for serving the static [web client]( and
+serving the [HTTP API](
+Moreover, we created other tools for things like
+[single sign on](,
+[worker maintenance]( and so on ...
+Breaking up Travis CI into lots of tiny apps that communicate via AMQP, [Sidekiq](
+and HTTP made it much easier to scale things out, spot issues related to a
+certain aspect but also work in parallel without accidentally stepping on each
+other's work.
+### Automation and Visibility
+Even with the rather simple setup we had a year ago, when things went wrong it
+often turned out to be quite hard to tell what's actually going on in the
+system. That situation would not get any better once we'd split things up
+into separate components even more.
+Being the devops hero he is Mathias immediately jumped at tackling that
+situation. He changed and cleaned up the way our apps write [log output](,
+centralized them in [Papertrail](, added metrics
+everywhere, piped them through the logs to [Librato]( so
+we'd get some pretty graphs and assembled them on a nice dashboard.
+![metrics everywhere](
+Over the next months the situation improved step by step and we're now able
+to tell [what's happening](
+and [isolate issues](
+rather quickly even though our app now consists of many more components.
+### Travis Pro
+And finally, we've worked **a lot** on turning this platform into a paid
+service so we could eventually allow everyone who had been asking for this to
+give us their money ... so we could continue providing this service for Open
+Source for free and also make it even better, more useful and exciting.
+Obviously we can't talk much about the exactly way this was realized, but we
+are able to re-use quite a bit of the code that is also powering the OSS
+version of the platform. The two services are entirely separated and share no
+resources other than code though.
+Figuring out all these bits and pieces took quite a bit of work. Mathias has
+been working (next to lots of other things, but still) 2.5 months on
+integrating payments, coupons, billing etc. alone. A bunch of things need to
+work in a slightly different way for the private service, so lots of
+adjustments had to be made.
+We're still in a closed, private beta and we have a number of big improvements
+in the pipeline before we'll be able to entirely open the service. But we can
+say proudly that our users are already pretty happy with it, given the
+we have.
+### What's up for next year
+In 2013 we will mostly continue the path that we've taken in 2012 and improve
+the existing service. Reliability, flexibility and robustness are on the top of
+our list. Further improvements to usability and performance, adding missing
+features and further build the community around Travis CI are other goals on
+that list.
+But we also want to look into fields that we haven't quite touched much, yet,
+like simplifying support for continuous deployment and other automation steps
+or adding an API for third party apps. We have some great ideas in this space,
+so be excited :)
+Obviously our main priority has to be put on shipping Travis CI pro, so
+we'll be able to pay our bills and continue to support Travis CI as an open and
+free service for the Open Source community. But in order to have some more free
+resources for this we will also look into follwing up on the crowdfunding
+campaign for the next year. Expect to hear more about this soon.
+So, if 2011 was the year of birth of the Travis CI project and 2012 was the
+year of it's childhood and youth, we hope that we can make 2013 the year of
+growing Travis CI up to stabilize as the most useful, efficient and well
+supported continuous integration platform out there.
+We are super excited and looking forward to working with you and we are
+extremely thankful to be able to be part of an amazing project and a fantastic
+community like this.
+### Thank you all for a fantastic year!
+2012 was a blast. Thank you so much.
+Love you all :)

0 comments on commit 0254cbd

Please sign in to comment.