January 7, 2026

RFCs: Really Frustrating Calendars

Many Hells of WebDAV: Writing a Client/Server in Go

WebDAV’s messy comeback: Go devs meltdown, comments roast, PHP swoops in

TLDR: A team building a calendar sync tool ditched official rules and reverse‑engineered Apple/Google to make WebDAV work. The crowd split between “this tech should be dead,” dark jokes about failure, and surprising praise for PHP’s Sabre/DAV as the only sane choice—spotlighting standards drift that hits everyone.

A brave team tried to build a calendar sync tool in Go using old-school WebDAV/CalDAV (think web protocols for sharing calendars and contacts). They dove into the official rulebooks (RFCs), found a maze of contradictions, tossed the “full spec” dream, and reverse‑engineered what Apple, Google, and others actually do. Cue the comment section: shock, snark, and a surprising love letter to PHP. One top reaction gasped, “I didn’t know WebDAV was still a thing,” dubbing it a zombie tech that refuses to die. Another quipped their DAV server journey was “smooth failing,” while a meme-y chorus dropped, “even your bugs have users.”

The hottest drama? Whether reverse engineering was genius or reckless. A skeptic asked why not study an existing open-source library and use its tests, while frustrated devs piled on missing features like server-side sync. Meanwhile, an unexpected hero emerged: Sabre/DAV in PHP. One commenter admitted they keep coming back to it, despite all the shiny modern languages. The article’s other spice: big companies like Apple and Google allegedly ignore half the rules, leaving little guys to guess the magic handshake. Throw in the dev’s rant about Go’s XML pain, and you’ve got calendar chaos. For newbies, CalDAV is just “calendar over the web”—and today, it’s drama over the web.

Key Points

  • Team built a WebDAV/CalDAV client and server in Go for Homechart after finding go-webdav lacked required features, including server-side collection synchronization.
  • Attempting full conformance with WebDAV/CalDAV RFCs (2518, 4918, extensions) proved unnecessary for their calendar CRUD needs and slowed development.
  • They switched to reverse-engineering real clients/servers (Apple Calendar, DavX, Thunderbird; Apple iCloud, Google Calendar, Radicale) via HTTP traffic capture.
  • A custom Go XML wrapper (xmel) was created to handle WebDAV’s loosely structured XML more flexibly than the standard library.
  • Interoperability testing revealed major providers diverge from RFCs and inconsistently advertise capabilities; Apple Calendar avoids sync-collection in favor of ctags/etags.

Hottest takes

"I honestly didn’t know WebDAV was still a thing" — kayo_20211030
"Smooth failing." — ekjhgkejhgk
"the thing I keep coming back to is PHP-based Sabre/DAV" — eddieroger
Made with <3 by @siedrix and @shesho from CDMX. Powered by Forge&Hive.