Werner Almesberger's Linux Projects

The projects are listed in chronological order by the date when I became involved in them. Projects in which I still take an active role are shown with a yellow background. Please direct questions, bug reports, etc. for older projects to the new maintainers or to the respective mailing list.

Floppy driver extensions (1992)

My first contribution to the Linux kernel was the addition of disk format auto-detection and low-level formatting to the floppy driver.
Status: Part of the Linux kernel since 1992. The floppy driver has undergone heavy modifications since these days.

MS-DOS file system (1992-1993)

Kernel-based file system driver that can read and write MS-DOS (FAT) file systems.
Status: Part of the Linux kernel since 1992. I'm no longer working on that file system, and the code has been greatly extended by other people since then.

LILO (1992-2000)

Boot loader for Linux and other operating systems on i386 platforms. Over the last decade, LILO has been the by far most popular boot loader on Linux, and will probably continue to be so for a while.
Status: Very mature. Since mid-2000, LILO is maintained by John Coffman.
Home page: ftp://metalab.unc.edu/pub/Linux/system/boot/lilo

psmisc (1993-2000)

Small utilities that use the /proc filesystem, such as fuser, pstree, and killall. psmisc is a standard part of most Linux distributions.
Status: Generally stable, but occasional changes of the /proc interface in the kernel require updates. Handed maintenance over to Craig Small at the end of 2000.
Home page: http://psmisc.sourceforge.net/

IFS (1993)

Kernel-based layered file system based on the idea of Sun's TFS (Translucent File System). IFS allowed to mount a "stack" of file systems such that files in lower layers could be superseeded by files from higher layers. That way, one could make read-only media virtually writeable.
Status: this project was abandoned after producing a prototype that worked most of the time, because it turned out to have far too many dependencies on other kernel internals. For the full story and recent developments, follow the link below.
Home page: http://www.almesberger.net/cv/ifs.html

dosfsck (1993)

