Last Modified 2006-08-14 by Chuck Hagenbuch

Backward Compatibility Breaking Horde Issues (aka Horde 4.0 TODO)

  • Fix cloning behavior (See Bug 1410).
    • Remove deprecated code in IMAP_Tree::.
    • Move IMP_IMAPClient:: to Horde.
    • Merge IMP_Thread:: to IMAP_Thread::.
    • 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 deprecated code in MIME_Headers::
    • 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.
    • Remove IMP_Template::.
    • Remove app-specific 'stripe.js' files.
    • Move share edit form into framework package to make it extendable.
    • Convert all configuration files to XML format.
    • Replace horde's popup.js with IMP's version.
    • 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::.
    • Remove BC mime_drivers code in MIME_Viewer::, IMP_Contents::, MIMP_Contents::, Troll_Contents::.
    • 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)
    • Make MIME::_rfc822encode() a public function.
    • Remove app-specific 'open_calendar.js' files and extra code in Horde's open_calendar.js.
    • Remove hack to fix app-specific Notification_Listeners that output <p> instead of <li> (in Notification/Listender/status.php).
    • Prefix all classes with Horde_ that don't have that prefix yet (also see http://www.php.net/manual/en/userlandnaming.php).

To discuss

  • use autoload() instead of require_once
    • Using a global autoload() 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.
    • Refactor to remove all global variables and other couplings with global state ($_SESSION, $_REQUEST, singleton pattern, etc). We can do this by:
      • Encapsulting request in a request object
      • Instantiate master Horde object (e.g. $horde = new Horde($config);)
      • Instantiate application object (e.g. $app = new Turba($horde,$config);)
      • Page handling become method object (e.g. $page = new Turba_BrowsePage($app, $request); $page->execute();)