diff --git a/doc/sphinx/Pacemaker_Development/evolution.rst b/doc/sphinx/Pacemaker_Development/evolution.rst index cf4bd4ff46..31349c38c2 100644 --- a/doc/sphinx/Pacemaker_Development/evolution.rst +++ b/doc/sphinx/Pacemaker_Development/evolution.rst @@ -1,107 +1,90 @@ Evolution of the project ------------------------ -Foreword -######## +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. -This chapter is currently not meant as a definite summary of how -Pacemaker got into where it stands now, but rather to provide few valuable -pointers an entusiasts (presumably software archeologist type of person) -may find useful. Moreover, well-intentioned contributors to Pacemaker -project may want to review them occasionally since, as the famous quote -has it, "those who do not learn history are doomed to repeat it". - -For anything more talkative with less emphasis on actual code, other -places will serve better for the time being (and if not, should not be -too hard to volunteer extensions to those writeups): - -* `main entry at ClusterLabs community wiki `_ -* `entry at wikipedia.org `_ -* `brief section dedicated to Pacemaker in Digimer's tutorial regarding setting - up the cluster with the old Red Hat Cluster Suite like stack - `_ - - -Ancestor: Heartbeat project +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. Note that -till Pacemaker 2.0, it also used to stand for one (and initially the only) of -supported messaging back-ends (removal of this support made for one such -notable drop of reused code), see also -`pre-2.0 commit 55ab749bf -`_. +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 -`dedicated read-only repository -`_ , and anchored there, the most -notable commits are: +`read-only repository `_. Notable +commits include: -* `initial check-in of what turned up to be the basis for Pacemaker later on +* `creation of Heartbeat's "new cluster resource manager," which evolved into + Pacemaker `_ -* `drop of now-detached Pacemaker code +* `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