Software Construction and Management Tools

Table of Contents

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 cause many problems.
  • Imake - a portability tool that ships with X11. Old and deprecated.
  • CMake - a generator for cross-platform 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.

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 and issue tracking system for software development projects. Written in Python and based on Subversion.
  • 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.
  • 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.
AddThis Social Bookmark Button