The pond Project

pond is a build tool for Unix-based software. It strives to be a replacement for the widespread GNU toolchain, which consists of autoconf, automake, libtool and make.

pond started out as a spin-off of the Cowry project.


On this page: Download - Questions - Design Decisions - Contributors

Download

pond is currently being developed in a private Subversion repository on a laptop in Germany. It already builds several small projects, but a lot remains to be cleaned up before an initial public release can be made. Once that's done, the download link will appear here.

Questions

What's wrong with make?

make is a fine generic tool. Unfortunately, it is too generic to be useful for cross-platform software. This has led to the creation of add-on tools like autoconf and automake, and other pre-processors like imake or qmake. make also has well-known deficiencies when dealing with large projects that span multiple directories. (See the paper "Recursive Make Considered Harmful" by Peter Miller for details.)

What's wrong with autoconf/automake/libtool?

Quite a lot of things:

What's wrong with other make replacements?

Most make replacements get the important parts right. They fix the weak spots in standard make like directory handling, out-of-date detection, and so on. However, they often leave portability and distribution of source code out of their design equations.

Design Decisions

Scope and Focus

The main target for pond are modern software packages for Unix-like systems that are written in C and similar compiled languages. Most packages from the GNOME project would make good examples.

There are many other packages that have special needs and an existing build infrastructure. pond will not try to replace these. Examples for this include the Linux kernel, GCC, the X Window System (a.k.a. X11), Mozilla, modules for script languages (Perl, Python, Ruby, etc.).

pond does not target every Unix system in existence. Initial development happens on Linux and Darwin / Mac OS X. Other mid-term target systems are the free BSDs, Solaris, and Cygwin. Of course, pond is an open source project, so anyone is free to add support for their platform of choice.

Deployment Model

pond is a normal build tool that you install on your system once, then use that version for every package you build — just like the compiler or standard make. It will not generate scripts to be shipped with the package. That way, bug fixes and new features are immediately available to all packages.

Implementation Language

pond is written in the high-level language Python. Python allows rapid development, provides a well-defined environment (unlike shell scripts), and is well-suited for large software projects.

Python comes pre-installed on Mac OS X and on most Linux distributions. It shouldn't be hard to get it for other systems, at least not much harder to get than the rest of the required build environment. That said, pond will try not to use any Python module that's not in the base distribution.

Contributors

At this time, pond mostly exists as an idea in the head of Christoph Pfisterer. Anyone is invited to join in the effort to bring it into the real world.