* It's a pain in the butt with NAT, which is something that unfortunately has to be accounted for in the internet these days.
* NAT traversal requires deep packet inspection and is a bloody pain, because since IP addresses and ports are written in text it means that packet sizes may change, requiring the rewrite of every single packet afterwards at a serious performance cost.
* No SSL for you on the data channel due to this either.
* The binary/ASCII mode is awful
* Data transfer lacks good status indications. Is the data socket close an end of file, or a problem to be reported?
* Directory listing is not standard and has a dozen possible formats
* The entire protocol is made for interactive commandline use, which is really an annoyance in modern times.
* Anonymous access requires a fake, non-standard login. Which sometimes requires reading the MOTD, but see above.
Fortunately we do have a replacement: WebDAV. Layers on nicely on top of HTTP and backwards compatible with it, goes trivially through firewalls, can be encrypted, directly listings are standard, and highly amenable to automation and GUIs. It's also well supported and you can mount WebDAV servers as a share easily.
Also, try to create a web app that mimics a FTP server. ( a real production one ) you’ll see how much FTP does and you didn’t know.
* And it's "the arpanet"