If you like this site, see my recent campaign for collecting money for my works of fiction.

Software Construction and Management Tools

Software Building

  • GNU Make - the best make in town! An implementation of make with many enhancements and some parallelisation. There’s a drop-in replacement for it written in Perl called Makepp.
  • Cook - a make replacement with variables, user-defined functions, parallelisation, file checksums, and other powerful features.
  • CONS - a make replacement written in Perl with file checksums and other features. SCons is a Python version, that has been more actively maintained recently.
  • Ant - a make replacement written in Java that uses an XML description language.
  • Ninja - a small build system with a focus on speed, with build files that are “human-readable but not especially convenient to write by hand”. Has some issues in displaying ongoing output of commands, which is critical by the equivalent of “make test” or “make check”.

Software Pre-building Configuration

  • GNU Autoconf, Automake, and Libtool: a trio of programs to portably build applications across multiple UNIX platforms. The de-facto standard in the open-source world, but very kludgy and causes many problems. See my “Escape from GNU Autohell!” page.
  • Imake - a portability tool that ships with X11. Old and deprecated.
  • CMake - a cross-platform generator for makefiles, not unlike Autoconf, but works much better. Actively used by KDE starting from version 4 and by many other projects.
  • QEF - a high-level software construction system. Operates consistently across UNIX and Windows NT platforms. Proprietary.
  • SCons can be used for writing such configuration tasks as well. It’s written in Python, does not distinguish between the configuration phase and the build phase and tends to be slow. (open source, MIT/X11 License).
  • Waf - an open-source (modified BSD) tool based on SCons, CMake and other tools, and also written in Python. Created for KDE 4 as an enhanced version of SCons, but they eventually decided to use CMake instead.

Software Packaging

  • RPM - a package management system used on RedHat Linux and other RPM-based distributions. Also look at urpmi, yum, and apt-rpm, which install packages and resolve dependencies.
  • dpkg - The Debian Package Manager, which is also used on similar distributions. Also look at Apt which automatically installs packages and resolves dependencies.
  • Portage - The Gentoo Package Manager - a package management system for Gentoo Linux. Akin to the BSD ports but based on Python.
  • OpenPKG - a cross-platform UNIX software packaging system.
  • win-get - package manager for Microsoft Windows.
  • chocolatey - “Chocolatey NuGet is a Machine Package Manager, somewhat like apt-get, but built with Windows in mind”.
  • Homebrew - “The missing package manager for OS X”. Open Source.
  • MacPorts - “an open-source community initiative to design an easy-to-use system for compiling, installing, and upgrading either command-line, X11 or Aqua based open-source software on the Mac OS X operating system”.

Version Control Systems

  • CVS - the old standard of open-source source control systems. Functional and stable, but limited in many ways. (GPLed).
  • Subversion - a CVS replacement with atomic commits, networking over HTTP, efficient handling of binary file and other features. Still mostly a client/server, centralised protocol, but much more reliable than CVS and works better. (Apache/BSD Licence).
  • Git - a version control system originally designed for the Linux kernel. Very fast and 100% distributed, but has some user-interface idiosyncrasies, a complex command-set, and lacks good documentation.

Bug Tracking

Note: Due to the large number of such systems, I decided to link only to very prominent open-source ones, and to directories where comprehensive lists can be found.

  • Bugzilla - a WWW-based bug management system written as part of the Mozilla project with many advanced features.
  • GNATS - The GNU Bug Tracking System, which uses Plaintext files to store its information and has several front-ends.
  • Mantis - An open-source PHP/MySQL web-based bug tracking system.
  • Request Tracker - “RT is an enterprise-grade ticketing system which enables a group of people to intelligently and efficiently manage tasks, issues, and requests submitted by a community of users.”. Among else, it is used for tracking CPAN issues.
  • Wikipedia's comparison of issue-tracking systems.
  • Google’s Web Directory Bug Tracking Category - contains links to many other implementations.
  • DMoz Bug Tracking - a perhaps more updated version of the same resource, with slower access times, and lack of Google’s PageRank integration.

Testing Frameworks

  • DejaGNU - a testing framework by the GNU project based on Tcl and Expect.
  • XUnit - A testing framework that was suggested by Extreme Programming.
  • TET - A cross-platform testing framework by the Open Group.
  • The “Test Anything Protocol” (TAP) - a protocol for test scripts to communicate the results of their tests to the harness/consumer. Allows for heterogeneous test suites written in several languages.
  • FitNesse - a framework for acceptance testing (system tests etc.).

All in One Project Management Programs

  • GForge - The open-source derivative of the original VA SourceForge codebase contains a rudimentary bug-tracking system as part of the many web-based collaborative services it offers for developers.
  • Trac - a wiki, issue tracking and interface to one's version control system, for software development projects. Written in Python and based on SQLite, with backends for Subversion, Git, Mercurial, Bazaar, Perforce and Darcs.
  • Redmine - an open source project management tool similar to Trac, only written using the Ruby on Rails framework and supports more than one database.
  • GitLab - an open source, self hosted, GitHub-like clone written in Ruby-on-Rails.
  • GitPrep - an open source GitHub clone written in Perl.
  • RhodeCode - open source system for hosting Git and Mercurial.


Creative Commons License

This document is Copyright by Shlomi Fish, 2011, and is available under the terms of the Creative Commons Attribution License 3.0 Unported (or at your option any later version of that licence).

For securing additional rights, please contact Shlomi Fish and see the explicit requirements that are being spelt from abiding by that licence.