{"id":338,"date":"2012-07-13T18:38:36","date_gmt":"2012-07-13T23:38:36","guid":{"rendered":"http:\/\/redmonk.com\/dberkholz\/?p=338"},"modified":"2012-07-13T18:38:36","modified_gmt":"2012-07-13T23:38:36","slug":"measure-success-by-merges-not-forks","status":"publish","type":"post","link":"https:\/\/redmonk.com\/dberkholz\/2012\/07\/13\/measure-success-by-merges-not-forks\/","title":{"rendered":"Measure success by merges, not forks"},"content":{"rendered":"<p>GitHub has enabled a new type of development that&#8217;s not just distributed, as provided by the underlying software Git, but also social. Suddenly, it&#8217;s absolutely trivial to find interesting software, fork it, and hack around. It&#8217;s not difficult to find examples of projects with 50 or more forks, and a number exist with hundreds or more (Linux has <a href=\"https:\/\/github.com\/torvalds\/linux\">nearly a thousand<\/a>).<\/p>\n<p>But here&#8217;s the problem, and it&#8217;s a problem I encountered regularly with Gentoo&#8217;s internship program. <strong>It&#8217;s not forking that&#8217;s the hard part, it&#8217;s merging.<\/strong> Hacking around in a codebase is a long, long way from a fork that&#8217;s in mergeable status, with good architecture, clean code, and helpful documentation.<\/p>\n<p>Merging code is a particularly egregious problem with corporate-driven open-source software, because the company behind it may have processes in place behind the firewall, lawyers complaining about copyrights, and so on.<\/p>\n<p>Therefore I submit that the true measure of an open-source project is the ability to merge code regularly &#8212; reviewing all of the open pull requests and acting on the ones that are ready to join the primary codebase. <strong>When you&#8217;ve got an active community of contributors but fail to accept their contributions, what do you think will happen?<\/strong> Someone is going to fork not just your code, but also your community &#8212; you&#8217;ve lost control of the project entirely and there&#8217;s a new <a href=\"http:\/\/en.wikipedia.org\/wiki\/Benevolent_Dictator_for_Life\">BDFL<\/a> in town.<\/p>\n<p>This is why it&#8217;s so important to get open-source governance right, and to truly behave as an open-source project, not just throw open-source code over the fence.<\/p>\n<div class=\"acc_license\"><a href=\"http:\/\/creativecommons.org\/licenses\/by-sa\/3.0\/\"><img decoding=\"async\" src=\"http:\/\/i.creativecommons.org\/l\/by-sa\/3.0\/88x31.png\" alt=\"by-sa\" \/><\/a><\/div><!--<rdf:RDF xmlns=\"http:\/\/creativecommons.org\/ns#\" xmlns:dc=\"http:\/\/purl.org\/dc\/elements\/1.1\/\" xmlns:rdf=\"http:\/\/www.w3.org\/1999\/02\/22-rdf-syntax-ns#\"><Work rdf:about=\"\"><license rdf:resource=\"http:\/\/creativecommons.org\/licenses\/by-sa\/3.0\/\" \/><\/Work><License rdf:about=\"http:\/\/creativecommons.org\/licenses\/by-sa\/3.0\/\"><requires rdf:resource=\"http:\/\/creativecommons.org\/ns#Attribution\" \/><permits rdf:resource=\"http:\/\/creativecommons.org\/ns#Reproduction\" \/><permits rdf:resource=\"http:\/\/creativecommons.org\/ns#Distribution\" \/><permits rdf:resource=\"http:\/\/creativecommons.org\/ns#DerivativeWorks\" \/><requires rdf:resource=\"http:\/\/creativecommons.org\/ns#ShareAlike\" \/><requires rdf:resource=\"http:\/\/creativecommons.org\/ns#Notice\" \/><\/License><\/rdf:RDF>-->","protected":false},"excerpt":{"rendered":"<p>GitHub has enabled a new type of development that&#8217;s not just distributed, as provided by the underlying software Git, but also social. Suddenly, it&#8217;s absolutely trivial to find interesting software, fork it, and hack around. It&#8217;s not difficult to find examples of projects with 50 or more forks, and a number exist with hundreds or<\/p>\n","protected":false},"author":6,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"spay_email":"","footnotes":"","jetpack_publicize_message":"","jetpack_is_tweetstorm":false},"categories":[13,1],"tags":[],"class_list":["post-338","post","type-post","status-publish","format-standard","hentry","category-open-source","category-uncategorized"],"jetpack_featured_media_url":"","jetpack_publicize_connections":[],"jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p23Tsn-5s","_links":{"self":[{"href":"https:\/\/redmonk.com\/dberkholz\/wp-json\/wp\/v2\/posts\/338","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/redmonk.com\/dberkholz\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/redmonk.com\/dberkholz\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/redmonk.com\/dberkholz\/wp-json\/wp\/v2\/users\/6"}],"replies":[{"embeddable":true,"href":"https:\/\/redmonk.com\/dberkholz\/wp-json\/wp\/v2\/comments?post=338"}],"version-history":[{"count":0,"href":"https:\/\/redmonk.com\/dberkholz\/wp-json\/wp\/v2\/posts\/338\/revisions"}],"wp:attachment":[{"href":"https:\/\/redmonk.com\/dberkholz\/wp-json\/wp\/v2\/media?parent=338"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/redmonk.com\/dberkholz\/wp-json\/wp\/v2\/categories?post=338"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/redmonk.com\/dberkholz\/wp-json\/wp\/v2\/tags?post=338"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}