diff --git a/doc/Pacemaker_Development/en-US/Ch-Evolution.txt b/doc/Pacemaker_Development/en-US/Ch-Evolution.txt index cae331944a..af3f151df2 100644 --- a/doc/Pacemaker_Development/en-US/Ch-Evolution.txt +++ b/doc/Pacemaker_Development/en-US/Ch-Evolution.txt @@ -1,104 +1,104 @@ :compat-mode: legacy = Evolution of the project = anchor:ch-evolution[Chapter 3. Evolution] == Foreword == 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): * https://wiki.clusterlabs.org/wiki/Pacemaker[main entry at ClusterLabs community wiki] * https://en.wikipedia.org/wiki/Pacemaker_(software)[entry at wikipedia.org] * https://www.alteeve.com/w/AN!Cluster_Tutorial_2#What_about_Pacemaker.3F[ brief section dedicated to Pacemaker in Digimer's tutorial regarding setting up the cluster with the old Red Hat Cluster Suite like stack] == Common ancestor: 'heartbeat' project == Pacemaker can be considered as a spin-off from `heartbeat', original comprehensive HA suite started by Alan Robertson, and 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 https://github.com/ClusterLabs/pacemaker/commit/55ab749bf0f0143bd1cd050c1bbe302aecb3898e[ pre-2.0 commit 55ab749bf]. The codebase for heartbeat used to be hosted at http://hg.linux-ha.org, -but since that does not appear working anymore, an archive checkout -from 2016 is shared at https://gitlab.com/poki/archived-heartbeat[ +but since that does not appear reliably available recently, an archive +checkout from 2016 is shared at https://gitlab.com/poki/archived-heartbeat[ as a dedicated read-only repository], and anchored there, the most notable commits are: * https://gitlab.com/poki/archived-heartbeat/commit/bb48551be418291c46980511aa31c7c2df3a85e4[ initial check-in of what turned up to be the basis for Pacemaker later on] * https://gitlab.com/poki/archived-heartbeat/commit/74573ac6182785820d765ec76c5d70086381931a[ drop of now-detached Pacemaker code] Regarding the Pacemaker's split from heartbeat, it evolved stepwise (as opposed to one-off cut), and the last step of full dependency is depicted in https://www.kernel.org/doc/ols/2008/ols2008v1-pages-85-100.pdf#page=14[ 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 https://wiki.gnome.org/Projects/GLib[GLib] * Cluster Testing System (CTS) is 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: ** https://github.com/ClusterLabs/pacemaker/commit/eb7cce2a172a026336f4ba6c441dedce42f41092[ start separating, eb7cce2a1] ** https://github.com/ClusterLabs/pacemaker/commit/5884db78080941cdc4e77499bc76677676729484[ finish separating, 5884db780] * daemons' rename for 2.0 (in chronological order) ** https://github.com/ClusterLabs/pacemaker/commit/318a2e003d2369caf10a450fe7a7616eb7ffb264[ start of moving daemon sources from their top-level directories under new +/daemons+ hierarchy, 318a2e003] ** https://github.com/ClusterLabs/pacemaker/commit/01563cf2637040e9d725b777f0c42efa8ab075c7[ +attrd+ -> +pacemaker-attrd+, 01563cf26] ** https://github.com/ClusterLabs/pacemaker/commit/36a00e2376fd50d52c2ccc49483e235a974b161c[ +lrmd+ -> +pacemaker-execd+, 36a00e237] ** https://github.com/ClusterLabs/pacemaker/commit/e4f4a0d64c8b6bbc4961810f2a41383f52eaa116[ +pacemaker_remoted+ -> +pacemaker-remoted+, e4f4a0d64] ** https://github.com/ClusterLabs/pacemaker/commit/db5536e40c77cdfdf1011b837f18e4ad9df45442[ +crmd+ -> +pacemaker-controld+, db5536e40] ** https://github.com/ClusterLabs/pacemaker/commit/e2fdc2baccc3ae07652aac622a83f317597608cd[ +pengine+ -> +pacemaker-schedulerd+, e2fdc2bac] ** https://github.com/ClusterLabs/pacemaker/commit/038c465e2380c5349fb30ea96c8a7eb6184452e0[ +stonithd+ -> +pacemaker-fenced+, 038c465e2] ** https://github.com/ClusterLabs/pacemaker/commit/50584c234e48cd8b99d355ca9349b0dfb9503987[ +cib daemon+ -> +pacemaker-based+, 50584c234] //// TBD: - standalone tengine -> part of crmd/pacemaker-controld ////