Crud Factory Icon

An implementation of the Icon programming language, based on the
"official" source distribution at
Unlike the "official" distribution, Crud Factory Icon is configured
with the GNU autotools.

With the exception of some files associated with the GNU autotools and
included if you clone the Mercurial repository, the materials herein
are in the public domain.

The README file for the "official" Icon distribution is included here
as README.icon-project


To build from the Mercurial sources, you can do something like

    autoreconf --install
    make install

or, if you prefer,

    autoreconf --install
    mkdir build
    cd build
    make install

Some documentation, including public domain PDFs of the textbooks for
Icon users that old-timers have on their bookshelves, is available for
download at and
also at


Why Crud Factory Icon? Icon is one of the oldest languages a person is
likely to encounter these days on the Internet, and yet it has been
afraid to change its ancient habits. For years and years the
"official" and Unicon ( implementations of Icon have
adhered to file arrangements, configuration mechanisms, etc., that are
familiar to Icon users and at the same time difficult to manage and
use on Unix-like systems. One finds relative locations of files and
programs hardcoded in. Environment variables are used that also are
used by other programs that, while not as old as Icon, are immensely
more firmly established than Icon and therefore rightly "own" those
variables. A person does not worry that setting environment variables
for Python is going to break Zshell or Korn shell; but setting Icon's
"FPATH" will do exactly that.

If a tradition causes obvious harm, it is time to examine and perhaps
abandon that tradition. Abandonment of harmful traditions is the core
reason for Crud Factory Icon to exist. This is not an Icon made to
please Icon veterans, but to please people who configure and compile
source packages on Unix-like systems. The "make Configure name="
mechanism is gone, its place taken by GNU autotools. The names of key
environment variables can be set at configuration time, and default to
harmless values, such as "ICON_FPATH". Files are installed in places
familiar not to longtime Icon users, but instead familiar to users of
GNU autotools.

But other changes may come later, and may be for different reasons.