{"id":8205,"date":"2018-11-27T15:13:06","date_gmt":"2018-11-27T20:13:06","guid":{"rendered":"http:\/\/esr.ibiblio.org\/?p=8205"},"modified":"2018-11-27T19:10:03","modified_gmt":"2018-11-28T00:10:03","slug":"src-four-years-later","status":"publish","type":"post","link":"http:\/\/esr.ibiblio.org\/?p=8205","title":{"rendered":"SRC, four years later"},"content":{"rendered":"<p>Four years ago, I <a href=\"http:\/\/esr.ibiblio.org\/?p=6502\">wrote an entire version-control system<\/a> in a 14-hour burst of inspiration.  It&#8217;s a small, lightweight tool designed for solo single-file projects that allows several histories to coexist in a single directory &#8211; good for \/etc files, HOWTOs, or that script collection in your ~\/bin directory.<\/p>\n<p>I wasn&#8217;t certain, at the time, that the concept would prove out as a production tool for anyone but me.  But it did.  Here are some statistics: Over 4 years, 21 point releases, 644 commits, 11 committers. Six issues filed by five different users, 20 merge requests. I know of about half a dozen users who&#8217;ve raised their hands on IRC or in blog comments.  Code has about quintupled in size from the first alpha release (0.1, 513 lines) to 2757 lines today.<\/p>\n<p>That is the statistical profile of a modest success &#8211; in fact the developer roster is larger than I realized before I went back through the logs.  The main thing looking at the history reveals is that there&#8217;s a user community out there that has been sending a steady trickle of minor bug reports and enhancement requests over the whole life of the project.  This is a lot more encouraging than dead air would be.<\/p>\n<p>Of course I don&#8217;t now how many <em>total<\/em> users SRC has.  But we can base a guess on fanout patterns observed when other projects (usually much larger ones) have done polls to try to measure userbase size.  A sound extrapolation would be somewhere between one and two orders of magnitude more than have made themselves visible &#8211; so, somewhere between about 200 and 2000.<\/p>\n<p>(There seems to be something like an exponential scaling law at work here. For random open source project X old enough to have passed the sudden-infant-death filter, if there&#8217;s an identifiable core dev group in the single-digit range you can generally expect the casual contributors to be about 10x more and the userbase to be at least 100x more.)<\/p>\n<p>SRC has held up pretty well as a design exercise, too.  I&#8217;ve had complaints about minor bugs in the UI, but nobody bitching about the UI itself. Credit to the Subversion developers I swiped most of the UI design from; their data model may be obsolete, but nobody in VCS-land has done better at UI and I was at least smart enough not to try.<\/p>\n<p>2.7KLOC is nicely compact for an entire version-control system supporting both RCS and SCCS back ends.  I don&#8217;t expect it to get much larger; there are only two minor items left on the to-do list, neither of which should add significant lines of code.<\/p>\n<p>Today I&#8217;m shipping <a href=\"http:\/\/www.catb.org\/esr\/src\/\">1.21<\/a>.  With gratitude to everyone that helped improve it.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Four years ago, I wrote an entire version-control system in a 14-hour burst of inspiration. It&#8217;s a small, lightweight tool designed for solo single-file projects that allows several histories to coexist in a single directory &#8211; good for \/etc files, HOWTOs, or that script collection in your ~\/bin directory. I wasn&#8217;t certain, at the time,&hellip; <a class=\"more-link\" href=\"http:\/\/esr.ibiblio.org\/?p=8205\">Continue reading <span class=\"screen-reader-text\">SRC, four years later<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[13],"tags":[46],"class_list":["post-8205","post","type-post","status-publish","format-standard","hentry","category-software","tag-version-control","entry"],"_links":{"self":[{"href":"http:\/\/esr.ibiblio.org\/index.php?rest_route=\/wp\/v2\/posts\/8205","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/esr.ibiblio.org\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/esr.ibiblio.org\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/esr.ibiblio.org\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"http:\/\/esr.ibiblio.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=8205"}],"version-history":[{"count":2,"href":"http:\/\/esr.ibiblio.org\/index.php?rest_route=\/wp\/v2\/posts\/8205\/revisions"}],"predecessor-version":[{"id":8207,"href":"http:\/\/esr.ibiblio.org\/index.php?rest_route=\/wp\/v2\/posts\/8205\/revisions\/8207"}],"wp:attachment":[{"href":"http:\/\/esr.ibiblio.org\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=8205"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/esr.ibiblio.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=8205"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/esr.ibiblio.org\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=8205"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}