While looking to see what made it into the upcoming 2.9 beta release of Evergreen, I had a suspicion that something unprecedented had happened. I ran some numbers, and it turns out I was right.
Evergreen 2.9 will feature fewer zombies.
Considering that I’m sitting in a hotel room taking a break from Sasquan, the 2015 World Science Fiction Convention, zombies may be an appropriate theme.
But to put it more mundanely, and to reveal the unprecedented bit: more files were deleted in the course of developing Evergreen 2.9 (as compared to the previous stable version) than entirely new files were added.
To reiterate: Evergreen 2.9 will ship with fewer files, even though it includes numerous improvements, including a big chunk of the cataloging section of the web staff client.
Here’s a table counting the number of new files, deleted files, and files that were renamed or moved from the last release in a stable series to the first release in the next series.
Between release… | … and release | Entirely new files | Files deleted | Files renamed |
rel_1_6_2_3 | rel_2_0_0 | 1159 | 75 | 145 |
rel_2_0_12 | rel_2_1_0 | 201 | 75 | 176 |
rel_2_1_6 | rel_2_2_0 | 519 | 61 | 120 |
rel_2_2_9 | rel_2_3_0 | 215 | 137 | 2 |
rel_2_3_12 | rel_2_4_0 | 125 | 30 | 8 |
rel_2_4_6 | rel_2_5_0 | 143 | 14 | 1 |
rel_2_5_9 | rel_2_6_0 | 83 | 31 | 4 |
rel_2_6_7 | rel_2_7_0 | 239 | 51 | 4 |
rel_2_7_7 | rel_2_8_0 | 84 | 30 | 15 |
rel_2_8_2 | master | 99 | 277 | 0 |
The counts were made using git diff --summary --find-rename FROM..TO | awk '{print $1}' | sort | uniq -c
and ignoring file mode changes. For example, to get the counts between release 2.8.2 and the master branch as of this post, I did:
$ git diff --summary --find-renames origin/tags/rel_2_8_2..master|awk '{print $1}'|sort|uniq -c 99 create 277 delete 1 mode
Why am I so excited about this? It means that we’ve made significant progress in getting rid of old code that used to serve a purpose, but no longer does. Dead code may not seem so bad — it just sits there, right? — but like a zombie, it has a way of going after developers’ brains. Want to add a feature or fix a bug? Zombies in the code base can sometimes look like they’re still alive — but time spent fixing bugs in dead code is, of course, wasted. For that matter, time spent double-checking whether a section of code is a zombie or not is time wasted.
Best for the zombies to go away — and kudos to Bill Erickson, Jeff Godin, and Jason Stephenson in particular for removing the remnants of Craftsman, script-based circulation rules, and JSPac from Evergreen 2.9.
Evergreen 2.9: now with fewer zombies by Galen Charlton is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.