The core idea
We wanted our pricing to be simple, reflect the value provided, and predictable (for budgeting purposes). Diffblue Cover is more valuable for large applications (it saves you more time and writes more code) than it is for smaller applications. The more code you have, the more tests Cover writes and maintains for you. This approach also allows you to start using Diffblue in smaller projects at a lower cost, and expand when budgets allow.
Secondly, lines of source code - excluding test code - is a simple figure to calculate: you can get the answer in one click in a product like SonarQube, or install and run the open source tool JaCoCo (which is what SonarQube runs under the covers) to get the number.
Thirdly, per-user pricing works well for “inner loop” development – the cycle of coding, compiling and testing that a developer does locally – but not so much for the “outer loop” – a Continuous Integration system or “software pipeline”. When Cover is run as part of CI to write and maintain tests automatically, how many users are there? Everyone who has access to the repo? Everyone who gets a test? Over what time period do we count the users? It gets complicated very quickly which is bad when you want pricing to be simple and predictable.
Customers also told us the per-user model gets complicated in larger organizations. They told us that they have many people working on different projects and it can be very fluid, with developers joining, leaving and moving across projects according to need or phase. Having to administer per-user licenses in that situation is tedious and time-consuming – the very problem Diffblue seeks to solve!
The net: We arrived at the lines-of-code model after conversations with customers about how per-user pricing was difficult to administer, and didn’t make much sense when Diffblue Cover was used in automated software pipelines. We realize that it’s a somewhat unusual model, but we are far from alone in using the LOC meter for pricing.
What is the definition of a line of code?
We use the same basic definition as JaCoCo: a line of code that is not whitespace or a comment, and is not a line of test code.
If you license by lines of code, why do you also limit users in some licenses?
For the Teams edition we have limits on lines of code and users so that we can bring down the prices of those editions. The user limit is for the “inner loop” – e.g., the IntelliJ plugin – and the line of code limit is for the project(s) overall.
How are plans licensed?
Commercial Editions of Diffblue Cover (Teams and Enterprise) are priced per instance per year and based on your lines of code (LOC). An instance is an installation of Diffblue Cover. You pay per instance for a maximum number of LOC to be tested.
How do we count lines of code?
You take the figure from the output of JaCoCo when run with standard “out of the box” settings on each project, and sum them to get the total.
What happens if we need to scale LOC / if my instance reaches limits?
We have Add-Ons available for both Teams and Enterprise editions.
For Teams, we can offer 200,000 additional LOC for $25,000 per annum.
For an Enterprise license, we can offer additional LOC in multiples of 1,000,000. Talk to sales to learn more.