Anyone google Kalfu lately? Well, number 5 on that list (currently) is my "little project" Kalfu. First of all, the name is rather, well, meaningless in a way but no more so than most open source projects. I wanted something that DIDN'T go with the phpmysomething naming or even the yet another blah. Instead I started browsing through some mythology lists (I like myths and have done a lot of researching to work on my fanfiction) and found a rather interesting name - Kalfu.
According to Encyclopedia Mythica Kalfu is "The Voodoo spirit of the night and the source of darkness. He is very dangerous. The moon is his symbol." So I get a moon to incorporate into a logo and an unusual name. Perhaps the "dangerous" part isn't the best thing to apply to an open source project - but another definition calls him "powerful" instead - which is the idea I was hoping to convey.
So what is Kalfu? I'd classify it somewhere between a "true framework" and a "php cms" a la php-nuke(blah), mambo et al. Why write another CMS? Ah, the eternal php question. First let me try to explain what I mean to accomplish with Kalfu.
- Kalfu is designed to be modular in nature - the base "core" or "system" or "framework" or whatever you want to call it
- Manages Modules and Extensions through an admin system which includes automatic updating
- Does extremely basic, pluggable user handling
- Handles central configuration (a registry)
- Figures out which class/method to farm off depending on the url called (front controller)
- Provides centralized db abstraction, variable sanitization, and error handling
What does this mean? It means that you can create whatever kind of "cms" or website you want depending on the modules you decide to install. It will also have a "packaging" system - where you can write an xml file that will download and install a specific set of modules - say a package for supporting an open source project (news, downloads, forums, bugtracker) or perhaps a package for a blog (blog, gallery, gallery extension for the blog) and never have excess bloat from features you don't want or don't need.
- LIGHTWEIGHT db abstraction loosely based on the pdo api and tied into an active record wrapper class so you don't have to write queries
- Speed - from browser side caching and gzip support to an extensive, pluggable caching interface that can be used for anything - from the registry to db results and anything in between.
- Security - from a "home-rolled" session implementation with encryption to a filter class based loosely on the upcoming php filter extension to an output escaping and validation classes - basic "best practices" for php data handling has been built into the system
- A templating system that is easy to use without the overhead - using php user streams and filters you can use any kind of templating you want - although the default uses pure php templates (with an optional "security filter" and even "caching filter" for those that need it) - Also a "widgeting" system that allows template authors to modify the look and feel without screwing up forms or similiar items
- Hooks at every level of the application - to give module and extension authors very fine grained control over the system
- Ajax support for Admin and User areas
- Web services for modules - allowing automatic updates, one click installs, and even integrating ssh or ftp for users who have limited web server file writing access
- translation/utf8 support
A big fat list, but something I've been playing with since php 4.0 came out (I have an OLD registration on sourceforge to prove it, even some old files in CVS...blah)