CRUFT
*****

This file is designated for tracking cruft in our code. That is, code paths
or ugly hacks that were put into place for a reason: Getting stuff to work
but which could either been done better, or which time will obsolete.

Examples are crude workarounds for broken compilers, libraries, OSes, or
hardware, or or massive ``#ifdef`` clusters, that are better abstracted away
into autoconf and convenience wrappers.

If you are new to the project this is a good place to look for explanations
of why things are the way they are, or help us fix things and make the code
easier to read and maintain.


Store.cc
========
``iocore/cache/Store.cc`` contains three different ``#ifdef`` clusters with
near identical code. Often you will read the same confused comment in three
places, see for instance: http://issues.apache.org/jira/browse/TS-1707


Java
====

we should get rid of: ./example/protocol/test/*.java because, as zwoop says
"friends don't let friends write code in Java".

Plugins
=======

``geoip_acl`` should be a "helper plugin:, or a library/API which other
plugins can use.


Configuration & Defaults
========================

Right now our server doesn't work without a reasonably filled records.config
There are varying opinions on how this could or should be fixed, however one
issue that arrises is that default configuration options are often set ad-hoc
where ever they are needed as #defines. This should instead be consolidated
into a single place.
