Directory of 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”.

  • rake - a build tool written in and while using Ruby.

  • Gulp - a build system based on JavaScript and Node.js.

  • Grunt - another node.js based build system.

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.

  • Meson - an open source build system that aims to be fast and user-friendly. Uses a non-Turing-complete domain-specific language (DSL). Requires Python 3.6-or-later.

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

  • chocolatey - “Chocolatey NuGet is a Machine Package Manager, somewhat like apt-get, but built with Windows in mind”.

  • scoop - a command-line installer for Windows.

  • 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”.

  • Fink - an effort to port and package open source software for macOS .

  • “Package manager” on the Wikipedia - also see the navigation block at the bottom.

Version Control Systems

  • Git - a version control system originally designed for the Linux kernel. Fast and 100% distributed, but has some user-interface idiosyncrasies, a complex command-set, and lacks good documentation. (GPLed) Considered the go-to solution as of 2020.

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

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

  • BitKeeper - a formerly proprietary distributed version control system, which was made open source under the Apache License in 2016. Had been used by the Linux kernel project, and the demise of its gratis version prompted the development of Git and Mercurial, which eclipsed it in popularity.

  • CVS - the old de-facto standard of open-source source control systems. Functional and stable, but limited in many ways. (GPLed).

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.

Kanban Boards

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

  • cmocka - an open source (Apache License) unit testing framework for C that can emit TAP.

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.

  • AppVeyor - a hosted, distributed, continuous integration service for building using Windows and Ubuntu Linux, available for GitHub, GitLab, Bitbucket and other services.

  • Buildbot - an open source continuous integration framework written in Python.

  • GitHub Actions - a CI/CD service offered by GitHub for projects hosted there.

  • GitLab CI/CD

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.

  • Gitea - a lightweight and open source code hosting solution written in Go-lang.

  • Gogs - another lightweight and open source code hosting solution for git written in Go-lang.

  • Pagure - An open source code hosting solution for git based on Python. (By Red Hat/Fedora and other contributors.)

  • sourcehut - an open source forge solution which supports git and mercurial repositories, and which claims to be fast and lightweight, not require JavaScript, and secure.

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

Licence

Creative Commons License

This document is Copyright by Shlomi Fish, 2011, and is available under the terms of the Creative Commons Attribution License (CC-by) 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.