Technical insights and software architecture

Deep dives into PHP development, Horde Framework evolution, and practical software engineering. Focused on real-world solutions for complex technical challenges.

Core Topics

PHP, Horde Framework, authentication systems, composer workflows, and modern development practices.

Long-form Analysis

Comprehensive technical articles exploring architectural decisions, migration strategies, and lessons learned from real projects.

Code & Community

Open source contributions, framework development, and sharing knowledge with the PHP developer community.

Intermission: H6 Beta Update Week

I hesitated the whole last week to release part 4 of our series on Horde 6 architecture decisions since there was a lot going on. The good news is you don’t have another lengthy article to read before next week at the earliest as we are laser focused on delivering beta stage for all 150+ packages in our current focus.

What’s new

The “smartmobile” view for most apps has been migrated to the new frameworkless responsive design.

  • The passwd app got an all new “Responsive / SmartMobile” view with feature parity to the “Dynamic/Basic” view. It never had a SmartMobile view
  • The traditional login screen now looks like the new /auth/login route which was our test bed for the Responsive mode
  • Ingo Mail Filter’s Responsive / SmartMobile is on feature parity with the old jquery-mobile based SmartMobile mode. Which means it has no features at all and is a readonly tech preview still. It’s not my main focus right now. But along the way we built a new mock backend to allow testing and developing Ingo frontends when no full mail server is available.
  • Turba Addressbook and Nag Task Manager have more than just feature parity with the old jquery-mobile frontend. In their Responsive / SmartMobile mode they feature a mobile ready topbar, a “call” button for contacts and basic task filtering. Still there is some feature gap compared to the “Dynamic” desktop view.
  • The Horde Base app has got an all new administrative REST API for managing users, groups, permissions, identities and doing some health introspection
  • The “test” page got a little face lift and cleanup
  • We dropped most of the remaining dependencies on the old PEAR ecosystem libraries in favor of using our native capabilities
  • By default the registry will no longer do reverse DNS lookups of failed authentication attempts. You can re-enable this feature in registry configuration.
  • The hordectl tool got a massive rewrite and now leverages the horde/base administrative API. It can be used over the network for basic administrative tasks and health checks similar to the test.php page. Unfortunately support for third party resource definitions is currently removed. If you depend on this feature, keep the old version for now.
  • The horde/service_weather library got some new and updated integrations with weather services.
  • The horde/components tool has got some basic github CI pipeline support but it’s too much of a moving target and will be described in part 4 of our series on Horde architecture.
  • Experimental support for unicode (emoji) and github specific presentation layers got committed back to horde/cli library. You will notice a face lift in some commandline tools over the next few releases.
  • The horde/horde-installer-plugin composer enhancement got some robustness improvements to fix broken or moved installations.

What’s old

We are going to drop support for some older integrations soon

  • PEAR_Error and Pear_Exception support is going to be removed. We now use a temporary placeholder so any code still expecting to raise a PEAR_Error instead gets a chance to migrate off.
  • All the kolab integrations are going to go. These were for Kolab 3 which the company behind Kolab isn’t really supported anymore. Use CalDAV, CardDAV and IMAP to integrate Horde with Kolab. This will also mean we can drop support for 10+ libraries and backends into a “legacy” package.
  • horde/syncml is on its way out. There’s nobody who wants it anymore. Use CalDAV, CardDAV or ActiveSync instead.
  • IMSP support will be removed. It’s not widely used anymore. We won’t delete the library but we will not use it in the horde applications anymore.
  • horde/template is replaced by horde/view library.
  • horde/controller is only supported as a migration aid. No new features, use horde/http_server instead and embrace PSR standards by PHP-FIG.
  • horde/model was an interesting experiment combining horde/rdo and horde/form but it’s a dead end. Dmitry is supporting horde/form in the traditional variant and together we are moving towards horde/form V3 as a first iteration towards modern practices.
  • MINIMAL MOBILE and Basic modes are no longer presented as options in the login UI. Users still can choose between autodect, Dynamic Desktop and SmartMobile (Responsive) modes
  • jquery and jquery-mobile will no longer be distributed with horde as soon as we have migrated our last app off that stack. IMP and Kronolith still use it.

What’s next

The beta applications and libraries are coming out. This also brings a technical change. All new releases will have a branch alias configured so composer recognizes FRAMEWORK_6_0 as the latest version automatically. You no longer need to allow dev-FRAMEWORK_6_0

# enable development versions
composer config minimum-stability dev
composer update

We will take our time adressing user feedback and then move into Release Candidate (RC) phase some time in April. This is April 2026 in case you are wondering 🙂


Comments

Leave a Reply

Your email address will not be published. Required fields are marked *