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.

  • Horde/Rdo ORM: PSR-4 and BC Breaks

    Summary: Horde/Rdo ORM got upgraded for Namespaces. User code conversion is straight-forward. Backward Compatibility is limited. If you ever wondered, RDO stands for Rampage Data Objects. This has been on my list for quite long, but it took some time to get it right. The horde/rdo library is horde’s Object Relational Mapping (ORM) solution. It

    Continue reading


  • Why extending PHPUnit might be wrong

    Over the last few months, I spent a lot of cold winter evening hours looking into porting ancient PHPUnit 4.x test suites over to PHPUnit 9.x. The test suites, you guessed it, belong to the Horde framework. Horde actually does not just use phpunit but wraps it into its own testing library horde/test. The full

    Continue reading


  • Turba Addressbook (II) – Architecture

    In the first chapter we looked at Turba’s features, APIs, Protocols. In the current installment, I want to present the concepts and structure of the code. Turba is among the oldest horde applications. As such, it contains parts from various stages of Horde’s development.

    Continue reading


  • Turba Addressbook (I) – Features

    This will be the first part of a short series of articles exploring the Turba application and its architecture. Part I covers all the features and integrations provided by Turba. Part II will look into implementation, code structure etc. Part III will consist of proposals for a changed architecture.

    Continue reading


  • What’s new in Maintaina Horde: Status 3/2021

    CalDAV and CardDAV now run off SabreDAV 4 rather than SabreDAV 2 We now support both the Composer installer versions 1 and 2. Nothing still depends on the PEAR protocol. The Horde Icalendar Library now supports vCard 4. Still, importing/exporting vCard 4 or using it in CardDAV in the addressbook App Turba is not yet

    Continue reading


  • Maintaina Horde: Q&A

    by

    in

    There’s sometimes a little confusion about that. Let’s answer common questions. What is Maintaina Horde? Horde is a long-living email and groupware solution. It’s free & open source and owned by Horde LLC.Maintaina Horde is a fork from the official horde repository adding / improving code. It started out as a proof of concept but

    Continue reading


  • Maintaina Horde: Now on Leap 15.2

    I changed the maintaina.com Horde Images to use openSUSE Leap 15.2 instead of openSUSE Tumbleweed as a base. You should not experience any issues but I have not yet tested much. The change was necessary as I had build failures since 2021-02-17 in the github actions CI builds. It’s something about the docker used in

    Continue reading


  • DAVx5 CalDAV may break with Unicode symbols in Horde/Kronolith syncs.

    If you get user complaints about broken CalDAV syncs with Horde, there’s many places to look at. In one particular instance, an event was created from travelling app Transportr into the stock android Calendar app. Through the DAVx5 sync app, the user wanted to push these events to Horde’s SabreDAV interface – and from there,

    Continue reading


  • Horde Development Review: October 2020

    October was a very busy month in Horde development, even though a lot of things happened under the hood and cannot be accessed right now. A decision was made that Horde RPC will default to json-rpc and deprecate xmlrpc in upcoming releases, maybe already dropping xmlrpc in Horde 6. PHP8 will remove xmlrpc from the

    Continue reading


  • Autowiring Vfs in a Horde App

    The Horde Vfs is an abstraction around storing and retrieving files. Calling code does not care about where the Vfs is actually stored, be it a remote filesystem, a dav resource, a database or a path in the local filesystem. Autowiring means the Injector knows how to create a class using some other class without

    Continue reading