3. A home on the Internet — Ludovic Courtès — Software

Below are a few pieces of code available as Libre Software. What you are seeing here is probably outdated, though.

3.1 libchop

During my PhD I developed a data storage framework called libchop, and on top of it, a prototype cooperative backup application. The former has since be released and is under active development.


3.2 GNU Guix

Doing a lot of GNU, Guile, and Nix inevitably led to GNU Guix—functional package manager for, and distribution of the GNU System.


3.3 GNU Guile

Scheme is my programming language of choice and GNU Guile is currently my implementation of choice. It's probably not the best libre implementation of Scheme, but I find it quite friendly, it has one of the coolest module systems, it implements a lot of SRFIs, and it may be easily embedded in a C application.

I contributed little thingies for Guile, like Guile-Reader.


3.4 GNU Guile Networking Packages

Networking packages for Guile 1.8 that I wrote:

All these are available in their respective on-line repositories.


3.5 Skribilo

I'm having fun working on Skribilo, a document programming framework for Guile released under the GNU GPL.

Technically, Skribilo is based on the Scheme language. It provides some sort of a simple markup language, not unlike HTML, DocBook, LaTeX, or Lout (see the meta-chapter for a demo!). Alternatively, it also offers a simpler, markup-less, plain text syntax that is comparable to that of, e.g., txt2tags, PlainDoc, and similar systems.

Skribilo derives from Skribe. It strives to be more modular and comes with new engines and features.


3.6 Typesetting with Lout

Lout is a free document formatting tool, similar in principle to TeX/LaTeX, but much more lightweight, clear, and easy to understand. Below are pieces of information that might be useful to Lout users.

3.6.1 Margin Kerning

Margin kerning is a micro-typographic refinement that is nice to have. Basically, it consists in protruding small characters located next to a margin outside the margin. This way, the shape of paragraphs looks better to the human eye. More information may be found in Micro-typographic Extensions to the TeX Typesetting System, by H. T. Thàn. Examples:

  • a simple example that compares a paragraph rendered with and without margin kerning: PS, PDF, Lout;
  • a complete document, using the Latin Modern Roman font, with and without margin kerning;
  • the same document, using the Palatino Roman font, with and without margin kerning.
A patch that augments Lout with margin kerning capabilities is available here (the original one is there).

Update: This feature has been integrated in Lout 3.31, dated Aug. 24th 2005.

3.6.2 Computer Modern and Latin Modern Fonts

Here are useful pointers and pieces of information to use Knuth' beautiful Computer Modern fonts (you know: those LaTeX uses by default) in Lout. Note that these steps are detailed in Valeriy E. Ushakov's essay on the use of fonts in Lout (although the fontdef thing is deprecated since Lout now uses the @FontDef symbol for font database entries). The Type1 Computer Modern fonts are provided by the AMS and are available by FTP. Original CM fonts do not contain accented characters so you might need to get the Latin Modern fonts available right here.

Converting to the ASCII Type1 font format (PFA), which is the format understood by includeres (see below), can be done as follows, using the t1ascii program from t1utils:

# Get to the directory where `.pbf' files are
$ mkdir ../pfa
$ for i in *.pfb 
  do t1ascii $i ../pfa/`echo $i | sed -es'/pfb$/pfa/g'` 
  && rm $i  
  done
This will create the PFA files in the ../pfa directory. Theses file must then be copied in the PSUtils directory (/usr/lib/psutils in Debian) so that includeres can find them and incorporate them into your PostScript files.

I once filed several reports to the Debian BTS in order to try to automate the installation of new fonts for Lout. These can be found here: 289997, 289999, 290001.

Finally, a bug was fixed in Lout 3.31 that prevented ligatures (`fi', `fl', etc.) to be produced with Latin Modern fonts (read here for details).


3.7 Ego+Pego: Portable Checkpointing for C/C++

A technical report that deals with the use of computational reflection in order to provide portable checkpointing facilities to compile C/C++ applications: PDF. These ideas have been implemented as two C libraries called Ego (which provides introspection facilities) and Pego (which provides state capture facilities). Whenever it's reachable, you can look at a dedicated webpage.


3.8 Libre Software Meeting

Thomas Petazzoni and I were volunteers in charge of the Operating Systems Design and Implementation topic of the 2005 Libre Software Meeting. LSM 2005 is now over. Papers, slides, and audio are available online.


3.9 Other

I used to maintain software in my lcourtes@laas.fr--2006-libre GNU Arch archive (note: older archives can be found by just changing the year in the last component of the archive URL). However, I recently switched to Git for most of the software I maintain.


(made with skribilo)