All these protocols were made to give you a view on a simple directory tree with files in it. FTP was obvious as that's just what the protocol is for. For HTTP it felt a bit like cheating since I had to create directory listings in HTML which didn't feel pure. Also it only had read access. Same for IMAP. It worked well as you could map directories onto folders and the file content was the mail body. IRC was where it got weird; with channels you only got one level of directories, the files were users on those channels that you could say something to on the channel, and they'd DCC you the file contents. It crashed some clients though when the filenames were too long...
Some database protocol would've been interesting too I guess.
Also, the server listened on one port only and looked at the incoming data to determine the protocol, which I also thought back then was pretty 1337.
There’s also WebDAV, which may be interesting to implement.
Although, I am not aware of any actually great WebDAV clients.
Only time I ever used WebDAV was a decade ago on my first smartphone, when I set up a WebDAV server on my computer and used a WebDAV client app on the phone to transfer files between the phone and the computer over WiFi.
WebDAV is one of those things where because I personally haven’t used it for so long it could be something that “no one” uses anymore in present day, or it could be that unbeknownst to me it’s hugely popular.
FTP’s directory listings are essentially ASCII art, which is IMO just as bad, except that the conventions involved were developed enough that machine parsing them mostly worked.
At least HTML has the a tag, which is genuinely machine parseable.
CalDAV and CardDAV (which are based on WebDAV) are of course also still around and used to sync contacts and calendars.
Some years I built a data grepping tool, but didn't want to build a UI around it, so I started looking into the Postgres protocol, so that I could plug in existing tools. Getting the basics right was not that difficult, the docs are pretty clear. https://www.postgresql.org/docs/current/protocol.html
The most likely reason is because MySQL used Modular Crypt Format. From https://man.freebsd.org/crypt(3) "The salt must be terminated with the end of the string character (NUL) or a dollar sign".
Great catch (for the author) and thanks for the explanation (for the parent).
As someone who's written a MySQL client (in C#: https://github.com/mysql-net/MySqlConnector), I'd be very interested to see your notes. Are they available anywhere, or were they the confidential IP of your client?
> Unsurprisingly, bugs were uncovered every time a new client was added.
I've faced the same thing, from a client perspective. Every time a new server is tested (MySQL, MariaDB, Amazon Aurora, Azure Database for MySQL, etc.), I find slightly different interpretations of the protocol and have to accommodate them.
Hmm... Not sure about that. One part of my notes is embedded in comments to the code, another part exists as a standalone markdown file providing a high-level overview. I'd rather be overly cautious for the time being, but since they are part of the repository they might become available if my client ends up open sourcing the library.
If you have any specific questions feel free to shoot me an email (contact details in my profile)
One item under "Scope of this project":
Provide a runnable server speaking the MySQL wire protocol, connected to data sources of your choice.
At the time it seemed like a ridiculous claim that no one took seriously. In the days of the 'structure, sequence and organization' of an API being copyrightable, I'm no longer so sure...