Evolution of the project ------------------------ This section will not generally be of interest, but may occasionally shed light on why the current code is structured the way it is when investigating some thorny issue. Origin in Heartbeat project ########################### Pacemaker can be considered as a spin-off from Heartbeat, the original comprehensive high availability suite started by Alan Robertson. Some portions of code are shared, at least on the conceptual level if not verbatim, till today, even if the effective percentage continually declines. Before Pacemaker 2.0, Pacemaker supported Heartbeat as a cluster layer alternative to Corosync. That support was dropped for the 2.0.0 release (see `commit 55ab749bf `_). An archive of a 2016 checkout of the Heartbeat code base is shared as a `read-only repository `_. Notable commits include: * `creation of Heartbeat's "new cluster resource manager," which evolved into Pacemaker `_ * `deletion of the new CRM from Heartbeat after Pacemaker had been split off `_ Regarding Pacemaker's split from heartbeat, it evolved stepwise (as opposed to one-off cut), and the last step of full dependency is depicted in `The Corosync Cluster Engine `_ paper, fig. 10. This article also provides a good reference regarding wider historical context of the tangentially (and deeper in some cases) meeting components around that time. Influence of Heartbeat on Pacemaker ___________________________________ On a closer look, we can identify these things in common: * extensive use of data types and functions of `GLib `_ * Cluster Testing System (CTS), inherited from initial implementation by Alan Robertson * ... Notable Restructuring Steps in the Codebase ########################################### File renames may not appear as notable ... unless one runs into complicated ``git blame`` and ``git log`` scenarios, so some more massive ones may be stated as well. * watchdog/'sbd' functionality spin-off: * `start separating, eb7cce2a1 `_ * `finish separating, 5884db780 `_ * daemons' rename for 2.0 (in chronological order) * `start of moving daemon sources from their top-level directories under new /daemons hierarchy, 318a2e003 `_ * `attrd -> pacemaker-attrd, 01563cf26 `_ * `lrmd -> pacemaker-execd, 36a00e237 `_ * `pacemaker_remoted -> pacemaker-remoted, e4f4a0d64 `_ * `crmd -> pacemaker-controld, db5536e40 `_ * `pengine -> pacemaker-schedulerd, e2fdc2bac `_ * `stonithd -> pacemaker-fenced, 038c465e2 `_ * `cib daemon -> pacemaker-based, 50584c234 `_ .. TBD: - standalone tengine -> part of crmd/pacemaker-controld