Contributions Made to External Open-Source Projects

Last Updated: 21-November-2009.

GIMP - The GNU Image Manipulation Program

I wrote the so-called gradient-fu patch, which adds Procedural Database (or PDB) handlers to manipulate gradients. This patch was written and re-written for several versions of the GIMP, and was finally integrated in the 2.1.x branch (which has lead to GIMP 2.2.0), with some help by Michael Natterer.

Afterwards, I added a rudimentary PDB entry to gimpressionist. Seeing its code could use a lot of refactoring, I started a heavy refactoring of the gimpressionist code, and am now its maintainer. This was followed by a small amount of bug squashing and cleanups.

Subversion - A Compelling Version Control System

I started out by bug-squashing some bugs I found in the Issue Tracker. The largest contribution I did was adding a --config-dir directive to the Subversion clients, to specify a different directory where the configuration files reside. The original motive for this, was to fix the test suite when ran using a configuration that breaks it.

After some break, I worked on the get_locations() patch which enabled tracing the past locations of nodes in the Subversion repository. (which is useful for performing some operations). This patch took a lot of research, a lot work, and I received a lot of help from different people. Eventually, a reworked version of the Patch, was applied by Peter N. Lundblad.

Perl 5 Core

I contributed some patches to the perl 5 core documentation to make it clearer and easier to understand. Later on, I improved the default perl debugger (what gets invoked with “perl -d myprog.pl”) by adding new features, adding new automated test code, and by refactoring and clean ups.

KDE - a desktop environment and a software platform

I've been an active reporter of bugs for KDE, and also have been helping in triaging and reproducing some bugs, and contributed some fixes.

For more information, consult a KDE bug tracker search on my name.

KPatience - A Patience/Solitaire Suite

In particular, I worked on KPatience's solvers, and also helped fixing some other bugs, and reviewed patches.

MandrivaMageia - Linux distributions.

Mandriva is an open-source, desktop-oriented, distribution of the Linux operating system (sometimes known as “GNU/Linux”). I have used Mandriva since Mandrake (Mandriva’s previous name) 7.1 and have been enjoying it. Mandriva was forked by the community into Mageia Linux, and I've switched my local installations to use it.

For a few years now, I’ve been using first Mandriva Cooker and later on Mageia Cauldron, which are their development distributions and have been reporting, triaging, fixing bugs or providing workarounds for them as I encounter them. I was the user “shlomif@iglu.org.il” on the Mandriva bugzilla. I know my way around building RPM packages for Mageia, and am an active Mageia contributor and helper.

Syscalltrack - A Framework for Tracking System Calls

I contributed many cleanups and refactorings to a Perl 5 script that generated code out of system calls definitions. As an appreciation of my work, I and all the other contributors got a T-shirt with the Syscalltrack logo.

Later on, I did some work on the project’s web-site.

WWW::Form - a Perl Module for Web Forms Management

I encountered WWW::Form because I looked for an easy way to handle Web forms in Perl. After experimenting with it a bit I discovered that there were more stuff there that I needed (and added it to my copy), so I contacted the author, Benjamin Schmaus and he was quite cooperative. Eventually, I also discovered some Cross Site Scripting bugs there, which were also fixed. Other than that, the module was extended, improved, and a rudimentary test suite was written for it.

Ben and I have since been chatting using Instant Messaging.

Freecell Pro

Freecell Pro is a feature-ful implementation of the solitaire card game Freecell for Win32. Being the author of Freecell Solver, I wanted to integrate it into Freecell Pro. Thus, I reached one of the Freecell Pro core developers and current maintainer, Adrian Ettlinger. Adrian was eager to incorporate my solver as well, and we cooperated on incorporating it.

The two programs had some incompatibility problems, which had to be resolved by Adrian and me. Eventually, however, the integration was performed successfully. Adrian and I became friends, and we have been talking by E-mail since then.

The Error.pm CPAN distribution

After a long time of neglect by its contemporary maintainer, I adopted this module, and fixed the pending bugs in it. After the originator (Graham Barr) made me a CPAN maintainer, I uploaded several corrected versions to CPAN. Further work and maintenance of this module was performed by Paul Evans .

Also see:

XML::RSS - a CPAN Module for Processing RSS

After running into an XML::RSS bug, I submitted a patch for it, which was eventually integrated. I noticed the module had many open tickets, so I submitted patches to fix bugs (while adding regression tests to make sure they wouldn’t be re-introduced). When I started contributing, the module in general suffered from poor code quality and a low test coverage. Together with the maintainer, I have gradually remedied the issues from which the module suffered.

In 4 January 2007, I received a grant from The Perl Foundation to continue working on XML::RSS. In accordance with the grant, I increased the test coverage of XML::RSS to 100% and then heavily refactored and cleaned up the module’s code. As a result, the code quality of the module has heavily increased and it was made safer and more amenable for future changes.

The final report of the grant provides a summary and some links for what has been accomplished before and during the grant.

QClam

QClam is a simple program to use ClamAV in dot-qmail files. I performed some bug-fixing to it and made the code more secure, and converted the code from C++ to C, so it will have less dependencies. My changes were incorporated into version 0.6.

LoggedFS - Filesystem Monitoring with Fuse

I fixed some incompatibilities that made loggedfs unusable to wrap the KDE configuration directory, and ported it to the new version of FUSE. My changes were incorporated into version 0.4 of LoggedFS.

File-Find-Object

File-Find-Object is a CPAN module, originally created by Olivier Thauvin (Nanardon), which allows one to traverse a directory tree, and solves some inherent limitations in the perl 5 core File::Find module. I started contributing to this module after its 0.0.2 release, and did most of the work on it since, including a lot of refactoring, bug fixing, and feature addition.

More recently, I worked on File-Find-Object-Rule, which is a port of File-Find-Rule to File-Find-Object. This in turn provides a convenient, declarative interface to File-Find-Object, while overcoming the philosophical limitations of File::Find.