What is FernCMS?
I initially wanted to rewrite my Peach CMS to make it leaner and include more blog-like features (dated posts, RSS, commenting) and higher-level derived features (forums, support ticket tracker) but I just don't have the time. Still, I didn't like the bloat in the other PHP CMS available and I didn't want to move to Perl with Blosxom. (Although it sure is lean!)
Like any good programmer, I ended up writing my own, but very, very lean. This CMS uses no database (not even SQLite or plain text), doesn't support e-mail updates or server-side index caching, but it took me just three days to write and debug. I think the name, fern, illustrates well how this CMS is very modest and efficient, yet still scalable to medium-sized sites and traffic.
Despite its small size, FernCMS features:
- Blosxom-like "create a file and it's published" philosophy;
- Clean, user-friendly URLs (a.k.a. "permalinks");
- Directory-activated blog-style listings;
- RSS 2.0 support for blog-style directories;
- Decently SPAM-proof comments based on Ned Batchelder's idea;
- Truly small size: 19kb;
- No dependency on apache (works with lighttpd, etc.);
- No dependency on any database system;
- Proper If-Modified-Since client-side cache support, including on blog and RSS indexes (you'd be surprised how many engines do this wrong);
- Clean, optional UTF-8 mode;
- Optional session management;
- Configurable display timezone;
- Proper 404 response when a resource isn't found;
- Gracefully falls back to "text/html" for browsers which don't accept "application/xhtml+xml" (I'm looking at you, MSIE!);
- Distinct display filtering of PHP, (X)HTML, plain text and commented source code resources;
- Optional automatic table of contents for HTML input;
- Recursive, per-directory initialization options (e.g. for creating custom breadcrumbs or altering your layout);
Optional features:
Possible future development:
- Searching;
- Split blog index listings and comments into pages;
- Server-side caching of blog and RSS index listings, to scale better;
- RSS feeding for comments;
- E-mail updates for blogs and comments (comments are already e-mailed to the webmaster);
- Explode code into my plugin architecture to reduce the minimum mandatory size;