File system checker (like DOS' CHKDSK) for MS-DOS (FAT) file systems. Unlike CHKDSK, dosfsck is designed to avoid senseless destruction when repairing a file system.
Status: I produced a quite usable alpha version serving as proof of concept, but then lost interest in the project. Roman Hodek has since taken over maintenance of dosfsck and distributes it in his dosfstools package.
Home page: ftp://ftp.uni-erlangen.de/pub/Linux/LOCAL/dosfstools/

ATM on Linux (1995-2000)

This project produced a working implementation of the most important components of the ATM protocol suite, including signaling, IP over ATM, and LAN emulation. This project incorporates major contributions from dozens of people from the whole world.
Status: I initiated the project in 1995, and coordinated it until handing it over to Mitchell Blank in 2000. The ATM-related kernel changes have been merged into the mainstream Linux kernel with version 2.3.99. The project is now maintained by Chas Williams.
Home page: http://linux-atm.sourceforge.net

Initial RAM-disk (initrd; 1996-2000)

initrd is a RAM disk loaded by the boot loader, which is available before the regular root file system is mounted, so that drivers needed to access the root file system can be loaded by the environment set up on the initrd. This work was done in conjunction with the "big" zImage extension by Hans Lermen. In 2000, the clumsy change_root mechanism used by the original initrd was replaced by the more elegant pivot_root.
Status: Mature, but gets occasionally broken by other changes. initrd is now maintained as part of the general file system infrastructure of the kernel. It may at some point get replaced by initramfs.

Linux-7k (now PsiLinux; 1998-2000)

The goal of this project was to port Linux to the ARM-based Psion S5 palmtop computer. I did most of the initial kernel and driver port.
Status: The project yielded a port that worked well enough for daily use. I stopped working on the project after it became apparent that Psion Ltd. intended to abandon the product line. Other people have continued the work, and have also made a port to the more recent S5mx model.
Home page: http://linux-7110.sourceforge.net/

Canon PowerShot A50 driver for gPhoto (1999)

Even the first very basic version of this driver was already the joint work of people from at least four continents. My role was in reverse-engineering and implementing the image download protocol.
Status: the basic driver has been incorporated into gPhoto, and it has been greatly enhanced by other people over time.
Home page: http://www.gphoto.org/

bootimg (2000)

bootimg loads a kernel image and executes ("boots") it. That way, a Linux system can act as boot loader.
Status: this project was suspended after producing a working prototype, mainly because of a lack of time. Meanwhile, a more comprehensive solution is available with kexec (old link).
Home page: http://bootimg.sourceforge.net/ (no longer maintained)

newlib on Linux (2000)

newlib is a small C library. The goal of this project was to make newlib work on a regular (i386) Linux system, in order to use it in initrd environments, in particular with bootimg.
Status: this port was completed to the point of providing the standard newlib functionality, and the changes have been merged into newlib. Since the main goal was to use this with bootimg, work on extensions specific to booting was stopped when running out of time for bootimg. Meanwhile, klibc provides most of the functionality intended for this project.
Home page: http://sources.redhat.com/newlib/

Differentiated Services on Linux (2000-2002)

This project extends the traffic control subsystem to provide the infrastructure needed by Differentiated Services.
Status: Alexey Kuznetsov, Jamal Hadi Salim, and I started the project in 2000. The code was merged into the mainstream traffic control subsystem in 2001, after which I handed coordination and maintenance over to Jamal, but I still follow the mailing list, and help occasionally with maintenance.
Home page: http://diffserv.sourceforge.net/

Traffic Control Next Generation (tcng; 2001-2004)

This project revises the network traffic control infrastructure of Linux to overcome shortcomings of the existing architecture, mainly in the areas of usability and extensibility.
Status: Hibernating, working prototype available. The project has so far produced a prototype that, while not perfect, is suitable for reasonable use. Looking for a maintainer.
Home page: http://tcng.sourceforge.net/

UML simulator (umlsim; 2002-2004)

This is a spin-off of the tcng project. The primary goal of umlsim is to turn UML into a network simulator similar to tcsim. Of course, a deterministic test environment on top of UML has many more uses than just playing with traffic control ...
Status: Completed and hibernating.
Home page: http://umlsim.sourceforge.net/

Seiko InkLink driver (2002)

Seiko's InkLink device looks like the perfect alternative to a graphic tablet. All we need is a Linux USB driver for it ...
Status: Stopped until I find some time for this (famous last words, I know). The data format is still a mystery to me.
Home page: none yet

TCP connection passing (2002-2005)

Experimental mechanism to allow cooperating applications to pass TCP connections from one host to another. This is mainly blue sky research, but may have some real-life uses in HA and clustering scenarios.
Status: Proof of concept prototype.
Home page: http://tcpcp.sourceforge.net/

Networking blackbox (2002)

Records skbs in a ring buffer, and allows them to be read from user space when a certain trigger event occurs. netbb only provides the infrastructure, but leaves it to the user to place the actual taps. netbb includes a dump utility, dumpbb, that allows dissecting the data contained in the dump under script control. dumpbb is part of umlsim.
Status: Completed and hibernating.
Home page: http://www.almesberger.net/netbb/

Active Block I/O Scheduling System (2003-2006)

The Active Block I/O Scheduling System (ABISS) is an extension of the hard-disk storage subsystem of Linux, whose main purpose is to provide a guaranteed reading and writing bit rate to applications.
Status: In progress. First code is available.
Home page: http://abiss.sourceforge.net/

kboot (2005-2007)

kboot is a boot loader based on kexec. It potentially offers the functionality of an entire Linux system environment in the context of the boot loader. Compared to other boot loaders, this should greatly simplify development and maintenance, and encourage new, experimental work.
Status: Proof of concept prototype.
Home page: http://kboot.sourceforge.net/

LED Toy (2005-2006, 2012-)

The LED Toy is a small microcontroller-based circuit that uses motion to produce 2D images with a line of LEDs. This project also serves as a proof of concept that modern components can be used with technology readily available to hobbyists and other low-budget projects in Argentina.
Status: In progress. Development information for a working prototype is available.
Home page: http://ledtoy.sourceforge.net/

M8C utilities (2006)

m8cutils is a collection of utilities for programming microcontrollers based on the Cypress® M8C core, including the PSoC™ family. m8cutils contains, among other tools, an assembler, a programmer, and a simulator. (This is an offspring of the LED Toy project above.)
Status: In progress. Pre-alpha code is available.
Home page: http://m8cutils.sourceforge.net/

Openmoko (2007-2009)

The Openmoko project produces the software and hardware for a smartphone designed from the ground up to run Free Software (i.e., the Linux kernel, etc.). I've joined the project in February 2007 to work on low level/kernel items.
Status: See project Web site for details.
Home page: http://www.openmoko.org/

GTA02-Core (2009)

GTA02-Core is a smartphone design based on the key elements of the Openmoko FreeRunner (GTA02), using an open development process and Free Software tools.
Status: Schematics available. Stopped.
Home page: http://people.openmoko.org/werner/gta02-core.html

Qi-Hardware (2010-)

Qi-Hardware is a collection of loosely connected projects which are developed in a Copyleft Hardware process using Free Software.
Status: See project Web site for details.
Home page: http://qi-hardware.com/


Werner Almesberger, 11-MAR-2013