Alternatives to Drupal w/smaller footprint
Bacteria Man - March 3, 2006 - 18:58
No need to sell me on Drupal--I'm already a convert.
However, I have an web-based entrepreneurial idea and need to build a simple proof of concept.
I'm looking for a solution that has user authentication & management, but without all the bloat.
I'm also looking for a template engine to render the output. I've used patTemplate which I like very much, but developer support has fallen off in the last year.
Bottom line, I'm looking for a CMS-lite solution which is easy to add modules and templates to. It needs to have a very low learning curve so I can hit the ground running and focus on developing my concept.
Any/all suggestions are appreciated.

Wordpress
While I didn't have enough time for quiet a while now to set up some complex drupal sites, I choose Wordpress to launch 2 simple sites last year and it has been a very positive experience.
You might want to check out
http://www.etomite.org/
I haven't used it myself, but I was talking with a web designer the other day who had used it for a few sites, and he was very happy with it.
Cheers,
Bill
-------
http://www.funnymonkey.com
Tools for Teachers
Etomite
Bill, thanks for turning me onto Etomite. It's still early in the evaluation process, but it looks very promising.
http://www.websitebaker.org
Thumb up: It's small, extremely fast [web pages under 2 seconds] and extremely easy use. Good search/find.
Thumb down: Small. Designed for small websites [only a few hundred pages] and very basic management. Not as flexible as Drupal and very few modules.
I am currently using WebsiteBaker http://www.911networks.com but I am in the process of switching to Drupal because I need better management and flexibility.
drupal lite
I have been thinking of stripping down drupal to only the bare essentials. (block, filter, node, page, system, user, watchdog), just have not found the time yet.
A lot of the sites I work on don't need some of the core modules. If I can get out all the modules and sql tables that are not 100% needed on every site and then add them later when needed I think that would nice. I think a drupal lite as a release would be really helpful to some people.
One of the things I have noticed is the amount of mysql tables that I don't always use.
excellent idea
Creating a lite version is an excellent idea.
Of the 32 modules included with 4.6.5 (not counting my custom modules), I have only 7 enabled (in addition to the 5 required ones):
comment*
help*
menu
node*
page*
story*
taxonomy
Of these, I'm currently only utlizing 5 (*) of them.
installing modules
I have seen some discussions about a install hook for modules, if this would be implemented that would make the drupal lite version easier to implement.
I don't know what is in the pipelines for a install system. I read something about resolving module dependencies.
What I was thinking:
When modules are enabled for the first time or installed they could create the database tables automatically.
Disabled without loosing any of the data.
Uninstalled then they would delete the tables it created, keeping things clean.
If you add to that a backup or export feature or hook that allows a user to download the modules tables before uninstalling, that would make for a very flexible and clean system. Being able to export with create sql statements would also assist developers in creating a package that could be contributed back to drupal.org.
I am not all that interested in being able to upload the modules using a web upload feature, that would just mean that I would need to make another directory writeable on my server, I am happy to us a FTP client for that, but a lite weight version of durpal and improved module management system would be great.
Don't get me wrong I also think a full version is very important for new users, the lite version would be more for power users
hook_install, hook_uninstall
One idea would be to introduce a pair of hooks (hook_install, hook_uninstall) to aid enabling and disabling modules. They could perform any administrative tasks like creating or deleting (with confirmation) associated tables.
API
It could be a install api. One function that handles, install, delete, export and dependency checks. Depending on what option is passed in.
Drupal's system module should still handle enable and disable.
install API
Your idea of an install API is an interesting one. This would allow non-technical people from every having to mess with the database.
complex vs simple
I like simple.
My simple idea:
An API with three options.
install :
Return an array of SQL statement’s witch the system module needs to loop through and execute. If any of them failed roll back using tables option and log and display an error message. Install should only happen when the module is being enabled for the first time or after it has been reenabled after an uninstall.
tables :
Returns array of table names to the system module so the system module can ether export to an SQL file as a backup of just that module or remove and completely uninstall the module from the database.
dependencies :
Returns an array of modules your module is dependant on to work. System module checks to see if they are installed and enabled if not logs and returns an error.
<?php
function hook_installapi($op) {
switch ($op) {
case 'install':
$sql[] = "CREATE TABLE table_name1 ...";
$sql[] = "CREATE TABLE table_name2 ...";
$sql[] = "CREATE TABLE table_name3 ...";
$sql[] = "insert into ...";
$sql[] = "insert into ...";
return $sql;
break;
case 'tables':
return array("table_name1", "table_name2", "table_name3");
break;
case 'dependencies':
return array("module_name1", "module_name2");
break;
}
}
?>
There is one tricky thing that would need to be worked out, and that is if a user uploads a module and all its dependencies and enables them all for the first time at the same time. The system module would need to check to see if the dependant modules had been selected to be installed, rather than just returning an error because it tried to install your module before installing the dependencies.
Another tricky part would be if your module was installed and one of the dependencies failed to install, then what. Maybe the system module would need to always install dependencies first, by checking all modules dependencies first that were selected to be installed for the first time.
That is my idea what you think. Please note I thought most of this up while typing and I am assuming the system modules handle’s modules.
I like it.
Each create tabel statement (MySQL) needs to include "CREATE TABLE IF NOT EXISTS table_name1 ..."
As for dependencies, I suppose it all on the severity of the dependency (i.e. additional functionality versus will not work.) When in doubt I opt for install failure.
Drupal lite made easy
In the end its all up to the module developer. If the infrastructure is in place, he can choose how to build his module and if he wants to have any dependencies.
If a install system like described was build into drupal then creating a Drupal Lite would be easy. You would just uninstall all the modules you don't want and your done, then remove them from the modules directory.
I don't know if the CREATE TABLE IF NOT EXISTS would be necessary because you should not be able to install a module if it has already been installed, only enable, disable and uninstall. If a module was not installed then only install should be available. I imagine install should also enable the module because why would you want to install a module without wanting to enable it.