Earlier this week, Grant Klopper from The Guardian upgraded part of their news website from Play 2.2 to Play 2.3. Shortly after, he noticed and tweeted about a significant change - response times and memory usage had both dropped by a factor of three. A few days later, he tweeted “I shut down 2/3 of the servers and got CPU back to where it was 2 days ago.”
Clearly there had been a major performance improvement from Play 2.2 to 2.3 that had allowed the Guardian to turn off two thirds of their servers for this site! On the Play team we were obviously excited, but also a little cautious. While we had put significant efforts into improving performance in Play 2.3, we never expected the gains we had implemented to be that much.
After talking to Grant and looking at The Guardian’s source code (which they’ve publish as an open source repository on GitHub), we soon established exactly where the performance gain came from. It had not come from anything that the Play team at Typesafe had done, but rather was an improvement submitted by Play community member Matthew Barlocker from Lucidchart.
Matthew had initially raised an issue on the Play issue tracker pointing out that there were some performance issues with Play’s template support. At the time, our performance work was focussed in other areas of Play, primarily in ensuring the Java API was on par with the Scala API, and it didn’t appear to us at that time that this issue would cause major problems for a majority of Play users. So we labelled the issue as a community issue, a label that we use to signify that a particular issue is not something that is in our priorities, but that we’ll accept a pull request for if someone in the community implements it themselves.
Before long Matthew analysed and implemented a fix for this himself, submitting a pull request with the change, which we gladly accepted. And because of Matthew’s contribution, The Guardian is now able to use significantly less hardware to serve their news website. Matthew has written a blog post outlining how he diagnosed and fixed the issue.
Although we at Typesafe invest a lot into improving and maintaining our software products, we would not be where we are today without the contributions of our community. Many of the features, improvements and bug fixes that you rely on today in the Typesafe platform have been contributed by the community, from simple documentation updates, to major features and performance improvements like Matthew’s.
Play 2.3 alone was contributed to by over 150 members of the community. This goes to show one of the major benefits of open source software; it’s not just a single vendor writing software and deciding what should be prioritised, it’s a community that’s driving the software forward according to the communities own demands and needs.