It’s widely implemented, with lots of implementation variations which don’t always work together well. Duplicati provides two client implementations in the hope that one works. Original pre-1985 design is also flawed, as data transfer is just a TCP stream so doesn’t notice errors like newer protocols might:
A comment on transfer modes. The stream transfer mode is
Postel & Reynolds [Page 19]
RFC 959 October 1985
File Transfer Protocol
inherently unreliable, since one can not determine if the
connection closed prematurely or not.
FTP is very simple and easy to get on small devices, so there’s a demand for it even if it’s not the best. Given a reasonably solid (and preferably secure, since it’s clear text) network, FTP can be adequate… I’m not going to try to say what’s best, but FTP is possibly as simple, weak, and universal as there is…
FTP is the .NET Framework implementation from Microsoft. FTP (Alternative) is either FluentFTP or its predecessor under a different name. You can see an example of attempting to adapt to specific server.