Category: horde
-
Custom iCalendar data in Kronolith & Nag
The iCalendar exchange format is everywhere in Horde’s calendar (kronolith) and tasks (nag) apps. It is offered for manual import/export. It is the centerpiece of the CalDAV synchronisation protocol and various APIs of these apps. The format also plays a role in email invitiations and updates sent via iTip. It is a very powerful and…
-
Maintaina Horde switches to openSUSE LEAP
Our Horde docker images have switched over from Tumbleweed to openSUSE LEAP once again. Recently our container build CI job in github.com broke down unexpectedly. An investigation showed that Tumbleweed’s core libraries, especially libc, were too new for the CI’s build system, based on Ubuntu LTS. This is the second time we abandoned the Tumbleweed…
-
CardDAV vs MacOS Contacts
In case you run Horde, NextCloud or other CalDAV/CardDAV server products, sooner or later you will encounter users who want to use the MacOS Addressbook application, “Contacts”, to access their server contacts. As of MacOS 11.5.2, the apple contacts app only supports one addressbook per principal. It will pick the first addressbook and use it…
-
Can Horde’s internal API use PSR-7 Messages?
Applications call into abstract services backed by other apps, with limited coupling. This may sound a little like micro services, but predates the concept by a decade. Horde’s registry routes the call to the implementing app if present. For example, both “sam” and “ingo” applications implement some spam filter related API calls. Registry setup decides…
-
CardDAV: What is Turba’s true data model?
Turba Addressbook imports, exports and syncs to and from many formats. I discussed all the formats in a previous article. You can even customize the addressbooks, make them contain extra fields or omit common fields. Saving and loading data from the addressbook backend is in some way one more such conversion. Turba can actually read…
-
Horde’s HTTP component goes PSR
This weekend, I gave the horde/http component a some major redesign. See how things escalated. Oh my. My minimum goals were namespacing, PSR-4 (Revised Autoloading Standard) and some minor, schematic adjustments. The final result is quite different. I ended up implementing PSR-7 (HTTP Message Interface), PSR-17 (HTTP Factories) and PSR-18 (HTTP Client). The code largely…
-
Maintaina Horde: Fourth Of July Additions
I packaged some more exotic horde apps and libraries for use with the composer installer and the FRAMEWORK_6_0 codebase. This was mostly formal conversion work, no actual testing was done. Some of these items might not even be very useful to most administrators. Nevertheless, I want to close the gap between what is available in…
-
Composer Installer gets Horde Themes
A while back I added theme package support to the composer installer for horde (horde-installer-plugin). There are some Horde themes or theme customisations available out there, but they come as zip files you have to manually deploy to the right directories, often spanning multiple apps. The installer recognizes themes and generates appropriate symlinks in the…
-
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…
-
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…