I wanted to make a brief post about a new web project i've been working on for the last month or so.
It's tentatively titled "YUMPS" (for Yii User Management and Project System) though that is likely to change eventually.
IMPORTANT: There is now a Wiki for YUMPS Project: http://redmine.dcisv...m/projects/ums2/wiki
Many website/webservice projects share a set of foundational needs:
- Users can sign up and create accounts
- Moderators have accounts that let them analyze site activity and track down and manage spam and spammers
- An access control / permission system that lets administrator give certain users certain permissions on the site
- The ability to send users messages on the site, and let users message each other
In addition one often needs:
- Content creation/editing with attached file uploads and comments
- Hierarchical Groups and Projects with user management within groups
- Tagging and rating features.
- Email notifications and approval queues.
When faced with the need to create a new site/service that requires such functionality, a programmer has three main choices:
- Use a medium/low-level framework (cakephp, codeigniter, yii, django, ruby on rails, etc.) or no framework, and custom implement these foundational features
- Use a medium/low-level framework and combine several extensions/modules/plugins to handle user accounts and other features
- Use an existing open source programmer-friendly content management system, and modify this code base for programmer-specific needs.
However, none of these choices are ideal.
- While the basic functionality seems manageable, a huge amount of sometimes delicate code is required to implement these foundational features; rewriting this code for each new website project is unreasonable.
- Trying to reliably combine and maintain a collection of extensions/plugins to perform these foundational features is difficult to integrate and maintain. These functions involve a substantial amount of overlap and database table interaction in an ideal case, and existing solutions that employ modular standalone extensions for these various different features, are too fragile.
- Content management systems are designed first and foremost for content creators, not for programmers. Even the most programmer-friendly CMS systems (for example Drupal) can be incredibly frustrating from the standpoint of creating a custom web service project that doesn't fit precisely into a Content Management approach.
- What is needed is an integrated core foundational codebase that performs all of these key features, and that programmers can use to build new websites.
- YUMPS is intended to provide a foundation for a wide variety of web service and community websites that require user/group/project management features. It is built on top of the yii php framework.
- Built for programmers not administrators, so the emphasis is on configuration-file and programmatic configuration -- rather than a friendly GUI for configuation of options.
- Provides a complete and robust infrastructure for managing a large numbers of user accounts with arbitrary profile data.
- Provides support functions for the user community, including a user-to-user messaging/mailbox system.
- Provides a flexible group and project management system, which can be used to let users create and manage their own groups; supports hierarchies of groups and projects.
- Emphasis on performance and security; easy to keep updated and diagnose issues.
- Not a content management system (CMS); but rather a substantial foundation of code upon which to build custom community websites.
- Powerful access control / permission system.
I have spent significant time trying to use Drupal as a foundation code base for the goals i've laid out here. You can read my rants about Drupal here
. In brief -- while Drupal is an incredibly impressive product, with some fantastic features for coders, I have found it to be unsuitable as a foundation for custom non-cms sites. I am much more interested in a mid-level framework that allows programmers to build custom user-based web sites/services (rather than a CMS system designed for non-programmers). A huge amount of work has gone into making Drupal (and other such tools) incredibly flexible to configure from an administrative back-end side, wheras I am much less interested in that than in making a system that a programmer can customize and maintain.
My intention is to open source the project -- though I am very much hoping to find some way to fund continued development of it. If you know someone who might be willing to help fund continued development please contact me!
I hope I will find some of you who might be willing to help code on it once the basic system is public.OLD - Unfinished Web project: YUMPS