== Heartbeat ==
Pacemaker came to life in late **2003** when Lars Marowsky-Brée convinced [[https://www.suse.com/|SUSE]] to hire Andrew Beekhof to implement a new cluster resource manager (CRM) for the Heartbeat project.
Although simple to configure, the original Heartbeat version 1 cluster manager had four key deficiencies:
* Maximum of 2 nodes
* Highly coupled design and implementation
* Overly simplistic group-based resource model
* Inability to detect and recover from resource-level failures
In 2005, Heartbeat 2.0.0 was released containing the first public version of the new CRM.
== Pacemaker 0.6 ==
After many successful releases, the decision was made at the end of 2007 to spin off the CRM into its own project after the 2.1.3 Heartbeat release in order to:
* support both the OpenAIS and Heartbeat cluster stacks equally
* decouple the release cycles of two projects at very different stages of their life cycles
* foster clearer package boundaries, thus leading to
* better and more stable interfaces
This transition was completed in 2008 with the 0.6.0 release of Pacemaker, which was the first to support both cluster stacks. The 0.6 series was derived from, and fully compatible with, the 2.1.3 CRM. The 0.6 series received bug-fix-only updates throughout 2008 and 2009 before being deprecated in March 2010.
== Pacemaker 1.0 ==
The Pacemaker 1.0 series contained many improvements, including:
* A more intuitive syntax
* Failure (migration) thresholds and timeouts
* Tool for making offline configuration changes
* A unified command line configuration tool that hides the underlying XML
* Rules, instance_attributes, meta_attributes and sets of operations can be defined once and referenced in multiple places
* The ability to connect to the CIB from non-cluster machines
* Allow recurring actions to be triggered at known times
* A more powerful RelaxNG-based configuration schema
== Pacemaker 2.0 ==
With Pacemaker 2.0, the convention was established that major-version releases would indicate that rolling upgrades might not be possible with certain configurations -- mostly meaning that deprecated features would be dropped, to make the code easier to maintain. See [[/w/projects/pacemaker/pacemaker_2.0_changes/|Pacemaker 2.0 changes]].
== Pacemaker 2.1 ==
With Pacemaker 2.1, the convention was established that minor-version releases would indicate that no changes in rolling upgrade or feature support were made, but significant changes have been made to the build procedure, tool usage, APIs, and/or cluster behavior. See [[/w/projects/pacemaker/pacemaker_2.1_changes/|Pacemaker 2.1 changes]].