LGTM2 - kudos to the team for the very detailed compat and risk analysis, as well as proactively engaging in outreach. Good luck. :)

On 5/3/23 6:59 AM, Yoav Weiss wrote:
LGTM1

Thanks for the details analysis. The rollout plan seems reasonable, and the low effective breakage gives me hope that this would stick.

On Friday, April 28, 2023 at 10:26:20 PM UTC+2 Ayu Ishii wrote:

    Contact emails [email protected] <mailto:[email protected]>,
    [email protected] <mailto:[email protected]>
    Specification https://www.w3.org/TR/webdatabase
    <https://www.w3.org/TR/webdatabase>
    Design docs
    https://developer.chrome.com/blog/deprecating-web-sql
    <https://developer.chrome.com/blog/deprecating-web-sql>

    [Google Internal]
    
https://docs.google.com/document/d/1bTj_nDqbdvE102sCm3KuwvN5c_HneLNPl9mmPeUjG4M/edit?usp=sharing
    
<https://docs.google.com/document/d/1bTj_nDqbdvE102sCm3KuwvN5c_HneLNPl9mmPeUjG4M/edit?usp=sharing>

    [Google Internal]
    
https://docs.google.com/document/d/1CDdEO65pCIo60NM8CWHNNN7EunJ-wd8v1dGUxTOBJrM/edit?resourcekey=0-R0fxP199QQ-8gnMqzmQyrw
    
<https://docs.google.com/document/d/1CDdEO65pCIo60NM8CWHNNN7EunJ-wd8v1dGUxTOBJrM/edit?resourcekey=0-R0fxP199QQ-8gnMqzmQyrw>

    SummaryThe Web SQL Database standard was first proposed in April
    2009 and abandoned in November 2010. It was implemented in WebKit
    in 2008 and shipped in Chrome and Safari, on both desktop and
    mobile. Gecko and EdgeHTML never implemented this feature and
    WebKit unshipped it in 2019. The W3C encouraged those needing web
    databases to adopt Indexed Database.
    Since its release, it has been incredibly difficult to keep our
    users secure. SQLite was not designed to run untrusted SQL
    statements, and yet with Web SQL we have to do exactly this.
    Keeping up with security and stability fixes dictates updating
    SQLite in Chromium and impacts the feature’s stability. In 2022
    alone, we updated SQLite 11 times. This comes in direct conflict
    with Web SQL’s requirement of behaving exactly as SQLite 3.6.19,
    and with the lack of a SQL specification in Web SQL, we cannot
    make any such compatibility guarantees.
    With SQLite WASM
    
<https://developer.chrome.com/blog/sqlite-wasm-in-the-browser-backed-by-the-origin-private-file-system/>as
    an effective replacement for web developers requiring a relational
    database, we would like to remove Web SQL entirely.

    Target timeline

    M101 - 123- Enterprise Policy
    <https://chromeenterprise.google/policies/#WebSQLAccess>

    M115- Add deprecation message

    M118-123  - Deprecation trial

    M119- Ship removal


    Usage and Risk

    Overall usage still shows a high percentage of 0.34% of page loads
    <https://chromestatus.com/metrics/feature/timeline/popularity/2962>,
    however our analysis has concluded that very little usage is for
    actual storage.


    Through analyzing sites from HTTPArchives, we found a majority of
    its usage is from outdated incognito detection
    
