Development =========== Source tree structure --------------------- - the doc/ directory contains text files to build the website documentation. - the modules/ directory contains one module per subdirectory. - the config/ directory contains the default config script where various variables are set (e.g. which modules to call) and can be overwritten by custom config scripts (e.g. config/cd). - the ./build.sh script calls the config scripts and the modules. Design principles ----------------- - bottom up approach : the whole system is bootstrapped at each build, with an up-to-date and coherent set of softwares. Not a remaster of an existing live iso (hard to maintain, dependance on a volatile project). - rely only on a few robust and long-term maintained distributions : Debian and Sage. - add only what is really missing, try not to fork existing packages and keep their default behaviour. - the added code should be human checkable in a small amount of time. - modules should be as independent as possible, no feature tying. - easy to build. Once a few variables are configured, a bot could build the live automatically at each new sage release. Meta meta --------- - We do not maintain the source code of the key, there are tons of packages, Debian does that. - We do not maintain the source code of what builds the key, Debian Live does that. - We do not maintain the configuration directory of Debian Live, this would lose semantics by mixing all features together and make the source code unreadable ("why is this package selected for installation ? Why is this variable set in such a way ? Which hooks are interacting ?"). - Instead, we maintain a set of modules whose scripts act on the default configuration directory of Debian Live, that will build the key using Debian repositories. Todo ---- - jupyterlab server along the lines - allow sage development (suggested by Jason Grout). Everything is here for that, but the /opt/sagemath directory is compressed read-only, hence you should first copy it on your home so it will cost a lot of space. Some unionfs mechanism is under development, so that only the new branches will use additional disk space. - mix shared directories - (external) way to check system integrity (signed shasums) + associated help. - lock execution of files in /shared directory - the bootloader.iso is hysohybrid, add some help to the documentation to build a USB bootloader (e.g. for Macs without a CD reader). Requests already taken into account ----------------------------------- - Andrea Lazzarotto suggested to add the plop boot manager CD-ROM to allow more BIOSes to boot on the key. We added a free-softwate alternative http://www.plop.at/en/plopkexec.html with a script to burn it automatically on any empty CD-ROM. - add interesting optional sage packages and databases (suggested by Nicolas Thiery) : database_gap, gap_packages, nauty, graphviz, dot2tex. This is actually done when building sage, not when building the key. - update system between versions (keeping homedir), part of clone. - Antonio Valdés Morales suggested to have the possiblility to bypass some checks to the clone.sh script. We can now do from the /opt/clone directory: "./clone.sh /dev/sdX" to force the clone/upgrade there, even if they are more than one additional USB drive, or if the device is not a USB drive (typically the computer hard disk to have a very fast install procedure). In debate --------- - remove locate (updatedb) and logrotate cronjobs : it saves ressources but is a fork. - allow install on the host computer. This seems feasible with the Debian installer, but this may be dangerous for people not understanding what they are doing by just clicking. Moreover, the d.i. adds a lot of files on the root of the USB key, which seem not be easily moveable to th /live directory. Forks ----- We aim to minimize forking Debian Live to ease maintenance and keep a code as small as possible. Ultimately, we aim at adding a few things only in /opt/. Here is a list of current forks: - debian-live already has a persistence system. This one is quite different as it does not need any secondary filesystem/partition -> discuss on their mailing-list. - language : there really no language switcher working with lxde/xfce ? - syslinux : the live.cfg modifications correspond to bugs of the debian-live (more than one "menu default", bad label when a single flavour is selected) -> report bug upstream. - locate -> understand why is the db not generated by default ? - locales -> feature-request upstream for having all locales generated. - bootloader : plopkexec was forked to replace mkisofs by xorrisofs, remove the -hide-joliet-trans-tbl option, and allow /live/syslinux path.