Define a specific feature that deals with one small aspect of a website (i.e. links, comments, forums, etc.)

Firefox has an AddOn called Reader.

This extension allows viewers to remove all the "crap" from a website and only read the substantial content of a website. For example, the columns on the right, the header and footer, advertising will all be dropped by the AddOn.

The concept should be implemented in our service where we can click a link somewhere to see how such a aread (and certainly a Search Engine) would see the page: plain an simple title / text.

This should help themers dramatically improve on using the correct tags to define the user's content. Also at some point we ...

Training Matrix

Many companies want to have a way to train their staff. It can be difficult to track down who trained on what document.

The training matrix implementation gives an administrator a way to create training documents on their website (i.e. training pages). Then the training matrix plugin tracks which employee trained on which document on what date.

By default we assume that the page itself is the document, although the training matrix implementation allows for attachments to be created. In that case we can at least force the employee to download the document to make sure they have a copy ...

Name Server Plugin

Setup Domain Name

As we want to offer a system where people can create their own website, we also need to offer them a very easy way to setup their own domain name for their website.

This requires a dynamic name server such as bind9 with the nsupdate tool.

Note that first, we can create a new website using a sub-domain name from a main domain used to run the system as a whole (as you see in many blog services). However, even that requires a dynamic DNS.

nsupdate can be used by one of our backend to do that part of the setup. We certainly want to make use of a specific plugin to do the ...

Widget: Code [feature]

We want to have an easy way to write code in a page.

The idea is to offer a way to embedded an area where the user can write code and also to offer the ability to prettify the code using something like Geshi or Google Code Prettify.

The widget should offer the user to select the language being used to write the code with a dropdown and a checkmark to determine whether the prettifier should add line numbers.

Media feature

Although we want to include similar features mainly in the Editor feature [core], it is probably easier if the Media support is presented as a separate feature to make it clearer in the documentation.


The editor should be capable to make use of the HTML 5 extension and allow video and audio directly in a website. However, this may not always be a good option for you in case you do not want (do not have) to offer the type of bandwidth that such requires you to have to provide videos and sound tracks directly on your websites.

The HTML canvas will be used to offer the Image Editor feature [core].


Right now, each plugin infers a certain number of defaults for its settings and also it installs various defaults in the database when it makes it easier to deal with the values that way.

This creates a default Snap! installation template which does not automatically serve a user well because the resulting website is likely going to look quite raw.

The Snap! library and several of the core plugins offer a mechanism to make the installation of all the other plugins data a breeze. That data is expected to be defined in a content.xml file which is loaded the first time the plugin is loaded and ...

The PAD File format was defined by the Association of Software Professionals. Only that format has many limitations making it pretty much unusable with software that has a very broad or non Microsoft Windows oriented type of software. For that reason, we also include our own Snap format called SNSD (Snap Software Description). Both formats make use of XML, only the SNSD format includes a REST API allowing applications to easily navigate a large number of software offering without having to search an entire website to find a few SNSD Files.

Implementation Status

At this time we have all ...

Multi-page scrolling

While some websites create a way to break down large content to appear on multiple HTML pages (mainly to increase the number of hits and thus amount of advertising they can send the user), newer websites use newer available technology that does the opposite.

As you scroll down the page, the next page (article, blog post...) gets loaded and presented to you on the exact same page. This works using AJAX to load the next page content. When you actually reach that page (scroll down enough) the script changes the URI in the location bar using the new history mechanism available since 2008 or 2009. ...

Browsers sends us a string called the User Agent designation. A server can use that User Agent string to determine what browser is used to access the site, including the version and different features that it supports or not.

Using the User Agent information, we can define the name of the browser (Internet Explorer, FireFox, SeaMonkey, Chrome, Safari, Opera, various smart phones, etc.) and the version of the browser used. This information can in turn be used to determine which files to send to the browser to make it work better.

For JavaScript and CSS files we can use that information to ...

Facebook sharing

The Facebook sharing is made preferably using the og namespace tags. That works best because that way the Facebook scraper can find the information you want to have them used to share your documents. Snap! will allow you to choose the image, description, title, etc. that you want to show on Facebook (although by default this is fully automated with proper defaults.)

The documentation available on Facebook is actually very good in regard to the og namespace. There is also a full website about og and all its extensions. They have two important nodes under "bad practices":

  • Do ...

Snap! Websites
An Open Source CMS System in C++

Contact Us Directly