<https://stackoverflow.com/questions/48169810/how-to-detect-private-browsing-in-ios-11-safari-as-well-as-older-versions-of-sa>(e.g.
    Criteo <https://static.criteo.net/js/ld/ld.js>, Reddit
    <https://gist.github.com/ayuishii/b64b9c41152940089f8ac480f82d4e3e>), 
    and fingerprinting (e.g. Fingerprintjs
    <https://github.com/fingerprintjs/fingerprintjs>, evercookie
    <https://github.com/samyk/evercookie>).


    There are JS storage libraries that became popular around the time
    that Web SQL was introduced which use the feature. Oftentimes
    their usage is part of a fallback chain, where on modern browsers
    other storage technologies like localStorage or IndexedDB would be
    chosen before Web SQL. Examples of such libraries are localForage
    <https://github.com/localForage/localForage>,
    cordova-sqlite-storage
    <https://github.com/storesafe/cordova-sqlite-storage>, Sencha
    Touch
    <https://docs.sencha.com/touch/2.4/2.4.2-apidocs/#!/api/Ext.data.proxy.Sql>.
    Many, like localForage and cordova-sqlite-storage, gate its usage
    on feature detection due to its availability only on Chromium
    browsers. However older versions of Sencha Touch look as though
    they may not have been gated. Sencha Touch has since removed its
    SQL feature which depends on Web SQL in their version released in
    2015
    
<https://docs.sencha.com/extjs/6.0.0/guides/upgrades_migrations/modern_upgrade_guide.html#upgrades_migrations-_-modern_upgrade_guide_-_ext_data_proxy_sql_has_been_removed>.


    Our conclusion from our HTTPArchives analysis
    
<https://docs.google.com/document/d/18AGCT9YgfacSxZ5pPAkym6iUWGl72zVXkELKMQKnEPM/edit#bookmark=id.tmke6f1n07cr>is
    that we were only able to identify one site that is not gated by
    feature detection, and one site with significant breakage. We’ve
    notified open source libraries of Web SQL deprecation, and plan to
    reach out to site owners we’ve classified as breakage.


    Analyzing extensions usage, we’ve identified 74% of extensions
    that use Web SQL
    
<https://docs.google.com/document/d/18AGCT9YgfacSxZ5pPAkym6iUWGl72zVXkELKMQKnEPM/edit#bookmark=id.rxdibl42y942>are
    from JS storage libraries like localForage
    <https://github.com/localForage/localForage>and
    cordova-sqlite-storage
    <https://github.com/storesafe/cordova-sqlite-storage>. However
    there were a higher number of usages that rely on Web SQL heavily
    
<https://docs.google.com/document/d/18AGCT9YgfacSxZ5pPAkym6iUWGl72zVXkELKMQKnEPM/edit#bookmark=id.hrkiilgxtp1y>,
    and many that are not gated by feature detection
    
<https://docs.google.com/document/d/18AGCT9YgfacSxZ5pPAkym6iUWGl72zVXkELKMQKnEPM/edit#bookmark=id.vw9prsbuovyq>as
    well. We have identified these extensions and plan to contact the
    developers on this deprecation.


    Further analysis for the web platform and extensions can be found
    in our public facing Web SQL usage analysis doc
    
<https://docs.google.com/document/d/18AGCT9YgfacSxZ5pPAkym6iUWGl72zVXkELKMQKnEPM/edit?usp=sharing>.


    For those that would need to migrate, we expect a significant
    amount of work will be required. Therefore we would like to show
    deprecation messages early, and make a long deprecation trial
    available to allow developers to plan for their migration before
    full removal. We’ve provided steps for testing Web SQL removal for
    a website
    
<https://docs.google.com/document/d/1EMJSmKDVGVv0sbsRDz1b8-tTkzv9yi4S30-rzEiK9AQ/edit?usp=sharing>,
    and a guide to SQLite WASM
    
<https://developer.chrome.com/blog/sqlite-wasm-in-the-browser-backed-by-the-origin-private-file-system/>and
    for migrating a database
    <https://developer.chrome.com/blog/from-web-sql-to-sqlite-wasm/>for
    developers to follow to start their migration.


    Communications

    What we’ve done so far:

     *

        Worked with internal partners to move major products off of
        Web SQL (Completed in 2022)

     *

        Communicated to edu/enterprise partners of its planned removal
        (Aug, 2022)

         o

            No usages found from this process

     *

        Communicated with known external partners using Web SQL on its
        planned removal

         o

            All on board with migrating to WASM + SQLite

     *

        Published an article on the state of Web SQL and its
        deprecation
        <https://developer.chrome.com/blog/deprecating-web-sql/>(Aug,
        2022)

     *

        Published an article on its recommended replacement, SQLite
        WASM
        
<https://developer.chrome.com/blog/sqlite-wasm-in-the-browser-backed-by-the-origin-private-file-system/>(Jan,
        2023)

     *

        Removed Web SQL in third party contexts in M97

     *

        Removed Web SQL in non-secure contexts in M110

     *

        Published an article for migrating a database from Web SQL to
        SQLite Wasm
        <https://developer.chrome.com/blog/from-web-sql-to-sqlite-wasm/>(Mar,
        2023)

     *

        [InProgress] Communicate to identified developers in
        extensions / HTTPArchives usage


    Related Intents

    Intent to Deprecate and Remove Web SQL in 3rd Party Contexts
    <https://groups.google.com/a/chromium.org/g/blink-dev/c/TM6YDx1Hh08>

    Intent to Deprecate and Remove Web SQL in Non-Secure contexts
    <https://groups.google.com/u/1/a/chromium.org/g/blink-dev/c/xdcl4yc8Ihk>


    Blink component Blink>Storage>Web SQL
    
