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. “Always close to the source”.

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.

Category: First Page

  • Exceptional Dependency Decency

    Libraries can become less attractive to 3rd party integrators if they depend on too many unwanted other elements. This is especially true for libraries that are themselves pulled in as a dependency. Our horde/exception library is no exception to this. It is pulled in by almost all horde libraries because it is horde’s goto solution…

  • Horde/Yaml: Graceful degradation

    Tonight’s work was polishing maintaina’s version of horde/yaml. The test suite and the CI jobs now run successfully both on PHP 7.4 and PHP 8.1. The usual bits of upgrading, you might say. However, I had my eye on horde/yaml for a reason. I wanted to use it as part of my improvements to the…

  • PHP: Tentative Return Types

    PHP 8.1 has introduced tentative return types. This can make older code spit out warnings like mad. Let’s examine what it means and how to deal with it.

  • Horde Installer: Recent Changes

    Major codebase change. Now triggers on autoload-dump rather than earlier in the install phase. Outputs info to console, new comments in autogenerated files.

  • Maintaina/Horde UTF-8 on PHP 8

    On recent OS distributions, two conflicting changes can bring trouble. MariaDB refuses connections with ‘utf-8’ encoding Recent MariaDB does not like the $conf[‘sql’][‘charset’] default value of ‘utf-8’. It runs fine if you change to the more precise ‘utf8mb4’ encoding. This is what recent MySQL understands to be ‘utf-8’. You could also use ‘utf8mb3’ but this…

  • A new phase in life

    TL;DR – I changed job and this will not affect ongoing maint. of anything Horde I spent almost my whole work life with a single employer. It was quite a trip. I was part of it as a company grew from a hand full of guys into fifty, then hundred and ever more. I saw…

  • Net_DNS2 PHP 8.x compat issue

    TLDR: When using horde/mail_autoconfig or other features using pear/net_dns2 under PHP 8.x, use the “master” branch or wait for a release of version 1.5.3 or higher. While upgrading the Maintaina Horde codebase for PHP 8.1, I stumbled upon a problem: It turns out Net_DNS2 as of latest version 1.5.2 has a problem in its filesystem…

  • Simplifying Routing / PSR-15 bootstrap in Horde

    As you might remember from a previous post, Horde Core’s design is more complex than necessary or desirable for two main reasons: Horde predates today’s standards like the Composer Autoloader and tries to solve problems on its own. Changing that will impair Horde’s ability to run without composer which we were hesitant to do, focusing…

  • Making horde/core more versatile

    Hello, you may have seen my blog go quiet for a while. After two years of a global pandemic, I decided to take some more time with my family and also offload some knowledge and responsibilities around the Maintaina Horde codebase to my fellow team members at B1 Systems. I also took some time considering…

  • PHP 8 Horde (Maintaina)

    Over the next few days, all Horde libraries and apps in the maintaina-com organization will be whitelisted for PHP 8x. in their FRAMEWORK_6_0 branch development versions. One next step will be a flavour of the OpenSUSE based containers and deployments which runs off PHP 8.0. While some few libraries have been enabled for PHP 8,…