Many Hells of WebDAV: Writing a Client/Server in Go
4 months ago
- #WebDAV
- #Go
- #Interoperability
- Implementing WebDAV/CalDAV is challenging due to legacy cruft and incomplete RFCs.
- Existing Go implementations like go-webdav lacked necessary features, prompting a custom solution.
- Reverse engineering clients (Apple Calendar, DavX, Thunderbird) and servers (iCloud, Google, Radicale) was more efficient than full RFC compliance.
- Go's default XML library was inadequate, leading to the creation of a custom wrapper for handling WebDAV's unstructured schema.
- Major providers like Apple and Google often deviate from RFCs, complicating interoperability.
- Clients vary widely in their support for WebDAV features, with Apple Calendar notably avoiding sync-collection.
- Small developers face challenges enforcing standards compliance against larger providers' quirks.