Intent to Deprecate and Remove:
FTP Support

tervay@google.com, asanka@chromium.org

Summary

Deprecate and remove support for FTP URLs.

Motivation

The current FTP implementation in Google Chrome has no support for encrypted connections (FTPS), nor proxies. Usage of FTP in the browser is sufficiently low that it is no longer viable to invest in improving the existing FTP client. In addition more capable FTP clients are available on all affected platforms.

Google Chrome 72+ removed support for fetching document subresources over FTP[1] and rendering of top level FTP resources[2]. Currently navigating to FTP URLs result in showing a directory listing or a download depending on the type of resource. A bug in Google Chrome 74+ resulted in dropping support for accessing FTP URLs over HTTP proxies. Proxy support for FTP was removed entirely in Google Chrome 76.

Remaining capabilities of Google Chrome’s FTP implementation are restricted to either displaying a directory listing or downloading a resource over unencrypted connections. We would like to deprecate and remove this remaining functionality rather than maintain an insecure FTP implementation.

Interoperability and Compatibility Risk

Other browsers may continue to support FTP URLs, while Chrome would fail to resolve these URLs. Given that Google Chrome has already removed support for rendering resources and fetching subresources over FTP, the compatibility risk of this deprecation is expected to be low.

Post deprecation, Google Chrome will fail to resolve or recognize ftp:// URLs. Instead the browser will attempt to invoke the default handler for ftp:// URLs as determined by the underlying platform. Due considerations will be made for dealing with situations where the browser is already the default handler for ftp:// URLs.

One additional compatibility risk exists for users who fetch PAC scripts over FTP. Once support for FTP is deprecated, this functionality will no longer be present. Users will need to migrate to other means for fetching PAC scripts.

Browser

Supports FTP?

Firefox

Yes

Safari

Yes

Edge

Yes

IE

Yes

Alternative implementation suggested for web developers

If a developer finds themselves desiring to serve files via web server, files can still be served over HTTP or HTTPS, rather than FTP.

Usage information

Currently, FTP usage sits at around 0.1% of users for Google Chrome Stable on Windows (7-day aggregate). Increasing the scope to all platforms and extending the time period for 28 days gives us ~0.01% of users, and ~0.0008% of top level navigations hitting FTP URLs for the same group. These are FTP directory listings.

For the same 28 day period we see ~0.03% of users on all platforms downloading something over FTP -- which is the only other thing users can do with FTP URLs.

Around 51% of all FTP resources downloaded were over anonymous FTP.

Usage of fetching PAC scripts over FTP is under 0.0002% of users.

For some additional historical usage, there is a discussion on the tracking bug.

Timeline

When

What

M86 (2020Q4)

  • Includes a flag for controlling overall FTP support.
  • FTP support is enabled by default, but turned down via an experiment for 1% of users on Google Chrome Stable.
  • FTP support is turned down for 50% of users on Google Chrome Canary, Dev, and Beta.
  • FTP can be re-enabled via --enable-ftp command line flag or equivalently by enabling the FtpProtocol feature via --enable-features=FtpProtocol flag.

    Note: There’s currently no enterprise policy for controlling availability of FTP.

M87 (2020Q4)

  • FTP support is disabled by default but enabled for 50% of Stable channel users. Flags for re-enabling FTP support is still present as with M80.

M88 (2021Q1)

  • FTP support is disabled by default. Flags for re-enabling FTP support is still present as with M80.

M89 (2021Q1)

  • Removal of FTP related code and resources.

(Updated on December 4, 2020: Prior code removal target of M88 updated to M89.)

Tracking bug

 https://crbug.com/333943

Entry on the feature dashboard

https://chromestatus.com/feature/6246151319715840


[1] Chrome Features Dashboard: Drop support for subresources with legacy protocols 

[2] Chrome Features Dashboard: Rendering FTP resources