If you like this site, I would appreciate a gift from my wishlist.

Software Construction and Management Tools

Software Building

  • GNU Make - the best make in town! An implementation of make with many enhancements and some parallelization. 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.

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.

Source Control Managament 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 idiosyncracies, 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.
  • 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.
  • Mantis - An open-source PHP/MySQL web-based bug tracking system.
  • 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.
  • 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.).

Licence

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.