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.)
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.
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.
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
- The application with the longest name has … 58 characters :)
Let us know if there are any other stats you’d like to see!