<!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 © 2018-2020 Mohammad Akhlaghi <a href="mailto:mohammad@akhlaghi.org">mohammad@akhlaghi.org</a><br /> Copyright © 2020 Raul Infante-Sainz <a href="mailto:infantesainz@gmail.com">infantesainz@gmail.com</a><br /> <a href="#page-footer">License Conditions</a></p> </div> </div> <hr /> <p align="right">Previous: <a href="about-tips.html">Tips for designing your project</a>, Up: <a href="about.html">About</a> </p> <h2>Future improvements</h2> <p>This is an evolving project and as time goes on, it will evolve and become more robust. Some of the most prominent issues we plan to implement in the future are listed below, please join us if you are interested.</p> <h2>Package management</h2> <p>It is important to have control of the environment of the project. Maneage currently builds the higher-level programs (for example GNU Bash, GNU Make, GNU AWK and domain-specific software) it needs, then sets <code>PATH</code> so the analysis is done only with the project's built software. But currently the configuration of each program is in the Makefile rules that build it. This is not good because a change in the build configuration does not automatically cause a re-build. Also, each separate project on a system needs to have its own built tools (that can waste a lot of space).</p> <p>A good solution is based on the <a href="https://nixos.org/nix/about.html">Nix package manager</a>: a separate file is present for each software, containing all the necessary info to build it (including its URL, its tarball MD5 hash, dependencies, configuration parameters, build steps and etc). Using this file, a script can automatically generate the Make rules to download, build and install program and its dependencies (along with the dependencies of those dependencies and etc).</p> <p>All the software are installed in a "store". Each installed file (library or executable) is prefixed by a hash of this configuration (and the OS architecture) and the standard program name. For example (from the Nix webpage):</p> <pre><code>/nix/store/b6gvzjyb2pg0kjfwrjmg1vfhh54ad73z-firefox-33.1/</code></pre> <p>The important thing is that the "store" is <em>not</em> in the project's search path. After the complete installation of the software, symbolic links are made to populate each project's program and library search paths without a hash. This hash will be unique to that particular software and its particular configuration. So simply by searching for this hash in the installed directory, we can find the installed files of that software to generate the links.</p> <p>This scenario has several advantages: 1) a change in a software's build configuration triggers a rebuild. 2) a single "store" can be used in many projects, thus saving space and configuration time for new projects (that commonly have large overlaps in lower-level programs).</p> <p align="right">Previous: <a href="about-tips.html">Tips for designing your project</a>, Up: <a href="about.html">About</a> </p> <footer role="contentinfo" id="page-footer"> <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> <li><p>Contact: with <a href="https://savannah.nongnu.org/support/?func=additem&group=reproduce">this form</a>, or project PI (<a href="http://akhlaghi.org">Mohammad Akhlaghi</a>).</p></li> <li><p>Copyright © 2020 Maneage volunteers</p></li> <li>This page is distributed under GNU General Public License (<a href="https://www.gnu.org/licenses/gpl-3.0.en.html">GPL</a>).</li> </ul> </footer> </body> </html>