The tiny and trivial story of SPIP

The beginnings of SPIP go back to the year 1998: Pierre Lazuly wanted to develop a publishing system to make it easier to manage his site "Les chroniques du Menteur". ARNO* had made, using the quite primitive technology of Server Side Includes, a small tool for managing the editorial content of Scarabée, while Erwan had devised a tool with which to administer L’Ornitho.

At that time, Erwan was the only one who knew how to administer a database, Pierre was beginning to learn PHP, and ARNO* knew nothing of either PHP or databases. But Pierre used to spend his holidays on a boat christened "SPIP", and as SPIP is an acronym of «Système de Publication Pour l’Internet», this was enough to set the project rolling: the name was in the bag, the rest wouldn’t be too difficult...

But despite several attempts (a prototype system used PHP to manage a site, but without a database, the data being stored instead in files with a specific format – a kind of XML, though it didn’t know that that was what it was – , with a system of author identification), the venture didn’t progress. The need in fact was:
-  for a system capable of building any kind of website;
-  to be able to work on the site and administer it through a universally accessible interface.

One evening in a restaurant, Erwan drew on a paper napkin the structure of a database which would make it possible to build a website without imposing any constraints on its structure. The beauty of the thing scared his two comrades, and SPIP remained just like that – something sketched on a coffee-stained table napkin.

Pierre decided to use the otherwise rarely used keys on the keyboard (curly brackets, for example) as a quick way to designate text as in italics or in bold type. He called these "SPIP shortcuts". The Server Side Includes publishing system was translated into PHP, but it still lacked a MySQL database.

The "Scarabée" private interface

Just before the summer of the year 2000, ARNO* set up the website of the publishers Vuibert, which used a PHP/MySQL system. It had a restricted, private interface, which company employees used to add material to the site, and a permissions system which allowed certain people ("administrators") to check content before it was put online. Taking the content provided by the authors, the system generated internal documents using HTML files containing conditional elements, themselves modified by various "filters". All this was to become one of the principles of the future SPIP templates.

The administrative interface of the Vuibert site

At the same time, he worked together with Fil to create a simpler publishing system for the «Cahiers documentaires» of Le Monde diplomatique. For this, the system of typographical shortcuts was developed further. The functions which managed these short cuts and French typography was distributed in late May 2000 as a file named "".

During the summer of 2000, the Minirézo group resolved to revive its uZine site, making it dynamically generated and open to contributions from anyone. ARNO* put together a tool in PHP and MySQL whose best characteristic was the simplicity of the interface for administering the site. It was not an example of neat programming, but it worked...

In September 2000, the launch of uZine 2 using this system proved the point that it is possible to manage a complex site with a very simple graphical interface, so that even those without any technical knowledge can take part in it.

When building the system, the group discarded the goal of building a system which could manage a limitless variety of websites. The system corresponded in fact to the needs of uZine 2, but they saw that it was a good basis for the future development of SPIP itself.

The interface of the first version of SPIP

The first version of SPIP contained a spell checker based on the ABU dictionary of common words. In the end, this spell checker was abandoned: it was to big to distribute easily (a file of several megabytes; over 300,000 words) and when it was set to work on a long text it would cripple any server. The first version also contained a function to automatically export a section of the site to another website (this feature was also abandoned and has been replaced by the "syndication" of content). Using this function, the Insurgence and Radiophare websites automatically loaded texts from uZine and displayed them using their own layout.

It was at this point that Antoine joined in SPIP’s development. Fil also gave his support to the project and work continued, with the aim of providing a complete system with a free licence.

An automatic installation procedure was added. The principle of allowing the user to work on HTML templates to define the display, without needing to use PHP, was worked out. A cache system was programmed. And, above all, the authentication procedure for web authors was fundamentally reworked so that SPIP would work with most service providers.

Over the months before SPIP was officially launched, the system was tested live by its use on the three websites: uZine, Le Monde diplomatique and Vacarme. This made it possible to check the method of caching pages, to see that the system could handle a large quantity of information, and that the administrative interface worked correctly.

