-
Notifications
You must be signed in to change notification settings - Fork 12
UseBB 1 Design Flaws
Although designed as "light", the system is far too limited and offers almost no possibilities of extending the functionality without altering PHP code. A plug-in or module system is non-existent, apart from the "ACP modules" system, which offers the possibility to write additional independent components for the Admin Control Panel only.
As a result, UseBB is a good solution for small communities, but when some additional functionality is required, major problems arise, leading to many websites converting their forum to other forum software.
Some missing features that need lots of hassle (code edits) to get into UseBB 1 are: attachments, polls, private messages, subforums, user groups, etc.
Solution in UseBB 2: use a modules (with plugin) system (#33) and provide lots of (somewhat standard) functionality as modules. Provide documentation for developers to develop new functionality without the need for users to edit code.
During UseBB 1's lifetime, only two convertors have been made (phpBB and SMF). As a fairly unknown system it is essential to provide a supported way for existing forums to convert.
Solution in UseBB 2: develop the merge system to merge existing forums (UseBB 1.0 and others) in a UseBB 2 one. Make this a supported default module. Continuously maintain and extend the merge system for new packages or versions.
Many websites use CMS'es with their own user management. UseBB 1 never supported this or any form of external authentication.
Solution in UseBB 2: make UseBB support external authentication (#12), i.e. for Drupal, LDAP, OpenID, etc.
Spam has increased tremendously over the years UseBB 1 was in use. There exist simple measures, such as math/custom questions and DNSBL powered banning. The first being often too weak, the second causing delays/time-outs with some servers. More measures were added in later maintenance releases, but no solid base (such as a flexible moderation queue) is present.
Solution in UseBB 2: incorporate more measures, external service and API integration, based on a flexible (general) moderation queue and post reporting.
UseBB 1.0 has quite a few design flaws that were never fully resolved. The major flaw is the use of a mix of procedural and object-oriented programming. Some core components, such as the template system, are implemented as separate classes, while many various functionality is packed into one giant functions
class (God-object anti-pattern) accompanied by some global function definitions. Components of the system are regular .php
files with sequential PHP code.
Solution in UseBB 2: try to obtain a well-designed object-oriented framework and build functionality "on top" of it. Only load in components (code) that is actually needed. Develop with respect to modern coding standards.
Other flaws in 1.0:
-
UseBB 1
- Solution in UseBB 2
- Weak authorization system with auth string
- Permission system (#32)
- Separated categories and forums, no subforums
- Subforums only, which can also act as categories
- Use of standard PHP sessions mixed with database sessions
- Database-only session system (#34)
- Depends on highly criticised
magic_quotes
functionality (upto 1.0.11)- Get rid of the magic, use a safe input layer (#47)
- Inconsistently designed database with less keys and indexes
- Consistent framework managed database with keys and indexes
- Database result sets are never freed during execution
- Results are freed through the database framework
- All configuration settings stored in writeable PHP file
- Configuration stored in the database, with read-only defaults in files (#27)
- Unhandy translation system with
$lang
array- Sophisticated i18n system with plurals, number formatting, etc
- Translation system loads in too many unneeded strings
- Separate source files per module and "section", loaded upon usage
- No Unicode support (only badly tested mbstring patches)
- I18n system supporting UTF-8, multibyte safe string operations
- No in-template programming
- PHP-based templates (#29)
- Reactivation of users does not take previous (potential spammer) status into account
- Keep previous account status and reapply upon reactivation (if configured to)