WebDAV has been around a lot longer and does many of the same things as object storage. It also has support for random access read/writes where object storage requires you to download, edit, and re-upload the whole file. Seems like a no-brainer if you wanted to offer cloud storage to customers.
I thought maybe supporting large uploads was the draw, but WebDAV can support chunking, so you don’t need to allocate extra server resources to accommodate large files.
I use both daily, and WebDAV just seems like it does everything better: object storage feels like throwing files in a junk drawer and WebDAV more like an organized filing cabinet.
Aside from Nextcloud and a few FOSS applications, the only big thing I recall that adopted WebDAV was Frontpage back in the day.
So, what am I missing? What makes object storage so compelling that it became ubiquitous while WebDAV is practically a legacy spec?
I don’t get it, to be honest. WebDav is as key/value as S3. The key is the file path, the value is the file contents. Instead of a PATCH you send a POST request to a specific path with the key encoded in a different way. Same for a DELETE.
Of course, WebDAV was intended for file shares, not as a web API, but I don’t see why WebDAV couldn’t have been implemented.
Couldn’t say for sure but WebDAV probably would be clunky if fronted by a distributed database. The beauty of S3 is you add more servers, add more disks, and bam you’ve got more S3. That happens most easily when the metadata system sitting in the front can expand easily. I don’t know how easy that would be to plumb up with WebDAV. Whether or not one was better here, S3 ultimately won because it’s a primitive API that was essentially impossible to fuck up.
Why can’t you do that for WebDAV? All of it is HTTP requests. You get your standard PUT/GET/POST/DELETEs for basic document interaction like on any API server, and then PROPFIND/PROPPATCH for getting/altering object properties, LOCK/UNLOCK for file locking, MKCOL for making directories (“collections”), COPY/MOVE for transferring files between servers/locations.
All of this could be implemented by a basic Javascript client today. The PROPFIND/PROPPATCH verbs take care of all the metadata. The input and output are XML (which the browser has easy APIs for) and are fully extensible. Anything from security groups to bandwidth limits could be configured through PROPFIND if you just make a schema for it.
I think WebDAV would fit the bill perfectly for Amazon S3. Basic file browsers like Windows Explorer may be limited to the core WebDAV spec in terms of metadata and XML properties, but there’s absolutely nothing preventing you from setting up a custom XML schema to add any metadata of your liking if you’re not trying to be a file server for desktop computers.
Do you know what part of the S3 API WebDAV would be missing? I reckon the (much easier) PROPFIND HTTP verb would take the place of most weird Amazon APIs like ListObjectsV2. It really looks like S3 is “WebDAV but not standard WebDAV” to me.