SWI

SWI-Prolog


Jan Wielemaker
UvA

SWI and XPCE/SWI-Prolog

The HCS group, formerly known as SWI at the University of Amsterdam (UvA) is widely recognised as the leading group in the field of knowledge engineering. This group was one of the main forces behind the development of the KADS and commonKADS methodologies, which are now de facto standard in knowledge engineering. In addition UvA has ample experience with libraries of reusable conceptual components, such as problem solving methods and ontologies, using and producing (meta-) descriptions of problem solving competences, wrapping of problem solving competences into agent architectures and the (dynamic) deployment of these reusable components in new applications. In addition UvA has co-chaired the development of the OWL language. The UvA also brings in specific software engineering knowledge and expertise through experienced software engineers with a notable record in fundamental software development for the Semantic Web.

In 1985, Anjo Anjewierden started the development of PCE, a system to do object-oriented graphics with Edinburgh C-Prolog and later Quintus Prolog on a SUN Workstation using SunView. This tool, after migration to X11 known as XPCE, became the basis of the SWI software platform.

The birth of SWI-Prolog

Better interaction between XPCE and Prolog required a powerful bi-directional interface between Prolog and C which was not provided by any Prolog system back then. Some rainy sundays triggered the birth of SWI-Prolog. At some stage this tiny system became big enough to (barely) run the Shelley Knowledge Engineering Workbench under development. In some aspects it was much better than Quintus thanks to its more flexible C interface, much faster compiler and make facility for quickly re-loading of modified files.

Probably the best move was to promise a bottle of cognac for anyone finding ten bugs. There is no better way to make a system more popular, even if it has a few bugs! SWI-Prolog was born and would remain the central piece of the home-brew Software Infrastructure at HCS/SWI.

In use with a growing number of projects, HCS/SWI decided to distribute SWI-Prolog at no charge using the emerging file-exchange through direct ftp-connections. It was distributed free for personal and academic usage as well as in combination with the non-free PCE environment for academic and commercial usage.

Demand-driven development

Over the years, the (X)PCE and SWI-Prolog development was guided by the needs of our own applications as well as requirements from external users. PCE became XPCE after porting to X11 and turning it into a full-blown object-extension to Prolog. At a later stage MS-Windows was added to the supported platforms, providing a cross-platform GUI development toolkit. Growing applications made SWI-Prolog loose most of its limitations. Garbage collection and last-call optimisation was added to deal with memory-hungry applications. Atom-garbage collection and exception-handling was added to facilitate 24x7 running servers. Recent development include network (TCP/IP, CGI, HTTP), HTML/XML/SGML and RDF facilities, UNICODE support as well as constraint handling (CHR, clp(R) together with Tom Schrijvers from the University of Leuven).

Education

Though used internally in AI and Prolog programming courses, the real popularity burst of SWI-Prolog came from an unintended audience: students. Some of its features (portability, easy installation on MS-Windows, small, free, robust and standard compliance) made it popular for logic programming courses.

Licenses

Licenses matter. Beginning of 2001 the system moved from its complicated original license to a dual licensing schema based on the GPL and separate proprietary licenses. With this move, XPCE and SWI-Prolog could be integrated, making the XPCE-based development tools available to the whole community.

Unluckily, the dual license schema makes it hard to accept contributions. Therefore, SWI-Prolog 5.0 moves to the Lesser GNU Public License. With this license we hope to attract more contributions and make the system acceptable to both the Free Software and the more pragmatic Open Source Initiative.


Home This page is maintained using the chpp macro language