Just how big is Subversion anyway?
I thought it might be interesting to see how the size of the Subversion codebase has increased over time. It’s actually quite a lot: the current trunk is 70% larger than Subversion 1.0, and, given that Subversion’s “1.0” meant essentially ‘feature complete, won’t eat your data’, that means that collectively the committers have written nearly as much code again to improve it since declaring 1.0.
Here’s a picture to show you what I’m talking about1:
There’s a few interesting things to note about this graph:
- Firstly, the frequency of releases has slowed way down since 1.0. That’s pretty much to be expected, since all the 0.x releases were really alphas or betas. However, since 1.0, we’ve released ‘proper’ releases at a fairly constant rate.
- Secondly, while it felt like 1.1 and 1.2 were the ‘big’ releases, providing a new filesystem — FSFS — and locking respectively, it looks like 1.3 was almost as large in terms of code, and 1.4 even larger.
- Finally, right now
trunk
has less extra code than I’d expect. Then again, I haven’t included the ‘merge tracking’ or ‘sparse directories’ branches, both of which are scheduled to be merged before 1.5.0. Another reason is that a lot of the work on trunk has been simplification: more code isn’t always better.
-
The graph shows the number of lines in all source files (files with extensions
c
,cpp
,el
,h
,i
,in
,java
,pl
,py
,rb
,swg
) from each tag stored in the Subversion repository. It excludes 1.0.9 (released after 1.1.0) and all release candidates. ↩