Categories: Site

This page holds links to some of the projects I have contributed to over the years, whether by commits, bugreports, or in other ways.

Github Overall

Many projects have their primary repos hosted on Github. Others (particularly Apache) have their primary repo elsewhere, but a secondary copy is held on Github. And some other projects have no official GitHub repo, but various users have established their own fork on Github.

And Github has a pretty cool way to search the repos it hosts. The following link searches for all commits where committer-name=”Simon Kitching”:

Unfortunately, when a repo has multiple clones then the same commit is reported for each repo. If you know of a way to report each commit only once (ideally via some “primary repo” or “most starred repo”) then please let me know..

The primary reference for github-search-for-commit is here. Unfortunately, what is not clearly documented is that at least one “commit-specific” search keyword needs to be used in order to trigger “search for commit”; the “repo:” keyword is not enough as that alone triggers “search for repo”; any of “author*:”, “committer*”, or “merge:” will however suffice.

Linux Kernel

I’m no core kernel hacker, but I do use Linux regularly and for a while did run custom-compiled kernels. As a result I have made a few small contributions:

And the specific commits are:

GCC (Gnu Compiler Collection) Java Compiler

Apache commons-logging

I was fairly active in the Apache commons-logging project for a while..

Apache myfaces

I was fairly active in the Apache MyFaces project for a while, mostly as a result of having a customer using JSF/MyFaces for a project.

Myfaces is a JavaServer Faces (aka JSF) implementation; due to the way the spec is written, lots of template-based code-generation is needed to produce a proper JSF-compliant implementation, and the build-tools project was invented by me to do this (not sure if it is still in use)

Apache commons-digester

My employer at the time was in the B2B integration space (helping companies exchange documents such as purchase-requests, when the companies used different data formats). Apache’s digester (together with XSLT) was a big part of the core framework, which led me to contribute bugfixes and new features..

  • commits by me - 195 commits between Feb 2004 and June 2008
  • commits referencing me - 28 commits between July 2002 and Nov 2006; mostly contributions before I became an official committer

Apache commons-beanutils

Beanutils provides reflection-like helper methods for accessing Java instances that follow the “Java beans” conventions. Various other Apache Commons libraries I have used depends on it, and I made various contributions over time.


Clirr is a tool for detecting binary incompatibilities between two versions (releases) of the same jarfile. If you are producing a Java library for use by other projects, it is important to know whether your new release is truly backwards-compatible with the previous release or not - and Clirr can tell you this. The founder of the project is Lars Kuehne; I was one of the major contributors.

  • commits to clirr - clirr is a tool for detecting binary incompatibilities between two versions (releases) of the same jarfile. 127 commits between June 2004 and Feb 2008


Orchestra (now dead) was an attempt to provide better support for “server-side user state” (ie user sessions) within JavaServer Faces (JSF) projects. The founder was Mario Ivankovits; I worked at the same company as Mario for a while and both used and co-developed Orchestra.


Checkstyle is a tool for validating that Java source-code is compliant with a set of coding standards. It is useful as a code-quality check, even in smaller teams. I used it regularly, and made one minor contribution to it:

Minor Contributions


Various contributions that did not involve submitting a code-patch:

Some posted opinions on code-related stuff that is not otherwise documented on my site (note that opinions can change over time!)

And some references to work I have done or things I have written: