Registered 2013-11-28 by Doug Barbieri

Snap! Websites run your CMS using binary code written in C and C++. (We use some libraries that are written in C, all of our server code is written in C++).

Snap! Websites run your CMS using binary code written in C and C++. (We use some libraries that are written in C, all of our server code is written in C++).

The basic concept is taken from a large set of Drupal 6.x modules from Drupal Core and necessary 3rd party modules (we've been using over 220 modules on top of the Core modules.) The result is quite extensible as it offers a plug-in mechanism that everyone is welcome to use to create their own extensions.

The Implementation book lists all the features we're considering implementing in our C++ Snap! Websites.
Why not use the Drupal CMS then?

The main idea of having this written in C++ is for speed of execution. PHP is an interpreted language and although it is fast to develop, it remains slow to execute.

The other big change from Drupal is the backend. We want to use a data manager, not a full blown SQL database. This introduces a problem: we cannot as easily gather data. However, quite often, this data gathering in Drupal can be quite slow2. Not only that, it is difficult to maintain, difficult to backup for easy restore, difficult to move from one system to another. With a data manager that does all of that work automatically, the small draw back of some extra work for data gathering looks acceptable.

C++ Snap! Websites Status

We are still in the early stages of development, although we're just starting to get things to connect. We've got the basic features covered as found in our Projects section. We also already have the Snap CGI and Snap Server in place.

Now we need the server plug-ins to work out the content of a website. That's the part we're working on right now. Creating a few tables and writing the code that generates the pages (we already have a robots.txt and a default page too, all working. Hang in there, we'll soon have something you can try). So the plugins interface is fully functional.

As we are moving forward, we are nearly ready to release the code to let user register an account and then log in their account. The basic form is working and very easy to use, you just get an object from which you can query the input values that were sent back to the site with a POST or a GET. This milestone includes the ability to send emails to users following users wishes (receive at most 1 email a day, get a weekly digest, get no email at all...) This will need a lot more testing and some additional development to give the user the ability to change his settings. But first, we'll get the permissions in place because without permissions we cannot hide administrative pages!

Project information

Doug Barbieri
Doug Barbieri
GNU GPL v2, MIT / X / Expat Licence

RDF metadata

View full history Series and milestones

trunk series is the current focus of development.

All code Code

Version control system:
Programming languages:
C++, Javascript

Get Involved


snapcpp does not have any download files registered with Launchpad.