Backward Compatibility Breaking Horde Issues (aka Horde 4.0 TODO)
- Fix cloning behavior (See Bug 1410).
- Remove IMAP_Tree::.
- Move IMP_IMAPClient:: to Horde.
- Merge IMP_Thread:: to IMAP_Thread::.
- Refactor IMP_IMAPClient:: and IMAP_ACL::.
- Encrypt deprecations in Horde_Crypt_pgp::.
- Use one place for clear text sendmail error messages.
- rename files in imp/templates/prefs to more sensible defaults (e.g. draftsfolderselect.inc, not folderselect.inc)
- Remove $foo = &new Foo(); calls and replace with $foo = new Foo(); - The former is deprecated as of PHP 5 and causes errors when strict code checking is on.
- Similarly, don't pass objects by reference ( function foo(&$bar) )
- Move share edit form into framework package to make it extendable.
- Convert all configuration files to XML format.
- Remove IMP_IMAP_Search:: and Ingo_IMAP_Search::.
- Remove imap_reopen() call in IMAP_Search::.
- Make getType() return values consistent in iCalendar::.
- Move date/time parsing methods from iCalendar:: to Horde_Date::.
- Checkboxes in Horde_Form that are marked as required should be required to be checked.
- Remove IMP_SpellChecker::.
- Add a single function for changing the language (handle the bindTextDomain() call also)
- Remove hack to fix app-specific Notification_Listeners that output <p> instead of <li> (in Notification/Listener/status.php).
- Prefix all classes with Horde_ that don't have that prefix yet (also see http://www.php.net/manual/en/userlandnaming.php).
- Filter all input through filter extension or library.
- Use phone form fields, i.e. in Turba.
- Use exceptions instead of PEAR_Errors.
- Clean up Horde::loadConfiguration() mess.
- Consistent return types (array vs. timestamp) in Horde_iCalendar::_parse*() methods.
- Clean up VFS_sql to use '/' as the root of the VFS instead of ''. This will make it behave like the other VFS backends without code to do the conversion.
- Set the cache expiration time when the entry is set
- Don't let Horde_Crypt_pgp methods check for secure connection.
- Remove pref_api BC files
MIME issues
- Remove deprecated code in MIME_Headers::
- Remove BC mime_drivers code in MIME_Viewer::, IMP_Contents::, MIMP_Contents::.
- Make MIME::_rfc822encode() a public function.
- Make MIME_Viewers responsible for retrieving part contents (so they can determine whether or not contents should be retrieved at all and/or cached).
JavaScript
- Remove last traces of enter_key_trap.js
- Remove code like hideable.js that is encapsulated by Prototype (or whatever js toolkit 4.0 uses standard)
- Global Prototype/Scriptaculous libraries.
- Remove app-specific 'stripe.js' files.
- Remove app-specific 'open_calendar.js' files and extra code in Horde's open_calendar.js.
- Replace horde's popup.js with IMP's version.
- Basically consolidate _all_ js present in multiple apps
- Put core javascript into a package so it can be versioned/upgraded?
Templates
- Remove IMP_Template, Ingo_Template, and Gollem_Template.
- Replace all templates with a Horde_View class, with a default of simple PHP templates
- Introduce templates for ALL HTML generated in libraries
- Figure out how to handle templates for framework packages
- Default HTML Horde_View should escape all output (htmlspecialchars)
Bugs
- Bug 4221.
- Bug 3271 - more specifically, how to deal with addition of configspecial tags. Of course, this depends on what changes are made to Horde's configuration design.
To discuss
- Use Horde_Template for all templates.
- use autoload() instead of require_onceautoload() function is not good practice for a framework because you can only have one __autoload function - I'm not in favor of it (ChuckHagenbuch).
- Using it in Horde apps as opposed to the framework is an option, but still leaves us all of the framework requires.
- http://php.net/spl-autoload-register is a potential solution. With PHP 5.1.x (or 5.2, or ...) as a minimum version requiring SPL should be okay.
- Performance a consideration? http://pooteeweet.org/blog/538/
- RemoveGlobals
- HordeSpaces
- Require UTF-8 support
- Remove confusing mess of hooks and other ways of muddling logins (especially with IMP), and replace them _all_ with the preauthenticate and postauthenticate hooks + appropriate examples for things like vhosting.
- Clean up tobackend/frombackend hooks - either remove them, or name them better, or document when and where they need to be called.
- Get rid of 'realms' (replace with HordeSpaces where necessary).
- Remove imp['uniquser'] ?
- Horde4Config
- Per-variable session locks? http://thwartedefforts.org/2006/11/11/race-conditions-with-ajax-and-php-sessions/