{"id":1964,"date":"2015-04-02T09:48:24","date_gmt":"2015-04-02T14:48:24","guid":{"rendered":"http:\/\/redmonk.com\/dberkholz\/?p=1964"},"modified":"2015-04-01T23:42:47","modified_gmt":"2015-04-02T04:42:47","slug":"quantifying-configuration-management-communities","status":"publish","type":"post","link":"https:\/\/redmonk.com\/dberkholz\/2015\/04\/02\/quantifying-configuration-management-communities\/","title":{"rendered":"The breakout of Ansible, and the state of config-management communities"},"content":{"rendered":"<p>TL;DR:<\/p>\n<ul>\n<li>Chef is dev-biased, Puppet is ops-biased<\/li>\n<li>Ansible is growing like crazy<\/li>\n<li>CFEngine activity is minimal<\/li>\n<li>But &#8230; Docker Docker Docker<\/li>\n<\/ul>\n<p>In February, I gave a talk at <a href=\"http:\/\/cfgmgmtcamp.eu\/\">cfgmgmtcamp<\/a> on trends in configuration-management communities. I wanted to post the data and provide a bit more context than I did on <a href=\"http:\/\/www.slideshare.net\/dberkholz\/is-your-community-healthy-metrics-on-the-top-cm-software\">Slideshare<\/a>.<\/p>\n<p>My goal was to examine a variety of community metrics across configuration-management frameworks to provide an update on the work that Steve did back in <a href=\"http:\/\/redmonk.com\/sogrady\/2013\/12\/06\/configuration-management-2013\/\">2013<\/a>.<\/p>\n<p>For starters, here&#8217;s a look at the development communities for the core software. While this ignores third-party modules, it does say a lot about the amount of change to the core codebases:<\/p>\n<p><a href=\"http:\/\/dberkholz-media.redmonk.com\/dberkholz\/files\/2015\/04\/github_stats.png\"><img loading=\"lazy\" decoding=\"async\" data-attachment-id=\"1965\" data-permalink=\"https:\/\/redmonk.com\/dberkholz\/2015\/04\/02\/quantifying-configuration-management-communities\/github_stats\/\" data-orig-file=\"https:\/\/redmonk.com\/dberkholz\/files\/2015\/04\/github_stats.png\" data-orig-size=\"1067,955\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"github_stats\" data-image-description=\"\" data-medium-file=\"https:\/\/redmonk.com\/dberkholz\/files\/2015\/04\/github_stats-300x269.png\" data-large-file=\"https:\/\/redmonk.com\/dberkholz\/files\/2015\/04\/github_stats-1024x917.png\" class=\"aligncenter wp-image-1965 size-medium\" src=\"http:\/\/dberkholz-media.redmonk.com\/dberkholz\/files\/2015\/04\/github_stats-300x269.png\" alt=\"github_stats\" width=\"300\" height=\"269\" \/><\/a>It&#8217;s worth noting that in Salt, everything is done via pull requests, even from existing developers, so that number is a bit inflated. However, there&#8217;s a pretty clear correlation between age of the framework and activity in the core. CFEngine released 1.0 in 1993 and it&#8217;s fairly slow today; Puppet and Chef date to the mid-&#8217;00s and they&#8217;re in the middle; while Salt and Ansible are just a few years old and remain quite active in the core.<\/p>\n<p>But it&#8217;s hard to get a feel for trends without plotting this over time, so I did:<\/p>\n<p><a href=\"http:\/\/dberkholz-media.redmonk.com\/dberkholz\/files\/2015\/04\/all_github.png\"><img loading=\"lazy\" decoding=\"async\" data-attachment-id=\"1966\" data-permalink=\"https:\/\/redmonk.com\/dberkholz\/2015\/04\/02\/quantifying-configuration-management-communities\/all_github\/\" data-orig-file=\"https:\/\/redmonk.com\/dberkholz\/files\/2015\/04\/all_github.png\" data-orig-size=\"1636,901\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"all_github\" data-image-description=\"\" data-medium-file=\"https:\/\/redmonk.com\/dberkholz\/files\/2015\/04\/all_github-300x165.png\" data-large-file=\"https:\/\/redmonk.com\/dberkholz\/files\/2015\/04\/all_github-1024x564.png\" class=\"aligncenter wp-image-1966\" src=\"http:\/\/dberkholz-media.redmonk.com\/dberkholz\/files\/2015\/04\/all_github-1024x564.png\" alt=\"all_github\" width=\"500\" height=\"275\" \/><\/a><\/p>\n<p>Please note that the scales are different for Salt due in part to the inflated PR numbers. Again the numbers are not terribly surprising, with a shrinking CFEngine community, Puppet and Chef holding relative static, and Salt and Ansible growing at rates. However, Ansible has grown to around ~200 forks a month while Salt grew to around ~100\/month. This indicates a significant difference in activity across the two that&#8217;s also largely supported by stars and PRs.<\/p>\n<p>However, core development is not necessarily reflective of the entire community, so the next data source I examined was mailing-list activity on the development list:<\/p>\n<p><a href=\"http:\/\/dberkholz-media.redmonk.com\/dberkholz\/files\/2015\/04\/mailing_lists.png\"><img loading=\"lazy\" decoding=\"async\" data-attachment-id=\"1967\" data-permalink=\"https:\/\/redmonk.com\/dberkholz\/2015\/04\/02\/quantifying-configuration-management-communities\/mailing_lists\/\" data-orig-file=\"https:\/\/redmonk.com\/dberkholz\/files\/2015\/04\/mailing_lists.png\" data-orig-size=\"1067,870\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"mailing_lists\" data-image-description=\"\" data-medium-file=\"https:\/\/redmonk.com\/dberkholz\/files\/2015\/04\/mailing_lists-300x245.png\" data-large-file=\"https:\/\/redmonk.com\/dberkholz\/files\/2015\/04\/mailing_lists-1024x835.png\" class=\"aligncenter wp-image-1967\" src=\"http:\/\/dberkholz-media.redmonk.com\/dberkholz\/files\/2015\/04\/mailing_lists-1024x835.png\" alt=\"mailing_lists\" width=\"400\" height=\"326\" \/><\/a><\/p>\n<p>In keeping with the other data, over the course of 2014 CFEngine lagged behind while Ansible charged ahead, with the others largely holding steady in the middle. There is a potential downward trend with Puppet to keep an eye on, although it&#8217;s unclear whether that will remain the case given the amount of noise in this data.<\/p>\n<p>The next data source I looked at was the IRC community. This is the first source that&#8217;s suggestive of anecdotal sayings that Puppet is for ops and Chef is for developers, as IRC tends to be a more old-school chat tool. It&#8217;s otherwise broadly in line with the others:<\/p>\n<p><a href=\"http:\/\/dberkholz-media.redmonk.com\/dberkholz\/files\/2015\/04\/irc_stats.png\"><img loading=\"lazy\" decoding=\"async\" data-attachment-id=\"1968\" data-permalink=\"https:\/\/redmonk.com\/dberkholz\/2015\/04\/02\/quantifying-configuration-management-communities\/irc_stats\/\" data-orig-file=\"https:\/\/redmonk.com\/dberkholz\/files\/2015\/04\/irc_stats.png\" data-orig-size=\"1067,940\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"irc_stats\" data-image-description=\"\" data-medium-file=\"https:\/\/redmonk.com\/dberkholz\/files\/2015\/04\/irc_stats-300x264.png\" data-large-file=\"https:\/\/redmonk.com\/dberkholz\/files\/2015\/04\/irc_stats-1024x902.png\" class=\"aligncenter wp-image-1968\" src=\"http:\/\/dberkholz-media.redmonk.com\/dberkholz\/files\/2015\/04\/irc_stats-1024x902.png\" alt=\"irc_stats\" width=\"350\" height=\"308\" \/><\/a><\/p>\n<p>In contrast, for a developer-leaning audience I took a look at Hacker News. This is has potential artifacts for Salt (due to salted password hashing) but that doesn&#8217;t appear to be a major issue. While the reason downward trend in many frameworks over the past couple of years is unclear, what&#8217;s absolutely clear is the growth in Ansible activity and the relative dearth of CFEngine conversation. In addition, Chef has a slight advantage over Puppet in this developer-heavy audience.<\/p>\n<p><a href=\"http:\/\/dberkholz-media.redmonk.com\/dberkholz\/files\/2015\/04\/hacker_news_all.png\"><img loading=\"lazy\" decoding=\"async\" data-attachment-id=\"1969\" data-permalink=\"https:\/\/redmonk.com\/dberkholz\/2015\/04\/02\/quantifying-configuration-management-communities\/hacker_news_all\/\" data-orig-file=\"https:\/\/redmonk.com\/dberkholz\/files\/2015\/04\/hacker_news_all.png\" data-orig-size=\"1911,992\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"hacker_news_all\" data-image-description=\"\" data-medium-file=\"https:\/\/redmonk.com\/dberkholz\/files\/2015\/04\/hacker_news_all-300x156.png\" data-large-file=\"https:\/\/redmonk.com\/dberkholz\/files\/2015\/04\/hacker_news_all-1024x532.png\" class=\"aligncenter wp-image-1969\" src=\"http:\/\/dberkholz-media.redmonk.com\/dberkholz\/files\/2015\/04\/hacker_news_all-1024x532.png\" alt=\"hacker_news_all\" width=\"500\" height=\"260\" \/><\/a><\/p>\n<p>Finally, I did a comparison across Stack Overflow (a developer discussion forum) and Server Fault (an ops discussion forum), both of which are hosted on Stack Exchange. Intriguingly, the long-term trend showed that development-related discussion tends toward Chef while ops-related discussion tends toward Puppet, again supporting that differentiation.<\/p>\n<p><a href=\"http:\/\/dberkholz-media.redmonk.com\/dberkholz\/files\/2015\/04\/stackoverflow_vs_serverfault.png\"><img loading=\"lazy\" decoding=\"async\" data-attachment-id=\"1970\" data-permalink=\"https:\/\/redmonk.com\/dberkholz\/2015\/04\/02\/quantifying-configuration-management-communities\/stackoverflow_vs_serverfault\/\" data-orig-file=\"https:\/\/redmonk.com\/dberkholz\/files\/2015\/04\/stackoverflow_vs_serverfault.png\" data-orig-size=\"1666,477\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"stackoverflow_vs_serverfault\" data-image-description=\"\" data-medium-file=\"https:\/\/redmonk.com\/dberkholz\/files\/2015\/04\/stackoverflow_vs_serverfault-300x86.png\" data-large-file=\"https:\/\/redmonk.com\/dberkholz\/files\/2015\/04\/stackoverflow_vs_serverfault-1024x293.png\" class=\"aligncenter wp-image-1970\" src=\"http:\/\/dberkholz-media.redmonk.com\/dberkholz\/files\/2015\/04\/stackoverflow_vs_serverfault-1024x293.png\" alt=\"stackoverflow_vs_serverfault\" width=\"500\" height=\"143\" \/><\/a><\/p>\n<p>However, it&#8217;s worth setting some broader context. Let&#8217;s compare all of this to Docker:<\/p>\n<p><a href=\"http:\/\/dberkholz-media.redmonk.com\/dberkholz\/files\/2015\/04\/github_stats_plus_docker.png\"><img loading=\"lazy\" decoding=\"async\" data-attachment-id=\"1971\" data-permalink=\"https:\/\/redmonk.com\/dberkholz\/2015\/04\/02\/quantifying-configuration-management-communities\/github_stats_plus_docker\/\" data-orig-file=\"https:\/\/redmonk.com\/dberkholz\/files\/2015\/04\/github_stats_plus_docker.png\" data-orig-size=\"1067,942\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"github_stats_plus_docker\" data-image-description=\"\" data-medium-file=\"https:\/\/redmonk.com\/dberkholz\/files\/2015\/04\/github_stats_plus_docker-300x265.png\" data-large-file=\"https:\/\/redmonk.com\/dberkholz\/files\/2015\/04\/github_stats_plus_docker-1024x904.png\" class=\"aligncenter wp-image-1971\" src=\"http:\/\/dberkholz-media.redmonk.com\/dberkholz\/files\/2015\/04\/github_stats_plus_docker-1024x904.png\" alt=\"github_stats_plus_docker\" width=\"400\" height=\"353\" \/><\/a><\/p>\n<p>All this debate about configuration management may be dwarfed in the bigger picture by a move toward containers rather than configuration management. While the future of broader adoption is unclear, the dominant interest in containers among many leading-edge communities is inarguable.<\/p>\n<p><span style=\"color: #999999;\"><em><strong>Disclosures<\/strong>: Chef and AnsibleWorks are clients. Puppet has been. Docker, CFEngine, and SaltStack are not.<\/em><\/span><\/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>TL;DR: Chef is dev-biased, Puppet is ops-biased Ansible is growing like crazy CFEngine activity is minimal But &#8230; Docker Docker Docker In February, I gave a talk at cfgmgmtcamp on trends in configuration-management communities. I wanted to post the data and provide a bit more context than I did on Slideshare. My goal was to<\/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":[18,8,42,13],"tags":[],"class_list":["post-1964","post","type-post","status-publish","format-standard","hentry","category-community","category-devops","category-docker","category-open-source"],"jetpack_featured_media_url":"","jetpack_publicize_connections":[],"jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p23Tsn-vG","_links":{"self":[{"href":"https:\/\/redmonk.com\/dberkholz\/wp-json\/wp\/v2\/posts\/1964","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=1964"}],"version-history":[{"count":0,"href":"https:\/\/redmonk.com\/dberkholz\/wp-json\/wp\/v2\/posts\/1964\/revisions"}],"wp:attachment":[{"href":"https:\/\/redmonk.com\/dberkholz\/wp-json\/wp\/v2\/media?parent=1964"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/redmonk.com\/dberkholz\/wp-json\/wp\/v2\/categories?post=1964"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/redmonk.com\/dberkholz\/wp-json\/wp\/v2\/tags?post=1964"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}