  SWI-Prolog is neither a commercial Prolog system nor a purely academic
enterprise, but increasingly a community project. The core system has been
shaped to its current form while being used as a tool for building research
prototypes, primarily for \textit{knowledge-intensive} and \textit{interactive}
systems. Community contributions have added several interfaces and the
constraint (CLP) libraries. Commercial involvement has created the initial
garbage collector, added several interfaces and two development tools: PlDoc (a
literate programming documentation system) and PlUnit (a unit testing
environment).
  In this article we present SWI-Prolog as an integrating tool, supporting a
wide range of ideas developed in the Prolog community and acting as glue
between \textit{foreign} resources. This article itself is the glue between
technical articles on SWI-Prolog, providing context and experience in applying
them over a longer period.
