aboutsummaryrefslogtreecommitdiff
path: root/about-make.html
diff options
context:
space:
mode:
authorMohammad Akhlaghi <mohammad@akhlaghi.org>2020-11-26 03:45:54 +0000
committerMohammad Akhlaghi <mohammad@akhlaghi.org>2020-11-26 03:45:54 +0000
commit6b87843fc38c1646615ab0342a703f7ab3caf1cb (patch)
treeea11daebe93d93f7e549fe9e3404248d850026f7 /about-make.html
parent56779683e1abd996f50d1e66055f4f5540a7d61c (diff)
The long about.hml is now broken up into smaller pages
The "About" page ('about.html') was effectively a full copy of Maneage's 'README-hacking.md', so it was very long. To help in readability it has now been broken down into smaller pages (one for each section). Also the indentation of Make recipes was corrected, both in the about pages, and also in the tutorial.
Diffstat (limited to 'about-make.html')
-rw-r--r--about-make.html221
1 files changed, 221 insertions, 0 deletions
diff --git a/about-make.html b/about-make.html
new file mode 100644
index 0000000..4474075
--- /dev/null
+++ b/about-make.html
@@ -0,0 +1,221 @@
+<!DOCTYPE html>
+<!-- Copyright notes are just below the head and before body -->
+
+ <html lang="en-US">
+
+ <!-- HTML Header -->
+ <head>
+ <!-- Title of the page. -->
+ <title>Maneage -- Managing data lineage</title>
+
+ <!-- Enable UTF-8 encoding to easily use non-ASCII charactes -->
+ <meta charset="UTF-8">
+ <meta http-equiv="Content-type" content="text/html; charset=UTF-8">
+
+ <!-- Put logo beside the address bar -->
+ <link rel="shortcut icon" href="./img/favicon.svg" />
+
+ <!-- The viewport meta tag is placed mainly for mobile browsers
+ that are pre-configured in different ways (for example setting the
+ different widths for the page than the actual width of the device,
+ or zooming to different values. Without this the CSS media
+ solutions might not work properly on all mobile browsers.-->
+ <meta name="viewport"
+ content="width=device-width, initial-scale=1">
+
+ <!-- Basic styles -->
+ <link rel="stylesheet" href="css/base.css" />
+ </head>
+
+ <!--
+ Webpage of Maneage: a framework for managing data lineage
+
+ Copyright (C) 2020, Pedram Ashofteh Ardakani <pedramardakani@pm.me>
+ Copyright (C) 2020, Mohammad Akhlaghi <mohammad@akhlaghi.org>
+
+ This file is part of Maneage. Maneage is free software: you can
+ redistribute it and/or modify it under the terms of the GNU General
+ Public License as published by the Free Software Foundation, either
+ version 3 of the License, or (at your option) any later version.
+
+ Maneage is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ General Public License for more details. See
+ <http://www.gnu.org/licenses/>. -->
+
+ <!-- Start the main body. -->
+ <body>
+ <div id="container">
+ <header role="banner">
+ <!-- global navigation -->
+ <nav role="navigation" id="nav-hamburger-wrapper">
+ <input type="checkbox" id="nav-hamburger-input"/>
+ <label for="nav-hamburger-input">|||</label>
+ <div id="nav-hamburger-items" class="button">
+ <a href="index.html">Home</a>
+ <a href="about.html">About</a>
+ <a href="http://git.maneage.org/project.git/">Git</a>
+ <a href="tutorial.html">Tutorial</a>
+ </div>
+ </nav>
+ </header>
+ <div class="banner">
+ <div>
+ <a href="index.html"><img src="img/maneage-logo.svg" /></a>
+ </div>
+ <div>
+ <h1>Maneage</h1><h2>Managing Data Lineage</h2>
+ <p>Copyright &copy; 2018-2020 Mohammad Akhlaghi <a href="&#109;&#x61;&#x69;&#x6C;&#x74;&#x6F;:&#x6D;&#111;&#104;&#97;&#x6D;&#109;a&#x64;&#64;&#x61;&#107;&#x68;&#x6C;&#x61;&#x67;&#104;&#x69;.&#x6F;&#x72;&#103;">&#x6D;&#111;&#104;&#97;&#x6D;&#109;a&#x64;&#64;&#x61;&#107;&#x68;&#x6C;&#x61;&#x67;&#104;&#x69;.&#x6F;&#x72;&#103;</a><br />
+ Copyright &copy; 2020 Raul Infante-Sainz <a href="m&#x61;&#105;&#108;t&#111;:&#x69;&#x6E;&#x66;&#x61;&#x6E;&#116;&#101;&#115;&#97;&#x69;n&#122;&#64;&#103;&#x6D;&#x61;&#x69;&#x6C;&#x2E;&#x63;&#111;&#x6D;">&#x69;&#x6E;&#x66;&#x61;&#x6E;&#116;&#101;&#115;&#97;&#x69;n&#122;&#64;&#103;&#x6D;&#x61;&#x69;&#x6C;&#x2E;&#x63;&#111;&#x6D;</a><br />
+ <a href="#page-footer">License Conditions</a></p>
+ </div>
+ </div>
+
+
+
+
+ <hr />
+ <p align="right">Next: <a href="about-architecture.html">Maneage architecture</a>, Previous: <a href="about-citation.html">Citation and published papers</a>, Up: <a href="about.html">About</a> </p>
+
+ <h2>Why Make?</h2>
+
+ <p>When batch processing is necessary (no manual intervention, as in a
+ reproducible project), shell scripts are usually the first solution that
+ come to mind. However, the inherent complexity and non-linearity of
+ progress in a scientific project (where experimentation is key) make it
+ hard to manage the script(s) as the project evolves. For example, a script
+ will start from the top/start every time it is run. So if you have already
+ completed 90% of a research project and want to run the remaining 10% that
+ you have newly added, you have to run the whole script from the start
+ again. Only then will you see the effects of the last new steps (to find
+ possible errors, or better solutions and etc).</p>
+
+ <p>It is possible to manually ignore/comment parts of a script to only do a
+ special part. However, such checks/comments will only add to the complexity
+ of the script and will discourage you to play-with/change an already
+ completed part of the project when an idea suddenly comes up. It is also
+ prone to very serious bugs in the end (when trying to reproduce from
+ scratch). Such bugs are very hard to notice during the work and frustrating
+ to find in the end.</p>
+
+ <p>The Make paradigm, on the other hand, starts from the end: the final
+ <em>target</em>. It builds a dependency tree internally, and finds where it should
+ start each time the project is run. Therefore, in the scenario above, a
+ researcher that has just added the final 10% of steps of her research to
+ her Makefile, will only have to run those extra steps. With Make, it is
+ also trivial to change the processing of any intermediate (already written)
+ <em>rule</em> (or step) in the middle of an already written analysis: the next
+ time Make is run, only rules that are affected by the changes/additions
+ will be re-run, not the whole analysis/project.</p>
+
+ <p>This greatly speeds up the processing (enabling creative changes), while
+ keeping all the dependencies clearly documented (as part of the Make
+ language), and most importantly, enabling full reproducibility from scratch
+ with no changes in the project code that was working during the
+ research. This will allow robust results and let the scientists get to what
+ they do best: experiment and be critical to the methods/analysis without
+ having to waste energy and time on technical problems that come up as a
+ result of that experimentation in scripts.</p>
+
+ <p>Since the dependencies are clearly demarcated in Make, it can identify
+ independent steps and run them in parallel. This further speeds up the
+ processing. Make was designed for this purpose. It is how huge projects
+ like all Unix-like operating systems (including GNU/Linux or Mac OS
+ operating systems) and their core components are built. Therefore, Make is
+ a highly mature paradigm/system with robust and highly efficient
+ implementations in various operating systems perfectly suited for a complex
+ non-linear research project.</p>
+
+ <p>Make is a small language with the aim of defining <em>rules</em> containing
+ <em>targets</em>, <em>prerequisites</em> and <em>recipes</em>. It comes with some nice features
+ like functions or automatic-variables to greatly facilitate the management
+ of text (filenames for example) or any of those constructs. For a more
+ detailed (yet still general) introduction see the article on Wikipedia:</p>
+
+ <ul>
+ <li><a href="https://en.wikipedia.org/wiki/Make_(software)">https://en.wikipedia.org/wiki/Make_(software)</a></li>
+ </ul>
+
+ <p>Make is a +40 year old software that is still evolving, therefore many
+ implementations of Make exist. The only difference in them is some extra
+ features over the <a href="https://pubs.opengroup.org/onlinepubs/009695399/utilities/make.html">standard
+ definition</a>
+ (which is shared in all of them). Maneage is primarily written in GNU Make
+ (which it installs itself, you don't have to have it on your system). GNU
+ Make is the most common, most actively developed, and most advanced
+ implementation. Just note that Maneage downloads, builds, internally
+ installs, and uses its own dependencies (including GNU Make), so you don't
+ have to have it installed before you try it out.</p>
+
+ <h3>How can I learn Make?</h3>
+
+ <p>The GNU Make book/manual (links below) is arguably the best place to learn
+ Make. It is an excellent and non-technical book to help get started (it is
+ only non-technical in its first few chapters to get you started easily). It
+ is freely available and always up to date with the current GNU Make
+ release. It also clearly explains which features are specific to GNU Make
+ and which are general in all implementations. So the first few chapters
+ regarding the generalities are useful for all implementations.</p>
+
+ <p>The first link below points to the GNU Make manual in various formats and
+ in the second, you can download it in PDF (which may be easier for a first
+ time reading).</p>
+
+ <ul>
+ <li><a href="https://www.gnu.org/software/make/manual/">https://www.gnu.org/software/make/manual/</a></li>
+ <li><a href="https://www.gnu.org/software/make/manual/make.pdf">https://www.gnu.org/software/make/manual/make.pdf</a></li>
+ </ul>
+
+ <p>If you use GNU Make, you also have the whole GNU Make manual on the
+ command-line with the following command (you can come out of the "Info"
+ environment by pressing <code>q</code>).</p>
+
+ <pre><code>info make</code></pre>
+
+ <p>If you aren't familiar with the Info documentation format, we strongly
+ recommend running <code>$ info info</code> and reading along. In less than an hour,
+ you will become highly proficient in it (it is very simple and has a great
+ manual for itself). Info greatly simplifies your access (without taking
+ your hands off the keyboard!) to many manuals that are installed on your
+ system, allowing you to be much more efficient as you work. If you use the
+ GNU Emacs text editor (or any of its variants), you also have access to all
+ Info manuals while you are writing your projects (again, without taking
+ your hands off the keyboard!).</p>
+
+ <p align="right">Next: <a href="about-architecture.html">Maneage architecture</a>, Previous: <a href="about-citation.html">Citation and published papers</a>, Up: <a href="about.html">About</a> </p>
+
+
+
+
+
+ <footer role="contentinfo" id="page-footer">
+ <h2>Copyright information</h2>
+
+ <p>This file is part of Maneage's core: <a href="https://git.maneage.org/project.git">https://git.maneage.org/project.git</a></p>
+
+ <p>Maneage is free software: you can redistribute it and/or modify it under
+ the terms of the GNU General Public License as published by the Free
+ Software Foundation, either version 3 of the License, or (at your option)
+ any later version.</p>
+
+ <p>Maneage is distributed in the hope that it will be useful, but WITHOUT ANY
+ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+ details.</p>
+
+ <p>You should have received a copy of the GNU General Public License along
+ with Maneage. If not, see <a href="https://www.gnu.org/licenses/">https://www.gnu.org/licenses/</a>.</p>
+ <ul>
+ <li><p>Maneage is currently based in the Instituto de Astrofísica de Canarias (IAC).</p></li>
+ <li><p>Address: IAC, Calle Vía Láctea, s/n, E38205 - La Laguna (Tenerife), Spain.</p></li>
+ <!-- The people page will be added later
+ <li><p>People [page will be added later]</p></li>
+ -->
+ <li><p>Contact: with <a href="https://savannah.nongnu.org/support/?func=additem&group=reproduce">this form.</a></p></li>
+ <li><p>Copyright &copy; 2020 Maneage volunteers</p></li>
+ <li><p>All logos are copyrighted by the respective institutions</p></li>
+ </ul>
+ </footer>
+ </div>
+ </body>