The Pre-History: Foundations (2001—2011)
Ansible is the result of a lot of random events coming together, various tools existing implying that other tools should exist, and various natures of things pointing to other things. People’s collective interests in simplifying all of this converged at exactly the right place and the right time.
There is a desire to simplify the state of all these aspects of managing computers, and the nature of any systems management technology ultimately extends from the fact that Linux/Unix was not designed, but sort of happened. It is in the end a story of abstractions on top of abstractions when we can’t go back and rewrite an OS so that management is painless.
While many people want to keep adding more layers, the ethos of Ansible was originally about having a lot less layers.
The following history is a bit long, but explains a bit how this happened.
The RTP Systems Management Scene (2001)
Michael DeHaan created Ansible in 2012, but he was ever very interested specifically into systems management technology and didn’t have an IT background of really managing a server fleet himself. He was always more interested in software architecture, design, and programming and tended to work on backend server applications, but not exclusively.
Why there was so much systems management in RTP (where Michael worked) was interesting. We can mostly credit IBM, which is amusing because this story starts with an entity that would later grow to own Ansible some 15 years later.
In the early 2000s, the Research Triangle Park (RTP) region of North Carolina was home to numerous systems management companies , likely due to IBM’s presence there since the 1960s. After the Dot Com crash cost Michael DeHaan a job offer at Nortel in 2001, he ended up at IBM working on RAID controller management software. IBM would later sell that division to Adaptec — following IBM’s pattern of spinning off parts of itself, such as it would later sell the laptop and server divisions to Lenovo.
While most of his time was spent with C, C++, and Java, to fill the time in long Adaptec status meetings, he learned Ruby and upgraded his Perl, using both while getting involved more and more with the company build system.
This period was also a time seeing how the management tools the company was writing were somewhat impractical at scale. There was no way to use them to manage a batch of servers. It was very much a "server as pets" kind of situation.
Had the Java work not been arduous, his Ruby interest would not have happened, then Python would not have happened (as quickly) and … so on. This would become key as these languages would grow in popularity to build IT automation tools and open source projects in the near future.
Learning Python (2005-ish)
Right next door around the corner from Adaptec’s RTP office was a company called Integrian, which was working on early digital video solutions for recording what happens in front of police cars.
Integrian used Python extensively, including for GUI work. Michael joined Integrian working on utility GUI tools using wxWidgets in Python. It was a fantastic place to work for about six months before some VC actions decided to invest more in overseas locations.
Michael also met his friend Chris Church at Integrian — who would later help build the early Django backend for Ansible Tower and also (later) the first work on Ansible’s windows implementation.
Michael also learned a bit about how to manage engineering teams from how the engineering side of Integrian worked (and from counter-lessons from some other places later).
Michael ended up using his Python experience to join Red Hat.
Red Hat and the Emerging Technologies Group (~2006)
Michael joined Red Hat around 2006, working on systems management tools in the "Emerging Technologies Group". "ET" was a large organization but the systems management team was about five people within it.
The ET team could mostly develop solutions to help customers without any product focus, however just a few cube rows over, Red Hat was also working on their commercial management stack, Satellite.
Cobbler (~2006)
At Red Hat, after a request to make something like system-config-kickstart that could also handle virtualisation, Michael started Cobbler — most notably used as a PXE deployment framework. At the time, most PXE automation were handwritten by individual people at different companies, and not shared.
As Michael’s first open source project, Cobbler achieved significant adoption and was used in two top-500 supercomputers, chip design clusters, banks, render farms, and the infrastructure for Call of Duty’s server farms (a popular multiplayer game).
Michael’s manager left early on to join a startup called rPath, and he decided to more or less make the IRC channel for the Cobbler project (below) his boss, which would lay the foundations for how the community efforts at Ansible would later be run.
Uptake in Red Hat and CentOS shops was particularly large, and the CentOS community were particularly good contributors.
Cobbler was different than many other Red Hat "enterprise" open source projects in that there was a very strong community first focus including co-development, whereas in other projects it was more frequent that software was developed and the community was seen as a userbase. This ethos of not really revolving around the company was also common to the Fedora Project.
Cobbler (below) started to indirectly compete with closed-source Satellite, as people mostly needed an easy way to provision systems and get packages onto them. This underscored some early lessons about how GUI management software was often more tricky than managing things with scripts, version control, and automation. The ways people wanted to manage systems at scale was quickly changing.
Cobbler would also start to cross paths with a configuration management tool, Puppet, in very interesting ways, of which Ansible was an alternative.
To avoid Satellite usage, Cobbler was often used in large installations with mrepo, created by Dag Wieërs or yum-utils’s reposync, where Seth Vidal (both mentioned below) was the lead developer. Both of these tools provided package mirroring solutions so users would not have to use GUI management tools like Red Hat’s own Satellite server. Both individuals would later become very involved with Ansible (as detailed further below).
These tools (along with Puppet/CFEngine) would later sort of be rolled up into the idea of "DevOps" but none of these projects were really trying to align with that movement, culture, and term specifically.
(It should be noted that RHEL customers using Cobbler vs Satellite still paid Red Hat and it helped them sell more operating system licenses, so free automation was still commercially useful to the company)
Bare metal provisioning felt pretty smooth, but Cobbler would have probably benefited from using a database and having more of a "team" around it. Missing some potential to lead a team around it would later influence Michael towards leaving towards other places. Michael’s open source efforts sometimes felt a bit less robust to him than when he had time to work on something closed-source and commercial (often a lot of backends and API work) — all kind of a result of having to work in community contributions, interest, support, Q&A, and so on.
There was lots of multitasking.
Cobbler was named "Cobbler" because it makes machines boot, as a Cobbler is someone that makes shoes. Cobbler’s virtualisation helper piece was called "koan", for "kickstart over an network", which could also reprogram the boot loader of a system and reboot it so it would reinstall itself, either to specific configured profiles or to whatever was assigned on the cobbler server.
Cobbler assigned machines to particular roles usually, so this was an early example of trying to avoid configuration drift but applied to the bare metal OS install level. Common field practice was to bootstrap the machine just enough to run a configuration management tool, which was often Puppet.
Func: Bridging the Gap
To try to replicate Cobbler’s open-source success, Michael, Adrian Likins (of up2date fame), and Seth Vidal (author of yum) created Func — a project designed to fill the gaps between Puppet and Cobbler.
Puppet did configuration management well and was popular, but sometimes users needed to do something "now" and arbitrary, and it didn’t fit into config management ideas (which were more formal and declarative) at the time. This was not Puppet’s fault — it is just this other thing didn’t exist. This might include simple one-off tasks like installing software updates and rebooting servers, where puppet was about managing constant state. This could also include simply triggering puppet runs immediately rather than waiting for a periodic timer.
Greg DeKoenigsberg (and a Fedora Project lead) on Red Hat’s Community team suggested Michael, Adrian, and Seth get together to brainstorm new project ideas and this problem (above) is what they decided to work on. This the project "Func" was started, eventually backronym’d to "the Fedora Unified Network Controller". Func was a quasi-reference to Parliament Funkadelic, as chosen by Adrian.
Seth Vidal worked to port certmaster’s PKI from Puppet with Luke Kanies' approval. Among other parts, DeHaan wrote the parallelization feature "forkbomb" and the "hostglob" feature — both of which would become similar to features in Ansible. Adrian wrote other key important components and modules, and also maintained the project as Michael went back to work more on Cobbler and Seth went to work more on Fedora infrastructure and yum.
Ansible’s idea of modules being good community entry points also originated in Func. Compared with Ansible, Func ran a daemon on remote hosts that returned structured data vs using SSH. Some experience with users having PKI/SSL problems (NTP, DHCP, etc) would influence the need for configuration management systems to not rely on PKI systems, which was realized in Ansible.
Func was used in a few neat places including in some aspects of Fedora’s infrastructure systems, at Tumblr, and so on.
In many ways, Ansible’s "runner" (the piece underneath playbooks and the ad-hoc command line tool) was also an iteration on Func — but SSH instead of daemons.
At the same time, various Red Hat work was being applied around the AMQP message bus standard and an implementation called QPID, in partnership with various large customers. There was the idea of using a message bus instead for Func, but there were still complexities around usage and setup. Such a message bus implementation was used in an attempt at a virtual appliance management and orchestration tool, Michael, Adrian, and Scott Seago were asked to write called "virt-factory". Red Hat would later go on to make other attempts at this with various projects and enterprise offerings, ultimately ending up with a version of OpenShift that was more or less a Kubernetes distribution.
In some ways, picking a specific message bus set up for Func would have created a bit of an adoption funnel - if somebody didn’t pick the message bus you picked, would they want to use your tool? This question would continue throughout Ansible’s development but it was fairly clear the idea of needing one was perhaps unimportant — Ansible would find out that people really didn’t want to reconfigure their entire server fleets all at once — that was often too dangerous! Thus it was seen that an over-emphasis on performance could be seductive, but it was a bit of an "engineer trap" because it’s such a fun problem to work on versus user surface areas that make more impacts.
If the message bus technology would have been a bit more mature at the time and easier to use with security features, Func would have probably used those, and Ansible may not have even used SSH. But SSH ended up being the absolute right call and a key (along with language simplicity) to Ansible’s popularity and early adoption.
Remote Rocket Surgery
At Red Hat, Michael wanted to build a config management layer on Func, which he had named Remote Rocket Surgery (there may have been a Wiki page once). But due to some internal politics in the group, building it was not an option. Basically there were people at Red Hat who did not want to compete with Puppet, for some reason.
This delay ended up being good as it provided a lot of idea and time to think about what it would be.
Departure from Red Hat (~2009)
Around 2009, Red Hat experienced acquisitions and reorganization that closed the Emerging Technologies Group. DeHaan was asked to limit Cobbler work to 40% of his time (which he really liked working on), and there was a want to have him work on a merger between Red Hat Satellite Server and JBoss Operations Network that he was not interested in.
Finding a job that replicated that freedom from Red Hat’s "Emerging Technologies" group was difficult. DeHaan first chose an unnamed place he did not like. Wanting to get out of that job, he briefly joined Puppet Labs (described below) for a short time.
As you can perhaps see, Puppet is starting to weave itself into this entire history and the need for Ansible is starting to emerge more strongly as time goes on.
Brief Tenure at Puppet Labs
Michael joined Puppet Labs as employee number 13 as a product manager who was also going to help out on the community (open source) side of things (based on the overlap with Puppet in perhaps 25-50% of Puppet install bases at the time), but this did not last long.
While the project was well established, the company was new. If Puppet had been ready for more structure at this stage and travel not almost constant, he would have stayed — and Ansible would not have happened.
However, this was a good chance to observe some community structure to see how it was different from Cobbler and Func. Puppet was a bit more of a user community, than sharing development quite as much — there were some people very notably involved but it felt somewhat different. The company funded most of the core development and the community leaned more towards testing and advocacy and suggestions.
Ironically, the Puppet Labs experience really didn’t influence the course of Ansible too much but did confirm some prior feelings about the maintenance cost of a parser and PKI infrastructure. The team spent a lot of time on the "core" of the system, if anything, the idea that things needed to be internally simple was underscored.
Puppet was developing a GUI at the time, though there were community attempts to make alternatives.
(It is probably also worth pointing out that for a while many people would deploy and manage the operating system with Puppet, but would also use independent tools like capistrano to do deployments. Capistrano was SSH based, but better suited to "imperative" just once kind of tasks, and also did not need a daemon like func. The need to learn two tools would become another driving force in shaping Ansible a bit later)
WebAssign
Michael needed a non-travelling job so he joined WebAssign, which was local to him and where knew a manager from the local photography group.
WebAssign was an powerful online homework solution that is infamously disliked by many thousands of college students. Their backend was mostly all Perl, where Michael introduced some more recent "Modern" OO Perl modules and object oriented design concepts, working to increase code reuse.
While Michael was working on a feature that didn’t really see much adoption, he got to know the IT team pretty well and observed their deployment process.
The IT team would deploy things via scripts but could not adopt Puppet because it was very complicated. They had a rolling update topology using F5 load balancers, but did most of this process with a lot of manual interlocks, and the updates sometimes failed or human errors were inserted. Typically they would set up shop in a conference room to run the scripts through the chain of servers, and this would take possibly 30 minutes or several hours and failures did happen.
Observing this rolling update orchestration problem would be absolutely critical for Ansible’s success, as the "serial" keyword and built-up rolling update support, which did not exist in any other configuration management tools at the time. Ansible was very much designed with this team always in mind, though not explicitly for them specifically. "Orchestration" kind of became a major keyword later in the company’s early history of explaining differences between more configuration-management focused tools.
WebAssign had about 100 servers in a pretty simple three tier architecture. Being able to work closer to IT gave some better understanding of the potential of "DevOps" ideas to break down barriers.
Additionally, a positive three-tier architecture experience there cemented a later desire to push back against very complex cloud systems, micro-services architectures, and so on — while Ansible also did really enable people to deploy those architectures as well.
rPath
Leaving WebAssign, Michael joined his old manager at rPath (where he had left from Red Hat), which was building virtual machine image/appliance creation solutions. Part of rPath’s product was really a better "enterprise" version of something like Packer (not created until 2013) but it was hard to use. Due to marketing challenges and product complexity, the company did not survive.
Towards the end of that time, Michael was being asked to implement a Puppet integration to rPath that sort of 'hid' Puppet language, which he absolutely knew how to do, but he was being told how to do it in a way that people would not like (using XML). Ultimately, he thought customers really wanted to just use Puppet if they were going to use Puppet.
While this solution was wrong, it became somewhat apparent that if he did not "solve" Puppet, Puppet was going to keep following him around at various systems management jobs which were most of what existed in the RTP area.
Amidst this frustration (XML!), Michael also missed the fun community aspects of running open-source projects and designing more things on his own.
Looking to more or less recreate the positive parts of the Cobbler experience, Michael started Ansible on nights and weekends.
Cisco
(This is sort of a prologue to how things got started, and is when the decision that Ansible could be a company happened — the early history of the project occurred in parallel and is detailed below)
When rPath closed, Michael joined Cisco to write Python code for OpenStack, though this really didn’t happen. He got caught up in an endless Puppet effort to write content to automate OpenStack, and the whole team would restart working on the next version of OpenStack every time a version came out. It was very complicated and ironic. (It also used Cobbler for PXE, which was there before Michael joined).
Because everyone was scattered between different offices, it wasn’t a particularly great place to come into.
Since he wanted to write code and not IT automation content, Ansible seemed pretty appealing now — could that be a job? While Ansible was growing in popularity quickly at the time, Cisco was not interested in it, since they had a strategic venture investment in Puppet.
The industry needed an escape not from Puppet itself, but from what consultants were doing with Puppet — or the fact that people needed consultants, or teams of 12 people to write Puppet.
This is an important understanding — the Puppet tool wasn’t the problem but what the tool got people to do tend to do with it. Tools however influence what kinds of tools people create with them. This experience would guide early Ansible development very much — the desire for automation content to be easy to read.
The Birth of Ansible (2012)
Genesis: February 23, 2012
After working on a prototype at night for just two weeks, Michael used Cobbler’s mailing list to send out an announcement. The first release contained just the ad hoc command execution tool, which was essentially an evolution of Func. The playbook language was not written just yet but came very shortly thereafter.
The idea that good projects could more or less "launch" as two week prototypes was established from Func. (Today, there’s more demand for complete systems, probably).
The motivation came from multiple angles - Michael wanted the kind of community experience he had enjoyed with Cobbler, and he kept encountering Puppet integrations he found frustrating. He didn’t hate Puppet — he thought Luke Kanies and his team did great technical work, but he disliked the agent communication setup that often failed, the complex language, and saw how much development effort went into the parser and PKI system. Mostly, he just wanted the community another open source community experience like he had with Cobbler. Could we show people that simple things could "win", even after very minimal efforts? Could he find a way so Puppet wouldn’t keep encountering him at various jobs? Why couldn’t "Remote Rocket Surgery" be remade today?
Playbooks were named after a sports analogy (American football) — rather than defining structured configurations a system must exactly match, they contained a set of properties that could be applied to systems in different scenarios as someone decided. It could be declarative, but could also be run for all other kinds of tasks. Order also mattered, which made things predictable. Rather than having configurations sometimes take many runs to be "right" (as with Puppet and CFEngine’s convergence), they were right after the first run.
Early Ansible was mostly triggered either manually (from someone’s laptop) or from a CI/CD tool like Jenkins. People could also run Ansible locally, and even on "cron" if they wanted periodic configuration.
The name "Ansible" came from science fiction. The first usage is from Ursula K. Le Guin — a device capable of faster-than-light communication, in Rocannon’s World (derived from "answerable," as the device would allow users to receive answers to their messages in a reasonable time, even over interstellar distances). Other sci-fi authors borrowed the idea. Having never read that book, DeHaan actually took the name from Ender’s Game by Orson Scott Card, where the ansible was used to control a large number of remote ships at once, over vast distances — a fitting metaphor for controlling remote servers.
The first commit appeared on GitHub on Thursday, February 23, 2012, with the Git comment Genesis.
An exceedingly vast amount of time was spent trying to make it very easy to understand the documentation. An early conversation with Seth Vidal led to the advice that people should be able to learn and understand the tool and have some success with it doing things in the first 30 minutes, basically during their lunch break. This documentation focus would be a strong driving force for the next several years, taking up some 40% of Michael’s time in the early days. It was important to not only teach how to run the tool, but why and when, and also teach people about some aspects of some related tools they might not know about (such as some SSH features). The docs were written to be random access and kind of "choose your own adventure" so people could be curious about learning new things and keep going back to them. Similarly, they showcased all the modules available in one place so people could browse for ideas about what they could do with the tool.
The online docs were the main form of marketing for Ansible in a way, with various tutorials being written, reblogged, and it being linked to frequently. In order to keep people seeing what was new, there was a concerted effort to not have offline static documentation. Approximately 6 months into the project, there were about 500 people a day visiting the website, which seemed fantastically large at the time.
First Release: March 9, 2012
Because nothing had to be installed on remote hosts, Ansible could be consumed directly from git, and was generally stable that way, but official releases were still made to Fedora and EPEL early on.
The first release, version 0.0.1, was published on March 9, 2012 and was untitled. The codename Baluchitherium was later used for version 0.3 (April 23, 2012) — one of many Van Halen song names that would grace Ansible pre-2.0 releases (DeHaan being a Van Halen fan). The last release in the 1.x range, version 1.9.4, was named Dancing In the Streets and was released on October 9, 2015. (The code names were fun but not important).
Early Contributors
A short list of very early commits and contributors, some US and some European, (by chronology, not volume) with the first commit message included:
-
Michael DeHaan — Genesis.
-
Jeremy Katz — Fall back to standalone simplejson module
-
Seth Vidal — add support to prompt for ssh password on the cli
-
Tim Bielawa — Fix tbielawa email in AUTHORS file
-
Christopher Johnston — python 2.5 does not include json so lets try to use simplejson
-
Stephen Fromm — Add user module to create, modify, and delete user accounts
-
Jeroen Hoekx — Playbook: create one task per include instead of per argument.
-
Matthew Williams — preliminary apt module
-
John Eckersberg — Remove shebang from callbacks.py
-
Brad Olson — Wired in Michael’s usage string optparse style.
-
Martijn Koster — doc fixes
-
Rafal Lewczuk — clean exec bits from lib/ansible/*.py, ignore Eclipse/PyDev files
-
Dag Wieers — Fix small typo
-
Henry Graham — Initial debian packaging
-
Michel Blanc — Adds ArchLinux build file
-
Daniel Néri — Fix two misspellings of the apt module’s "fail_json" function
-
Stefane Fermigier — Add requirements in setup.py.
-
cocoy — Add .ssh/config support
-
jkleint — More robust remote sudo.
-
Matt Coddington — cast ssh port number as integer
-
Chris Read — Use the /Users/cread env var instead of hard coding /home/<username>
-
Reed Murphy — shlex.split() tries to read from stdin if passed None
-
John Kleint — Get service module working with sudo, add list=status, better error messages.
-
Peter Sankauskas — Adding a missing '~' to use the user’s home directory instead of the root file system for the module arguments
-
John Callender — Issue #82: Minor edits to doc text and formatting
-
Jan-Piet Mens — new module: get_url
ansible-docand more — 60th committer -
Serge van Ginderachter — fix missing --limit in docssite examples — 114th committer
-
Ton Kersten — Added pip-python to the search for CentOS 6 compatibility — 134th committer
-
Vincent van der Kussen — Fixed my typo and forgot a package — 166th committer
-
Toshaan Bharvani — changed the delegate_to to also use ansible_ssh_private_key_file from the inventory file — 296th committer
Assorted Contributor Stories
Many people contributed to Ansible over the years and every single contribution was important for various reasons. These are isolated things that Ton Kersten has gathered (below) and is not comprehensive. These mostly focus on very early development time-frames.
Seth Vidal: From Func to Ansible
Seth Vidal was an important figure in Ansible’s pre-history as well as its first year. As the lead developer of yum and a member of the behind Fedora Infrastructure team, he had a lot of experience about how systems were managed in the real world. He also helped write Func (detailed above) with Michael and Adrian Likins.
Seth joined the Ansible project almost immediately. His GitHub account dates to February 24, 2012, only a day after the first commit.
Seth initially helped shape the yum module and broader packaging work, contributed callback and connection plugins, and committed to side repositories. Because of his work on Fedora infrastructure (which was also an early Puppet installation), Seth had a strong grounding in the needs of managing remote systems.
One of Seth’s interesting Ansible contributions was local facts: the
ability for managed nodes to expose custom data through *.fact files
in /etc/ansible/facts.d, populating the ansible_local namespace.
Introduced in Ansible 1.2, this feature was discussed with Jan-Piet Mens
at the first AnsibleFest in Boston in 2013.
Seth also thought deeply about how Ansible would work in real environments. In a May 2012 forum post he described structuring playbooks for roughly 100—150 heterogeneous servers and weighed Ansible’s SSH push model against the performance needs of large fleets — practical systems thinking from someone who had spent years keeping Fedora’s own infrastructure running. He was also a great sounding board, helping Michael with ideas, hard SSH/SSL issues, and being very available over IRC chat.
Michael later recalled that early interest from respected Red Hat figures like Seth was enormously encouraging and provided extra motivation to take it beyond the initial few weeks: "If they were interested, maybe this is barking up the right tree." Sadly, Seth died on July 8, 2013, after a hit-and-run accident while bicycling in Durham, North Carolina. He was only 36. His loss was felt across Fedora, Func, yum, and the Ansible community alike.
Jeroen Hoekx: First European Contributor
Jeroen Hoekx from Lommel, Belgium was the first European to contribute code to Ansible and one of the first to use it in production. By the time Ansible 0.4 was released (May 2012), Jeroen had already made 25 contributions — second only to DeHaan’s 135.
His contributions were substantial: significant inventory work, general bug-fixing, and the Filter Plugin mechanism that underpins Ansible’s data transformation capabilities. He also created several modules that remain in use today:
-
wait_for— waits for a condition before continuing (ports, files, regex matches, active connections) -
group_by— dynamically groups hosts at runtime based on results -
lvol— manages LVM logical volumes
Jeroen used Ansible in production at HP for consultancy engagements and later to automate the SaaS environment and application deployment at D square/TrendMiner.
Jan-Piet Mens: The European Spark: June 6, 2012
On June 6, 2012, Jan-Piet Mens (JP) wrote a blog post about Ansible (https://jpmens.net/2012/06/06/configuration-management-with-ansible) and tweeted about it. JP was heavily involved in Puppet at the time but found it overly complex and disliked Ruby — he was working on a project to automate deployment of DNS servers and grasped at any straw he could find.
(This pattern of "I was almost building a tool like this" was a frequent story of early Ansible adopters. Had Ansible not been written, it is likely someone else would have written something similar.)
Ansible was written in Python — a language JP knew — and he began spotting and fixing issues, submitting his first pull request (#634) on July 20, 2012. JP’s blog post helped introduced Ansible to Europe, sparking interest across the continent.
The first written record on GitHub of JP contributing is dated July 20,
2012, though he may have had previous interactions on the Ansible
mailing list. Among JP’s most significant contributions was the online
module web documentation generator — the idea that modules and plugins
should have inline documentation, extracted on-the-fly with
ansible-doc(1). The inspiration came from Unix man pages.
JP’s other notable contributions include:
-
The
ansible_managedvariable for templates (2012) -
The
diglookup plugin -
The
mqttnotification module -
The
ini_filemodule -
The
NOCOWS=1configuration option
In the early days, Ansible spread a lot by people blogging about it (as well as tweeting), JP Men’s blog was among the most obvious and popular.
Growing Community (2012)
Ansible’s early community growth and growth up through 2015 was mostly viral.
People were spreading Ansible on their own, by reblogging tutorials and sharing their own experiences. One of Michael’s cooler moments was waking up and checking Twitter and seeing a presentation being made totally in Japanese in Japan — with a surprise overflow room.
As Ansible grew, a new challenge arose — trying to keep all the users and contributors happy even though they all wanted to take it in completely different directions. A path had to be charted between all of these different directions. There were a ton of pull requests to add features to test, merge, and help polish up.
DeHaan reflected: "I liked Ansible best when it was smaller and the quality could be kept up better." The mailing list kept growing, eating into weekends, with much time spent merging OSS tickets, communicating, writing documentation, and writing a giant portion of the whole thing.
There was a balancing act between keeping things small and streamlined and doing enough ("batteries included") to fulfill all the things people wanted to do with it.
A lot of time was also spent with new contributors who didn’t know git, often sysadmins newer to Python as well, teaching them how to use the version control system. This led to a lot more early contributions at the time.
Other Early European Contributors and Community Builders
Dag Wieërs: Community Builder and Module Author
Dag Wieërs from Ghent, Belgium was the 14th committer and one of the most prolific early contributors. A freelance Linux consultant and self-described open-source developer by conviction, Dag was one of the Linux pioneers in Belgium and well-known within the Red Hat and Ansible communities. He was responsible for some of the earliest work to get Ansible to provision EC2 instances, and (early cloud adopters) became a critical part of Ansible’s early userbase.
Dag’s Ansible contributions also included creating the debug module
(with DeHaan), the set_fact module, and the read_csv module.
In 2012, Dag was commissioned by BNP Paribas Fortis to design a complete Linux-based Standard Operating Environment for a large Solaris-to-Linux migration. Over seven months, he designed the target platform and automated the entire process using Ansible — one of the earliest large-scale enterprise Ansible deployments. This work involved implementing various Ansible modules and core changes.
Sometime after Michael left in 2015, Dag later proposed Ansible Communities — a trusted process and privileges structure to let people work independently on sets of modules. While it didn’t get the traction hoped for, it was an important attempt at solving the module maintenance problem.
From 2016 to 2019, Dag worked at Cisco as an Ansible Automation Engineer, developing Cisco ACI and MSO modules, roles, and collections, and building Ansible communities there. He automated integration with Cisco IMC, VMware, Hyper-V, Active Directory, SCCM, and Nexus.
Ton Kersten: From Tweet to Community
Among those who discovered Ansible through JP’s tweet was Ton Kersten from Groesbeek, the Netherlands, who wrote: "Somewhere early June 2012 Jan-Piet Mens tweeted about Ansible. That time I was heavily involved in Puppet, but I thought it was getting too complex and I really do not like Ruby. This tweet triggered me to have a look at this Ansible thing and this absolutely turned my life around. First of all it’s written in Python and I do Python, so that was a big plus. And then I spotted things that were missing or incorrect and I fixed that."
A Unix addict since 1986 and Linux user since 1992, Ton has been
teaching courses on shell scripting, Python, and Ansible. His first
pull request came from somewhere in November 2012. Over the years he
created the very popular os_family fact and the less popular
date_time fact, and fixed a lot of bugs, the most important being the
symbolic notation of the chmod modes.
At his first Ansible Meetup in Antwerp on June 29, 2013, Ton met "a lot of very friendly and knowledgeable people that were very willing to share, something I still appreciate highly and try to do myself." He later blogged about the day, listing all 18 attendees — a roll call that reads like a who’s who of early European Ansible: Jeroen Hoekx, Dag Wieërs, Serge van Ginderachter, Vincent van der Kussen, Toshaan Bharvani, Jan-Piet Mens, and others. This Meetup was also the start of doing presentations, creating multiple trainings, and learning more and more about Ansible.
But most of all, in the whole Ansible community Ton met people with the same interests who accepted his nerdyness and weird social skills, and considers some of them friends. "A simple tweet turned out to have a massive impact on my working and personal life which I never could have imagined." He is still involved in trainings, workshops, presentations, consultancy, doing the meetups and Rijsttafel afterwards.
Serge van Ginderachter: Inventory And Core Contributions
Serge van Ginderachter was the 114th committer to Ansible. An independent contractor from Belgium (through his company Ginsys), Serge was another individual who added early commits to the Ansible project in 2012, working across the full stack from playbooks and roles to modules and core Python development.
One of those features included inventory optimization in the
vars_plugins mechanism, and also contributed to the include_vars
module, enabling dynamic variable loading from files at runtime.
Serge also gave back to the community in other ways, co-founding Autops in 2022 with Vincent van der Kussen, focused on Kubernetes and GitOps tooling.
Vincent van der Kussen: Early Public Ansible Presentations
Vincent van der Kussen was the 166th committer to Ansible, based in Aalst, Belgium. A Red Hat certified engineer (RHCE, RHCVA, etc.), Vincent was one of the earliest Europeans to publicly present Ansible.
Vincent later presented Ansible Roles and Inventories at CfgMgmtCamp 2014 in Ghent, one of the early documented public conference talks on Ansible in Europe. He continued to spread Ansible knowledge through the European conference circuit and co-founded Autops in 2022, bringing Ansible expertise into the Kubernetes and GitOps space.
Toshaan Bharvani: CfgMgmtCamp Organizer and Ansible Monitoring
Toshaan Bharvani was the 296th committer to Ansible, based in Antwerp, Belgium. Since 2010, he has been the owner and CTO of VanTosh BVBA, providing system architecture, design, implementation, and training services.
Toshaan’s impact on the Ansible ecosystem came through CfgMgmtCamp. Since 2013, he has co-organized the conference in Ghent alongside Kris Buytaert (creator of the original FOSDEM devroom for Configuration Management).
What started as a small PuppetCamp grew into one of Europe’s largest infrastructure-as-code conferences. In 2017, CfgMgmtCamp was described as one of the largest independent open-source events in Europe and the largest open-source configuration management event worldwide, with 700 attendees from 22 countries.
In the Ansible space, Toshaan was an early adopter who integrated Ansible with Icinga and Nagios for monitoring and auto-remediation. His talks included Automate your infrastructure with Ansible and Icinga2 (CfgMgmtCamp 2016) and Ansible as a VM Lifecycle Manager (OSMC 2017 in Nuremberg). He used Ansible to automate VM provisioning, Icinga monitoring integration, and cloud-based auto-remediation workflows.
The First Ansible Workshops at Conferences
Together, Jeroen Hoekx and Dag Wieërs organized the first Ansible workshops at open-source conferences, including FLOSSUK (the UK’s oldest open systems user group), NLUUG (The Dutch Unix Users Group) and CfgMgmtCamp. These workshops were instrumental in spreading Ansible awareness beyond the online community and into the wider European open-source world.
The Company Era (2013—2015)
AnsibleWorks Founded (2013)
Early on, Michael was approached by several different people trying to make a company out of Ansible. He really wanted to bootstrap, but it was difficult getting key users to be on board for something like support revenue. Finally, he decided to accept one of those proposals.
In 2013, Michael DeHaan co-founded AnsibleWorks, a VC-funded startup
built around the Ansible Configuration Management tool, because the
ansible.com domain was taken. The company later would buy the domain
and renamed itself Ansible.
Initially, Michael just intended to sell the web-based Ansible-Tower control interface. Tower was needed because everyone who used Ansible could SSH into servers with their laptops. Companies wanted an audit log and role based access control.
Eventually, others at the company would decide to experiment with support and consultancy offerings, though through 2015 these were never large or that successful. Michael wanted Ansible to remain a product company, because a company that could support a consultancy had reasons to create complex products — as he had seen with Puppet content projects, for example at Cisco.
Some of Tower’s early development (just after the seed round) took place in coffee shops and in meeting spaces at DeHaan’s alma mater’s new university library, which they "snuck into." Chris Church built large chunks of the early Django backend (DeHaan had met Chris at Integrian) with Michael and Chris Houseknecht built the UI layer — which Michael described as a remarkably solid and bug-free interface. Later, more people were added to the Tower team and also to help with all of the community project influx on the mailing list and Github.
While the company also needed a commercial product (revenue), one other reason Ansible Tower was not fully open sourced originally was that it was very hard to coordinate open-source efforts around things like database schemas and API inconsistency — having real meetings with whiteboards made it much easier to keep everybody on the same page. For a project to be good as a real open source project, it needed to be a collaboration.
At Ansible, Michael took care of product management, project management, the community, marketing (all from the web and open-source events), while still writing code on the core product — a lot of it (such as the "roles" feature) on the road while travelling.
First Ansible Talks
Michael gave an early Ansible talk at a meetup event in Durham, NC but did not really present on Ansible for a good while after it started, even while there was a company.
Ansible spread by people giving talks on their own at various meetup groups. The first one was probably at a library somewhere in the midwest USA, and these were all done completely ad hoc and only discovered through finding them on Twitter. Everything was pretty much "viral" and twitter was a large part of the equation.
First AnsibleFest Event
The very first organized AnsibleFest was in Boston in 2013, a 1-day all-day event, filled with talks from users and a lot of conversations. It was collocated with Red Hat Summit in Boston. There were maybe 40-60 or so attendees.
There would be larger versions of this in following years.
First European Ansible Meetup: June 29, 2013
The first European Ansible Meetup is believed to have taken place on Saturday, June 29, 2013, at Don Bosco in Antwerp, Belgium. Approximately 20 people attended, hosted by Robert Keerse of "Don Bosco werken én leren." This meetup also marked the beginning of presentations, training courses, and deeper community engagement.
These meetups were organized through the Meetup website and became a gathering point for the growing European Ansible community, including the Rijsttafel gatherings afterwards.
Departure and Acquisition (2015—2016)
Michael DeHaan Departs
In January 2015, Michael DeHaan announced he would be leaving Ansible, effective February 1, 2015. The stress of dealing with internal company politics had become too much — though he greatly regretted having to leave the project.
The project had several core team members at Ansible Inc that could continue to assist and organize the community.
James Cammarata was the earliest team members of Ansible Inc on the core product and took over 'lead' features. He had already started "Ansible 2.0" features planned by Michael. James also switched release code names to reference Led Zeppelin songs. James was also responsible for a lot of early work on Ansible Galaxy, an online portal for accessing Ansible community content.
Management of the community team would eventually be picked up by James
Tanner, who Michael worked with at rPath. James had already been a key
core team member, having developed ansible-vault among lots of other
work.
Other community core developers remaining included Brian Coca, who had contributed a vast amount to Ansible before joining the company, and Toshio Kurotami, who was also a member of the Fedora Infrastructure group before at Red Hat.
Red Hat Acquires Ansible: October 16, 2015
On October 16, 2015, Red Hat announced it would acquire Ansible. The web-based Tower product continued as Ansible Tower after the acquisition.
Years later, Red Hat introduced Ansible Automation Platform (AAP) as a broader enterprise offering that included Tower and made various architectural changes. By September 2023, support for AAP 1.2 (Ansible Tower 3.8) ended, driving migrations to AAP 2.
In September 2017, Red Hat finally took the step they promised the community after the acquisition of Ansible: it open-sourced the Tower codebase as AWX, the upstream community project behind Ansible Tower. The release did not include the full source history of the project or the original RPM sources and playbooks. Due to this resultant install complexity, it was made compelling to use the commercial versions.
The model followed Red Hat’s Fedora-to-RHEL pattern — development in the open AWX project, with selected releases hardened into the supported Ansible Tower product. Ansible Tower 3.2 was the first version built from AWX. The name itself was not new; it was one of the names that were going to be used for Tower in the very early days, which was in turn a short form of "AnsibleWorks".
The Wider Configuration Management Landscape
Ansible emerged from and existed alongside a rich ecosystem of configuration management tools, to say that ideas in Ansible are highly original would be untrue, they are all permutations and modifications of earlier efforts — both from these tools as well as Func (detailed above). Credit in developing Ansible must include this evolving landscape:
CFEngine (1993)
Mark Burgess, a post-doctoral fellow of the Royal Society at Oslo University, Norway, began writing CFEngine in 1993 — the first tool to truly do "Configuration Management." This is not exactly the case, though, as admins had always been writing their own scripts. It was however the most obvious common example that people seemed to rally around.
CFEngine was built on Burgess' idea of promise theory — the idea that autonomous agents make promises about their behavior rather than being centrally commanded. This, along with idempotence and convergent systems, formed the foundation of modern configuration management. CFEngine popularized describing the wanted state of a system rather than all tasks to perform. It detected anomalies caused by configuration drift and automatically repaired them.
(Ansible would later assert that configuration drift was not a real world problem if humans didn’t manually mess with machines, though its modules were still useful for similar declarative configuration).
With CFEngine, convergent systems still had problems — when a configuration run was scheduled unattended, it could take several hours before all systems reached the desired state. The in-between states could also be unstable. The idea that system runs should be predictable would be a major factor in Ansible’s early design choices.
Movement to other tools was somewhat provoked by a version change in CFEngine’s syntax, making room for Puppet.
Puppet
In 2005, Luke Kanies started Puppet Labs around the Puppet configuration management tool, written in Ruby. Puppet had a cleaner configuration language with a well-designed abstraction layer. Many principles were still based on Mark Burgess' initial ideas.
Puppet had a very well designed type/provider model that ensured modules were written to common standards, a feature that was trimmed from Ansible to make it easier to write modules.
Puppet would later implement optional predictable "ordering" features from Ansible as well as "Bolt" which had some resemblance to ad-hoc execution modes.
Both Puppet Forge and Chef (below) would have sites that offer a sharing-space for automation content that would create the desire for Ansible to have something similar (Ansible Galaxy), though Ansible would seek to have as much in the core product as possible so people would not have to hunt for the best community solutions.
In 2022, Puppet was bought by Perforce. Later, community concerns about the future of open-source Puppet led to the OpenVox continuation effort.
Chef
Chef, created by Adam Jacob, was a Puppet-like tool with a configuration language coded entirely in Ruby. Chef tended to appeal to developers and particularly Ruby shops, while Puppet continued to be slightly more popular with traditional IT management teams.
In 2020, Chef was bought by Progress Software. The CINC project emerged as a community distribution and continuation path for open-source Chef tooling.
Salt Stack
Written in Python by Thomas S. Hatch, Salt Stack used a client-server strategy based around 0mq.
SaltStack was inspired in part by Func as Thomas was a Func user and possibly Cobbler’s adoption of YAML, and Red Hat’s early attempts to build systems management around message bus technology as discussed around lists like et-mgmt-tools at the time.
Salt was mostly not a factor in driving Ansible’s design choices, but was frequently discussed by Ansible users wanting faster configuration. In particular, Michael disliked that Salt’s language was not actually YAML, but a template that produced YAML. It could not be read by machines.
(Chef, being executable code, also could not be read easily by machines or at least not by non-Ruby programs, and Puppet needed to be read by its own parser)
In 2020, SaltStack was bought by VMware. In 2023, VMware was acquired by Broadcom.
The Pets vs. Cattle Paradigm
Whatever specific configuration management tooling operations engineers encounter, ultimately the technology exists to enable business goals: short time-to-restore, auditable assurance of control, and low ratio of operators per managed systems.
Bill Baker of Microsoft came up with the distinction between treating servers as pets versus treating them like cattle ("from pets to cattle"). We give pets distinctive names and care for them as individuals; with cattle we refer to them by identification number and treat them as livestock. This term was popularized by Randy Bias of Cloudscaling, and was later widely propagated in cloud and operations communities including at CERN.
The connection with Ansible is practical, not origin-story. Ansible made the cattle model easier for traditional sysadmins: agentless over SSH, YAML playbooks, "make N machines look the same." Red Hat later sold that as the mindshift — from pets to cattle — with Ansible as how you get there (alongside Chef/Puppet, then containers/K8s for a more extreme "replace, don’t repair" model).
The integration of Ansible with "cowsay" was unrelated to this and completely just for fun, though perhaps the later association with Ansible and Durham, NC known as "The Bull City" (see also "Bull Durham") were also coincidental. Or were they?
What Made Ansible Different
Ansible distinguished itself from other configuration management tools through several key design decisions:
-
Plain YAML configuration language — simple data serialization that anyone can read and easily review/audit. "Executable documentation".
-
No client-server daemon concept — any host can be the Ansible command-center
-
No new PKI — Ansible uses standard SSH functionality
-
Delegation — a host can delegate tasks to another host, widely used for load-balancer pool management and cloud instance deployment
-
Batteries included philosophy — pulling together lessons from Cobbler, Func, Virt-Factory, Puppet, and other projects. There was less need to go hunt for community modules on the free "store" project pages.
Partial Ansible Timeline
Events within an individual year may not be precisely ordered:
-
2012 (Feb 23): First Ansible commit on GitHub (Genesis)
-
2012 (Mar 9): First release 0.0.1 (untitled)
-
2012 (Apr 23): Release 0.3, codenamed Baluchitherium
-
2012 (Jun 6): JP Mens blog post introduces Ansible to Europe
-
2013: AnsibleWorks founded by DeHaan, Ziouani, and Gerla
-
2013: First AnsibleFest in Boston
-
2013 (Jun 29): First Ansible Meetup in Antwerp, Belgium
-
2013: Michael, Chris Church, and Chris Houseknecht begin building Ansible Tower (Django backend)
-
2013: Seth Vidal passes away
-
2013: DotCloud rebrands to Docker
-
2014: First paid core team member — James Cammarata hired to join AnsibleWorks from Cobbler
-
2014 Kubernetes first release date
-
2014 Hashicorp releases Terraform
-
2015 (Feb 1): Michael DeHaan leaves Ansible
-
2015 (July): The first major Ansible book, published by O’Reilly, Lorin Hochenstein’s "Ansible Up and Running" is released.
-
2015 (Oct 9): Last Ansible 1.x release — version 1.9.4, Dancing In the Streets
-
2015 (Oct 16): Red Hat announces acquisition of Ansible
-
2016: Ansible 2.0 release, codenamed Over the Hills and Far Away (Led Zeppelin songs replace Van Halen for release names).
-
2017 (Sep): Red Hat open-sources Ansible Tower upstream as AWX; Ansible Tower 3.2 is the first release built from it
-
2018: IBM announces intention to buy Red Hat
-
2019: IBM acquisition of Red Hat completed
-
2020: Chef bought by Progress
-
2020: SaltStack bought by VMware
-
2022: Puppet bought by Perforce
-
2022: Ten years of Ansible celebrated (JP Mens' retrospective blog post)
-
2023 (Sep): AAP 1.2 / Ansible Tower 3.8 support lifecycle ends, migration to AAP 2 encouraged
Legacy
As Michael DeHaan reflected: "The real 'magic' of building Ansible was found mostly in its pre-company days — both online and usually written on my living room floor, often on nights and weekends — and the very early first six months or so of company days when Tower was still being designed in coffee shops. The company stuff was mostly an argument why you should never take VC money and should find a way to bootstrap things."
Throughout development, the community always provided motivation to keep going as well as the ideas of what to work on.
Simplicity was always the driving goal. DeHaan’s thinking in very early 2012: "if this thing ever supports a consultancy I will have failed".
At one point somebody had (proudly) tweeted that they were using Ansible on vacation around the pool, and DeHaan thought: "Oh no, this was the thing you were supposed to use for 20 minutes and get out of the way. It’s not supposed to be someone’s job — it’s supposed to be something where it allowed you to get back to the job you wanted to do."
YAML inclusion in other tools also grew over the years, to where there was possibly too much of it. It was no longer easy to remember how all the different YAML in all of the different tools worked. In this way, there were some advantages to languages that still compiled.
Michael also reflected on Ansible becoming part of the RHCE test: "You’re supposed to just pull up the docs whenever and it’s not supposed to be hard enough to need a test." The YAML legacy was something he was not entirely happy with — complex dialects people had to learn, and he felt he had helped spread that too much.
The collaboration of people from all over the world was what made it special. As mentioned above, JP Mens' June 2012 blog post had introduced Ansible to much of Europe; As Ton Kersten reflected: "A simple tweet turned out to have a massive impact on my working and personal life which I never could have imagined." And on the community he found: "In the whole Ansible community I have met a lot of new people with the same interests as I have and that do accept my nerdyness and weird social skills."
When people were able to be part of something and not just a resource, it became authentic. This was happening better in Ansible than in some other projects, because it was hard for people to work on Puppet’s core or parser — it was too computer science-like or perhaps too formal.
DeHaan was mostly trying to keep the level of code readable and documented well enough that it was easy to work on. This didn’t mean the code was better, it was just trying to be accessible. This sort of bridge of getting people who were often primarily sysadmins to write more automation code and get involved in automation projects, is essentially a key piece of the whole "DevOps" trend — though that also means different things to different people.
Ansible was a strange duality of a project — it was a massive community project because of modularity and how easy it was to contribute on the edges, but there was a lot of steering in the core of it by Michael to take it in a particular direction, always kind of reacting to the direction that everyone else wanted to take it, and trying to sort of keep it on the rails and moving in the right direction to make for interesting future options and ease of use. New features were always built to help the user collective, whether they thought of them or worked on them or not — the product (commercial) effort was almost completely unrelated to what happened in the core system.
IRC and the mailing list were absolutely vital to shaping that project direction and were inseparable from it. Repeated conversations and emerging patterns showed what things needed to be done next and what would be most interesting.
Tremendous efforts were spent on documentation and the new user experience, trying to make the guides very much informative and helpful to people regardless of skill level. This focus has seemingly changed somewhat over the years.
Ansible contribution (per statistics) then and now largely lives in the modules by an outside amount, but not exclusively. It was not always easy to contribute to the central parts, but there were a lot of great people willing to look into those pieces and help work on it.
In the end, without that collective interest and effort and common goals, Ansible absolutely would not exist. It is easy to look at this with the lens of open source statistics and contributions, but it is also about the dialog of "what kind of tool do we need" and the idea that tools should not really come from vendors, but sort of be a result of conversation between principal authors and userbases.
The Immutable Shift
The current rise of containers and Kubernetes pushed many organisations toward immutable infrastructure — build an image once, deploy it identically, never patch it in place. For stateless, horizontally scalable workloads, this model largely replaced traditional configuration management.
Ansible could still be used that way, of course, by deploying systems and deciding to reprovision them instead of modifying them, except for stateful services such as databases and so on. It could be used with tools like Netflix’s Asgard or it’s own modules to handle "blue green" deployments in the cloud, but this was not always the easiest way — people did want to build images and this decreased some need for configuration management.
Ansible, however, found a new life building those very containers and images, and provisioning the build pipelines that produce them. More importantly, configuration management retained its grip on domains where state is unavoidable: databases, message brokers, and other stateful systems that resist being thrown away and redeployed. The same applies to persistent infrastructure — networking, DNS, load balancers, and identity systems — and, perhaps most ironically, to deploying Kubernetes and cloud platforms themselves. Cluster nodes still need kernel tuning, runtime installation, certificate management, and monitoring setup; tools like Kubespray use Ansible extensively for exactly this.
Configuration management did not disappear — it settled into managing the barns while container orchestration handled the cattle inside them.
Disclaimer and Thank You!!
First of all, I (Ton Kersten) must thank Michael DeHaan for creating Ansible, but also for his invaluable input in constructing this story. It would have been absolutely impossible without his help.
This project has had thousands of contributions and many have been
forgotten here. Currenty the Ansible main branch (ansible/ansible) has
over 6000 unique contributers, and it is near impossible to figure out how
many people we forgot, on the main branch, but also all of them that
added to all the collections that are out there.
Whether through code, presentations, meetups, conferences, being part of the community or just spreading the word, without all of these people, this project would never have gone as far as it has.
If someone is missing, it is mostly the fault of trying to put this document together (not Michael’s) and the impossibility of making it infinitely long.
Sorry, if I forgot to include you. Please, reach out and I’ll see if I can make a version 2.0.
Maybe the story is a bit focussed on Europe, but that’s just where I live (Ton Kersten) and what I was part of. I really don’t know what happened in other parts of the world.
Below is the list of the first 50 of the earliest committers to the Ansible code, and the date of the first commit. This list is here, just as a small tribute to those who where there at the very early beginnings.
| Name | First commit |
|---|---|
Michael DeHaan |
2012-02-05 |
Jeremy Katz |
2012-02-24 |
Seth Vidal |
2012-02-25 |
Tim Bielawa |
2012-02-25 |
Christopher Johnston |
2012-02-29 |
Stephen Fromm |
2012-03-22 |
Jeroen Hoekx |
2012-03-26 |
Matthew Williams |
2012-03-26 |
John Eckersberg |
2012-04-02 |
bradobro |
2012-04-10 |
Martijn Koster |
2012-04-13 |
Rafal Lewczuk |
2012-04-14 |
Dag Wieers |
2012-04-17 |
Henry Graham |
2012-04-18 |
Daniel Néri |
2012-04-19 |
Michel Blanc |
2012-04-19 |
Stefane Fermigier |
2012-04-22 |
jkleint |
2012-04-23 |
Rodney Quillo |
2012-04-23 |
Matt Coddington |
2012-04-24 |
Reed Murphy |
2012-04-27 |
Peter Sankauskas |
2012-05-02 |
John Callender |
2012-05-02 |
Wes Johnson |
2012-05-04 |
Jim Richardson |
2012-05-04 |
Cosmin Luță |
2012-05-07 |
Brendan Beveridge |
2012-05-08 |
felix |
2012-05-08 |
Max Spransy |
2012-05-16 |
Matt Goodall |
2012-05-23 |
Fred Alger |
2012-06-05 |
Daniel Hokka Zakrisson |
2012-06-07 |
Timothy Appnel |
2012-06-11 |
Nathan A. Feger |
2012-06-13 |
Derek Carter |
2012-06-14 |
Ingo Gottwald |
2012-06-17 |
Dave Hatton |
2012-06-19 |
Dane Summers |
2012-06-26 |
Ludovic Claude |
2012-06-26 |
Jonathan Palley |
2012-07-01 |
alex |
2012-07-02 |
Jeremy Smitherman |
2012-07-03 |
Lorin Hochstein |
2012-07-10 |
Mark Theunissen |
2012-07-12 |
Jan-Piet Mens |
2012-07-20 |
Nikhil Singh |
2012-07-24 |
Petros Moisiadis |
2012-07-24 |
Christoph Seitz |
2012-07-24 |
Chin Fang |
2012-07-24 |
Will Thames |
2012-07-30 |
We also have created a set of lists of the top 100 contributors, over the first 3 years, with their commit count added. This to show how top committers changed over the course of time. This first list is from Michaels first commit on 2012-02-05 up to 2012-12-31.
| Nr | Name | Commits | Lines added | Lines removed |
|---|---|---|---|---|
1 |
Michael DeHaan |
2179 |
56012 |
55589 |
2 |
Daniel Hokka Zakrisson |
180 |
2572 |
1328 |
3 |
Stephen Fromm |
127 |
3994 |
1672 |
4 |
Seth Vidal |
94 |
3018 |
804 |
5 |
Tim Bielawa |
90 |
23650 |
10353 |
6 |
Dag Wieers |
88 |
1870 |
759 |
7 |
Jeroen Hoekx |
72 |
2529 |
601 |
8 |
Jan-Piet Mens |
72 |
3659 |
951 |
9 |
Lorin Hochstein |
32 |
542 |
121 |
10 |
Marco Vito Moscaritolo |
27 |
6899 |
97 |
11 |
Matthew Williams |
24 |
516 |
211 |
12 |
jkleint |
22 |
530 |
412 |
13 |
Will Thames |
20 |
190 |
49 |
14 |
Peter Sankauskas |
19 |
612 |
48 |
15 |
Brian Coca |
19 |
183 |
55 |
16 |
Mark Theunissen |
18 |
760 |
339 |
17 |
Matt Wright |
17 |
666 |
51 |
18 |
Pepe Barbe |
16 |
320 |
121 |
19 |
Nigel Metheringham |
16 |
575 |
299 |
20 |
Dave Hatton |
16 |
256 |
140 |
21 |
bradobro |
14 |
336 |
94 |
22 |
Derek Carter |
14 |
252 |
47 |
23 |
Dane Summers |
13 |
722 |
107 |
24 |
Romeo Theriault |
10 |
384 |
78 |
25 |
Timothy Appnel |
9 |
47 |
27 |
26 |
Rodney Quillo |
9 |
138 |
35 |
27 |
Daniel Néri |
9 |
64 |
34 |
28 |
Wes Johnson |
8 |
30 |
10 |
29 |
Nikhil Singh |
8 |
296 |
432 |
30 |
Michel Blanc |
8 |
192 |
38 |
31 |
Ingo Gottwald |
8 |
95 |
27 |
32 |
Dietmar Schinnerl |
8 |
49 |
21 |
33 |
Christopher Johnston |
7 |
65 |
42 |
34 |
Ludovic Claude |
6 |
27 |
20 |
35 |
Fabian Arrotin |
6 |
20 |
14 |
36 |
Anastasis Andronidis |
6 |
27 |
15 |
37 |
Serge van Ginderachter |
5 |
13 |
3 |
38 |
Petros Moisiadis |
5 |
104 |
27 |
39 |
Jonathan Palley |
5 |
34 |
11 |
40 |
Jim Richardson |
5 |
22 |
15 |
41 |
Jeremy Smitherman |
5 |
35 |
13 |
42 |
Henry Graham |
5 |
88 |
20 |
43 |
Gregory Duchatelet |
5 |
48 |
14 |
44 |
Fred Alger |
5 |
11 |
13 |
45 |
Aurélien Bondis |
5 |
81 |
25 |
46 |
Aleksej Romanov |
5 |
153 |
15 |
47 |
Ahmad Khayyat |
5 |
182 |
141 |
48 |
fdavis |
4 |
42 |
13 |
49 |
Sundar Raman |
4 |
14 |
3 |
50 |
Sebastien Bocahu |
4 |
10 |
9 |
51 |
Norman J. Harman Jr |
4 |
259 |
279 |
52 |
Nathan A. Feger |
4 |
34 |
9 |
53 |
Maxim Burgerhout |
4 |
14 |
10 |
54 |
Matthew Johnson |
4 |
28 |
13 |
55 |
Luke Antins |
4 |
12 |
4 |
56 |
John Eckersberg |
4 |
15 |
13 |
57 |
John Callender |
4 |
79 |
67 |
58 |
Grzegorz Nosek |
4 |
9 |
2 |
59 |
Cosmin Luță |
4 |
5 |
3 |
60 |
Christoph Seitz |
4 |
51 |
39 |
61 |
afterburn |
3 |
199 |
38 |
62 |
Stijn Opheide |
3 |
17 |
5 |
63 |
Rafal Lewczuk |
3 |
6 |
3 |
64 |
Philipp Grau |
3 |
3 |
2 |
65 |
Patrik Lundin |
3 |
455 |
281 |
66 |
Matt Coddington |
3 |
6 |
6 |
67 |
Junegunn Choi |
3 |
49 |
23 |
68 |
Jesse Andrews |
3 |
22 |
7 |
69 |
Jeremy Katz |
3 |
16 |
7 |
70 |
Franck Cuny |
3 |
168 |
19 |
71 |
Dave Peticolas |
3 |
30 |
50 |
72 |
Chelsea Robb |
3 |
26 |
5 |
73 |
Brendan Beveridge |
3 |
19 |
9 |
74 |
felix |
2 |
55 |
10 |
75 |
bleader |
2 |
2 |
2 |
76 |
alex |
2 |
4 |
4 |
77 |
Yvan Cottyn |
2 |
2 |
2 |
78 |
Ton Kersten |
2 |
4 |
1 |
79 |
Stavros Korokithakis |
2 |
6 |
2 |
80 |
Piotr Kweclich |
2 |
29 |
3 |
81 |
Nandor Sivok |
2 |
4 |
4 |
82 |
Michael Lambert |
2 |
17 |
3 |
83 |
Matt Goodall |
2 |
17 |
5 |
84 |
Martijn Koster |
2 |
16 |
17 |
85 |
Igor Galić |
2 |
2 |
2 |
86 |
Florian Diebold |
2 |
21 |
13 |
87 |
Chris Geddings |
2 |
2 |
1 |
88 |
Chin Fang |
2 |
181 |
16 |
89 |
Ashley Penney |
2 |
6 |
6 |
90 |
Ali Asad Lotia |
2 |
3 |
4 |
91 |
mxxcon |
1 |
1 |
1 |
92 |
Sébastien Bocahu |
1 |
23 |
23 |
93 |
Stefane Fermigier |
1 |
2 |
2 |
94 |
Reed Murphy |
1 |
6 |
5 |
95 |
Ralph Bean |
1 |
9 |
3 |
96 |
Petetin Ludovic |
1 |
1 |
1 |
97 |
Miek Gieben |
1 |
1 |
0 |
98 |
Max Spransy |
1 |
2 |
2 |
99 |
Matt Klich |
1 |
3 |
6 |
100 |
Marko Mikulicic |
1 |
3 |
0 |
The second list is from Michaels first commit up to 2014-12-31 and also
includes paid employee work from the company. An extra note is
necessary here, as the Ansible repository split into
ansible-modules-core and ansible-modules-extras around September
2014, it is impossible to get all these numbers 100% correct. But
I really did my best. In December, 2016, the Ansible Core Team
re-merged the module repositories back into ansible/ansible on GitHub.
| Nr | Name | Commits | Lines added | Lines removed |
|---|---|---|---|---|
1 |
Michael DeHaan |
5085 |
108420 |
177575 |
2 |
James Cammarata |
1430 |
46050 |
10823 |
3 |
James Tanner |
698 |
12154 |
6579 |
4 |
Daniel Hokka Zakrisson |
329 |
3593 |
1925 |
5 |
Brian Coca |
273 |
3751 |
1334 |
6 |
Toshio Kuratomi |
214 |
5863 |
1857 |
7 |
Stephen Fromm |
166 |
4665 |
2191 |
8 |
Matt Martz |
149 |
12536 |
3010 |
9 |
Richard C Isaacson |
141 |
2367 |
1238 |
10 |
Seth Vidal |
117 |
3583 |
928 |
11 |
Serge van Ginderachter |
107 |
2715 |
676 |
12 |
Dag Wieers |
106 |
2368 |
1005 |
13 |
Jan-Piet Mens |
96 |
5394 |
1756 |
14 |
Tim Bielawa |
93 |
23689 |
10374 |
15 |
Will Thames |
85 |
1850 |
1270 |
16 |
Lorin Hochstein |
83 |
1998 |
282 |
17 |
Michael Scherer |
79 |
1013 |
135 |
18 |
Jeroen Hoekx |
79 |
2883 |
623 |
19 |
Chris Church |
68 |
2848 |
675 |
20 |
Paul Durivage |
62 |
3862 |
597 |
21 |
James Laska |
53 |
2770 |
466 |
22 |
Stoned Elipot |
49 |
799 |
181 |
23 |
Michel Blanc |
39 |
494 |
183 |
24 |
Maykel Moya |
38 |
515 |
145 |
25 |
Tim Gerla |
35 |
555 |
149 |
26 |
Rene Moser |
35 |
470 |
98 |
27 |
Bruce Pennypacker |
33 |
2138 |
839 |
28 |
Timothy Appnel |
30 |
708 |
106 |
29 |
Marco Vito Moscaritolo |
29 |
6901 |
99 |
30 |
Jesse Keating |
29 |
629 |
114 |
31 |
James Martin |
29 |
2574 |
334 |
32 |
Chris Hoffman |
25 |
1211 |
128 |
33 |
Nigel Metheringham |
24 |
903 |
384 |
34 |
Matthew Williams |
24 |
516 |
211 |
35 |
Joshua Lund |
23 |
335 |
257 |
36 |
jkleint |
22 |
530 |
412 |
37 |
Peter Sankauskas |
22 |
719 |
73 |
38 |
lwade |
21 |
1225 |
188 |
39 |
Mark Theunissen |
21 |
795 |
344 |
40 |
Monty Taylor |
20 |
754 |
500 |
41 |
Michael Vogt |
19 |
163 |
40 |
42 |
Pepe Barbe |
18 |
323 |
123 |
43 |
Jonathan Mainguy |
18 |
153 |
81 |
44 |
Matt Wright |
17 |
666 |
51 |
45 |
martin f. krafft |
16 |
88 |
40 |
46 |
bennojoy |
16 |
2982 |
55 |
47 |
Vincent Viallet |
16 |
1534 |
170 |
48 |
Jimmy Tang |
16 |
479 |
57 |
49 |
Dave Hatton |
16 |
256 |
140 |
50 |
Yves Dorfsman |
15 |
290 |
62 |
51 |
Ton Kersten |
15 |
111 |
35 |
52 |
Romeo Theriault |
15 |
823 |
103 |
53 |
Patrik Lundin |
15 |
924 |
393 |
54 |
Johan Wirén |
15 |
776 |
68 |
55 |
Derek Carter |
15 |
253 |
48 |
56 |
Daniel Jaouen |
15 |
1657 |
279 |
57 |
bradobro |
14 |
336 |
94 |
58 |
Rodney Quillo |
14 |
205 |
57 |
59 |
Cristian Ciupitu |
14 |
105 |
100 |
60 |
Cove Schneider |
14 |
655 |
137 |
61 |
jeromew |
13 |
779 |
142 |
62 |
Till Maas |
13 |
64 |
32 |
63 |
Mikhail Sobolev |
13 |
70 |
42 |
64 |
Michael Peters |
13 |
115 |
25 |
65 |
Matt Coddington |
13 |
374 |
18 |
66 |
Ingo Gottwald |
13 |
152 |
41 |
67 |
Hiroaki Nakamura |
13 |
440 |
51 |
68 |
Dane Summers |
13 |
722 |
107 |
69 |
trbs |
12 |
508 |
79 |
70 |
Yap Sok Ann |
12 |
542 |
100 |
71 |
Matt Hite |
12 |
2991 |
152 |
72 |
John Jarvis |
12 |
646 |
238 |
73 |
John Dewey |
12 |
820 |
64 |
74 |
Hagai |
12 |
217 |
10 |
75 |
abulimov |
11 |
843 |
149 |
76 |
Thomas Omans |
11 |
57 |
19 |
77 |
Scott Sturdivant |
11 |
34 |
12 |
78 |
Petr Svoboda |
11 |
121 |
22 |
79 |
Marc Abramowitz |
11 |
113 |
133 |
80 |
Joshua Conner |
11 |
318 |
131 |
81 |
John Barker |
11 |
67 |
33 |
82 |
fdavis |
10 |
104 |
27 |
83 |
Lester Wade |
10 |
140 |
60 |
84 |
Chris Gardner |
10 |
176 |
43 |
85 |
Chris Conway |
10 |
791 |
59 |
86 |
Blair Zajac |
10 |
88 |
34 |
87 |
Bernhard Weitzhofer |
10 |
707 |
24 |
88 |
Andrew Resch |
10 |
21 |
21 |
89 |
Alexander Popov |
10 |
125 |
65 |
90 |
jjshoe |
9 |
26 |
6 |
91 |
Yeukhon Wong |
9 |
818 |
263 |
92 |
Vincent Van der Kussen |
9 |
577 |
11 |
93 |
Veeti Paananen |
9 |
35 |
12 |
94 |
Tin Tvrtkovic |
9 |
427 |
146 |
95 |
Skylar Saveland |
9 |
241 |
171 |
96 |
Mike Grozak |
9 |
178 |
39 |
97 |
Jens Rantil |
9 |
22 |
19 |
98 |
Frédéric de Villamil |
9 |
96 |
16 |
99 |
Franck Cuny |
9 |
590 |
160 |
100 |
Evan Wies |
9 |
635 |
76 |