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/Expat 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 Red Hat Linux and other RPM-based distributions. Also look at urpmi, yum, yum’s fork DNF, 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.

  • The Nix Package Manager - a package manager based on a lazy purely-functional configuration language. There is also GNU Guix which is based on it.

  • OpenPKG - a cross-platform UNIX software packaging system.

  • win-get - a 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. (GPLed)

  • Mercurial - a distributed version control system inspired by Subversion and Git and written in Python and C. (GPLed).

  • GNU Bazaar - a distributed version control system written in Python and sponsored by Canonical, Ubuntu’s parent company. Slow and quirky from my experience. (GPLv3).

  • Fossil - an open source distributed version control system, bug tracker and wiki program written in C, based on SQLite and by the same originator. (BSD licence)

  • Veracity - an open source distributed version control and bug tracking system. (Apache licence).

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.

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.).

Continuous Integration Tools and Services

  • Jenkins - an open source continuous integration and continuous delivery solution written in Java that runs on Windows, Mac OS X, Linux and other Unix-like systems. It was originally forked from Hudson after a dispute with Oracle.

  • Travis CI - a hosted, distributed, continuous integration service for software projects hosted on GitHub. The tests are run on Ubuntu Linux systems.

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 - an open source system for hosting Git and Mercurial.

  • GitHub Enterprise - a proprietary and commercial version of the source behind GitHub, for local deployment. Written in Ruby-on-Rails and other languages.


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.