Introduction
Frequent visitors to this site might have noticed that my site's engine
(previously called engine, now called lxcms) was the “thriving force”
behind this site. For those of you who are interested in the workings of this
engine, please read on, I'll describe it in this document (other users can also
keep on reading).
Motivation & Requirements
While searching for the “ultimate” website engine, I've seen many different approaches, functionality and features. Some try to alleviate users from learning HTML by providing a complete new markup language, some provide users a built-in WYSIWYG editor, some provide file and/or content management functionality and so on. I've not (yet) found a single site engine which answers to my set of requirements:
- Use plain text with minor (more or less defacto) markup-rules. When creating/editing a page, you want it to be readable without the need to run a browser or something similar. Text should be plain text and additional markup should be non-obtrusive (or at least less obtrusive than current markup languages);
- Most times, a website is also kept locally on some filesystem. Why not use the existing filesystems functionality for file (page) management? Why create an entire web-based filesystem “wrapper” when users (read: I) almost never (will) use it?
- Why edit your pages online instead of using your favourite editor? If you normally edit files using VI, Emacs or any other editor, why should you want to edit your pages using some web-based editor that only a very small set of functionality and strict rules regarding the type of browser you can use?
- Automatic propagation of local changes to the (remote) webserver. Keeping the site-tree in sync at both ends avoids many headaches;
- Enough intelligence inside to DWIM. Although this might be very personal and different for each user, linking to a file should be no different than linking to an image, internal link or external link. In addition, if a user requests a directory listing, why not chop the listing up in usable pieces, with content previews? If a directory contains a single page, or an “index” page, why not open it automatically?
- Last, but not least, simpleness. A site's engine should be smart and simple, simply because people need to work with it, and they don't want to remember all those features and functionality.
LXcms
...