Most of my professional life was spent using, working with, and/or building upon large Open Source projects: the LAMP stack, the GNU compiler collection, GNOME, etc.
When I was a student, I have contributed a lot to the developer documentation of GNOME. More recently, my interest in system-level problems, as well as the need to solve a few real-world work-related problems led me to start a couple of projects on my own.
Some of the following projects are now extensively used and extended by many others, while others are just fun things I hacked together.
Bake is a build tool which is similar in scope to jhbuild. Its distinctive feature is to provide more flexibility than other similar tools in setting up a specific build. It uses XML-based metadata about a set of software packages to automate the process of downloading, and building in the right order a selected subset of these packages. Bake is written is python. I originally designed it to replace the ns-3 build system and to provide an integration framework for the many ns-3 simulation modules maintained by third-parties.
VDL ELF loader
I originally implemented VDL (Virtualization ELF Loader) to virtualize global and static variables for the ns-3 DCE module. Later on, I added simpler virtualization techniques to ns-3 to avoid the complexity of maintaining this project but VDL is still the most efficient (cpu and memory wise, by an order of magnitude) way to virtualize applications within ns-3.
This loader is source and binary compatible with the GNU ELF loader which ships with the glibc library used in most Linux distributions.
ns-3 is a discrete-time event-driven network simulator which is slowly replacing ns2 as the reference network simulator for networking research. While they share the same name, these two projects are in fact entirely different codebases. I served a software lead for ns-3 so, if you feel it sucks, it is probably my fault.
A couple of years ago, I was fed up with the many architectural flaws of ns2 which made it hard to develop new simulation modules so I built Yans (Yet Another Network Simulator), a prototype network simulator to demonstrate how I felt it could be done better. A lot of ideas and concepts originally implemented within Yans were later integrated in ns-3.
The bozo-profiler is not really a profiler. It is a library to perform in-process debugging and code path analysis. If your application has been recompiled with the right flags, bozo provides hooks to record every call to every function, and serializes this information in a binary log file which can then be read and decoded by a post-processing tool to produce dynamic call graphs.
A number of much smaller projects I hacked over the years and which I do not maintain/use anymore:
- treegrowth: this is an implementation of a stochastic tree growth model published in Open Source Production Mode by Jean Michel Dalle and Paul M. David, SIEPR Discussion Paper No 02-27. It contains numerous additions to the original, most notably support for a forest model. An applet-based gui can be used to play with it.
- cvs log analyser: this perl script analyzes a cvs repository and extracts the list of per-author changesets for all modules in the repository and calculates the list of functions changed for each change to a source code file.
- bb analyser: this perl script analyses the basic block boundaries of x86 code as disassembled by objdump and outputs simple statistics about these basic blocks.
- code analysis: this webpage considers the distribution of the number of functions with a given code size.