{"id":1140,"date":"2015-08-19T18:57:37","date_gmt":"2015-08-20T01:57:37","guid":{"rendered":"https:\/\/galencharlton.com\/blog\/?p=1140"},"modified":"2015-08-19T18:57:37","modified_gmt":"2015-08-20T01:57:37","slug":"evergreen-2-9-now-with-fewer-zombies","status":"publish","type":"post","link":"https:\/\/galencharlton.com\/blog\/2015\/08\/evergreen-2-9-now-with-fewer-zombies\/","title":{"rendered":"Evergreen 2.9: now with fewer zombies"},"content":{"rendered":"<p>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.<\/p>\n<p>Evergreen 2.9 will feature fewer zombies.<\/p>\n<p>Considering that I&#8217;m sitting in a hotel room taking a break from Sasquan, the 2015 World Science Fiction Convention, zombies may be an appropriate theme.<\/p>\n<p>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.<\/p>\n<p>To reiterate: Evergreen 2.9 will ship with <i>fewer<\/i> files, even though it includes numerous improvements, including a big chunk of the cataloging section of the web staff client.<\/p>\n<p>Here&#8217;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.<\/p>\n<table dir=\"ltr\" border=\"1\" cellspacing=\"0\" cellpadding=\"0\">\n<colgroup>\n<col width=\"100\" \/>\n<col width=\"100\" \/>\n<col width=\"100\" \/>\n<col width=\"100\" \/>\n<col width=\"100\" \/><\/colgroup>\n<tbody>\n<tr>\n<td data-sheets-value=\"[null,2,&quot;From&quot;]\"><strong>Between release&#8230;<\/strong><\/td>\n<td data-sheets-value=\"[null,2,&quot;To&quot;]\"><b>&#8230; and release<\/b><\/td>\n<td data-sheets-value=\"[null,2,&quot;Entirely new&quot;]\"><strong>Entirely new files<\/strong><\/td>\n<td data-sheets-value=\"[null,2,&quot;Deleted&quot;]\"><strong>Files deleted<\/strong><\/td>\n<td data-sheets-value=\"[null,2,&quot;Renamed&quot;]\"><strong>Files renamed<\/strong><\/td>\n<\/tr>\n<tr>\n<td data-sheets-value=\"[null,2,&quot;rel_1_6_2_3&quot;]\">rel_1_6_2_3<\/td>\n<td data-sheets-value=\"[null,2,&quot;rel_2_0_0&quot;]\">rel_2_0_0<\/td>\n<td data-sheets-value=\"[null,3,null,1159]\">1159<\/td>\n<td data-sheets-value=\"[null,3,null,75]\">75<\/td>\n<td data-sheets-value=\"[null,3,null,145]\">145<\/td>\n<\/tr>\n<tr>\n<td data-sheets-value=\"[null,2,&quot;rel_2_0_12&quot;]\">rel_2_0_12<\/td>\n<td data-sheets-value=\"[null,2,&quot;rel_2_1_0&quot;]\">rel_2_1_0<\/td>\n<td data-sheets-value=\"[null,3,null,201]\">201<\/td>\n<td data-sheets-value=\"[null,3,null,75]\">75<\/td>\n<td data-sheets-value=\"[null,3,null,176]\">176<\/td>\n<\/tr>\n<tr>\n<td data-sheets-value=\"[null,2,&quot;rel_2_1_6&quot;]\">rel_2_1_6<\/td>\n<td data-sheets-value=\"[null,2,&quot;rel_2_2_0&quot;]\">rel_2_2_0<\/td>\n<td data-sheets-value=\"[null,3,null,519]\">519<\/td>\n<td data-sheets-value=\"[null,3,null,61]\">61<\/td>\n<td data-sheets-value=\"[null,3,null,120]\">120<\/td>\n<\/tr>\n<tr>\n<td data-sheets-value=\"[null,2,&quot;rel_2_2_9&quot;]\">rel_2_2_9<\/td>\n<td data-sheets-value=\"[null,2,&quot;rel_2_3_0&quot;]\">rel_2_3_0<\/td>\n<td data-sheets-value=\"[null,3,null,215]\">215<\/td>\n<td data-sheets-value=\"[null,3,null,137]\">137<\/td>\n<td data-sheets-value=\"[null,3,null,2]\">2<\/td>\n<\/tr>\n<tr>\n<td data-sheets-value=\"[null,2,&quot;rel_2_3_12&quot;]\">rel_2_3_12<\/td>\n<td data-sheets-value=\"[null,2,&quot;rel_2_4_0&quot;]\">rel_2_4_0<\/td>\n<td data-sheets-value=\"[null,3,null,125]\">125<\/td>\n<td data-sheets-value=\"[null,3,null,30]\">30<\/td>\n<td data-sheets-value=\"[null,3,null,8]\">8<\/td>\n<\/tr>\n<tr>\n<td data-sheets-value=\"[null,2,&quot;rel_2_4_6&quot;]\">rel_2_4_6<\/td>\n<td data-sheets-value=\"[null,2,&quot;rel_2_5_0&quot;]\">rel_2_5_0<\/td>\n<td data-sheets-value=\"[null,3,null,143]\">143<\/td>\n<td data-sheets-value=\"[null,3,null,14]\">14<\/td>\n<td data-sheets-value=\"[null,3,null,1]\">1<\/td>\n<\/tr>\n<tr>\n<td data-sheets-value=\"[null,2,&quot;rel_2_5_9&quot;]\">rel_2_5_9<\/td>\n<td data-sheets-value=\"[null,2,&quot;rel_2_6_0&quot;]\">rel_2_6_0<\/td>\n<td data-sheets-value=\"[null,3,null,83]\">83<\/td>\n<td data-sheets-value=\"[null,3,null,31]\">31<\/td>\n<td data-sheets-value=\"[null,3,null,4]\">4<\/td>\n<\/tr>\n<tr>\n<td data-sheets-value=\"[null,2,&quot;rel_2_6_7&quot;]\">rel_2_6_7<\/td>\n<td data-sheets-value=\"[null,2,&quot;rel_2_7_0&quot;]\">rel_2_7_0<\/td>\n<td data-sheets-value=\"[null,3,null,239]\">239<\/td>\n<td data-sheets-value=\"[null,3,null,51]\">51<\/td>\n<td data-sheets-value=\"[null,3,null,4]\">4<\/td>\n<\/tr>\n<tr>\n<td data-sheets-value=\"[null,2,&quot;rel_2_7_7&quot;]\">rel_2_7_7<\/td>\n<td data-sheets-value=\"[null,2,&quot;rel_2_8_0&quot;]\">rel_2_8_0<\/td>\n<td data-sheets-value=\"[null,3,null,84]\">84<\/td>\n<td data-sheets-value=\"[null,3,null,30]\">30<\/td>\n<td data-sheets-value=\"[null,3,null,15]\">15<\/td>\n<\/tr>\n<tr>\n<td data-sheets-value=\"[null,2,&quot;rel_2_8_2&quot;]\">rel_2_8_2<\/td>\n<td data-sheets-value=\"[null,2,&quot;master&quot;]\">master<\/td>\n<td data-sheets-value=\"[null,3,null,99]\">99<\/td>\n<td data-sheets-value=\"[null,3,null,277]\"><span style=\"color: #ff0000;\"><strong>277<\/strong><\/span><\/td>\n<td data-sheets-value=\"[null,3,null,0]\">0<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>The counts were made using <code>git diff --summary --find-rename <em>FROM<\/em>..<em>TO<\/em> | awk '{print $1}' | sort | uniq -c<\/code> 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:<\/p>\n<pre>\r\n$ git diff --summary  --find-renames origin\/tags\/rel_2_8_2..master|awk '{print $1}'|sort|uniq -c\r\n     99 create\r\n    277 delete\r\n      1 mode\r\n<\/pre>\n<p>Why am I so excited about this? It means that we&#8217;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 &mdash; it just sits there, right? &mdash; but like a zombie, it has a way of going after developers&#8217; brains.  Want to add a feature or fix a bug?  Zombies in the code base can sometimes look like they&#8217;re still alive &mdash; 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.<\/p>\n<p>Best for the zombies to go away &mdash; 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.<\/p>\n<div class=\"sharedaddy sd-sharing-enabled\"><div class=\"robots-nocontent sd-block sd-social sd-social-icon-text sd-sharing\"><h3 class=\"sd-title\">Share this:<\/h3><div class=\"sd-content\"><ul><li class=\"share-twitter\"><a rel=\"nofollow noopener noreferrer\" data-shared=\"sharing-twitter-1140\" class=\"share-twitter sd-button share-icon\" href=\"https:\/\/galencharlton.com\/blog\/2015\/08\/evergreen-2-9-now-with-fewer-zombies\/?share=twitter\" target=\"_blank\" title=\"Click to share on Twitter\"><span>Twitter<\/span><\/a><\/li><li><a href=\"#\" class=\"sharing-anchor sd-button share-more\"><span>More<\/span><\/a><\/li><li class=\"share-end\"><\/li><\/ul><div class=\"sharing-hidden\"><div class=\"inner\" style=\"display: none;\"><ul><li class=\"share-tumblr\"><a rel=\"nofollow noopener noreferrer\" data-shared=\"\" class=\"share-tumblr sd-button share-icon\" href=\"https:\/\/galencharlton.com\/blog\/2015\/08\/evergreen-2-9-now-with-fewer-zombies\/?share=tumblr\" target=\"_blank\" title=\"Click to share on Tumblr\"><span>Tumblr<\/span><\/a><\/li><li class=\"share-reddit\"><a rel=\"nofollow noopener noreferrer\" data-shared=\"\" class=\"share-reddit sd-button share-icon\" href=\"https:\/\/galencharlton.com\/blog\/2015\/08\/evergreen-2-9-now-with-fewer-zombies\/?share=reddit\" target=\"_blank\" title=\"Click to share on Reddit\"><span>Reddit<\/span><\/a><\/li><li class=\"share-end\"><\/li><li class=\"share-print\"><a rel=\"nofollow noopener noreferrer\" data-shared=\"\" class=\"share-print sd-button share-icon\" href=\"https:\/\/galencharlton.com\/blog\/2015\/08\/evergreen-2-9-now-with-fewer-zombies\/\" target=\"_blank\" title=\"Click to print\"><span>Print<\/span><\/a><\/li><li class=\"share-end\"><\/li><\/ul><\/div><\/div><\/div><\/div><\/div>","protected":false},"excerpt":{"rendered":"<p>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&#8230;<\/p>\n<div class=\"sharedaddy sd-sharing-enabled\"><div class=\"robots-nocontent sd-block sd-social sd-social-icon-text sd-sharing\"><h3 class=\"sd-title\">Share this:<\/h3><div class=\"sd-content\"><ul><li class=\"share-twitter\"><a rel=\"nofollow noopener noreferrer\" data-shared=\"sharing-twitter-1140\" class=\"share-twitter sd-button share-icon\" href=\"https:\/\/galencharlton.com\/blog\/2015\/08\/evergreen-2-9-now-with-fewer-zombies\/?share=twitter\" target=\"_blank\" title=\"Click to share on Twitter\"><span>Twitter<\/span><\/a><\/li><li><a href=\"#\" class=\"sharing-anchor sd-button share-more\"><span>More<\/span><\/a><\/li><li class=\"share-end\"><\/li><\/ul><div class=\"sharing-hidden\"><div class=\"inner\" style=\"display: none;\"><ul><li class=\"share-tumblr\"><a rel=\"nofollow noopener noreferrer\" data-shared=\"\" class=\"share-tumblr sd-button share-icon\" href=\"https:\/\/galencharlton.com\/blog\/2015\/08\/evergreen-2-9-now-with-fewer-zombies\/?share=tumblr\" target=\"_blank\" title=\"Click to share on Tumblr\"><span>Tumblr<\/span><\/a><\/li><li class=\"share-reddit\"><a rel=\"nofollow noopener noreferrer\" data-shared=\"\" class=\"share-reddit sd-button share-icon\" href=\"https:\/\/galencharlton.com\/blog\/2015\/08\/evergreen-2-9-now-with-fewer-zombies\/?share=reddit\" target=\"_blank\" title=\"Click to share on Reddit\"><span>Reddit<\/span><\/a><\/li><li class=\"share-end\"><\/li><li class=\"share-print\"><a rel=\"nofollow noopener noreferrer\" data-shared=\"\" class=\"share-print sd-button share-icon\" href=\"https:\/\/galencharlton.com\/blog\/2015\/08\/evergreen-2-9-now-with-fewer-zombies\/\" target=\"_blank\" title=\"Click to print\"><span>Print<\/span><\/a><\/li><li class=\"share-end\"><\/li><\/ul><\/div><\/div><\/div><\/div><\/div>","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"spay_email":"","jetpack_publicize_message":"Evergreen 2.9: now with fewer zombies https:\/\/wp.me\/p3gJ9y-io #evgils","jetpack_is_tweetstorm":false},"categories":[18],"tags":[],"jetpack_featured_media_url":"","jetpack_publicize_connections":[],"jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p3gJ9y-io","_links":{"self":[{"href":"https:\/\/galencharlton.com\/blog\/wp-json\/wp\/v2\/posts\/1140"}],"collection":[{"href":"https:\/\/galencharlton.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/galencharlton.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/galencharlton.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/galencharlton.com\/blog\/wp-json\/wp\/v2\/comments?post=1140"}],"version-history":[{"count":6,"href":"https:\/\/galencharlton.com\/blog\/wp-json\/wp\/v2\/posts\/1140\/revisions"}],"predecessor-version":[{"id":1146,"href":"https:\/\/galencharlton.com\/blog\/wp-json\/wp\/v2\/posts\/1140\/revisions\/1146"}],"wp:attachment":[{"href":"https:\/\/galencharlton.com\/blog\/wp-json\/wp\/v2\/media?parent=1140"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/galencharlton.com\/blog\/wp-json\/wp\/v2\/categories?post=1140"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/galencharlton.com\/blog\/wp-json\/wp\/v2\/tags?post=1140"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}