<https://bugs.chromium.org/p/chromium/issues/list?q=component:Blink%3EStorage%3EWebSQL>
    Search tags Web SQL <https://chromestatus.com/features#tags:websql>
    Risks
    Interoperability and Compatibility Removing Web SQL will align
    Chromium based browser behavior to all other browser engines.
    Currently Chromium is the only browser engine that supports Web
    SQL. Because of this, most websites gate the usage of Web SQL by
    feature detection.
    Gecko: N/A Never implemented
    WebKit: Unshipped
    
(https://github.com/WebKit/WebKit/commit/761bce943c0696a6bb93116eb0576ed07dbfdc65
    
<https://github.com/WebKit/WebKit/commit/761bce943c0696a6bb93116eb0576ed07dbfdc65>)
    Removed in 2019
    Web developers: N/A

    Security Currently SQLite in Chromium is updated very frequently,
    sometimes in multiple consecutive milestones. The frequency is
    defined by stability or security issues found in the SQLite
    library. Bad security issues have historically surfaced such as
    Magellan 2.0
    
<https://threatpost.com/google-chrome-affected-by-magellan-2-0-flaws/151446/>that
    had been publicized in tech news in 2019, among others.The storage
    team needs to respond quickly to these issues, and update the
    library when issues are found with help from the SQLite team and
    Release and Security TPMs.
    Removing Web SQL will permanently remove the attack vector of
    malicious SQL statements.
    WebView application risksWhile we see a 0.02% usage on WebView, we
    are unable to verify the nature of this usage. However now that
    Deprecation Trials are supported for WebView, we think the risk of
    removal is significantly reduced.
    Goals for Deprecation Trial

    The goal for the deprecation trial is to allow for a 6 month
    window after removal to let developers remove their usage of Web
    SQL. We may extend this window depending on feedback from
    participating developers. Our recommendation is for developers to
    switch to SQLite compiled to WebAssembly backed by the Origin
    Private File System. We’ve published guidance for this migration
    
<https://developer.chrome.com/blog/sqlite-wasm-in-the-browser-backed-by-the-origin-private-file-system/>in
    our developer blog.


    Debuggability Planning to add a deprecation message in the console.
    Will this feature be supported on all six Blink platforms
    (Windows, Mac, Linux, Chrome OS, Android, and Android WebView)?
    Yes, removal in all
    Is this feature fully tested by web-platform-tests
    
<https://chromium.googlesource.com/chromium/src/+/main/docs/testing/web_platform_tests.md>?
    No (Web SQL tested in web_tests
    
<https://source.chromium.org/chromium/chromium/src/+/main:third_party/blink/web_tests/storage/websql/>)

    DevTrial instructions Steps on how to test your site with Web SQL
    removed.
    
https://docs.google.com/document/d/1EMJSmKDVGVv0sbsRDz1b8-tTkzv9yi4S30-rzEiK9AQ/edit?usp=sharing
    
<https://docs.google.com/document/d/1EMJSmKDVGVv0sbsRDz1b8-tTkzv9yi4S30-rzEiK9AQ/edit?usp=sharing>

    Flag name web-sql-access
    Requires code in //chrome? False
    Tracking bug https://crbug.com/695592 <https://crbug.com/695592>

    Link to entry on the Chrome Platform Status
    https://chromestatus.com/feature/5134293578285056
    <https://chromestatus.com/feature/5134293578285056>

--
You received this message because you are subscribed to the Google Groups "blink-dev" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/a/chromium.org/d/msgid/blink-dev/0b0f9e3a-c44a-4029-968b-5c3f2d77622fn%40chromium.org <https://groups.google.com/a/chromium.org/d/msgid/blink-dev/0b0f9e3a-c44a-4029-968b-5c3f2d77622fn%40chromium.org?utm_medium=email&utm_source=footer>.

--
You received this message because you are subscribed to the Google Groups 
"blink-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/a/chromium.org/d/msgid/blink-dev/b2ba1236-353a-7492-9bbe-5ce92b15d070%40chromium.org.

Reply via email to