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”.
Gulp - a build system based on JavaScript and Node.js.
Grunt - another node.js based build system.
Links to Lists, Comparisons and Other Resources
The dmoz web directory category for Make Tools - contains other useful links.
A-A-P Build Tools List - A very comprehensive list of build tools.
A Google Spreadsheet with a Comparison of various Alternatives
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).
Links to Lists, Comparisons, and Other Resources
The Better-SCM Site - a site for comparison and advocacy of Version Control Systems. (Maintained by Shlomi Fish, who also originated this page and site.) Contains a comparison.
Dmoz.org’s Category for Version Control Systems - contains links to many other implementations and resources. The Google Directory’s equivalent directory may also prove helpful..
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.Roundup - an issue tracker written in Python, based on the winning entry for the Software Carpentry competition (which only accepted Python entries).
Debbugs - the open-source ( GPLed ) bug tracker created for Debian, and used by it, based on E-mail with a web-interface. As of September 2024, the GNU project is using its own instance.
The dmoz Web Directory’s Bug Tracking Category - contains links to many other implementations.
Linas Vepstas’s old list of “Call Center, Bug Tracking, and Project Management Tools for Linux” - last modified in 2002, it suffers from a lot of text rot, but may still be of some relevance.
Kanban Boards
"5 open source alternatives to Trello" - on opensource.com, with some discussion.
Taskwarrior - an open source command line-based TODO list manager.
Trello - a hosted web-based Kanban board, without source availability and under the freemium model.
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.
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.
Links
“You Must Hate Version Control Systems” - a post on the “Perl Hacks” blog about best practices in the software industry.
Licence
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.