1st July 2001: The official launch of SPIP 1.0. The long pause between the starting of uZine 2 and the launch of SPIP was due to several needs:
-  developing new features, stabilising the product (eliminating bugs), cleaning up the code (some of it was in great disorder), providing compatibility with a greater number of service providers;
-  redesigning the graphical interface for the "private area" to make it possible to administer the million new features and functions which had been added to the original programme;
-  testing the system on several sites, very varied by their content, layout and the number of "hits" they received;
-  writing a complete documentation for the system (a real slog!).

October 2001: SPIP 1.2 [1] (There was no official version 1.1) The development process had changed: there were now other users of SPIP apart from its developers! So the new features in this release answered the needs expressed by webmasters, rather than being for the use only of uZine. Several competent programmers provided solutions to help with the development, and the debugging of the system became an almost real-time process.

January 2002: SPIP 1.3 [2] Ongoing development, with its packet of new elements. The change in development this time was due to the fact that there were by now a good number of users competent in the use of SPIP. Because of this:
-  many beginners’ questions were now answered by other users, and this freed up the development team considerably (the first release of SPIP had given the developers a big workload of explaining the system to first-time users);
-  the new functions of SPIP were not so spectacular, but concerned the more advanced customisation which the newly competent users were needing.

The SPIP 1.3 interface

September 2002: SPIP 1.4 [3] The interface of the private area was completely reworked. The number of functionalities had outgrown the old interface; the new one gave administrators and authors a better structure to work with. A much requested feature was added: from now on SPIP could incorporate attached files (multimedia ones, in particular) into its pages.

The SPIP 1.4 interface

December 2002: SPIP 1.5 [4] This version provided new templates, much closer to full XHTML compatibility. The other changes made were not so visible, but strengthened the system’s robustness.

May 2003: SPIP 1.6 [5] The big new feature introduced by this version was the choice of languages for the private area. From now on SPIP could also be used in Arabic, Creole, Danish, English, German, Italian, Spanish, Vietnamese... On the SPIP website a translators’ area was created to facilitate the work of those preparing the interface in other languages. Volunteers to help with the translations for SPIP (both the website and the programme) cooperate by means of the spip-trad mailing list.

November 2003: During the European Social Forum (Paris, 12-16 Nov.) Pascale organised a day of meetings "SPIP au Médialab" between developers, translators and site creators.

The interface of SPIP 1.6 in Arabic
Note: for Arabic, and for other languages written from right to left, Spip’s graphical interface is inverted.

January 2004: SPIP 1.7. The main addition to this version was the multilingual management: a site based on SPIP could now contain articles in different languages, manage the typographical rules and the automatic display (dates, forms…) in different languages and offer links between the different translations of an article.

The interface of SPIP 1.8

April 2005: Spip 1.8. A full year’s work. A complete reworking of the graphical interface of the private area gives a big improvement in ergonomy. Beneath the bonnet, a brand new “template compiler” opens the way forward for previously unimagined developments. New client-server mechanisms for some functions which would be difficult to bundle with the programme (for example the spell-checker, or the system for writing maths formulae) are introduced. For these functions each site uses a centralised resource.

The core development group now includes Emmanuel, who first published the new template compiler on SPIP Contrib. Diala’s Masters degree project provides the basis for the new graphical interface of the private area. Contributions from «outside» are now of a truly impressive quality.

SPIP 1.9 came out on 1 July 2006, for the 5th anniversary of the first official version. It includes a plugin system which makes it possible to add all kinds of functionality without changing any core system files. There is a much extended range of graphic filters: text can be converted to images on the fly, colours can be captured and manipulated, etc. The templates distributed with SPIP become XHTML strict. The file system is reorganised and better structured.

Three more developers, James, Romy and Cédric join the core team.

SPIP 1.9.2 was released in Spring 2007.


[1Read about it in French.

[2Read about it in French.

[3Read about it in French.

[4Read about it in French.

[5Read about it in French.

Author Paolo Published : Updated : 06/08/22

Translations : català, corsu, English, Español, français, italiano, Nederlands