CloudBees provides an enterprise Continuous Delivery Platform that accelerates the software development, integration and deployment processes. Building on the power of Jenkins CI, CloudBees enables you to adopt continuous delivery incrementally or organization-wide, supporting on-premise, cloud and hybrid environments.

Friday, March 16, 2012

Whenever an application is uploaded to the CloudBees Platform as a Service (PaaS), it is not just blindly copied from your desktop onto the PaaS. Instead, we perform some smart processing so that only the delta from the previous upload needs to be sent, which significantly reduces the bandwidth and time required to upload a new version of your application.

Through that process, we anonymously capture some statistics about what’s being uploaded. To that end, we are using some package filter rules to identify particular frameworks and languages. Obviously, if a specific framework is not in the rule set, it will not be identified. To date, our rule set has been able to identify known frameworks/languages in 36% of the applications, so there are certainly improvements we could make. (If there is interest, we could make the ruleset available as a public Git repo so it can be further enhanced by specific framework/language communities.)

Build-stage

First surprise, ANT is still very much used as a build tool for the apps deployed to CloudBees:

If we had been able to analyze the content of more applications, would the result have been different? Possibly, but this result was very surprising to me given the notoriety enjoyed by Maven, including in our mailing lists.

Libraries

In terms of libraries, I’m listing here the top 20 we’ve identified. Obviously they are not mutually exclusive (i.e. you could use log4j, Hibernate and Spring in the same application!) and some libraries also come with their own implicit dependencies:

Languages and frameworks

We also looked at what type of JVM-based languages and frameworks were being run on the platform and here are the results:

I do not find those numbers particularly high. It might be interesting, in a later post, to remove the “sample apps” that new subscribers can easily deploy as they might impact those numbers for no good reason.

Note: we might be missing a rule in our rule set since Lift apps should bring a Scala dependency.

Various Statistics

We can also compute some other statistics which don’t necessarily add much in terms of comparison but which can be interesting nevertheless. Here are some of them:

The application that has the most JARs contains … 353 JARs

The application that has been active the longest on the platform is more than 1,100 days old (it means they just passed their 3 years mark!) , with a few older than 1,000 days

I don't think any of the tools would bias it quite like this - it is surprising. We have tools for pretty much every framework, a CLI, eclipse plugin and maven plugin - I would have thought the maven plugin would increase that slice - there is nothing ant specific, that is for sure ! Very interesting.