Category: Tech
-
Rules must be obeyed
Horde was never on the hip & trendy side of town. When everybody called monorepos dead, we did a monorepo. Shortly before the great monorepo revival, we did a git split into distinct libraries. This required some tooling. Michael Rubinsky’s git-tools was great for its time. It handled what we couldn’t have handled manually. Now…
-
Worms infested my code base and I am fighting back
The sabberworm/php-css-parser used to be bundled with the horde/css-parser library. Supposedly the one is a shield before the other, separating the code base from this particular beast. But over time it crept in and infested various places. How to fight back It’s time to teach the worm some manners and throw it out where it…
-
Time, it needs time
As I am writing this, bug reports from users are coming in on last night’s updates to Turba Addressbook. In Turba we first rolled out our new way of date handling and upgrading existing user-selected date formats in backends. The initial results were … mixed. Horde comes from the strftime era, a way of formatting…
-
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+…
-
Web: Why “No Frontend Framework” is the Right Framework for Horde 6
Part 3 of 4: Architectural Evolution in Horde 6 I really did not want to build another frontend framework. Or adopt one for that matter. When jQuery Mobile became untenable (see Part 1), my instinct was to find the next framework. Something modern, well-maintained, with good documentation and community support. React? I embraced it wholeheartedly…
-
JWT Authentication: Building a Hybrid Model That Actually Works
Part 2 of 4: Architectural Evolution in Horde 6 In part 1 of the evolution series: The jQuery Problem I discussed frontend concerns – How to move off a dead mobile-only framework towards a mobile-first responsive design and not get caught in the next framework I don’t need. This time we move towards authentication concerns.…
-
The jQuery Mobile Problem: Why Horde 6 Had to Move On
Part 1 of 4: Architectural Evolution in Horde 6 Turns out you can’t ship a stable release while depending on a framework that was deprecated five years ago. I sort of knew this deep down in my head. Yes, yes, unmaintained dependencies are a problem. But the full weight of it didn’t hit me until…
-
Sunsetting the Maintaina Horde Fork
A few years back I started a downstream fork of Horde to develop features I needed for foss and customer deployments without upstream dependencies. It went successful, was a great learning opportunity and a good exercise in critiquing our old tool chain and approaches. We had some well-known downstream users and contributors but I’d say…
-
PHP: The case for standalone null parameters
PHP 8.0 introduced null and false as members of union types but disallowed them as standalone parameter types. PHP 8.2 changed that and allowed null as standalone parameter types. What is this good for? Should they extend this to “never” one day? Why do I call standalone null parameters poor man’s generics? What’s a null parameter?…