DMC's Upstream Open Source Contributions

This is a list of contributions I have made to other open source projects that have been merged upstream. For the timebeing, this consists entirely of contributions to Fedora's LiveCD-Tools package, and Anaconda. LiveCD-Tools includes livecd-creator which is used to compose the official Fedora LiveCDs, as well as allow anyone to produce their own customized versions. Anaconda is the OS Installer (LiveOS and traditional) for Fedora and RedHat.

The contributions are listed more or less in reverse chronological order of upstream merging.

Rakarrack: Global Wet/Dry

At the turn of the decade, I was honored to join the Rakarrack development team. Rakarrack is an open source live audio-fx processor. Like a virtual (and free!) pedal-board for a guitar player. My first major contribution was the addition of the Global Wet/Dry (FX%) slider you see in the upper left. I implemented that as part of my Guitar-ZyX::MCP project, which provides a wireless remote control for rak, or as I like to call it - a TouchScreenWhammyPad. This feature involved implementing a simple DSP, to mix in realtime a couple streams of JackAudio signal/samples, and the correlating FLTK/fluid gui slider.

Fedora LiveCD-Tools: Filesystem Layout

This was actually 4 small patches out of a series of 7 that were applied. The motivation was to provide a well organized and intuitive directory structure for the Fedora-8 LiveCD cdrom filesystem. The benefits are primarily for a forward looking vision of how LiveCDs will be used as a platform delivering other bundled content such as as music files, video files, documentation, etc...

remove needless /sysroot directory

fedora-livecd-list@redhat.com post --- livecd-tools git commit

move livecd filesystem image under /LiveOS, for consistency with LiveUSB

fedora-livecd-list@redhat.com post --- livecd-tools git commit

move embedded fs image under /LiveOS for consistency

fedora-livecd-list@redhat.com post --- livecd-tools git commit

rename os.img to ext3fs.img for consistency

fedora-livecd-list@redhat.com post --- livecd-tools git commit

Fedora LiveCD-Tools: hide mksquashfs progress based on tty output

The mksquashfs progress bar is nice in an interactive terminal when you are possibly watching it. But it really screws up logfiles if you've redirected the output of livecd-creator to one. This patch disables the progress bar by detecting whether or not the output is going to a tty.

fedora-livecd-list@redhat.com post --- livecd-tools git commit

Fedora LiveCD-Tools: squash osmin

Jeremy Katz didn't like the complexity of my original implementation of this feature, which avoids wasting about 1.2 megabytes of RAM usage on LiveCDs that take advantage of the prior turboLiveInst/genMinInstDelta LiveCD Installer enhancement. After thinking about it a bit, I was able to devise this more elegant method which was accepted upstream.

fedora-livecd-list@redhat.com post --- livecd-tools git commit

Fedora LiveCD-Tools: load loop driver before udevsettle

fedora-livecd-list@redhat.com post --- livecd-tools git commit

Fedora LiveCD-Tools: dynamically allocate loop devices

Perhaps the ugliest aspect of Fedora LiveCD tools relative immaturity was the use of 3 hardcoded loop devices (/dev/loop119, /dev/loop120, /dev/loop121) in its initramfs bootstrapping code. I cleaned this up to use dynamically allocated devices, and even added some new udev rules to provide nice reference links (/dev/live-base, /dev/live-overlay).

fedora-livecd-list@redhat.com post --- livecd-tools git commit

Anaconda and Fedora LiveCD-Tools: Turbo Live Inst / genMinInstDelta

This was actually a huge patch, which I broke into a series of 7 patches to make it easier to review. This patch speeds up LiveCD installation to hard disk, by precalculating a devicemapper delta image, which efficiently removes unneeded disk writes from the installation process. The benefits are on the order of 20% for LiveCD based installs, and 30% for LiveUSB based installs.


Fedora LiveCD-Tools and mkinitrd(now dracut): LiveUSB Persistence

The ability to turn a LiveCD into a LiveUSB is a benefit in many respects. One big one is that the read-write media can be used to store changes made to the 'live' filesystem which can persist across reboots, and even across transporting the LiveUSB to a new system. This is done by storing the Copy-On-Write(COW) data on the usb stick itself instead of ram where it is lost upon reboot. This was also implemented around the same time by Ubuntu with unionfs instead of devicemapper. Unfortunately, unless my recent idea for devicemapper snapshots intelligently responding to filesystem layer discard requests is implemented, this method will remain fairly innefficient, suffering from disk full situations earlier than one would hope.

fedora-livecd-list@redhat.com post --- livecd-tools git commit mkinitrd git commit related mkinitrd commit

Fedora LiveCD-Tools: bugfix related to losetup truncating its output

fedora-livecd-list@redhat.com post --- livecd-tools git commit

Anaconda: bugfix: look at rootpath for kernels

anaconda changelog (entry: 2007-09-14)

Anaconda: bugfix: support non-SELinux installation correctly

anaconda-devel-list@redhat.com post --- anaconda changelog (entry: 2007-09-17)

Anaconda: bugfix: correctly require LiveCD installs to have root volume formatting selected

bug discovery on fedora-devel-list@redhat.com

anaconda changelog (entry: 2007-08-01)

Fedora LiveCD-Tools: cleanupDeleted

This patch efficiently removes unused blocks from the LiveOSs ext3 filesystem utilizing a binary search for minimal filesystem size in conjunction with resize2fs. The result is that the 700MB Fedora-7 LiveCD can be condensed to 664MB with no negative side effects. Thus the Fedora-8 LiveCD will be able to squeeze in 4% more software than it otherwise would have. When you consider that much of the 700MB is taken up by system infrastructure, that 4% becomes even more valuable as every last bit of it is some new functionality that the users will be provided with. Patrice Guay actually immediately noticed with a CentOS based LiveCD, a savings of 115MB!!! (731MB->615MB).

fedora-livecd-list@redhat.com post --- livecd-tools git commit

Anaconda: bugfix: for LiveOS installs, don't redundantly format the root filesystem

While working on Fedora LiveCDs, I noticed the installation process taking a lot of time 'formatting' the root filesystem. At some point the thought struck me - what is it actually doing? Because I knew that the already speedy way that anaconda performed LiveCD installations involved copying block for block an existing - already formatted - filesystem image onto the new root device. As such, no explicit formatting phase should actually be happening. As a result, I took a dive into the anaconda code, and made my first significant contribution to the open source community. Removing this pointless phase of work sped up Fedora LiveCD installs by about 30% on my typical modern laptop with a 30G installation disk volume. If I had been installing to the entire 120G system disk, the speedup would have actually been something closer to 100% (halving the installation time).

anaconda-devel-list@redhat.com post --- anaconda changelog (entry aka JaneDogalt: 2007-07-16)