├── .gitignore ├── Makefile ├── README.md ├── data ├── accelerometer.json ├── ambientlight.json ├── animation-timing.json ├── app-lifecycle.json ├── aria.json ├── audio-output.json ├── audio.json ├── autocomplete-cc.json ├── autocomplete.json ├── background-sync.json ├── battery.json ├── beacon.json ├── bluetooth.json ├── calendar.json ├── canvas.json ├── canvasproxy.json ├── contacts-sys.json ├── contacts.json ├── cors.json ├── credential-management.json ├── crypto.json ├── cryptokey.json ├── csp.json ├── css-2d.json ├── css-3d.json ├── css-animation.json ├── css-border.json ├── css-boxshadow.json ├── css-device-adapt.json ├── css-font-loading.json ├── css-nav-trans.json ├── css-rounded.json ├── css-size-adjust.json ├── css-snappoints.json ├── css-touch-action.json ├── css-transitions.json ├── css-will-change.json ├── datalist.json ├── ddr.json ├── discovery.json ├── dnt.json ├── eme.json ├── epr.json ├── eventsource.json ├── filereader.json ├── flexbox.json ├── frame-timing.json ├── fs2.json ├── fullscreen.json ├── gallery.json ├── geofencing.json ├── geolocation.json ├── getusermedia-cap.json ├── getusermedia.json ├── html5-download.json ├── humidity.json ├── idle-callback.json ├── iframe-sandbox.json ├── imagecapture.json ├── ime.json ├── indexeddb.json ├── indieui.json ├── inputaccept.json ├── inputdate.json ├── inputdevice.json ├── inputhint.json ├── inputmode.json ├── inputpattern.json ├── inputtext.json ├── intents.json ├── manifest.json ├── manifestjson.json ├── mediaqueries.json ├── mediaqueries4.json ├── mediasession.json ├── messaging-sys.json ├── mobile-wcag.json ├── mse.json ├── mwabp.json ├── mwbp-wcag.json ├── namedwebsockets.json ├── nav-timing.json ├── networkapi.json ├── notification.json ├── online.json ├── p2p.json ├── packaging.json ├── perf-timeline.json ├── permissions.json ├── picture.json ├── pointer-events.json ├── postmessage.json ├── preload.json ├── proximity.json ├── push.json ├── quota.json ├── recording.json ├── res-hints.json ├── res-timing.json ├── runtime.json ├── screenlock.json ├── secondscreen.json ├── sensors.json ├── serviceworker.json ├── setimmediate.json ├── smooth-scroll.json ├── speechinput.json ├── srcset.json ├── subres-integrity.json ├── svg12.json ├── svg2.json ├── task-scheduler.json ├── touchevent.json ├── user-timing.json ├── vibration.json ├── video.json ├── viewport-units.json ├── visibilitychange.json ├── wake-lock.json ├── webanimations.json ├── webaudio.json ├── webnfc.json ├── websockets.json ├── websql.json ├── webstorage.json ├── webworkers.json ├── wi-local.json ├── woff.json ├── woff2.json └── xhr2.json ├── github.svg ├── html5apps.png ├── index.es.html ├── index.html ├── js └── generate.js ├── specs └── tr.json ├── style.css ├── tools └── extract-spec-data.py └── webapp.svg /.gitignore: -------------------------------------------------------------------------------- 1 | android.png 2 | blackberry.jpg 3 | chrome.png 4 | editors-activity/ 5 | firefox.png 6 | ie.png 7 | images 8 | opera.png 9 | safari.png 10 | -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- 1 | all: specs/tr.json 2 | 3 | specs/tr.json: $(wildcard data/*.json) 4 | python tools/extract-spec-data.py $^ > $@ -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Standards For Web Apps on Mobile: State and Roadmap 2 | 3 | This repository holds the data and part of the tools needed to build the quarterly [Standards for Web Applications on Mobile: current state and roadmap](http://www.w3.org/Mobile/mobile-web-app-state/) document. 4 | 5 | ## Data 6 | ### Data model 7 | Each JSON file contains an object that describes a given spec with the following properties: 8 | * TR: url of the TR document (if it exists); if it doesn't, please also document the following data: 9 | * title: title of the spec (if known) 10 | * wgs: working groups responsible for the spec, described as an array of objects with properties "label" (name of the group) and "url" (homepage of the group) 11 | * maturity: "ed" for editors draft, "N/A" if not even a draft is available 12 | * feature: the specific relevant feature of the spec (optional) 13 | * coremob: "fulfills" if the spec was part of CoreMob 2012; "partial" if the spec partially fulfills CoreMob 2012; omit completely otherwise 14 | * stability: object with property "level" (one of "low", "medium", "high") and "label" that describes textually the stability of the spec 15 | * editors: object with property "url" that points to the editors draft of the spec; if there isn't one, use a property "label" set to "N/A" instead 16 | * impl: current level of implementation of the feature in mobile browsers, described via an object with properties "level" (one of "low", "medium", "high"), "label" (a textual description of the implementation level), and "id", the id of the feature in @dontcallmedom/canmymobilebrowser 17 | * tests: information about test suite for the spec, described via an object with properties "url" (url of the tests that can be run), "repo" (url of the repository of test cases), "level" (how complete the test suite is, one of "low", "medium", "high"), and "label" (a textual description of the coverage level) 18 | 19 | ## Feature description 20 | The index.html file contains purely textual description of a set of features; these features are then automatically summarized in data tables (one per section of the document) via generate.js. 21 | 22 | To enable this generation of summary tables, each feature of the document is annotated with: 23 | * a `data-feature` attribute whose content will be re-used to label the feature in the summary table 24 | * one or several `a` elements with a `data-featureid` attribute whose value matches the basename of a file in the data directory; each of these elements will generate a row describing the relevant spec 25 | 26 | ```html 27 |

Lorem ipsum Foo 29 | Specficiation lorem ipsum.

30 | ``` 31 | 32 | ## Contributing 33 | ### Document 34 | Contributions to the body of the document to improve the descriptions of the various features can be made via pull requests on [index.html](index.html). 35 | 36 | Particularly worth checking for updates: sentences that use future events (“will”, “would”, “proposed”, “expect”) or evoke recent events (“new“, “recent”). 37 | 38 | ### Data 39 | The most simple form of contribution is to ensure that the data about the various features is kept up to date. 40 | 41 | Most of the data is stored in JSON files in the [data](data/) directory; please make pull requests to update it. The data that requires most frequent updates is: 42 | * the level of stability of a given feature 43 | * the advancement of the test suite. 44 | * the link to the TR document 45 | 46 | The data about the state of implementation is maintained in a separate repository: @dontcallmedom/canmymobilebrowser to which contributions are also most welcomed. 47 | 48 | Note that the data about maturity and Working Groups is automatically obtained from the W3C list of Technical reports. 49 | 50 | ### Adding new spec 51 | To add a new spec to the document: 52 | * create a JSON file in the data directory with the required information 53 | * add the document to the relevant section of index.html as in the example given in “Feature description” 54 | 55 | ## Building 56 | Building the document remains a somewhat convoluted process: 57 | * build the editors activity images via @dontcallmedom/w3c-editors-draft-tracker 58 | * build the implementation status images via @dontcallmedom/canmymobilebrowser 59 | * install the images generated in the two steps above resp. in editors-activity and images 60 | * copy the images at the root of @dontcallmedom/canmymobilebrowser in the directory 61 | * load index.html in a browser 62 | * export the resulting DOM as the final document 63 | * add the changelog to that document, set the date, update the version URLs 64 | * convert it to PDF -------------------------------------------------------------------------------- /data/accelerometer.json: -------------------------------------------------------------------------------- 1 | { 2 | "coremob" : "fulfills", 3 | "wpd" : { 4 | "url" : "http://docs.webplatform.org/wiki/tutorials/device_orientation", 5 | "label" : "Using device orientation" 6 | }, 7 | "tests" : { 8 | "level" : "low", 9 | "repo" : "", 10 | "url" : "https://dvcs.w3.org/hg/geo/file/tip", 11 | "label" : "Started" 12 | }, 13 | "impl" : { 14 | "level" : "high", 15 | "label" : "Well deployed", 16 | "id" : "accelerometer" 17 | }, 18 | "TR" : "http://www.w3.org/TR/orientation-event/", 19 | "editors" : { 20 | "url" : "http://w3c.github.io/deviceorientation/spec-source-orientation.html" 21 | }, 22 | "wdc" : { 23 | "url" : "http://www.w3devcampus.com/writing-great-web-applications-for-mobile/", 24 | "label" : "Mobile Web 2: Programming Web Applications on-line course" 25 | }, 26 | "stability" : { 27 | "level" : "medium", 28 | "label" : "Stabilizing, but with planned updates" 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /data/ambientlight.json: -------------------------------------------------------------------------------- 1 | { 2 | "tests" : { 3 | "level" : "low", 4 | "repo" : "https://github.com/w3c/web-platform-tests/", 5 | "url" : "http://w3c-test.org/ambient-light/", 6 | "label" : "Started" 7 | }, 8 | "impl" : { 9 | "level" : "low", 10 | "label" : "Very limited", 11 | "id" : "ambientlight" 12 | }, 13 | "editors" : { 14 | "url" : "http://w3c.github.io/ambient-light/" 15 | }, 16 | "TR" : "http://www.w3.org/TR/ambient-light/", 17 | "stability" : { 18 | "level" : "low", 19 | "label" : "Likely to evolve significantly" 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /data/animation-timing.json: -------------------------------------------------------------------------------- 1 | { 2 | "coremob" : "fulfills", 3 | "tests" : { 4 | "level" : "medium", 5 | "repo" : "https://github.com/w3c/web-platform-tests/tree/master/html/webappapis/animation-frames/", 6 | "url" : "http://w3c-test.org/html/webappapis/animation-frames/", 7 | "label" : "Well started" 8 | }, 9 | "impl" : { 10 | "level" : "high", 11 | "label" : "Well deployed", 12 | "id" : "animation-timing" 13 | }, 14 | "editors" : { 15 | "url" : "http://w3c.github.io/animation-timing/" 16 | }, 17 | "TR" : "http://www.w3.org/TR/animation-timing/", 18 | "stability" : { 19 | "level" : "high", 20 | "label" : "Stable" 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /data/app-lifecycle.json: -------------------------------------------------------------------------------- 1 | { 2 | "wgs" : [ 3 | { 4 | "url" : "http://www.w3.org/2012/sysapps/", 5 | "label" : "System Applications Working Group" 6 | } 7 | ], 8 | "maturity" : "N/A", 9 | "tests" : { 10 | "level" : "low", 11 | "repo" : "", 12 | "url" : "", 13 | "label" : "N/A" 14 | }, 15 | "impl" : { 16 | "level" : "low", 17 | "label" : "N/A", 18 | "id" : "runtime" 19 | }, 20 | "title" : "Application Lifecycle and Events", 21 | "TR" : "", 22 | "editors" : { 23 | "url" : "http://www.w3.org/2012/sysapps/app-lifecycle/" 24 | }, 25 | "stability" : { 26 | "level" : "low", 27 | "label" : "Early draft" 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /data/aria.json: -------------------------------------------------------------------------------- 1 | { 2 | "tests" : { 3 | "level" : "high", 4 | "repo" : "", 5 | "url" : "https://dvcs.w3.org/hg/pfwg/file/default/ARIA/1.0/tests/test-files/", 6 | "label" : "Good coverage" 7 | }, 8 | "impl" : { 9 | "level" : "high", 10 | "label" : "Well deployed", 11 | "id" : "aria" 12 | }, 13 | "editors" : { 14 | "label" : "Finished" 15 | }, 16 | "TR" : "http://www.w3.org/TR/wai-aria/", 17 | "stability" : { 18 | "level" : "high", 19 | "label" : "Stable" 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /data/audio-output.json: -------------------------------------------------------------------------------- 1 | { 2 | "tests" : { 3 | "level" : "low", 4 | "repo" : "", 5 | "url" : "", 6 | "label" : "None" 7 | }, 8 | "impl" : { 9 | "level" : "low", 10 | "label" : "None", 11 | "id" : "audio-output" 12 | }, 13 | "editors" : { 14 | "url" : "http://w3c.github.io/mediacapture-output/" 15 | }, 16 | "TR" : "http://www.w3.org/TR/audio-output/", 17 | "stability" : { 18 | "level" : "low", 19 | "label" : "early draft" 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /data/audio.json: -------------------------------------------------------------------------------- 1 | { 2 | "coremob" : "fulfills", 3 | "wpd" : { 4 | "url" : "http://docs.webplatform.org/wiki/tutorials/audio_tag", 5 | "label" : "Audio tag tutorial" 6 | }, 7 | "tests" : { 8 | "level" : "low", 9 | "repo" : "https://github.com/w3c/web-platform-tests/", 10 | "url" : "http://w3c-test.org/html/semantics/embedded-content/the-audio-element", 11 | "label" : "Started" 12 | }, 13 | "impl" : { 14 | "level" : "high", 15 | "label" : "Good deployment", 16 | "id" : "audio" 17 | }, 18 | "TR" : "http://www.w3.org/TR/html5/embedded-content-0.html#the-audio-element", 19 | "editors" : { 20 | "url" : "http://www.w3.org/html/wg/drafts/html/CR/embedded-content-0.html#the-video-element" 21 | }, 22 | "wdc" : { 23 | "url" : "http://www.w3devcampus.com/html5-w3c-training/", 24 | "label" : "HTML5 on-line course" 25 | }, 26 | "stability" : { 27 | "level" : "high", 28 | "label" : "Stable" 29 | }, 30 | "feature" : "audio element" 31 | } 32 | -------------------------------------------------------------------------------- /data/autocomplete-cc.json: -------------------------------------------------------------------------------- 1 | { 2 | "tests" : { 3 | "level" : "low", 4 | "repo" : "", 5 | "url" : "", 6 | "label" : "None" 7 | }, 8 | "impl" : { 9 | "level" : "low", 10 | "label" : "Very limited", 11 | "id" : "autocomplete-cc" 12 | }, 13 | "editors" : { 14 | "url" : "http://www.w3.org/html/wg/drafts/html/master/semantics.html#attr-fe-autocomplete-cc-name" 15 | }, 16 | "TR" : "http://www.w3.org/TR/html51/semantics.html#attr-fe-autocomplete-cc-name", 17 | "stability" : { 18 | "level" : "low", 19 | "label" : "Early draft" 20 | }, 21 | "feature" : "Credit card details autocomplete" 22 | } 23 | -------------------------------------------------------------------------------- /data/autocomplete.json: -------------------------------------------------------------------------------- 1 | { 2 | "tests" : { 3 | "level" : "low", 4 | "repo" : "", 5 | "url" : "", 6 | "label" : "None" 7 | }, 8 | "impl" : { 9 | "level" : "low", 10 | "label" : "Very limited", 11 | "id" : "autocomplete" 12 | }, 13 | "editors" : { 14 | "url" : "http://www.w3.org/html/wg/drafts/html/master/semantics.html#autofilling-form-controls:-the-autocomplete-attribute" 15 | }, 16 | "TR" : "http://www.w3.org/TR/html51/semantics.html#autofilling-form-controls:-the-autocomplete-attribute", 17 | "stability" : { 18 | "level" : "low", 19 | "label" : "Early draft" 20 | }, 21 | "feature" : "autocomplete attribute" 22 | } 23 | -------------------------------------------------------------------------------- /data/background-sync.json: -------------------------------------------------------------------------------- 1 | { 2 | "tests" : { 3 | "level" : "low", 4 | "repo" : "", 5 | "url" : "", 6 | "label" : "None" 7 | }, 8 | "impl" : { 9 | "level" : "low", 10 | "label" : "None", 11 | "id" : "background-sync" 12 | }, 13 | "TR" : "", 14 | "title": "Web Background Synchronization", 15 | "wgs" : [ 16 | { 17 | "url" : "http://www.w3.org/2008/webapps/", 18 | "label" : "Web Applications Working Group" 19 | } 20 | ], 21 | "maturity" : "N/A", 22 | "editors" : { 23 | "url" : "https://github.com/slightlyoff/BackgroundSync/blob/master/explainer.md" 24 | }, 25 | "stability" : { 26 | "level" : "low", 27 | "label" : "Early draft" 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /data/battery.json: -------------------------------------------------------------------------------- 1 | { 2 | "tests" : { 3 | "level" : "medium", 4 | "repo" : "https://github.com/w3c/web-platform-tests/", 5 | "url" : "http://w3c-test.org/battery-status/", 6 | "label" : "Good coverage" 7 | }, 8 | "impl" : { 9 | "level" : "medium", 10 | "label" : "Growing", 11 | "id" : "battery" 12 | }, 13 | "editors" : { 14 | "url" : "https://dvcs.w3.org/hg/dap/raw-file/tip/battery/Overview.html" 15 | }, 16 | "TR" : "http://www.w3.org/TR/battery-status/", 17 | "stability" : { 18 | "level" : "high", 19 | "label" : "Stable" 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /data/beacon.json: -------------------------------------------------------------------------------- 1 | { 2 | "tests" : { 3 | "level" : "low", 4 | "repo" : "", 5 | "url" : "", 6 | "label" : "N/A" 7 | }, 8 | "impl" : { 9 | "level" : "low", 10 | "label" : "Limited but growing", 11 | "id" : "beacon" 12 | }, 13 | "editors" : { 14 | "url" : "http://dvcs.w3.org/hg/webperf/raw-file/tip/specs/Beacon/Overview.html" 15 | }, 16 | "TR" : "http://www.w3.org/TR/beacon/", 17 | "stability" : { 18 | "level" : "medium", 19 | "label" : "Stabilizing" 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /data/bluetooth.json: -------------------------------------------------------------------------------- 1 | { 2 | "wgs" : [ 3 | { 4 | "url" : "https://www.w3.org/community/web-bluetooth/", 5 | "label" : "Web Bluetooth Community Group" 6 | } 7 | ], 8 | "maturity" : "Not on standards track", 9 | "tests" : { 10 | "level" : "low", 11 | "repo" : "", 12 | "url" : "", 13 | "label" : "N/A" 14 | }, 15 | "impl" : { 16 | "level" : "low", 17 | "label" : "Experimental", 18 | "id" : "bluetooth" 19 | }, 20 | "title" : "Web Bluetooth", 21 | "TR" : "", 22 | "editors" : { 23 | "url" : "https://webbluetoothcg.github.io/web-bluetooth/" 24 | }, 25 | "stability" : { 26 | "level" : "low", 27 | "label" : "Early draft" 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /data/calendar.json: -------------------------------------------------------------------------------- 1 | { 2 | "tests" : { 3 | "level" : "low", 4 | "repo" : "", 5 | "url" : "", 6 | "label" : "None" 7 | }, 8 | "impl" : { 9 | "level" : "low", 10 | "label" : "None", 11 | "id" : "calendar" 12 | }, 13 | "editors" : { 14 | "url" : "http://dev.w3.org/2009/dap/calendar/" 15 | }, 16 | "TR" : "http://www.w3.org/TR/calendar-api/", 17 | "stability" : { 18 | "level" : "low", 19 | "label" : "Abandonned" 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /data/canvas.json: -------------------------------------------------------------------------------- 1 | { 2 | "coremob" : "fulfills", 3 | "wpd" : { 4 | "url" : "http://docs.webplatform.org/wiki/tutorials/canvas/canvas_tutorial", 5 | "label" : "Canvas tutorial" 6 | }, 7 | "tests" : { 8 | "level" : "high", 9 | "repo" : "https://github.com/w3c/web-platform-tests/", 10 | "url" : "http://w3c-test.org/2dcontext/", 11 | "label" : "Good coverage" 12 | }, 13 | "impl" : { 14 | "level" : "high", 15 | "label" : "Widely deployed", 16 | "id" : "canvas" 17 | }, 18 | "TR" : "http://www.w3.org/TR/2dcontext/", 19 | "editors" : { 20 | "url" : "http://www.w3.org/html/wg/drafts/2dcontext/html5_canvas_CR/" 21 | }, 22 | "wdc" : { 23 | "url" : "http://www.w3devcampus.com/html5-w3c-training/", 24 | "label" : "HTML5 on-line course" 25 | }, 26 | "stability" : { 27 | "level" : "high", 28 | "label" : "Stable" 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /data/canvasproxy.json: -------------------------------------------------------------------------------- 1 | { 2 | "tests" : { 3 | "level" : "low", 4 | "repo" : "", 5 | "url" : "", 6 | "label" : "None" 7 | }, 8 | "impl" : { 9 | "level" : "low", 10 | "label" : "None", 11 | "id" : "canvasproxy" 12 | }, 13 | "editors" : { 14 | "url" : "http://www.w3.org/html/wg/drafts/html/master/semantics.html#proxying-canvases-to-workers" 15 | }, 16 | "TR" : "http://www.w3.org/TR/html51/semantics.html#proxying-canvases-to-workers", 17 | "stability" : { 18 | "level" : "low", 19 | "label" : "Early draft" 20 | }, 21 | "feature" : "Canvas Proxy for Web Workers" 22 | } 23 | -------------------------------------------------------------------------------- /data/contacts-sys.json: -------------------------------------------------------------------------------- 1 | { 2 | "tests" : { 3 | "level" : "low", 4 | "repo" : "", 5 | "url" : "", 6 | "label" : "None" 7 | }, 8 | "impl" : { 9 | "level" : "low", 10 | "label" : "None", 11 | "id" : "contacts-sys" 12 | }, 13 | "editors" : { 14 | "url" : "http://www.w3.org/2012/sysapps/contacts-manager-api/" 15 | }, 16 | "TR" : "http://www.w3.org/TR/contacts-manager-api/", 17 | "stability" : { 18 | "level" : "low", 19 | "label" : "Abandonned" 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /data/contacts.json: -------------------------------------------------------------------------------- 1 | { 2 | "tests" : { 3 | "level" : "low", 4 | "repo" : "https://dvcs.w3.org/hg/dap/file/default/contacts/tests/test-cases", 5 | "url" : "", 6 | "label" : "Early draft based on previous API" 7 | }, 8 | "impl" : { 9 | "level" : "low", 10 | "label" : "None", 11 | "id" : "contacts" 12 | }, 13 | "editors" : { 14 | "url" : "http://dev.w3.org/2009/dap/contacts/" 15 | }, 16 | "TR" : "http://www.w3.org/TR/contacts-api/", 17 | "stability" : { 18 | "level" : "low", 19 | "label" : "Early Web-intents based approach; stalled due to lack of progress on Web Intents" 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /data/cors.json: -------------------------------------------------------------------------------- 1 | { 2 | "coremob" : "fulfills", 3 | "tests" : { 4 | "level" : "medium", 5 | "repo" : "https://github.com/w3c/web-platform-tests/", 6 | "url" : "http://w3c-test.org/cors/", 7 | "label" : "Well started" 8 | }, 9 | "wpd" : { 10 | "url" : "http://docs.webplatform.org/wiki/tutorials/using_cors", 11 | "label" : "Using CORS" 12 | }, 13 | "impl" : { 14 | "level" : "high", 15 | "label" : "Well-deployed", 16 | "id" : "cors" 17 | }, 18 | "editors" : { 19 | "label" : "Finished" 20 | }, 21 | "TR" : "http://www.w3.org/TR/cors/", 22 | "stability" : { 23 | "level" : "high", 24 | "label" : "Stable" 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /data/credential-management.json: -------------------------------------------------------------------------------- 1 | { 2 | "tests" : { 3 | "level" : "low", 4 | "repo" : "", 5 | "url" : "", 6 | "label" : "N/A" 7 | }, 8 | "impl" : { 9 | "level" : "low", 10 | "label" : "None", 11 | "id" : "credential-management" 12 | }, 13 | "TR" : "http://www.w3.org/TR/credential-management-1/", 14 | "editors" : { 15 | "url" : "https://w3c.github.io/webappsec/specs/credentialmanagement/" 16 | }, 17 | "stability" : { 18 | "level" : "low", 19 | "label" : "Early draft" 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /data/crypto.json: -------------------------------------------------------------------------------- 1 | { 2 | "tests" : { 3 | "level" : "low", 4 | "repo" : "https://github.com/w3c/web-platform-tests/", 5 | "url" : "http://w3c-test.org/WebCryptoAPI/", 6 | "label" : "Early start" 7 | }, 8 | "impl" : { 9 | "level" : "high", 10 | "label" : "Well deployed", 11 | "id" : "crypto" 12 | }, 13 | "editors" : { 14 | "url" : "https://dvcs.w3.org/hg/webcrypto-api/raw-file/tip/spec/Overview.html" 15 | }, 16 | "TR" : "http://www.w3.org/TR/WebCryptoAPI/", 17 | "stability" : { 18 | "level" : "high", 19 | "label" : "Stable" 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /data/cryptokey.json: -------------------------------------------------------------------------------- 1 | { 2 | "tests" : { 3 | "level" : "low", 4 | "repo" : "", 5 | "url" : "", 6 | "label" : "None" 7 | }, 8 | "impl" : { 9 | "level" : "low", 10 | "label" : "None", 11 | "id" : "cryptokey" 12 | }, 13 | "editors" : { 14 | "url" : "https://dvcs.w3.org/hg/webcrypto-keydiscovery/raw-file/tip/Overview.html" 15 | }, 16 | "TR" : "http://www.w3.org/TR/webcrypto-key-discovery/", 17 | "stability" : { 18 | "level" : "low", 19 | "label" : "Early work" 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /data/csp.json: -------------------------------------------------------------------------------- 1 | { 2 | "tests" : { 3 | "level" : "medium", 4 | "repo" : "https://github.com/w3c/web-platform-tests/", 5 | "url" : "http://w3c-test.org/content-security-policy/", 6 | "label" : "Well started" 7 | }, 8 | "wpd" : { 9 | "url" : "http://docs.webplatform.org/wiki/tutorials/content-security-policy", 10 | "label" : "Introduction to content security policy" 11 | }, 12 | "impl" : { 13 | "level" : "high", 14 | "label" : "Well-deployed", 15 | "id" : "csp" 16 | }, 17 | "editors" : { 18 | "url": "https://w3c.github.io/webappsec/specs/CSP2/" 19 | }, 20 | "TR" : "http://www.w3.org/TR/CSP2/", 21 | "stability" : { 22 | "level" : "high", 23 | "label" : "Stable" 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /data/css-2d.json: -------------------------------------------------------------------------------- 1 | { 2 | "coremob" : "fulfills", 3 | "tests" : { 4 | "level" : "medium", 5 | "repo" : "", 6 | "url" : "http://test.csswg.org/harness/suite/CSS3-TRANSFORMS_DEV/", 7 | "label" : "Good coverage" 8 | }, 9 | "wpd" : { 10 | "url" : "http://docs.webplatform.org/wiki/tutorials/css_transforms", 11 | "label" : "CSS Transforms tutorial" 12 | }, 13 | "impl" : { 14 | "level" : "high", 15 | "label" : "Well deployed", 16 | "id" : "css-2d" 17 | }, 18 | "editors" : { 19 | "url" : "http://dev.w3.org/csswg/css-transforms/Overview.html" 20 | }, 21 | "TR" : "http://www.w3.org/TR/css-transforms-1/", 22 | "stability" : { 23 | "level" : "medium", 24 | "label" : "Mostly stable" 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /data/css-3d.json: -------------------------------------------------------------------------------- 1 | { 2 | "coremob" : "fulfills", 3 | "tests" : { 4 | "level" : "medium", 5 | "repo" : "", 6 | "url" : "http://test.csswg.org/harness/suite/CSS3-TRANSFORMS_DEV/", 7 | "label" : "Good coverage" 8 | }, 9 | "wpd" : { 10 | "url" : "http://docs.webplatform.org/wiki/tutorials/css_transforms", 11 | "label" : "CSS Transforms tutorial" 12 | }, 13 | "impl" : { 14 | "level" : "high", 15 | "label" : "Well deployed", 16 | "id" : "css-3d" 17 | }, 18 | "editors" : { 19 | "url" : "http://dev.w3.org/csswg/css-transforms/Overview.html" 20 | }, 21 | "TR" : "http://www.w3.org/TR/css-transforms-1/", 22 | "stability" : { 23 | "level" : "low", 24 | "label" : "Stabilizing" 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /data/css-animation.json: -------------------------------------------------------------------------------- 1 | { 2 | "coremob" : "fulfills", 3 | "tests" : { 4 | "level" : "medium", 5 | "repo" : "https://github.com/w3c/csswg-test/tree/master/css-animations-1", 6 | "url" : "https://github.com/w3c/csswg-test/tree/master/css-animations-1", 7 | "label" : "well started" 8 | }, 9 | "wpd" : { 10 | "url" : "http://docs.webplatform.org/wiki/tutorials/css_animations", 11 | "label" : "CSS Animations tutorial" 12 | }, 13 | "impl" : { 14 | "level" : "high", 15 | "label" : "Well deployed", 16 | "id" : "css-animation" 17 | }, 18 | "editors" : { 19 | "url" : "http://dev.w3.org/csswg/css3-animations/" 20 | }, 21 | "TR" : "http://www.w3.org/TR/css3-animations", 22 | "stability" : { 23 | "level" : "low", 24 | "label" : "Early draft" 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /data/css-border.json: -------------------------------------------------------------------------------- 1 | { 2 | "coremob" : "fulfills", 3 | "tests" : { 4 | "level" : "high", 5 | "repo" : "", 6 | "url" : "http://test.csswg.org/harness/suite/CSS3-BACKGROUND_DEV/", 7 | "label" : "Good coverage" 8 | }, 9 | "wpd" : { 10 | "url" : "http://docs.webplatform.org/wiki/tutorials/CSS_background_images", 11 | "label" : "CSS Background images tutorial" 12 | }, 13 | "impl" : { 14 | "level" : "high", 15 | "label" : "Well deployed", 16 | "id" : "css-border" 17 | }, 18 | "editors" : { 19 | "url" : "http://dev.w3.org/csswg/css-backgrounds/" 20 | }, 21 | "TR" : "http://www.w3.org/TR/css3-background/", 22 | "stability" : { 23 | "level" : "high", 24 | "label" : "Mostly finished" 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /data/css-boxshadow.json: -------------------------------------------------------------------------------- 1 | { 2 | "coremob" : "fulfills", 3 | "tests" : { 4 | "level" : "high", 5 | "repo" : "", 6 | "url" : "http://test.csswg.org/harness/suite/CSS3-BACKGROUND_DEV/", 7 | "label" : "Good coverage" 8 | }, 9 | "impl" : { 10 | "level" : "high", 11 | "label" : "Widely deployed", 12 | "id" : "css-boxshadow" 13 | }, 14 | "editors" : { 15 | "url" : "http://dev.w3.org/csswg/css-backgrounds/" 16 | }, 17 | "TR" : "http://www.w3.org/TR/css3-background/", 18 | "stability" : { 19 | "level" : "high", 20 | "label" : "Mostly finished" 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /data/css-device-adapt.json: -------------------------------------------------------------------------------- 1 | { 2 | "coremob" : "fulfills", 3 | "tests" : { 4 | "level" : "low", 5 | "repo" : "", 6 | "url" : "", 7 | "label" : "N/A" 8 | }, 9 | "wpd" : { 10 | "url" : "http://docs.webplatform.org/wiki/tutorials/mobile_viewport", 11 | "label" : "Mobile Viewport" 12 | }, 13 | "impl" : { 14 | "level" : "low", 15 | "label" : "Limited", 16 | "id" : "css-device-adapt" 17 | }, 18 | "editors" : { 19 | "url" : "http://dev.w3.org/csswg/css-device-adapt/" 20 | }, 21 | "TR" : "http://www.w3.org/TR/css-device-adapt/", 22 | "stability" : { 23 | "level" : "low", 24 | "label" : "Early draft" 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /data/css-font-loading.json: -------------------------------------------------------------------------------- 1 | { 2 | "tests" : { 3 | "level" : "low", 4 | "repo" : "", 5 | "url" : "", 6 | "label" : "N/A" 7 | }, 8 | "impl" : { 9 | "level" : "medium", 10 | "label" : "Growing", 11 | "id" : "css-font-loading" 12 | }, 13 | "editors" : { 14 | "url" : "http://dev.w3.org/csswg/css-font-loading/" 15 | }, 16 | "TR" : "http://www.w3.org/TR/css-font-loading-3/", 17 | "stability" : { 18 | "level" : "medium", 19 | "label" : "Stabilizing" 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /data/css-nav-trans.json: -------------------------------------------------------------------------------- 1 | { 2 | "wgs": [ 3 | {"url":"http://dev.w3.org/Style/CSS/members", "label":"CSS Working Group"} 4 | ], 5 | "maturity" : "Not on standards track yet", 6 | "tests" : { 7 | "level" : "low", 8 | "repo" : "", 9 | "url" : "", 10 | "label" : "N/A" 11 | }, 12 | "impl" : { 13 | "level" : "low", 14 | "label" : "None", 15 | "id" : "css-nav-trans" 16 | }, 17 | "title" : "Web Navigation Transitions", 18 | "TR" : "", 19 | "editors" : { 20 | "url" : "http://cwiiis.github.io/gaia-navigator/" 21 | }, 22 | "stability" : { 23 | "level" : "low", 24 | "label" : "Early proposal" 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /data/css-rounded.json: -------------------------------------------------------------------------------- 1 | { 2 | "coremob" : "fulfills", 3 | "tests" : { 4 | "level" : "high", 5 | "repo" : "", 6 | "url" : "http://test.csswg.org/harness/suite/CSS3-BACKGROUND_DEV/", 7 | "label" : "Good coverage" 8 | }, 9 | "impl" : { 10 | "level" : "high", 11 | "label" : "Well deployed", 12 | "id" : "css-rounded" 13 | }, 14 | "editors" : { 15 | "url" : "http://dev.w3.org/csswg/css-backgrounds/" 16 | }, 17 | "TR" : "http://www.w3.org/TR/css3-background/", 18 | "stability" : { 19 | "level" : "high", 20 | "label" : "Mostly finished" 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /data/css-size-adjust.json: -------------------------------------------------------------------------------- 1 | { 2 | "tests" : { 3 | "level" : "low", 4 | "repo" : "", 5 | "url" : "", 6 | "label" : "N/A" 7 | }, 8 | "impl" : { 9 | "level" : "medium", 10 | "label" : "Growing deployment", 11 | "id" : "css-size-adjust" 12 | }, 13 | "editors" : { 14 | "url" : "http://dev.w3.org/csswg/css-size-adjust/" 15 | }, 16 | "TR" : "", 17 | "stability" : { 18 | "level" : "low", 19 | "label" : "Early draft" 20 | }, 21 | "wgs": [ 22 | {"url":"http://dev.w3.org/Style/CSS/members", "label":"CSS Working Group"} 23 | ], 24 | "maturity" : "ed", 25 | "title": "CSS Mobile Text Size Adjustment Module Level 1" 26 | 27 | } 28 | -------------------------------------------------------------------------------- /data/css-snappoints.json: -------------------------------------------------------------------------------- 1 | { 2 | "stability" : { 3 | "label" : "Early draft", 4 | "level" : "low" 5 | }, 6 | "TR" : "http://www.w3.org/TR/css-snappoints-1/", 7 | "tests" : { 8 | "url" : "", 9 | "label" : "None", 10 | "repo" : "", 11 | "level" : "low" 12 | }, 13 | "editors" : { 14 | "url" : "http://dev.w3.org/csswg/css-snappoints/" 15 | }, 16 | "coremob" : "partial", 17 | "impl" : { 18 | "level" : "low", 19 | "id" : "css-snappoints", 20 | "label" : "Limited" 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /data/css-touch-action.json: -------------------------------------------------------------------------------- 1 | { 2 | "coremob" : "partial", 3 | "tests" : { 4 | "level" : "high", 5 | "repo" : "https://github.com/w3c/web-platform-tests/", 6 | "url" : "http://w3c-test.org/pointerevents/", 7 | "label" : "Good coverage" 8 | }, 9 | "wpd" : { 10 | "url" : "http://docs.webplatform.org/wiki/concepts/PointerEvents", 11 | "label" : "Pointer Events primer" 12 | }, 13 | "impl" : { 14 | "level" : "medium", 15 | "label" : "Growing", 16 | "id" : "css-touch-action" 17 | }, 18 | "editors" : { 19 | "url" : "https://dvcs.w3.org/hg/pointerevents/raw-file/tip/pointerEvents.html#the-touch-action-css-property" 20 | }, 21 | "TR" : "http://www.w3.org/TR/pointerevents/#the-touch-action-css-property", 22 | "stability" : { 23 | "level" : "high", 24 | "label" : "Stable" 25 | }, 26 | "feature": "touch-action property" 27 | } 28 | -------------------------------------------------------------------------------- /data/css-transitions.json: -------------------------------------------------------------------------------- 1 | { 2 | "coremob" : "fulfills", 3 | "tests" : { 4 | "level" : "medium", 5 | "repo" : "https://github.com/w3c/csswg-test/tree/master/css-transitions-1", 6 | "url" : "https://github.com/w3c/csswg-test/tree/master/css-transitions-1", 7 | "label" : "well started" 8 | }, 9 | "wpd" : { 10 | "url" : "http://docs.webplatform.org/wiki/tutorials/css_transitions", 11 | "label" : "CSS Transitions tutorial" 12 | }, 13 | "impl" : { 14 | "level" : "high", 15 | "label" : "Well deployed", 16 | "id" : "css-transitions" 17 | }, 18 | "editors" : { 19 | "url" : "http://dev.w3.org/csswg/css-transitions/" 20 | }, 21 | "TR" : "http://www.w3.org/TR/css3-transitions/", 22 | "stability" : { 23 | "level" : "low", 24 | "label" : "Early draft" 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /data/css-will-change.json: -------------------------------------------------------------------------------- 1 | { 2 | "tests" : { 3 | "level" : "low", 4 | "repo" : "", 5 | "url" : "", 6 | "label" : "N/A" 7 | }, 8 | "impl" : { 9 | "level" : "medium", 10 | "label" : "Growing deployment", 11 | "id" : "css-will-change" 12 | }, 13 | "editors" : { 14 | "url" : "http://dev.w3.org/csswg/css-will-change/" 15 | }, 16 | "TR" : "http://www.w3.org/TR/css-will-change-1/", 17 | "stability" : { 18 | "level" : "low", 19 | "label" : "Early draft" 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /data/datalist.json: -------------------------------------------------------------------------------- 1 | { 2 | "coremob" : "fulfills", 3 | "tests" : { 4 | "level" : "low", 5 | "repo" : "https://github.com/w3c/web-platform-tests/", 6 | "url" : "http://w3c-test.org/html/semantics/forms/the-datalist-element/", 7 | "label" : "Started" 8 | }, 9 | "impl" : { 10 | "level" : "medium", 11 | "label" : "Growing", 12 | "id" : "datalist" 13 | }, 14 | "editors" : { 15 | "url" : "http://www.w3.org/html/wg/drafts/html/CR/forms.html#the-datalist-element" 16 | }, 17 | "TR" : "http://www.w3.org/TR/html5/forms.html#the-datalist-element", 18 | "stability" : { 19 | "level" : "high", 20 | "label" : "Stable" 21 | }, 22 | "feature" : "datalist element" 23 | } 24 | -------------------------------------------------------------------------------- /data/ddr.json: -------------------------------------------------------------------------------- 1 | { 2 | "tests" : { 3 | "level" : "high", 4 | "repo" : "", 5 | "url" : "http://www.w3.org/2005/MWI/DDWG/drafts/api/test-report.html", 6 | "label" : "Good Coverage" 7 | }, 8 | "impl" : { 9 | "level" : "low", 10 | "label" : "Limited", 11 | "id" : "ddr" 12 | }, 13 | "editors" : { 14 | "url" : "", 15 | "label" : "N/A" 16 | }, 17 | "TR" : "http://www.w3.org/TR/DDR-Simple-API/", 18 | "stability" : { 19 | "level" : "high", 20 | "label" : "finished" 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /data/discovery.json: -------------------------------------------------------------------------------- 1 | { 2 | "tests" : { 3 | "level" : "low", 4 | "repo" : "", 5 | "url" : "", 6 | "label" : "None" 7 | }, 8 | "impl" : { 9 | "level" : "low", 10 | "label" : "None", 11 | "id" : "discovery" 12 | }, 13 | "editors" : { 14 | "url" : "https://dvcs.w3.org/hg/dap/raw-file/tip/discovery-api/Overview.html" 15 | }, 16 | "TR" : "http://www.w3.org/TR/discovery-api/", 17 | "stability" : { 18 | "level" : "low", 19 | "label" : "Early draft, unsure future" 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /data/dnt.json: -------------------------------------------------------------------------------- 1 | { 2 | "tests" : { 3 | "level" : "low", 4 | "repo" : "", 5 | "url" : "", 6 | "label" : "None" 7 | }, 8 | "impl" : { 9 | "level" : "medium", 10 | "label" : "Good deployment", 11 | "id" : "dnt" 12 | }, 13 | "TR" : "http://www.w3.org/TR/tracking-dnt/", 14 | "editors" : { 15 | "url" : "http://www.w3.org/2011/tracking-protection/drafts/tracking-dnt.html" 16 | }, 17 | "stability" : { 18 | "level" : "medium", 19 | "label" : "Stabilizing" 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /data/eme.json: -------------------------------------------------------------------------------- 1 | { 2 | "tests" : { 3 | "level" : "low", 4 | "repo" : "", 5 | "url" : "", 6 | "label" : "None" 7 | }, 8 | "impl" : { 9 | "level" : "low", 10 | "label" : "Limited", 11 | "id" : "drm" 12 | }, 13 | "editors" : { 14 | "url" : "http://w3c.github.io/encrypted-media/" 15 | }, 16 | "TR" : "http://www.w3.org/TR/encrypted-media/", 17 | "stability" : { 18 | "level" : "low", 19 | "label" : "Early draft" 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /data/epr.json: -------------------------------------------------------------------------------- 1 | { 2 | "tests" : { 3 | "level" : "low", 4 | "repo" : "", 5 | "url" : "", 6 | "label" : "None" 7 | }, 8 | "impl" : { 9 | "level" : "low", 10 | "label" : "None", 11 | "id" : "epr" 12 | }, 13 | "editors" : { 14 | "url" : "https://w3c.github.io/webappsec/specs/epr/" 15 | }, 16 | "TR" : "http://www.w3.org/TR/epr/", 17 | "stability" : { 18 | "level" : "low", 19 | "label" : "Just started" 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /data/eventsource.json: -------------------------------------------------------------------------------- 1 | { 2 | "tests" : { 3 | "level" : "medium", 4 | "repo" : "https://github.com/w3c/web-platform-tests/", 5 | "url" : "http://w3c-test.org/eventsource/", 6 | "label" : "Good coverage" 7 | }, 8 | "wpd" : { 9 | "url" : "http://docs.webplatform.org/wiki/tutorials/eventsource_basics", 10 | "label" : "Streaming updates with server-sent events" 11 | }, 12 | "impl" : { 13 | "level" : "high", 14 | "label" : "Getting well-deployed", 15 | "id" : "eventsource" 16 | }, 17 | "editors" : { 18 | "url" : "http://dev.w3.org/html5/eventsource/" 19 | }, 20 | "TR" : "http://www.w3.org/TR/eventsource/", 21 | "stability" : { 22 | "level" : "high", 23 | "label" : "Stable" 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /data/filereader.json: -------------------------------------------------------------------------------- 1 | { 2 | "coremob" : "fulfills", 3 | "tests" : { 4 | "level" : "low", 5 | "repo" : "https://github.com/w3c/web-platform-tests/", 6 | "url" : "http://w3c-test.org/FileAPI/", 7 | "label" : "Started" 8 | }, 9 | "impl" : { 10 | "level" : "high", 11 | "label" : "Getting well deployed", 12 | "id" : "filereader" 13 | }, 14 | "wdc" : { 15 | "url" : "http://www.w3devcampus.com/writing-great-web-applications-for-mobile/", 16 | "label" : "Mobile Web 2: Programming Web Applications on-line course" 17 | }, 18 | "editors" : { 19 | "url" : "https://w3c.github.io/FileAPI/" 20 | }, 21 | "TR" : "http://www.w3.org/TR/FileAPI/", 22 | "stability" : { 23 | "level" : "medium", 24 | "label" : "Stabilizing" 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /data/flexbox.json: -------------------------------------------------------------------------------- 1 | { 2 | "coremob" : "fulfills", 3 | "tests" : { 4 | "level" : "high", 5 | "repo" : "", 6 | "url" : "http://test.csswg.org/suites/css3-flexbox/nightly-unstable/", 7 | "label" : "Good coverage" 8 | }, 9 | "impl" : { 10 | "level" : "high", 11 | "label" : "Well deployed", 12 | "id" : "flexbox" 13 | }, 14 | "editors" : { 15 | "url" : "http://dev.w3.org/csswg/css-flexbox/" 16 | }, 17 | "TR" : "http://www.w3.org/TR/css-flexbox-1/", 18 | "stability" : { 19 | "level" : "high", 20 | "label" : "Mostly finished" 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /data/frame-timing.json: -------------------------------------------------------------------------------- 1 | { 2 | "tests" : { 3 | "level" : "low", 4 | "repo" : "", 5 | "url" : "", 6 | "label" : "None" 7 | }, 8 | "impl" : { 9 | "level" : "low", 10 | "label" : "None", 11 | "id" : "frame-timing" 12 | }, 13 | "editors" : { 14 | "url": "https://w3c.github.io/frame-timing/" 15 | }, 16 | "TR" : "http://www.w3.org/TR/frame-timing/", 17 | "stability" : { 18 | "level" : "low", 19 | "label" : "Early draft" 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /data/fs2.json: -------------------------------------------------------------------------------- 1 | { 2 | "wgs" : [ 3 | { 4 | "url" : "http://www.w3.org/2008/webapps/", 5 | "label" : "Web Applications Working Group" 6 | } 7 | ], 8 | "maturity" : "N/A", 9 | "tests" : { 10 | "level" : "low", 11 | "repo" : "", 12 | "url" : "", 13 | "label" : "None" 14 | }, 15 | "impl" : { 16 | "level" : "low", 17 | "label" : "N/A", 18 | "id" : "fs2" 19 | }, 20 | "title" : "FileSystem API", 21 | "TR" : "", 22 | "editors" : { 23 | "url" : "http://w3c.github.io/filesystem-api/" 24 | }, 25 | "stability" : { 26 | "level" : "low", 27 | "label" : "Early proposal" 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /data/fullscreen.json: -------------------------------------------------------------------------------- 1 | { 2 | "coremob" : "partial", 3 | "tests" : { 4 | "level" : "low", 5 | "repo" : "", 6 | "url" : "", 7 | "label" : "None" 8 | }, 9 | "wpd" : { 10 | "url" : "http://docs.webplatform.org/wiki/tutorials/using_the_full-screen_api", 11 | "label" : "Using the full-screen API" 12 | }, 13 | "impl" : { 14 | "level" : "medium", 15 | "label" : "Growing deployment", 16 | "id" : "fullscreen" 17 | }, 18 | "editors" : { 19 | "url" : "" 20 | }, 21 | "TR" : "http://www.w3.org/TR/fullscreen/", 22 | "stability" : { 23 | "level" : "low", 24 | "label" : "Early draft" 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /data/gallery.json: -------------------------------------------------------------------------------- 1 | { 2 | "tests" : { 3 | "level" : "low", 4 | "repo" : "", 5 | "url" : "", 6 | "label" : "N/A" 7 | }, 8 | "impl" : { 9 | "level" : "low", 10 | "label" : "None", 11 | "id" : "gallery" 12 | }, 13 | "editors" : { 14 | "url" : "https://dvcs.w3.org/hg/dap/raw-file/tip/gallery/Overview.html" 15 | }, 16 | "TR" : "http://www.w3.org/TR/gallery/", 17 | "stability" : { 18 | "level" : "low", 19 | "label" : "Early Web-intents based approach; stalled due to lack of progress on Web Intents" 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /data/geofencing.json: -------------------------------------------------------------------------------- 1 | { 2 | "tests" : { 3 | "level" : "low", 4 | "repo" : "", 5 | "url" : "", 6 | "label" : "None" 7 | }, 8 | "impl" : { 9 | "level" : "low", 10 | "label" : "None", 11 | "id" : "geofencing" 12 | }, 13 | "TR" : "http://www.w3.org/TR/geofencing/", 14 | "editors" : { 15 | "url" : "https://w3c.github.io/geofencing-api/" 16 | }, 17 | "stability" : { 18 | "level" : "low", 19 | "label" : "Just started" 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /data/geolocation.json: -------------------------------------------------------------------------------- 1 | { 2 | "coremob" : "fulfills", 3 | "wpd" : { 4 | "url" : "http://docs.webplatform.org/wiki/tutorials/geolocation-trip-meter", 5 | "label" : "Introduction to Geolocation API" 6 | }, 7 | "tests" : { 8 | "level" : "medium", 9 | "repo" : "https://github.com/w3c/web-platform-tests/tree/master/geolocation-API", 10 | "url" : "http://w3c-test.org/geolocation-API/", 11 | "label" : "Good coverage" 12 | }, 13 | "impl" : { 14 | "level" : "high", 15 | "label" : "Widely deployed", 16 | "id" : "geolocation" 17 | }, 18 | "TR" : "http://www.w3.org/TR/geolocation-API/", 19 | "editors" : { 20 | "url" : "http://dev.w3.org/geo/api/spec-source.html" 21 | }, 22 | "wdc" : { 23 | "url" : "http://www.w3devcampus.com/writing-great-web-applications-for-mobile/", 24 | "label" : "Mobile Web 2: Programming Web Applications on-line course" 25 | }, 26 | "stability" : { 27 | "level" : "high", 28 | "label" : "Finished" 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /data/getusermedia-cap.json: -------------------------------------------------------------------------------- 1 | { 2 | "tests" : { 3 | "level" : "low", 4 | "repo" : "", 5 | "url" : "", 6 | "label" : "None" 7 | }, 8 | "impl" : { 9 | "level" : "low", 10 | "label" : "None", 11 | "id" : "getusermedia-cap" 12 | }, 13 | "editors" : { 14 | "url" : "http://w3c.github.io/mediacapture-main/#the-model-sources-sinks-constraints-and-settings" 15 | }, 16 | "TR" : "http://www.w3.org/TR/mediacapture-streams/#the-model-sources-sinks-constraints-and-settings", 17 | "feature": "Source capabilities", 18 | "stability" : { 19 | "level" : "medium", 20 | "label" : "Stabilizing" 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /data/getusermedia.json: -------------------------------------------------------------------------------- 1 | { 2 | "tests" : { 3 | "level" : "medium", 4 | "repo" : "https://github.com/w3c/web-platform-tests/", 5 | "url" : "http://w3c-test.org/mediacapture-streams/", 6 | "label" : "started" 7 | }, 8 | "impl" : { 9 | "level" : "medium", 10 | "label" : "Growing", 11 | "id" : "getusermedia" 12 | }, 13 | "editors" : { 14 | "url" : "http://w3c.github.io/mediacapture-main/" 15 | }, 16 | "TR" : "http://www.w3.org/TR/mediacapture-streams/", 17 | "stability" : { 18 | "level" : "medium", 19 | "label" : "Stabilizing" 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /data/html5-download.json: -------------------------------------------------------------------------------- 1 | { 2 | "tests" : { 3 | "level" : "low", 4 | "repo" : "https://github.com/w3c/web-platform-tests/", 5 | "url" : "http://w3c-test.org/html/semantics/links/downloading-resources/", 6 | "label" : "None" 7 | }, 8 | "impl" : { 9 | "level" : "medium", 10 | "label" : "Growing", 11 | "id" : "html5-download" 12 | }, 13 | "TR" : "http://www.w3.org/TR/html5/links.html#attr-hyperlink-download", 14 | "editors" : { 15 | "url" : "http://www.w3.org/html/wg/drafts/html/CR/links.html#attr-hyperlink-download" 16 | }, 17 | "stability" : { 18 | "level" : "high", 19 | "label" : "Stable" 20 | }, 21 | "feature" : "download attribute" 22 | } 23 | -------------------------------------------------------------------------------- /data/humidity.json: -------------------------------------------------------------------------------- 1 | { 2 | "wgs" : [ 3 | { 4 | "url" : "http://www.w3.org/2009/dap/", 5 | "label" : "Device APIs Working Group" 6 | } 7 | ], 8 | "maturity" : "N/A", 9 | "tests" : { 10 | "level" : "low", 11 | "repo" : "", 12 | "url" : "", 13 | "label" : "N/A" 14 | }, 15 | "impl" : { 16 | "level" : "low", 17 | "label" : "None", 18 | "id" : "humidity" 19 | }, 20 | "title" : "Ambient Humidity Events", 21 | "TR" : "", 22 | "editors" : { 23 | "url" : "https://dvcs.w3.org/hg/dap/raw-file/tip/humidity/Overview.html" 24 | }, 25 | "stability" : { 26 | "level" : "low", 27 | "label" : "Unofficial draft" 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /data/idle-callback.json: -------------------------------------------------------------------------------- 1 | { 2 | "tests" : { 3 | "level" : "low", 4 | "repo" : "", 5 | "url" : "", 6 | "label" : "None" 7 | }, 8 | "impl" : { 9 | "level" : "low", 10 | "label" : "Experimental", 11 | "id" : "idle-callback" 12 | }, 13 | "TR" : "http://www.w3.org/TR/requestidlecallback/", 14 | "editors" : { 15 | "url" : "https://w3c.github.io/requestidlecallback/" 16 | }, 17 | "stability" : { 18 | "level" : "low", 19 | "label" : "Early draft" 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /data/iframe-sandbox.json: -------------------------------------------------------------------------------- 1 | { 2 | "tests" : { 3 | "level" : "low", 4 | "repo" : "https://github.com/w3c/web-platform-tests/", 5 | "url" : "http://w3c-test.org/html/browsers/sandboxing/", 6 | "label" : "None" 7 | }, 8 | "impl" : { 9 | "level" : "high", 10 | "label" : "Widely deployed", 11 | "id" : "iframe-sandbox" 12 | }, 13 | "TR" : "http://www.w3.org/TR/html5/browsers.html#sandboxing", 14 | "editors" : { 15 | "url" : "http://www.w3.org/html/wg/drafts/html/CR/browsers.html#sandboxing" 16 | }, 17 | "stability" : { 18 | "level" : "high", 19 | "label" : "Stable" 20 | }, 21 | "feature" : "Sandboxed iframe" 22 | } 23 | -------------------------------------------------------------------------------- /data/imagecapture.json: -------------------------------------------------------------------------------- 1 | { 2 | "tests" : { 3 | "level" : "low", 4 | "repo" : "", 5 | "url" : "", 6 | "label" : "None" 7 | }, 8 | "impl" : { 9 | "level" : "low", 10 | "label" : "None", 11 | "id" : "mediacapture" 12 | }, 13 | "editors" : { 14 | "url" : "http://w3c.github.io/mediacapture-image/" 15 | }, 16 | "TR" : "http://www.w3.org/TR/image-capture/", 17 | "stability" : { 18 | "level" : "low", 19 | "label" : "Early draft" 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /data/ime.json: -------------------------------------------------------------------------------- 1 | { 2 | "tests" : { 3 | "level" : "low", 4 | "repo" : "", 5 | "url" : "", 6 | "label" : "N/A" 7 | }, 8 | "impl" : { 9 | "level" : "low", 10 | "label" : "Very limited", 11 | "id" : "ime" 12 | }, 13 | "editors" : { 14 | "url" : "https://w3c.github.io/ime-api/" 15 | }, 16 | "TR" : "http://www.w3.org/TR/ime-api/", 17 | "stability" : { 18 | "level" : "low", 19 | "label" : "Uncertainty about future" 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /data/indexeddb.json: -------------------------------------------------------------------------------- 1 | { 2 | "coremob" : "fulfills", 3 | "wpd" : { 4 | "url" : "http://docs.webplatform.org/wiki/tutorials/offline_storage", 5 | "label" : "Offline storage tutorial" 6 | }, 7 | "tests" : { 8 | "level" : "high", 9 | "repo" : "https://github.com/w3c/web-platform-tests/", 10 | "url" : "http://w3c-test.org/IndexedDB/", 11 | "label" : "Good coverage" 12 | }, 13 | "impl" : { 14 | "level" : "high", 15 | "label" : "Well deployed", 16 | "id" : "indexeddb" 17 | }, 18 | "TR" : "http://www.w3.org/TR/IndexedDB/", 19 | "editors" : { 20 | "url" : "http://w3c.github.io/IndexedDB/" 21 | }, 22 | "wdc" : { 23 | "url" : "http://www.w3devcampus.com/html5-w3c-training/", 24 | "label" : "HTML5 on-line course" 25 | }, 26 | "stability" : { 27 | "level" : "high", 28 | "label" : "Stable" 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /data/indieui.json: -------------------------------------------------------------------------------- 1 | { 2 | "tests" : { 3 | "level" : "low", 4 | "repo" : "", 5 | "url" : "", 6 | "label" : "None" 7 | }, 8 | "impl" : { 9 | "level" : "low", 10 | "label" : "None", 11 | "id" : "indieui" 12 | }, 13 | "editors" : { 14 | "url" : "https://dvcs.w3.org/hg/IndieUI/raw-file/default/src/indie-ui-events.html" 15 | }, 16 | "TR" : "http://www.w3.org/TR/indie-ui-events/", 17 | "stability" : { 18 | "level" : "low", 19 | "label" : "Early draft" 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /data/inputaccept.json: -------------------------------------------------------------------------------- 1 | { 2 | "coremob" : "fulfills", 3 | "tests" : { 4 | "level" : "high", 5 | "repo" : "https://github.com/w3c/web-platform-tests/", 6 | "url" : "http://w3c-test.org/html-media-capture/", 7 | "label" : "Good coverage" 8 | }, 9 | "impl" : { 10 | "level" : "medium", 11 | "label" : "Growing deployment", 12 | "id" : "inputaccept" 13 | }, 14 | "editors" : { 15 | "url" : "http://dev.w3.org/2009/dap/camera/" 16 | }, 17 | "TR" : "http://www.w3.org/TR/html-media-capture/", 18 | "stability" : { 19 | "level" : "high", 20 | "label" : "Stable" 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /data/inputdate.json: -------------------------------------------------------------------------------- 1 | { 2 | "coremob" : "fulfills", 3 | "wpd" : { 4 | "url" : "http://docs.webplatform.org/wiki/guides/html5_form_features", 5 | "label" : "HTML5 Form features" 6 | }, 7 | "tests" : { 8 | "level" : "low", 9 | "repo" : "https://github.com/w3c/web-platform-tests/", 10 | "url" : "http://w3c-test.org/html/semantics/forms/the-input-element/", 11 | "label" : "Just started" 12 | }, 13 | "impl" : { 14 | "level" : "high", 15 | "label" : "Well deployed", 16 | "id" : "inputdate" 17 | }, 18 | "TR" : "http://www.w3.org/TR/html5/forms.html#date-state-(type=date)", 19 | "editors" : { 20 | "url" : "http://www.w3.org/html/wg/drafts/html/CR/forms.html#date-state-(type=date)" 21 | }, 22 | "wdc" : { 23 | "url" : "http://www.w3devcampus.com/html5-w3c-training/", 24 | "label" : "HTML5 on-line course" 25 | }, 26 | "stability" : { 27 | "level" : "high", 28 | "label" : "Stable" 29 | }, 30 | "feature" : "Data and Time input element" 31 | } 32 | -------------------------------------------------------------------------------- /data/inputdevice.json: -------------------------------------------------------------------------------- 1 | { 2 | "wgs": [ 3 | ], 4 | "maturity" : "Not on standards track yet", 5 | "tests" : { 6 | "level" : "low", 7 | "repo" : "https://github.com/RByers/InputDevice/tree/gh-pages/tests", 8 | "url" : "http://rbyers.github.io/InputDevice/tests/", 9 | "label" : "Started" 10 | }, 11 | "impl" : { 12 | "level" : "low", 13 | "label" : "None", 14 | "id" : "inputdevice" 15 | }, 16 | "title" : "InputDeviceCapabilities", 17 | "TR" : "", 18 | "editors" : { 19 | "url" : "http://rbyers.github.io/InputDevice/" 20 | }, 21 | "stability" : { 22 | "level" : "low", 23 | "label" : "Early proposal" 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /data/inputhint.json: -------------------------------------------------------------------------------- 1 | { 2 | "coremob" : "fulfills", 3 | "wpd" : { 4 | "url" : "http://docs.webplatform.org/wiki/guides/html5_form_features", 5 | "label" : "HTML5 Form features" 6 | }, 7 | "tests" : { 8 | "level" : "low", 9 | "repo" : "https://github.com/w3c/web-platform-tests/", 10 | "url" : "http://w3c-test.org/html/semantics/forms/the-input-element/", 11 | "label" : "Started" 12 | }, 13 | "impl" : { 14 | "level" : "high", 15 | "label" : "Well deployed", 16 | "id" : "inputhint" 17 | }, 18 | "TR" : "http://www.w3.org/TR/html5/forms.html#the-placeholder-attribute", 19 | "editors" : { 20 | "url" : "http://www.w3.org/html/wg/drafts/html/CR/forms.html#the-placeholder-attribute" 21 | }, 22 | "wdc" : { 23 | "url" : "http://www.w3devcampus.com/html5-w3c-training/", 24 | "label" : "HTML5 on-line course" 25 | }, 26 | "stability" : { 27 | "level" : "high", 28 | "label" : "Stable" 29 | }, 30 | "feature" : "placeholder attribute" 31 | } 32 | -------------------------------------------------------------------------------- /data/inputmode.json: -------------------------------------------------------------------------------- 1 | { 2 | "tests" : { 3 | "level" : "low", 4 | "repo" : "https://github.com/w3c/web-platform-tests/", 5 | "url" : "http://w3c-test.org/html/semantics/forms/the-input-element/", 6 | "label" : "None" 7 | }, 8 | "wpd" : { 9 | "url" : "http://docs.webplatform.org/wiki/guides/html5_form_features", 10 | "label" : "HTML5 Form features" 11 | }, 12 | "impl" : { 13 | "level" : "low", 14 | "label" : "None", 15 | "id" : "inputmode" 16 | }, 17 | "wdc" : { 18 | "url" : "http://www.w3devcampus.com/html5-w3c-training/", 19 | "label" : "HTML5 on-line course" 20 | }, 21 | "editors" : { 22 | "url" : "http://www.w3.org/html/wg/drafts/html/master/semantics.html#input-modalities:-the-inputmode-attribute" 23 | }, 24 | "TR" : "http://www.w3.org/TR/html51/semantics.html#input-modalities:-the-inputmode-attribute", 25 | "stability" : { 26 | "level" : "low", 27 | "label" : "Early draft" 28 | }, 29 | "feature" : "inputmode attribute" 30 | } 31 | -------------------------------------------------------------------------------- /data/inputpattern.json: -------------------------------------------------------------------------------- 1 | { 2 | "coremob" : "fulfills", 3 | "wpd" : { 4 | "url" : "http://docs.webplatform.org/wiki/guides/html5_form_features", 5 | "label" : "HTML5 Form features" 6 | }, 7 | "tests" : { 8 | "level" : "low", 9 | "repo" : "https://github.com/w3c/web-platform-tests/", 10 | "url" : "http://w3c-test.org/html/semantics/forms/the-input-element/", 11 | "label" : "Just started" 12 | }, 13 | "impl" : { 14 | "level" : "low", 15 | "label" : "Limited but growing", 16 | "id" : "inputpattern" 17 | }, 18 | "TR" : "http://www.w3.org/TR/html5/forms.html#the-pattern-attribute", 19 | "editors" : { 20 | "url" : "http://www.w3.org/html/wg/drafts/html/CR/forms.html#the-pattern-attribute" 21 | }, 22 | "wdc" : { 23 | "url" : "http://www.w3devcampus.com/html5-w3c-training/", 24 | "label" : "HTML5 on-line course" 25 | }, 26 | "stability" : { 27 | "level" : "high", 28 | "label" : "Stable" 29 | }, 30 | "feature" : "pattern attribute" 31 | } 32 | -------------------------------------------------------------------------------- /data/inputtext.json: -------------------------------------------------------------------------------- 1 | { 2 | "coremob" : "fulfills", 3 | "wpd" : { 4 | "url" : "http://docs.webplatform.org/wiki/guides/html5_form_features", 5 | "label" : "HTML5 Form features" 6 | }, 7 | "tests" : { 8 | "level" : "low", 9 | "repo" : "https://github.com/w3c/web-platform-tests/", 10 | "url" : "http://w3c-test.org/html/semantics/forms/the-input-element/", 11 | "label" : "Just started" 12 | }, 13 | "impl" : { 14 | "level" : "high", 15 | "label" : "Well deployed", 16 | "id" : "inputtext" 17 | }, 18 | "TR" : "http://www.w3.org/TR/html5/forms.html#telephone-state-(type=tel)", 19 | "editors" : { 20 | "url" : "http://www.w3.org/html/wg/drafts/html/CR/forms.html#telephone-state-(type=tel)" 21 | }, 22 | "wdc" : { 23 | "url" : "http://www.w3devcampus.com/html5-w3c-training/", 24 | "label" : "HTML5 on-line course" 25 | }, 26 | "stability" : { 27 | "level" : "high", 28 | "label" : "Stable" 29 | }, 30 | "feature" : "telephone, email and URL input element"} 31 | -------------------------------------------------------------------------------- /data/intents.json: -------------------------------------------------------------------------------- 1 | { 2 | "tests" : { 3 | "level" : "low", 4 | "repo" : "", 5 | "url" : "", 6 | "label" : "None" 7 | }, 8 | "impl" : { 9 | "level" : "low", 10 | "label" : "Experimental", 11 | "id" : "intents" 12 | }, 13 | "editors" : { 14 | "url" : "https://dvcs.w3.org/hg/web-intents/raw-file/tip/spec/Overview.html", 15 | "label" : "Abandonned" 16 | }, 17 | "TR" : "http://www.w3.org/TR/web-intents/", 18 | "stability" : { 19 | "level" : "low", 20 | "label" : "Early draft; abandoned" 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /data/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "coremob" : "fulfills", 3 | "wpd" : { 4 | "url" : "http://docs.webplatform.org/wiki/tutorials/appcache_beginner", 5 | "label" : "Introduction to using the application cache" 6 | }, 7 | "tests" : { 8 | "level" : "low", 9 | "repo" : "https://github.com/w3c/web-platform-tests/", 10 | "url" : "http://w3c-test.org/html/browsers/offline/appcache/", 11 | "label" : "None" 12 | }, 13 | "impl" : { 14 | "level" : "high", 15 | "label" : "Well deployed", 16 | "id" : "manifest" 17 | }, 18 | "TR" : "http://www.w3.org/TR/html5/browsers.html#appcache", 19 | "editors" : { 20 | "url" : "http://www.w3.org/html/wg/drafts/html/CR/browsers.html#appcache" 21 | }, 22 | "wdc" : { 23 | "url" : "http://www.w3devcampus.com/writing-great-web-applications-for-mobile/", 24 | "label" : "Mobile Web 2: Programming Web Applications on-line course" 25 | }, 26 | "stability" : { 27 | "level" : "high", 28 | "label" : "Stable (but Service Workers will be the preferred approach when available)" 29 | }, 30 | "feature" : "ApplicationCache" 31 | } 32 | -------------------------------------------------------------------------------- /data/manifestjson.json: -------------------------------------------------------------------------------- 1 | { 2 | "coremob" : "partial", 3 | "tests" : { 4 | "level" : "low", 5 | "repo" : "", 6 | "url" : "", 7 | "label" : "N/A" 8 | }, 9 | "impl" : { 10 | "level" : "low", 11 | "label" : "Limited", 12 | "id" : "manifestjson" 13 | }, 14 | "editors" : { 15 | "url" : "http://www.w3.org/2008/webapps/manifest/" 16 | }, 17 | "TR" : "http://www.w3.org/TR/appmanifest/", 18 | "stability" : { 19 | "level" : "low", 20 | "label" : "Early draft" 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /data/mediaqueries.json: -------------------------------------------------------------------------------- 1 | { 2 | "coremob" : "fulfills", 3 | "tests" : { 4 | "level" : "high", 5 | "repo" : "", 6 | "url" : "http://www.w3.org/Style/CSS/Test/MediaQueries/20100726/", 7 | "label" : "Good coverage" 8 | }, 9 | "wpd" : { 10 | "url" : "http://docs.webplatform.org/wiki/css/mediaqueries", 11 | "label" : "CSS Mediaqueries presentation" 12 | }, 13 | "impl" : { 14 | "level" : "high", 15 | "label" : "Widely deployed", 16 | "id" : "mediaqueries" 17 | }, 18 | "editors" : { 19 | "url" : "", 20 | "label" : "Finished" 21 | }, 22 | "TR" : "http://www.w3.org/TR/css3-mediaqueries/", 23 | "stability" : { 24 | "level" : "high", 25 | "label" : "Finished" 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /data/mediaqueries4.json: -------------------------------------------------------------------------------- 1 | { 2 | "tests" : { 3 | "level" : "low", 4 | "repo" : "", 5 | "url" : "", 6 | "label" : "None" 7 | }, 8 | "impl" : { 9 | "level" : "low", 10 | "label" : "None", 11 | "id" : "mediaqueries4" 12 | }, 13 | "TR" : "http://www.w3.org/TR/mediaqueries-4/", 14 | "editors" : { 15 | "url" : "http://dev.w3.org/csswg/mediaqueries4/" 16 | }, 17 | "stability" : { 18 | "level" : "low", 19 | "label" : "Early draft" 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /data/mediasession.json: -------------------------------------------------------------------------------- 1 | { 2 | "wgs" : [ 3 | { 4 | "url" : "https://whatwg.org/", 5 | "label" : "WHATWG" 6 | } 7 | ], 8 | "maturity" : "N/A", 9 | "tests" : { 10 | "level" : "low", 11 | "repo" : "", 12 | "url" : "", 13 | "label" : "N/A" 14 | }, 15 | "impl" : { 16 | "level" : "low", 17 | "label" : "None", 18 | "id" : "mediasession" 19 | }, 20 | "title" : "Media Session", 21 | "TR" : "", 22 | "editors" : { 23 | "url" : "https://mediasession.spec.whatwg.org/" 24 | }, 25 | "stability" : { 26 | "level" : "low", 27 | "label" : "Early draft" 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /data/messaging-sys.json: -------------------------------------------------------------------------------- 1 | { 2 | "tests" : { 3 | "level" : "low", 4 | "repo" : "", 5 | "url" : "", 6 | "label" : "None" 7 | }, 8 | "impl" : { 9 | "level" : "low", 10 | "label" : "None", 11 | "id" : "messaging-sys" 12 | }, 13 | "editors" : { 14 | "url" : "http://www.w3.org/2012/sysapps/messaging/" 15 | }, 16 | "TR" : "http://www.w3.org/TR/messaging/", 17 | "stability" : { 18 | "level" : "low", 19 | "label" : "First draft" 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /data/mobile-wcag.json: -------------------------------------------------------------------------------- 1 | { 2 | "tests" : { 3 | "level" : "low", 4 | "repo" : "", 5 | "url" : "", 6 | "label" : "N/A" 7 | }, 8 | "impl" : { 9 | "level" : "low", 10 | "label" : "N/A", 11 | "id" : "" 12 | }, 13 | "TR" : "http://www.w3.org/TR/mobile-accessibility-mapping/", 14 | "editors" : { 15 | "url" : "http://w3c.github.io/Mobile-A11y-TF-Note/" 16 | }, 17 | "stability" : { 18 | "level" : "low", 19 | "label" : "Early draft" 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /data/mse.json: -------------------------------------------------------------------------------- 1 | { 2 | "tests" : { 3 | "level" : "medium", 4 | "repo" : "https://github.com/w3c/web-platform-tests/tree/master/media-source", 5 | "url" : "http://w3c-test.org/media-source/", 6 | "label" : "Well started" 7 | }, 8 | "impl" : { 9 | "level" : "high", 10 | "label" : "Well deployed", 11 | "id" : "mse" 12 | }, 13 | "editors" : { 14 | "url" : "http://w3c.github.io/media-source/" 15 | }, 16 | "TR" : "http://www.w3.org/TR/media-source/", 17 | "stability" : { 18 | "level" : "high", 19 | "label" : "Stable" 20 | }, 21 | "wpd" : { 22 | "url" : "http://docs.webplatform.org/wiki/tutorials/MSEPrimer", 23 | "label" : "Media Source Extensions primer" 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /data/mwabp.json: -------------------------------------------------------------------------------- 1 | { 2 | "tests" : { 3 | "level" : "", 4 | "repo" : "", 5 | "url" : "", 6 | "label" : "N/A" 7 | }, 8 | "impl" : { 9 | "level" : "low", 10 | "label" : "N/A", 11 | "id" : "mwabp" 12 | }, 13 | "wdc" : { 14 | "url" : "http://www.w3devcampus.com/mobile-web-and-application-best-practices-training/", 15 | "label" : "Mobile Web 1: Best Practices on-line course" 16 | }, 17 | "editors" : { 18 | "url" : "", 19 | "label" : "N/A" 20 | }, 21 | "TR" : "http://www.w3.org/TR/mwabp/", 22 | "stability" : { 23 | "level" : "high", 24 | "label" : "Finished" 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /data/mwbp-wcag.json: -------------------------------------------------------------------------------- 1 | { 2 | "tests" : { 3 | "level" : "", 4 | "repo" : "", 5 | "url" : "", 6 | "label" : "N/A" 7 | }, 8 | "impl" : { 9 | "level" : "", 10 | "label" : "N/A", 11 | "id" : "mwbp-wcag" 12 | }, 13 | "editors" : { 14 | "url" : "", 15 | "label" : "N/A" 16 | }, 17 | "TR" : "http://www.w3.org/TR/mwbp-wcag/", 18 | "stability" : { 19 | "level" : "high", 20 | "label" : "Finished" 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /data/namedwebsockets.json: -------------------------------------------------------------------------------- 1 | { 2 | "tests" : { 3 | "level" : "low", 4 | "repo" : "", 5 | "url" : "", 6 | "label" : "None" 7 | }, 8 | "impl" : { 9 | "level" : "low", 10 | "label" : "None", 11 | "id" : "namedwebsockets" 12 | }, 13 | "editors" : { 14 | "url" : "https://github.com/namedwebsockets/namedwebsockets" 15 | }, 16 | "TR" : "", 17 | "wgs" : [ 18 | { 19 | "url" : "http://www.w3.org/2009/dap/", 20 | "label" : "Device APIs Working Group" 21 | } 22 | ], 23 | "maturity" : "N/A", 24 | "title": "Named Web Sockets", 25 | "stability" : { 26 | "level" : "low", 27 | "label" : "Early proposal" 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /data/nav-timing.json: -------------------------------------------------------------------------------- 1 | { 2 | "tests" : { 3 | "level" : "high", 4 | "repo" : "https://github.com/w3c/web-platform-tests/", 5 | "url" : "http://w3c-test.org/navigation-timing/", 6 | "label" : "Good coverage" 7 | }, 8 | "impl" : { 9 | "level" : "high", 10 | "label" : "Well deployed", 11 | "id" : "nav-timing" 12 | }, 13 | "editors" : { 14 | "url" : "", 15 | "label" : "Finished" 16 | }, 17 | "TR" : "http://www.w3.org/TR/navigation-timing/", 18 | "stability" : { 19 | "level" : "high", 20 | "label" : "Finished" 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /data/networkapi.json: -------------------------------------------------------------------------------- 1 | { 2 | "tests" : { 3 | "level" : "low", 4 | "repo" : "", 5 | "url" : "", 6 | "label" : "None" 7 | }, 8 | "impl" : { 9 | "level" : "low", 10 | "label" : "Limited", 11 | "id" : "networkapi" 12 | }, 13 | "editors" : { 14 | "url" : "https://w3c.github.io/netinfo/" 15 | }, 16 | "TR" : "http://www.w3.org/TR/netinfo-api/", 17 | "stability" : { 18 | "level" : "low", 19 | "label" : "Abandoned for now, but might be restarted" 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /data/notification.json: -------------------------------------------------------------------------------- 1 | { 2 | "tests" : { 3 | "level" : "good", 4 | "repo" : "https://github.com/w3c/web-platform-tests/", 5 | "url" : "http://w3c-test.org/notifications/", 6 | "label" : "Good coverage" 7 | }, 8 | "impl" : { 9 | "level" : "medium", 10 | "label" : "Growing deployment", 11 | "id" : "notification" 12 | }, 13 | "editors" : { 14 | "url" : "https://dvcs.w3.org/hg/notifications/raw-file/tip/Overview.html" 15 | }, 16 | "TR" : "http://www.w3.org/TR/notifications/", 17 | "stability" : { 18 | "level" : "high", 19 | "label" : "Stable" 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /data/online.json: -------------------------------------------------------------------------------- 1 | { 2 | "coremob" : "fulfills", 3 | "tests" : { 4 | "level" : "medium", 5 | "repo" : "https://github.com/w3c/web-platform-tests/", 6 | "url" : "http://w3c-test.org/html/browsers/offline/browser-state/", 7 | "label" : "Well started" 8 | }, 9 | "impl" : { 10 | "level" : "low", 11 | "label" : "Limited", 12 | "id" : "online" 13 | }, 14 | "editors" : { 15 | "url" : "http://www.w3.org/html/wg/drafts/html/CR/browsers.html#browser-state" 16 | }, 17 | "TR" : "http://www.w3.org/TR/html5/browsers.html#browser-state", 18 | "stability" : { 19 | "level" : "high", 20 | "label" : "Stable" 21 | }, 22 | "feature" : "onLine state" 23 | } 24 | -------------------------------------------------------------------------------- /data/p2p.json: -------------------------------------------------------------------------------- 1 | { 2 | "tests" : { 3 | "level" : "low", 4 | "repo" : "https://github.com/w3c/web-platform-tests/tree/master/webrtc", 5 | "url" : "http://w3c-test.org/webrtc/", 6 | "label" : "Early start" 7 | }, 8 | "wpd" : { 9 | "url" : "http://docs.webplatform.org/wiki/concepts/internet_and_web/webrtc", 10 | "label" : "WebRTC Introduction" 11 | }, 12 | "impl" : { 13 | "level" : "medium", 14 | "label" : "Growing", 15 | "id" : "p2p" 16 | }, 17 | "editors" : { 18 | "url" : "http://w3c.github.io/webrtc-pc/" 19 | }, 20 | "TR" : "http://www.w3.org/TR/webrtc/", 21 | "stability" : { 22 | "level" : "low", 23 | "label" : "Early draft" 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /data/packaging.json: -------------------------------------------------------------------------------- 1 | { 2 | "tests" : { 3 | "level" : "low", 4 | "repo" : "", 5 | "url" : "", 6 | "label" : "N/A" 7 | }, 8 | "impl" : { 9 | "level" : "low", 10 | "label" : "None", 11 | "id" : "packaging" 12 | }, 13 | "editors" : { 14 | "url" : "http://w3ctag.github.io/packaging-on-the-web/" 15 | }, 16 | "TR" : "http://www.w3.org/TR/web-packaging/", 17 | "stability" : { 18 | "level" : "low", 19 | "label" : "Early draft" 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /data/perf-timeline.json: -------------------------------------------------------------------------------- 1 | { 2 | "tests" : { 3 | "level" : "medium", 4 | "repo" : "https://github.com/w3c/web-platform-tests/", 5 | "url" : "http://w3c-test.org/performance-timeline/", 6 | "label" : "Started" 7 | }, 8 | "impl" : { 9 | "level" : "low", 10 | "label" : "Limited", 11 | "id" : "perf-timeline" 12 | }, 13 | "editors" : { 14 | "label" : "Finished" 15 | }, 16 | "TR" : "http://www.w3.org/TR/performance-timeline/", 17 | "stability" : { 18 | "level" : "high", 19 | "label" : "Finished" 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /data/permissions.json: -------------------------------------------------------------------------------- 1 | { 2 | "tests" : { 3 | "level" : "low", 4 | "repo" : "", 5 | "url" : "", 6 | "label" : "N/A" 7 | }, 8 | "impl" : { 9 | "level" : "low", 10 | "label" : "Limited", 11 | "id" : "permissions" 12 | }, 13 | "TR" : "http://www.w3.org/TR/permissions/", 14 | "editors" : { 15 | "url" : "https://w3c.github.io/permissions/" 16 | }, 17 | "stability" : { 18 | "level" : "low", 19 | "label" : "Early draft" 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /data/picture.json: -------------------------------------------------------------------------------- 1 | { 2 | "coremob" : "partial", 3 | "tests" : { 4 | "level" : "low", 5 | "repo" : "https://github.com/w3c/web-platform-tests/blob/master/html/semantics/embedded-content/the-img-element/update-the-source-set.html", 6 | "url" : "http://w3c-test.org/html/semantics/embedded-content/the-img-element/update-the-source-set.html", 7 | "label" : "Started" 8 | }, 9 | "impl" : { 10 | "level" : "medium", 11 | "label" : "Growing", 12 | "id" : "picture" 13 | }, 14 | "editors" : { 15 | "url" : "http://www.w3.org/html/wg/drafts/html/master/semantics.html#the-picture-element" 16 | }, 17 | "feature": "picture element", 18 | "TR" : "http://www.w3.org/TR/html51/semantics.html#the-picture-element", 19 | "stability" : { 20 | "level" : "medium", 21 | "label" : "stabilizing" 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /data/pointer-events.json: -------------------------------------------------------------------------------- 1 | { 2 | "coremob" : "partial", 3 | "tests" : { 4 | "level" : "medium", 5 | "repo" : "https://github.com/w3c/web-platform-tests/", 6 | "url" : "http://w3c-test.org/pointerevents/", 7 | "label" : "Well started" 8 | }, 9 | "wpd" : { 10 | "url" : "http://docs.webplatform.org/wiki/concepts/PointerEvents", 11 | "label" : "Pointer Events primer" 12 | }, 13 | "impl" : { 14 | "level" : "low", 15 | "label" : "Limited deployment", 16 | "id" : "pointer-events" 17 | }, 18 | "editors" : { 19 | "url" : "https://dvcs.w3.org/hg/pointerevents/raw-file/tip/pointerEvents.html" 20 | }, 21 | "TR" : "http://www.w3.org/TR/pointerevents/", 22 | "stability" : { 23 | "level" : "high", 24 | "label" : "Stable" 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /data/postmessage.json: -------------------------------------------------------------------------------- 1 | { 2 | "coremob" : "fulfills", 3 | "tests" : { 4 | "level" : "medium", 5 | "repo" : "https://github.com/w3c/web-platform-tests/", 6 | "url" : "http://w3c-test.org/webmessaging/", 7 | "label" : "Good coverage" 8 | }, 9 | "impl" : { 10 | "level" : "high", 11 | "label" : "Well deployed", 12 | "id" : "postmessage" 13 | }, 14 | "editors" : { 15 | "url" : "http://dev.w3.org/html5/postmsg/" 16 | }, 17 | "TR" : "http://www.w3.org/TR/webmessaging/", 18 | "stability" : { 19 | "level" : "high", 20 | "label" : "Stable" 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /data/preload.json: -------------------------------------------------------------------------------- 1 | { 2 | "tests" : { 3 | "level" : "low", 4 | "repo" : "", 5 | "url" : "", 6 | "label" : "None" 7 | }, 8 | "impl" : { 9 | "level" : "low", 10 | "label" : "None?", 11 | "id" : "preload" 12 | }, 13 | "editors" : { 14 | "url" : "http://w3c.github.io/preload/" 15 | }, 16 | "TR" : "http://www.w3.org/TR/preload/", 17 | "stability" : { 18 | "level" : "low", 19 | "label" : "Early draft" 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /data/proximity.json: -------------------------------------------------------------------------------- 1 | { 2 | "tests" : { 3 | "level" : "low", 4 | "repo" : "https://github.com/w3c/web-platform-tests/", 5 | "url" : "http://w3c-test.org/proximity/", 6 | "label" : "Started" 7 | }, 8 | "impl" : { 9 | "level" : "low", 10 | "label" : "Very limited", 11 | "id" : "proximity" 12 | }, 13 | "editors" : { 14 | "url" : "https://w3c.github.io/proximity/" 15 | }, 16 | "TR" : "http://www.w3.org/TR/proximity/", 17 | "stability" : { 18 | "level" : "low", 19 | "label" : "Likely to evolve substantially" 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /data/push.json: -------------------------------------------------------------------------------- 1 | { 2 | "tests" : { 3 | "level" : "low", 4 | "repo" : "", 5 | "url" : "", 6 | "label" : "N/A" 7 | }, 8 | "impl" : { 9 | "level" : "low", 10 | "label" : "Limited", 11 | "id" : "push" 12 | }, 13 | "editors" : { 14 | "url" : "http://w3c.github.io/push-api/" 15 | }, 16 | "TR" : "http://www.w3.org/TR/push-api/", 17 | "stability" : { 18 | "level" : "low", 19 | "label" : "Early draft, now with Service Workers" 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /data/quota.json: -------------------------------------------------------------------------------- 1 | { 2 | "coremob" : "fulfills", 3 | "tests" : { 4 | "level" : "low", 5 | "repo" : "", 6 | "url" : "", 7 | "label" : "None" 8 | }, 9 | "impl" : { 10 | "level" : "low", 11 | "label" : "Very limited", 12 | "id" : "quota" 13 | }, 14 | "editors" : { 15 | "url" : "http://w3c.github.io/quota-api/" 16 | }, 17 | "TR" : "http://www.w3.org/TR/quota-api/", 18 | "stability" : { 19 | "level" : "low", 20 | "label" : "Early work" 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /data/recording.json: -------------------------------------------------------------------------------- 1 | { 2 | "tests" : { 3 | "level" : "low", 4 | "repo" : "", 5 | "url" : "", 6 | "label" : "None" 7 | }, 8 | "impl" : { 9 | "level" : "low", 10 | "label" : "Very limited", 11 | "id" : "recording" 12 | }, 13 | "editors" : { 14 | "url" : "http://w3c.github.io/mediacapture-record/MediaRecorder.html" 15 | }, 16 | "TR" : "http://www.w3.org/TR/mediastream-recording/", 17 | "stability" : { 18 | "level" : "low", 19 | "label" : "Early draft" 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /data/res-hints.json: -------------------------------------------------------------------------------- 1 | { 2 | "tests" : { 3 | "level" : "low", 4 | "repo" : "", 5 | "url" : "", 6 | "label" : "None" 7 | }, 8 | "impl" : { 9 | "level" : "medium", 10 | "label" : "Growing deployment", 11 | "id" : "res-hints" 12 | }, 13 | "editors" : { 14 | "url" : "http://w3c.github.io/resource-hints/" 15 | }, 16 | "TR" : "http://www.w3.org/TR/resource-hints/", 17 | "stability" : { 18 | "level" : "low", 19 | "label" : "Early draft" 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /data/res-timing.json: -------------------------------------------------------------------------------- 1 | { 2 | "tests" : { 3 | "level" : "medium", 4 | "repo" : "https://github.com/w3c/web-platform-tests/tree/master/resource-timing", 5 | "url" : "http://w3c-test.org/resource-timing/", 6 | "label" : "Well started" 7 | }, 8 | "impl" : { 9 | "level" : "medium", 10 | "label" : "Growing", 11 | "id" : "res-timing" 12 | }, 13 | "editors" : { 14 | "url" : "http://w3c.github.io/resource-timing/" 15 | }, 16 | "TR" : "http://www.w3.org/TR/resource-timing/", 17 | "stability" : { 18 | "level" : "high", 19 | "label" : "Stable" 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /data/runtime.json: -------------------------------------------------------------------------------- 1 | { 2 | "tests" : { 3 | "level" : "low", 4 | "repo" : "", 5 | "url" : "", 6 | "label" : "N/A" 7 | }, 8 | "impl" : { 9 | "level" : "low", 10 | "label" : "N/A", 11 | "id" : "runtime" 12 | }, 13 | "editors" : { 14 | "url" : "http://www.w3.org/2012/sysapps/runtime/" 15 | }, 16 | "TR" : "http://www.w3.org/TR/runtime/", 17 | "stability" : { 18 | "level" : "low", 19 | "label" : "Early draft, will likely be replaced by a different approach" 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /data/screenlock.json: -------------------------------------------------------------------------------- 1 | { 2 | "coremob" : "partial", 3 | "tests" : { 4 | "level" : "medium", 5 | "repo" : "https://github.com/w3c/web-platform-tests/tree/master/screen-orientation", 6 | "url" : "http://w3c-test.org/screen-orientation/", 7 | "label" : "Well started" 8 | }, 9 | "impl" : { 10 | "level" : "medium", 11 | "label" : "Growing deployment", 12 | "id" : "screenlock" 13 | }, 14 | "editors" : { 15 | "url" : "https://w3c.github.io/screen-orientation/" 16 | }, 17 | "TR" : "http://www.w3.org/TR/screen-orientation/", 18 | "stability" : { 19 | "level" : "low", 20 | "label" : "Early draft" 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /data/secondscreen.json: -------------------------------------------------------------------------------- 1 | { 2 | "tests" : { 3 | "level" : "low", 4 | "repo" : "", 5 | "url" : "", 6 | "label" : "N/A" 7 | }, 8 | "impl" : { 9 | "level" : "low", 10 | "label" : "None", 11 | "id" : "presentation" 12 | }, 13 | "TR" : "http://www.w3.org/TR/presentation-api/", 14 | "editors" : { 15 | "url" : "http://w3c.github.io/presentation-api/" 16 | }, 17 | "stability" : { 18 | "level" : "low", 19 | "label" : "Early draft" 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /data/sensors.json: -------------------------------------------------------------------------------- 1 | { 2 | "wgs" : [ 3 | { 4 | "url" : "http://www.w3.org/2009/dap/", 5 | "label" : "Device APIs Working Group" 6 | } 7 | ], 8 | "maturity" : "ed", 9 | "tests" : { 10 | "level" : "low", 11 | "repo" : "", 12 | "url" : "", 13 | "label" : "N/A" 14 | }, 15 | "impl" : { 16 | "level" : "", 17 | "label" : "N/A" 18 | }, 19 | "title" : "Generic Sensor API", 20 | "TR" : "", 21 | "editors" : { 22 | "url" : "https://w3c.github.io/sensors/" 23 | }, 24 | "stability" : { 25 | "level" : "low", 26 | "label" : "Early draft" 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /data/serviceworker.json: -------------------------------------------------------------------------------- 1 | { 2 | "coremob" : "partial", 3 | "tests" : { 4 | "level" : "medium", 5 | "repo" : "https://github.com/w3c/web-platform-tests/tree/master/service-workers", 6 | "url" : "http://w3c-test.org/service-workers/", 7 | "label" : "Well started" 8 | }, 9 | "impl" : { 10 | "level" : "low", 11 | "label" : "Limited", 12 | "id" : "serviceworker" 13 | }, 14 | "TR" : "http://www.w3.org/TR/service-workers/", 15 | "editors" : { 16 | "url" : "https://slightlyoff.github.io/ServiceWorker/spec/service_worker/" 17 | }, 18 | "stability" : { 19 | "level" : "low", 20 | "label" : "Early draft" 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /data/setimmediate.json: -------------------------------------------------------------------------------- 1 | { 2 | "wgs" : [ 3 | { 4 | "url" : "http://www.w3.org/2010/webperf/", 5 | "label" : "Web Performance Working Group" 6 | } 7 | ], 8 | "maturity" : "ed", 9 | "tests" : { 10 | "level" : "low", 11 | "repo" : "", 12 | "url" : "", 13 | "label" : "None" 14 | }, 15 | "impl" : { 16 | "level" : "low", 17 | "label" : "Very limited", 18 | "id" : "setimmediate" 19 | }, 20 | "title" : "Efficient Script Yielding", 21 | "TR" : "", 22 | "editors" : { 23 | "url" : "https://dvcs.w3.org/hg/webperf/raw-file/tip/specs/setImmediate/Overview.html" 24 | }, 25 | "stability" : { 26 | "level" : "low", 27 | "label" : "Early draft" 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /data/smooth-scroll.json: -------------------------------------------------------------------------------- 1 | { 2 | "coremob" : "partial", 3 | "tests" : { 4 | "level" : "low", 5 | "repo" : "", 6 | "url" : "", 7 | "label" : "N/A" 8 | }, 9 | "impl" : { 10 | "level" : "low", 11 | "label" : "None", 12 | "id" : "smooth-scroll" 13 | }, 14 | "editors" : { 15 | "url" : "http://dev.w3.org/csswg/cssom-view/#scrolling" 16 | }, 17 | "TR" : "http://www.w3.org/TR/cssom-view/", 18 | "stability" : { 19 | "level" : "low", 20 | "label" : "Still changing" 21 | }, 22 | "feature": "smooth scrolling" 23 | } 24 | -------------------------------------------------------------------------------- /data/speechinput.json: -------------------------------------------------------------------------------- 1 | { 2 | "wgs" : [ 3 | { 4 | "url" : "http://www.w3.org/community/speech-api/", 5 | "label" : "Speech API Community Group" 6 | } 7 | ], 8 | "maturity" : "N/A", 9 | "tests" : { 10 | "level" : "low", 11 | "repo" : "", 12 | "url" : "", 13 | "label" : "N/A" 14 | }, 15 | "impl" : { 16 | "level" : "low", 17 | "label" : "Limited", 18 | "id" : "speechinput" 19 | }, 20 | "title" : "Web Speech API", 21 | "TR" : "", 22 | "editors" : { 23 | "url" : "https://dvcs.w3.org/hg/speech-api/raw-file/tip/speechapi.html" 24 | }, 25 | "stability" : { 26 | "level" : "low", 27 | "label" : "N/A" 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /data/srcset.json: -------------------------------------------------------------------------------- 1 | { 2 | "coremob" : "partial", 3 | "tests" : { 4 | "level" : "medium", 5 | "repo" : "https://github.com/w3c/web-platform-tests/blob/master/html/semantics/embedded-content/the-img-element/srcset/", 6 | "url" : "http://w3c-test.org/html/semantics/embedded-content/the-img-element/srcset/", 7 | "label" : "Well started" 8 | }, 9 | "impl" : { 10 | "level" : "high", 11 | "label" : "Well deployed", 12 | "id" : "srcset" 13 | }, 14 | "editors" : { 15 | "url" : "http://www.w3.org/html/wg/drafts/html/master/semantics.html#attr-img-srcset" 16 | }, 17 | "feature": "srcset attribute", 18 | "TR" : "http://www.w3.org/TR/html51/semantics.html#attr-img-srcset", 19 | "stability" : { 20 | "level" : "medium", 21 | "label" : "Stabilizing" 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /data/subres-integrity.json: -------------------------------------------------------------------------------- 1 | { 2 | "tests" : { 3 | "level" : "low", 4 | "repo" : "", 5 | "url" : "", 6 | "label" : "None" 7 | }, 8 | "impl" : { 9 | "level" : "low", 10 | "label" : "Limited", 11 | "id" : "subres-integrity" 12 | }, 13 | "editors" : { 14 | "url" : "http://w3c.github.io/webappsec/specs/subresourceintegrity/" 15 | }, 16 | "TR" : "http://www.w3.org/TR/SRI/", 17 | "stability" : { 18 | "level" : "low", 19 | "label" : "Just started" 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /data/svg12.json: -------------------------------------------------------------------------------- 1 | { 2 | "coremob" : "fulfills", 3 | "tests" : { 4 | "level" : "high", 5 | "repo" : "", 6 | "url" : "http://www.w3.org/Graphics/SVG/Test/", 7 | "label" : "High coverage" 8 | }, 9 | "wpd" : { 10 | "url" : "http://docs.webplatform.org/wiki/svg/tutorials", 11 | "label" : "SVG Tutorials" 12 | }, 13 | "impl" : { 14 | "level" : "high", 15 | "label" : "Widely deployed", 16 | "id" : "svg12" 17 | }, 18 | "editors" : { 19 | "url" : "", 20 | "label" : "New version of SVG (SVG 2.0) in preparation" 21 | }, 22 | "TR" : "http://www.w3.org/TR/SVG11/", 23 | "stability" : { 24 | "level" : "high", 25 | "label" : "Finished" 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /data/svg2.json: -------------------------------------------------------------------------------- 1 | { 2 | "tests" : { 3 | "level" : "low", 4 | "repo" : "", 5 | "url" : "", 6 | "label" : "N/A" 7 | }, 8 | "impl" : { 9 | "level" : "low", 10 | "label" : "N/A", 11 | "id" : "svg2" 12 | }, 13 | "editors" : { 14 | "url" : "https://svgwg.org/svg2-draft/" 15 | }, 16 | "TR" : "http://www.w3.org/TR/SVG2/", 17 | "stability" : { 18 | "level" : "low", 19 | "label" : "Early draft" 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /data/task-scheduler.json: -------------------------------------------------------------------------------- 1 | { 2 | "tests" : { 3 | "level" : "low", 4 | "repo" : "", 5 | "url" : "", 6 | "label" : "None" 7 | }, 8 | "impl" : { 9 | "level" : "low", 10 | "label" : "None", 11 | "id" : "task-scheduler" 12 | }, 13 | "editors" : { 14 | "url" : "http://www.w3.org/2012/sysapps/web-alarms/" 15 | }, 16 | "TR" : "http://www.w3.org/TR/task-scheduler/", 17 | "stability" : { 18 | "level" : "low", 19 | "label" : "Early draft" 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /data/touchevent.json: -------------------------------------------------------------------------------- 1 | { 2 | "coremob" : "fulfills", 3 | "wpd" : { 4 | "url" : "http://docs.webplatform.org/wiki/tutorials/mobile_touch", 5 | "label" : "Mobile Touch" 6 | }, 7 | "tests" : { 8 | "level" : "high", 9 | "repo" : "", 10 | "url" : "http://w3c-test.org/touch-events/", 11 | "label" : "Complete" 12 | }, 13 | "impl" : { 14 | "level" : "high", 15 | "label" : "Largely deployed", 16 | "id" : "touchevent" 17 | }, 18 | "TR" : "http://www.w3.org/TR/touch-events/", 19 | "editors" : { 20 | "url" : "https://dvcs.w3.org/hg/webevents/raw-file/tip/touchevents.html" 21 | }, 22 | "wdc" : { 23 | "url" : "http://www.w3devcampus.com/writing-great-web-applications-for-mobile/", 24 | "label" : "Mobile Web 2: Programming Web Applications on-line course" 25 | }, 26 | "stability" : { 27 | "level" : "high", 28 | "label" : "Finished" 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /data/user-timing.json: -------------------------------------------------------------------------------- 1 | { 2 | "tests" : { 3 | "level" : "medium", 4 | "repo" : "https://github.com/w3c/web-platform-tests/", 5 | "url" : "http://w3c-test.org/user-timing/", 6 | "label" : "Well started" 7 | }, 8 | "impl" : { 9 | "level" : "medium", 10 | "label" : "Growing", 11 | "id" : "user-timing" 12 | }, 13 | "editors" : { 14 | "label" : "Finished" 15 | }, 16 | "TR" : "http://www.w3.org/TR/user-timing/", 17 | "stability" : { 18 | "level" : "high", 19 | "label" : "Finished" 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /data/vibration.json: -------------------------------------------------------------------------------- 1 | { 2 | "tests" : { 3 | "level" : "high", 4 | "repo" : "https://github.com/w3c/web-platform-tests/", 5 | "url" : "http://w3c-test.org/vibration/", 6 | "label" : "Good coverage" 7 | }, 8 | "impl" : { 9 | "level" : "medium", 10 | "label" : "Growing", 11 | "id" : "vibration" 12 | }, 13 | "editors" : { 14 | "url" : "http://dev.w3.org/2009/dap/vibration/" 15 | }, 16 | "TR" : "http://www.w3.org/TR/vibration/", 17 | "stability" : { 18 | "level" : "high", 19 | "label" : "Finished" 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /data/video.json: -------------------------------------------------------------------------------- 1 | { 2 | "coremob" : "fulfills", 3 | "wpd" : { 4 | "url" : "http://docs.webplatform.org/wiki/tutorials/video_basics", 5 | "label" : "Video Basics" 6 | }, 7 | "tests" : { 8 | "level" : "medium", 9 | "repo" : "https://github.com/w3c/web-platform-tests/", 10 | "url" : "http://w3c-test.org/html/semantics/embedded-content/the-video-element/", 11 | "label" : "Well started" 12 | }, 13 | "impl" : { 14 | "level" : "high", 15 | "label" : "Good deployment", 16 | "id" : "video" 17 | }, 18 | "TR" : "http://www.w3.org/TR/html5/embedded-content-0.html#the-video-element", 19 | "editors" : { 20 | "url" : "http://www.w3.org/html/wg/drafts/html/CR/embedded-content-0.html#the-video-element" 21 | }, 22 | "wdc" : { 23 | "url" : "http://www.w3devcampus.com/html5-w3c-training/", 24 | "label" : "HTML5 on-line course" 25 | }, 26 | "stability" : { 27 | "level" : "high", 28 | "label" : "Stable" 29 | }, 30 | "feature" : "video element" 31 | } 32 | -------------------------------------------------------------------------------- /data/viewport-units.json: -------------------------------------------------------------------------------- 1 | { 2 | "tests" : { 3 | "level" : "medium", 4 | "repo" : "https://hg.csswg.org/test/file/default/css-values-3", 5 | "url" : "https://hg.csswg.org/test/file/default/css-values-3", 6 | "label" : "Good coverage" 7 | }, 8 | "impl" : { 9 | "level" : "high", 10 | "label" : "Well deployed", 11 | "id" : "viewport-units" 12 | }, 13 | "editors" : { 14 | "url" : "http://dev.w3.org/csswg/css-values/#viewport-relative-lengths" 15 | }, 16 | "feature": "viewport relative units", 17 | "TR" : "http://www.w3.org/TR/css-values/#viewport-relative-lengths", 18 | "stability" : { 19 | "level" : "high", 20 | "label" : "Mostly finished" 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /data/visibilitychange.json: -------------------------------------------------------------------------------- 1 | { 2 | "tests" : { 3 | "level" : "medium", 4 | "repo" : "https://github.com/w3c/web-platform-tests/", 5 | "url" : "http://w3c-test.org/page-visibility/", 6 | "label" : "Good coverage" 7 | }, 8 | "impl" : { 9 | "level" : "high", 10 | "label" : "Well deployed", 11 | "id" : "visibilitychange" 12 | }, 13 | "editors" : { 14 | "url" : "", 15 | "label" : "Finished" 16 | }, 17 | "TR" : "http://www.w3.org/TR/page-visibility/", 18 | "stability" : { 19 | "level" : "high", 20 | "label" : "Finished" 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /data/wake-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "tests" : { 3 | "level" : "low", 4 | "repo" : "", 5 | "url" : "", 6 | "label" : "N/A" 7 | }, 8 | "impl" : { 9 | "level" : "low", 10 | "label" : "None", 11 | "id" : "wake-lock" 12 | }, 13 | "TR" : "http://www.w3.org/TR/wake-lock/", 14 | "editors" : { 15 | "url" : "http://w3c.github.io/wake-lock/" 16 | }, 17 | "stability" : { 18 | "level" : "low", 19 | "label" : "Just started" 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /data/webanimations.json: -------------------------------------------------------------------------------- 1 | { 2 | "tests" : { 3 | "level" : "medium", 4 | "repo" : "https://github.com/w3c/web-platform-tests/tree/master/web-animations/animation-node", 5 | "url" : "http://w3c-test.org/web-animations/", 6 | "label" : "Well started" 7 | }, 8 | "impl" : { 9 | "level" : "low", 10 | "label" : "Limited", 11 | "id" : "webanimations" 12 | }, 13 | "editors" : { 14 | "url" : "http://w3c.github.io/web-animations/" 15 | }, 16 | "TR" : "http://www.w3.org/TR/web-animations-1/", 17 | "stability" : { 18 | "level" : "low", 19 | "label" : "Early draft" 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /data/webaudio.json: -------------------------------------------------------------------------------- 1 | { 2 | "tests" : { 3 | "level" : "low", 4 | "repo" : "https://github.com/w3c/web-platform-tests/", 5 | "url" : "http://w3c-test.org/webaudio/", 6 | "label" : "Started" 7 | }, 8 | "wpd" : { 9 | "url" : "http://docs.webplatform.org/wiki/tutorials/audio/an_introduction_to_the_web_audio_api", 10 | "label" : "An introduction to the Web Audio API" 11 | }, 12 | "impl" : { 13 | "level" : "high", 14 | "label" : "Good deployment", 15 | "id" : "webaudio" 16 | }, 17 | "editors" : { 18 | "url" : "http://webaudio.github.io/web-audio-api/" 19 | }, 20 | "TR" : "http://www.w3.org/TR/webaudio/", 21 | "stability" : { 22 | "level" : "low", 23 | "label" : "Starting to stabilize" 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /data/webnfc.json: -------------------------------------------------------------------------------- 1 | { 2 | "wgs" : [ 3 | { 4 | "url" : "https://www.w3.org/community/web-nfc/", 5 | "label" : "Web NFC Community Group" 6 | } 7 | ], 8 | "maturity" : "Not on standards track", 9 | "tests" : { 10 | "level" : "low", 11 | "repo" : "", 12 | "url" : "", 13 | "label" : "N/A" 14 | }, 15 | "impl" : { 16 | "level" : "low", 17 | "label" : "None", 18 | "id" : "webnfc" 19 | }, 20 | "title" : "Web NFC API", 21 | "TR" : "", 22 | "editors" : { 23 | "url" : "http://w3c.github.io/web-nfc/" 24 | }, 25 | "stability" : { 26 | "level" : "low", 27 | "label" : "Early draft" 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /data/websockets.json: -------------------------------------------------------------------------------- 1 | { 2 | "tests" : { 3 | "level" : "medium", 4 | "repo" : "https://github.com/w3c/web-platform-tests/", 5 | "url" : "http://w3c-test.org/websockets/", 6 | "label" : "Good coverage" 7 | }, 8 | "wpd" : { 9 | "url" : "http://docs.webplatform.org/wiki/tutorials/websockets_basics", 10 | "label" : "Using WebSockets" 11 | }, 12 | "impl" : { 13 | "level" : "high", 14 | "label" : "Good deployment", 15 | "id" : "websockets" 16 | }, 17 | "wdc" : { 18 | "url" : "http://www.w3devcampus.com/writing-great-web-applications-for-mobile/", 19 | "label" : "Mobile Web 2: Programming Web Applications on-line course" 20 | }, 21 | "editors" : { 22 | "url" : "http://dev.w3.org/html5/websockets/" 23 | }, 24 | "TR" : "http://www.w3.org/TR/websockets/", 25 | "stability" : { 26 | "level" : "high", 27 | "label" : "Stable" 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /data/websql.json: -------------------------------------------------------------------------------- 1 | { 2 | "tests" : { 3 | "level" : "low", 4 | "repo" : "", 5 | "url" : "", 6 | "label" : "N/A" 7 | }, 8 | "wpd" : { 9 | "url" : "http://docs.webplatform.org/wiki/tutorials/offline_storage", 10 | "label" : "Offline storage tutorial" 11 | }, 12 | "impl" : { 13 | "level" : "medium", 14 | "label" : "Somewhat deployed, but won’t be further deployed", 15 | "id" : "websql" 16 | }, 17 | "wdc" : { 18 | "url" : "http://www.w3devcampus.com/html5-w3c-training/", 19 | "label" : "HTML5 on-line course" 20 | }, 21 | "editors" : { 22 | "url" : "", 23 | "label" : "N/A" 24 | }, 25 | "TR" : "http://www.w3.org/TR/webdatabase/", 26 | "stability" : { 27 | "level" : "low", 28 | "label" : "Abandoned" 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /data/webstorage.json: -------------------------------------------------------------------------------- 1 | { 2 | "coremob" : "fulfills", 3 | "tests" : { 4 | "level" : "high", 5 | "repo" : "https://github.com/w3c/web-platform-tests/", 6 | "url" : "http://w3c-test.org/webstorage/", 7 | "label" : "Complete" 8 | }, 9 | "wpd" : { 10 | "url" : "http://docs.webplatform.org/wiki/tutorials/offline_storage", 11 | "label" : "Offline storage tutorial" 12 | }, 13 | "impl" : { 14 | "level" : "high", 15 | "label" : "Well deployed", 16 | "id" : "webstorage" 17 | }, 18 | "editors" : { 19 | "url" : "http://dev.w3.org/html5/webstorage/" 20 | }, 21 | "TR" : "http://www.w3.org/TR/webstorage/", 22 | "stability" : { 23 | "level" : "high", 24 | "label" : "Finished" 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /data/webworkers.json: -------------------------------------------------------------------------------- 1 | { 2 | "coremob" : "fulfills", 3 | "wpd" : { 4 | "url" : "http://docs.webplatform.org/wiki/tutorials/workers_basics", 5 | "label" : "Introduction to Web Workers" 6 | }, 7 | "tests" : { 8 | "level" : "medium", 9 | "repo" : "https://github.com/w3c/web-platform-tests/", 10 | "url" : "http://w3c-test.org/workers/", 11 | "label" : "Good coverage" 12 | }, 13 | "impl" : { 14 | "level" : "high", 15 | "label" : "Well deployed", 16 | "id" : "webworkers" 17 | }, 18 | "TR" : "http://www.w3.org/TR/workers/", 19 | "editors" : { 20 | "url" : "http://dev.w3.org/html5/workers/" 21 | }, 22 | "wdc" : { 23 | "url" : "http://www.w3devcampus.com/writing-great-web-applications-for-mobile/", 24 | "label" : "Mobile Web 2: Programming Web Applications on-line course" 25 | }, 26 | "stability" : { 27 | "level" : "high", 28 | "label" : "Stable" 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /data/wi-local.json: -------------------------------------------------------------------------------- 1 | { 2 | "tests" : { 3 | "level" : "low", 4 | "repo" : "", 5 | "url" : "", 6 | "label" : "None" 7 | }, 8 | "impl" : { 9 | "level" : "low", 10 | "label" : "None", 11 | "id" : "wi-local" 12 | }, 13 | "editors" : { 14 | "url" : "https://dvcs.w3.org/hg/dap/raw-file/default/wi-addendum-local-services/Overview.html" 15 | }, 16 | "TR" : "http://www.w3.org/TR/webintents-local-services/", 17 | "stability" : { 18 | "level" : "low", 19 | "label" : "Very early draft; based on Web Intents that is currently stalled" 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /data/woff.json: -------------------------------------------------------------------------------- 1 | { 2 | "coremob" : "fulfills", 3 | "tests" : { 4 | "level" : "high", 5 | "repo" : "", 6 | "url" : "http://dev.w3.org/webfonts/WOFF/tests/Format/Tests/xhtml1/testcaseindex.xht", 7 | "label" : "Good coverage" 8 | }, 9 | "wpd" : { 10 | "url" : "http://docs.webplatform.org/wiki/tutorials/typography/font-face", 11 | "label" : "Overview of Web fonts" 12 | }, 13 | "impl" : { 14 | "level" : "high", 15 | "label" : "Good deployment", 16 | "id" : "woff" 17 | }, 18 | "editors" : { 19 | "url" : "", 20 | "label" : "Finished" 21 | }, 22 | "TR" : "http://www.w3.org/TR/WOFF/", 23 | "stability" : { 24 | "level" : "high", 25 | "label" : "Finished" 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /data/woff2.json: -------------------------------------------------------------------------------- 1 | { 2 | "tests" : { 3 | "level" : "low", 4 | "repo" : "", 5 | "url" : "", 6 | "label" : "N/A" 7 | }, 8 | "impl" : { 9 | "level" : "medium", 10 | "label" : "Growing", 11 | "id" : "woff2" 12 | }, 13 | "editors" : { 14 | "url" : "http://dev.w3.org/webfonts/WOFF2/spec/" 15 | }, 16 | "TR" : "http://www.w3.org/TR/WOFF2/", 17 | "stability" : { 18 | "level" : "low", 19 | "label" : "Early draft" 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /data/xhr2.json: -------------------------------------------------------------------------------- 1 | { 2 | "coremob" : "fulfills", 3 | "tests" : { 4 | "level" : "medium", 5 | "repo" : "https://github.com/w3c/web-platform-tests/", 6 | "url" : "http://w3c-test.org/XMLHttpRequest/", 7 | "label" : "Good coverage" 8 | }, 9 | "impl" : { 10 | "level" : "high", 11 | "label" : "Well deployed", 12 | "id" : "xhr2" 13 | }, 14 | "editors" : { 15 | "url" : "https://dvcs.w3.org/hg/xhr/raw-file/tip/xhr-1/Overview.html" 16 | }, 17 | "TR" : "http://www.w3.org/TR/XMLHttpRequest/", 18 | "stability" : { 19 | "level" : "low", 20 | "label" : "Likely to be abandoned in favor of WHATWG specification" 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /github.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 18 | 20 | 42 | 44 | 45 | 47 | image/svg+xml 48 | 50 | 51 | 52 | 53 | 54 | 59 | 64 | 65 | 66 | -------------------------------------------------------------------------------- /html5apps.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/w3c-webmob/mobile-web-app-standards/6f562becb2bc7aedf720f5931c4187653bc76c0b/html5apps.png -------------------------------------------------------------------------------- /index.es.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Estándares para Aplicaciones Web en movilidad: estado actual y hoja de ruta 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 |

Estándares para Aplicaciones Web en movilidad: estado actual y hoja de ruta

19 |

20 |
21 |
22 | 27 |
28 |
Última versión
29 |
30 | http://www.w3.org/Mobile/mobile-web-app-state/ 31 |
32 |
Ésta versión
33 |
(versión PDF)
34 |
Versión anterior
35 |
36 |
37 |

Las tecnologías Web se han convertido en algo tan potente que se utilizan para construir aplicaciones completas; esto ha sido así durante muchos años en el ámbito de ordenadores de escritorio y portátiles, pero cada vez más también para dispositivos móviles.

38 |

Este documento resume las diversas tecnologías desarrolladas en W3C que aumentan las capacidades de las aplicaciones Web, y cómo se aplican más específicamente al contexto móvil. Un buen subconjunto de estas tecnologías se describe y se explica en la formación online en programación de aplicaciones Web de W3C.

39 |
    40 |
  1. Gráficos
  2. 41 |
  3. Multimedia
  4. 42 |
  5. Adaptación al dispositivo
  6. 43 |
  7. Formularios
  8. 44 |
  9. Interacción con la persona usuaria
  10. 45 |
  11. Almacenamiento de datos
  12. 46 |
  13. Gestión de la información personal
  14. 47 |
  15. Integración con sensores y hardware
  16. 48 |
  17. Red
  18. 49 |
  19. Comunicación y Descubrimiento
  20. 50 |
  21. Empaquetamiento
  22. 51 |
  23. Pagos
  24. 52 |
  25. Rendimiento y Optimización
  26. 53 |
  27. Privacidad y Seguridad
  28. 54 |
55 |
56 |

Estructura del documento

57 |

Las características que estas tecnologías aportan a la plataforma Web se organizan en las siguientes categorías: gráficos, multimedia, adaptación al dispositivo, formularios, interacción con la persona usuaria, almacenamiento de datos, gestión de la información personal, integración con sensores y hardware, red, comunicación y descubrimiento, empaquetamiento, pagos, rendimiento y optimización y privacidad y seguridad.

58 |

Diagram showing the various components of the Web platform
La Web como una plataforma para desarrollo de aplicaciones

59 |

En cada categoría, una tabla resume para cada funcionalidad:

60 | 70 |

A modo de recordatorio, W3C crea estándares Web a través del progreso del documento en su track a Recomendación, con los siguientes estados:

71 | 79 |

Antes de iniciar la normalización, un Grupo de Trabajo necesita ser puesto en marcha, basándose en las aportaciones de los Miembros del W3C, a menudo a través de la organización de un taller, o después de la recepción de una Petición de un Miembro de W3C.

80 |

W3C ha creado los Grupos de Comunidad, un mecanismo que permite que cualquiera pueda hacer el trabajo experimental dentro de la infraestructura del W3C, en virtud de las normas de Derechos de Propiedad Intelectual que son compatibles para la transición del trabajo al proceso de normalización del W3C.

81 |
82 |
83 |

1. 84 | Gráficos

85 |
86 |

SVG, Scalable Vector Graphics, proporciona un lenguaje de marcado basado en XML para describir gráficos vectoriales de dos dimensiones. Dado que estos gráficos se describen como un conjunto de formas geométricas, pueden ampliarse a petición del usuario, lo que los hace muy adecuados para crear gráficos en dispositivos móviles donde el espacio de pantalla es limitado. También se pueden animar fácilmente, lo que permite la creación de interfaces de usuario muy avanzadas y manejables.

87 |

La integración de SVG en HTML5 abre nuevas posibilidades, por ejemplo, la aplicación de filtros de gráficos avanzados (a través de filtros SVG) a contenido multimedia, incluyendo vídeos. SVG 2.0 se establece para facilitar esa integración y completar el conjunto de características de SVG.

88 |

Como complemento del enfoque de declaración proporcionado por SVG , el elemento <canvas> añadido en HTML5 habilita una API de programación 2D que es muy adecuada para el procesamiento de gráficos con un menor uso de memoria. Esta API no sólo permite la representación de gráficos, si no que también se puede utilizar para realizar el procesamiento y análisis de imágenes - HTML 5.1 agrega la capacidad de hacer ese procesamiento en un Web Worker separado.

89 |

Tanto SVG como HTML pueden ser estilados usando CSS (Hojas de Estilo en Cascada); en particular, CSS3 (el tercer nivel de la especificación) se construye como un conjunto de especificaciones establecidas para ofrecer un gran número de nuevas características que hacen que sea sencillo crear efectos gráficos, como esquinas redondeadas, imágenes de fondo complejas, efectos de sombra (Fondos y bordes CSS), contenido girado (Transformaciones CSS, incluido con efectos 3D).

90 |
91 |

Las animaciones pueden ser descritas de forma declarada via Animaciones CSS, y Transiciones CSS.

92 |

Las animaciones también se pueden gestionar a través de secuencias de comandos a través de la API expuesta en Animaciones Web; ya que pueden ser intensas en el uso de recursos, la posibilidad que ofrece la API para el control de la temporización de animaciones basadas en secuencias de comandos para manejar el ratio de actualizaciones a animaciones puede ayudar a mantenerlos bajo control.

93 |

Para asegurar resultados óptimos cuando se animan partes de una aplicación, los autores pueden hacer uso de la propiedad CSS will-change para permitir a los navegadores calcular la animación antes de que ocurra.

94 |
95 |

CSS Flexbox permite construir disposiciones complejas necesarias para aplicaciones interactivas en pantallas pequeñas.

96 |
97 |

Las fuentes juegan también un papel importante en la construcción de interfaces gráficas atractivas, pero los dispositivos móviles son, en general, distribuidos con sólo un conjunto limitado de tipos de letra. WOFF 1.0 (Web Open Font Format) aborda esa limitación facilitando la utilización de fuentes que se descargan automáticamente a través de las hojas de estilo, mientras se mantiene limitado el tamaño de las fuentes descargadas a lo que realmente se necesita para hacer que la interfaz se renderice. La próxima WOFF 2.0 actualiza que ese formato tenga tamaños de descarga un 25% más pequeñas, reduciendo el tiempo necesario para descargar y visualizar estas fuentes.

98 |

Teniendo en cuenta el tiempo necesario para la descarga de fuentes a través de redes móviles, los autores tienen que adaptar su contenido a la disponibilidad progresiva de las fuentes; Carga de fuentes CSS da los eventos necesarios a los desarrolladores para permitir esa adaptación.

99 |
100 |

Otro aspecto importante en aplicaciones de uso intensivo de gráficos (por ejemplo, juegos) es la posibilidad de utilizar la pantalla completa para visualizar dichos gráficos; la API de pantalla completa permite a las aplicaciones Web pedir y detectar visualización en pantalla completa.

101 |

Del mismo modo, en estos escenarios, a menudo es útil ser capaz de bloquear la orientación de la pantalla; la API de orientación de pantalla permite no sólo detectar el cambio de orientación, sino también bloquear la orientación a un estado específico.

102 |

NB: una API de gráficos 3D para HTML5 canvas, llamada WebGL, se ha desarrollado fuera del W3C, como parte del Khronos Group; esta API se ha construido para ser compatible con OpenGL ES, es decir, para sistemas embebidos, y está diseñado para funcionar en dispositivos móviles.

103 | 104 | 123 | 124 |
125 |
126 | 127 |

2. 128 | Multimedia

129 |

HTML5 añade dos etiquetas que mejoran drásticamente la integración de contenidos multimedia en la Web: las etiquetas de <video> y <audio>. Estas etiquetas permiten, respectivamente, la incorporación de contenidos de vídeo y audio, y permiten a los desarrolladores Web interactuar con mucha más libertad con ese contenido de lo que sería a través de plug-ins. Hacen de los contenidos multimedia ciudadanos de primera clase de la Web, de las misma forma que las imágenes lo han sido durante los últimos 20 años.

130 |

La reproducción de contenido puede ser aumentada y completada a través de Media Source Extensions que permite a los desarrolladores generar contenido multimedia en JavaScript.

131 |

Para atender a las necesidades de algunos proveedores de contenido, está bajo consideración por parte del Grupo de Trabajo HTML una propuesta para permitir la reproducción de contenido protegido, la API Encrypted Media Extensions.

132 |

La Network Service Discovery API abre la puerta para la integración de contenidos DLNA en aplicaciones Web, aunque el futuro de esa especificación es actualmente objeto de examen, debido a la actual falta de interés de implementadores.

133 |

Mientras que las nuevas etiquetas HTML5 permiten reproducir contenido multimedia, HTML Media Capture define un mecanismo basado en el marcado para acceder a contenido multimedia capturado usando la cámara y los micrófonos, una característica muy común en los dispositivos móviles. El Web Real-Time Communications Working Group y el Device APIs Working Group están construyendo juntos una API (getUserMedia) para manipular directamente los flujos de datos de la cámara y los micrófonos, así como una API para grabar esos flujos en ficheros, y otra API para utilizar el acceso a cámaras para tomar fotos de forma programada.

134 |

Más allá de la captura y grabación, dos APIs adicionales añaden capacidades multimedia de manipulación para la plataforma Web. Ya hemos mencionado la API Canvas 2D Context API: permite la modificación de las imágenes, que a su vez abre la posibilidad de edición de vídeo.

135 |

En una línea similar, el Audio Working Group está trabajando en una API que hace que sea posible modificar el contenido de audio, así como analizar, modificar y sintetizar sonidos, la Web Audio API.

136 |

La combinación de todas estas características marca el punto de inicio de la Web como una plataforma completa para multimedia, tanto para los consumidores como para los productores. El creciente interés en torno a la unión de los mundos de la Web y la TV (que se manifiesta a través del W3C Web and TV Interest Group) debería reforzar esta tendencia en los próximos meses. Se espera que los dispositivos móviles asuman un papel cada vez mayor en la experiencia de muchas personas usuarias con la TV, proporcionando una experiencia de "segunda pantalla", donde los usuarios pueden encontrar más información o interactuar con un programa de televisión que están viendo a través de sus dispositivos móviles.

137 | 138 | 139 |
140 |
141 |

3. 142 | Adaptación al dispositivo

143 |

Los dispositivos móviles no sólo son muy diferentes de los ordenadores tradicionales, sino que también tienen una gran cantidad de variaciones entre ellos, en términos de tamaño de la pantalla, resolución, tipo de teclado, capacidades de grabación, etc.

144 |

La Device Description Repository API es una API de servidor unificada que permite a los desarrolladores Web recuperar los datos en los dispositivos que tienen acceso a sus páginas en una variedad de base de datos de información del dispositivo.

145 |

La Media Capture Streams API expone alguna información concreta sobre las capacidades de la cámara y los micrófonos para que sea posible tomar ventaja de la gran variedad de los medios de captura de los dispositivos que contienen los teléfonos móviles.

146 |
147 |

CSS Media Queries ofrecen un mecanismo que permite la adaptación del diseño y el comportamiento de una página Web basado en algunas de las características del dispositivo, incluyendo la resolución de la pantalla - a las que Media Queries Level 4 propone añadir la disponibilidad y el tipo de puntero de señalización del dispositivo, la capacidad de flotar (hover) sobre los elementos, y la luminosidad ambiente.

148 |

CSS Device Adaptation define un conjunto de directivas de CSS para definir el tamaño en el que debe basarse este diseño, en relación al tamaño del dispositivo subyacente - especificando lo que se ha implementado utilizando elemento <meta name="viewport">.

149 |

Las unidades CSS relativas del viewport vw y vh permiten diseñar disposiciones que se adaptan a la dimensión del viewport, mientras que el ajuste por CSS del texto en móviles permite al texto adaptarse a las partes de la página redimensionadas mediante zoom.

150 |
151 |
152 |

El Responsive Images Community Group (RICG) está trabajando actualmente en una extensión de HTML, conocida como el elemento picture, que permite a los autores definir qué imagen cargar en función de las capacidades del dispositivo y/o otras características de media. El RICG publica un documento de casos y requisitos de uso que describe completamente el problema.

153 |

Como enfoque complementario, el atributo srcset, especificado por el WHATWG y también publicado como una extensión de HTML, permite a los desarrolladores Web definir las diferentes proporciones de píxeles de una imagen por dispositivo, dejando que el navegador elija la mejor opción para la densidad de píxeles de la pantalla. 154 | A partir de enero de 2014, existe un acuerdo general entre los fabricantes de navegadores para implementar ambos, picture y srcset.

155 |

SVG, que permite definir las imágenes que se pueden escalar ampliando y disminuyendo sin ninguna pérdida de calidad, es otra herramienta fundamental para el desarrollo de aplicaciones Web que se adapten a la resolución del dispositivo subyacente.

156 |
157 |
158 |
159 |

4. 160 | Formularios

161 |

La capacidad de construir formularios enriquecidos con HTML es la base para la entrada de la persona usuaria en la mayoría de las aplicaciones basadas en Web. Debido a sus teclados limitados, la entrada de texto en los dispositivos móviles sigue siendo una tarea difícil para la mayoría de las personas; HTML5 trata parte de este problema al ofrecer nuevos tipos de controles de formulario que optimizan la forma en que las personas pueden introducir datos:

162 | 170 | 171 |
172 |
173 |

5. 174 | Interacción con la persona usuaria

175 |
176 |

Una parte creciente de los dispositivos móviles se basa en las interacciones táctiles. Mientras que las interacciones tradicionales reconocidas en la plataforma Web (teclado, ratón) todavía se pueden aplicar en este contexto, un manejo más específico de entrada basada táctil es un aspecto crítico de la creación de experiencias de usuario bien adaptadas que permite y recoge Touch Events in the DOM (Document Object Model). El trabajo en esta especificación está casi terminado.

177 |

Mientras tanto, el Pointer Events Working Group ha realizado un buen progreso en un enfoque alternativo para manejar las entradas del usuario, Pointer Events, que permite manejar eventos de ratón, táctiles y de puntero bajo un único modelo. Se espera que este nuevo enfoque sustituya al actual que está ampliamente desplegado.

178 |
179 |
180 |

A medida que más y más contenido se representa como largas listas desplazables, más lógica se une a los eventos de desplazamiento, y la calidad de la experiencia de la persona usuaria en estas acciones depende de su forma de actuar. El CSSOM View Module determina cuándo los eventos de desplazamiento son lanzados, y deja que los desarrolladores especifiquen el tipo de comportamiento de desplazamiento que quieren.

181 |

El trabajo propuesto en CSS Scroll Snap Points añade una mayor capacidad para controlar el comportamiento panorámico y el scrolling mediante la definición de puntos a los que la vista de una aplicación se fijaría cuando el usuario se mueve a través de la página.

182 |

La propiedad CSS will-change también está disponible para indicar a los navegadores que una parte determinada de la página tendrá pronto scroll y debe ser pre-renderizada.

183 |
184 |

Muchos dispositivos móviles utilizan teclados en pantalla para permitir que los usuarios escriban; la Input Method Editor (IME) API permite coordinar las interacciones entre ese teclado en pantalla y las aplicaciones Web.

185 |

A la inversa, muchos dispositivos móviles utilizan la retroalimentación háptica (como la vibración) para crear nuevas formas de interacción (por ejemplo, en los juegos); el trabajo en la vibration API en el Device APIs Working Group está realizando buenos progresos.

186 |

Pero a medida que la Web llega a nuevos dispositivos, y como los dispositivos obtienen nuevos mecanismos de interacción con las personas, también es importante permitir a los desarrolladores Web reaccionar a un conjunto más abstracto de interacciones: en lugar de tener que trabajar en términos de "haga clic en", "presione la tecla", o "un evento de toque", ser capaz de reaccionar a un comando "deshacer", o un "página siguiente" independientemente de lo que la persona ha indicado al dispositivo será beneficioso para el desarrollo de aplicaciones Web independientes del dispositivo. La especificación IndieUI Events, desarrollado por el Indie UI Working Group, tiene como objetivo abordar esta necesidad.

187 |

Los dispositivos móviles acompañan a las personas que los usan a todas partes, y muchas personas dependen de ellos para recordarles o informarles de eventos, como los mensajes: la especificación Web Notifications habilita esa característica para el entorno Web, mientras que la Push API hace posible alertar a la persona con notificaciones desde el servidor, incluso si el navegador no está en ejecución.

188 |

Los dispositivos móviles, en particular los teléfonos móviles, son también en muchos casos muy adecuados para ser utilizados a través de interacciones de voz; la Speech API Community Group está explorando la posibilidad de iniciar los trabajos de normalización en torno a una API JavaScript que haría posible que los usuarios puedan interactuar con una página Web a través de comandos de voz.

189 |

Si las personas dictan comandos o utilizan sus aplicaciones a través de interación no táctil, se arriesgan a que la pantalla del dispositivo se apague debido al salvapantallas. Una primera propuesta para una Wake Lock API permitiría a los desarrolladores señalizar la necesidad de mantener la pantalla encendida en dichas circunstancias.

190 |
191 |

Las limitaciones de hardware de los dispositivos móviles, y sus diferentes contextos de uso puede hacer que las personas usuarias de dispositivos móviles experimenten barreras similares a las personas con discapacidad. Estas similitudes en las barreras significan que se pueden utilizar soluciones similares para responder a las mismas, siendo un objetivo natural hacer un sitio Web accesible tanto para las personas con discapacidad como para los dispositivos móviles (como se detalla en Relationship between Mobile Web Best Practices and WCAG).

192 |

Cómo las Directrices de Accesibilidad de Contenido Web (WCAG) y las Directrices de Accesibilidad de Agente de Usuario (UAAG) brindan asesoramiento sobre accesibilidad móvil - es decir, hacer los sitios Web y las aplicaciones más accesibles para las personas con discapacidad cuando están utilizando teléfonos móviles y una amplia gama de otros dispositivos - se está discutiendo en Mobile Accessibility.

193 |

WAI-ARIA proporciona información semántica de los widgets, las estructuras y los hooks de comportamiento para hacer aplicaciones Web más accesible, entre ellas en los dispositivos móviles.

194 |
195 | 196 |
197 |
198 |

6. 199 | Almacenamiento de datos

200 |

Un componente crítico de muchas aplicaciones es la capacidad de guardar el estado, exportar contenido, así como de integrar datos de otros archivos y servicios en el sistema.

201 |

Para el almacenamiento de datos simple, la especificación Web Storage ofrece dos mecanismos básicos, localStorage y sessionStorage, que puede preservar los datos respectivamente de forma indefinida, o bien según la sesión de navegador.

202 |
203 |

Para interacciones más ricas, la plataforma Web proporciona la File Reader API que hace que sea posible cargar el contenido de un archivo.

204 |

Anteriormente, el Web Applications Working Group había considerado de forma complementaria las APIs File Writer y FileSystems, pero estas aproximaciones han sido abandonadas. Se han iniciado conversaciones sobre una nueva propuesta de API para una sandboxed filesystem API.

205 |

Mientras tanto, el atributo HTML5 download ofrece un simple mecanismo para desencadenar una descarga de archivos (en lugar de una página de navegación), con la posibilidad de crear un nombre de archivo fácil de usar.

206 |
207 |

Sobre este acceso basado en ficheros, la Indexed Database API (IndexedDB) define una base de datos de valores y objetos jerárquicos que se integra de forma natural con JavaScript y puede ser consultada y actualizada de manera muy eficiente - se está trabajando en una nueva versión de la especificación. Destacar que el trabajo hecho alrededor de una base de datos del laddo del cliente basada en SQL, comenzado en 2009, ha sido abandonado en favor de este nuevo sistema.

208 |

Con la necesidad de almacenar cada vez más datos por el navegador (por ejemplo, para uso sin conexión), se convierte en fundamental para los desarrolladores conseguir espacio de almacenamiento, que la Quota Management API ofrecerá a las aplicaciones Web.

209 |

Del mismo modo, ya que algunos de estos datos deben ser cifrados, la Web Cryptography API del Web Cryptography Working Group expone fuertes primitivas de cifrado para aplicaciones Web, y se puede enlazar a claves preprovisionadas a través de la API WebCrypto Key Discovery.

210 | 211 |
212 |
213 |

7. 214 | Gestión de Información Personal

215 |

Las aplicaciones pueden beneficiarse de la integración con los registros de datos existentes de sus usuarios; en los dispositivos móviles, la libreta de direcciones y el calendario son fuente muy útil de información.

216 |
217 |

Para aplicaciones Web fuera del navegador, un enfoque puramente programático es parte del System Applications Working Group, con el trabajo en curso de la Contacts Manager API.

218 |

En el navegador, HTML 5.1 proporciona autocompletado de campos relativos a información de contactos que permitiría a los navegadores reutilizar información de la libreta de contactos del dispositivo.

219 |
220 | 221 | 222 |
223 |
224 |

8. 225 | Integración con sensores y hardware

226 |

Los dispositivos móviles están llenos de sensores, por lo que son un gran puente entre los mundos reales y virtuales: GPS, acelerómetro, detector de luz ambiental, micrófono, cámara, termómetro, etc.

227 |

Para sacar el máximo provecho de estos sensores en aplicaciones Web móviles, los desarrolladores Web deben estar provistos de hooks para interactuar con ellos.

228 |

La Geolocation API proporciona una interfaz común para localizar el dispositivo, independientemente de la tecnología subyacente (GPS, identificación de redes WiFi, triangulación en las redes celulares, etc.). Se está trabajando en nueva propuesta para una versión de la API que incluye geofencing.

229 |

Las aplicaciones Web ahora también pueden acceder a los datos de orientación y aceleración a través de la especificación DeviceOrientation Event Specification.

230 |

Una serie de APIs para otros sensores están en desarrollo: la Battery Status API, la Proximity Events API, la Ambient Light Events API o la propuesta Ambient Humidity Events API.

231 |

Como ya se mencionó en el apartado de multimedia, hay un trabajo en curso sobre las APIs para abrir el acceso a los de datos de cámaras y micrófonos.

232 |

La oportunidad para las aplicaciones Web para utilizar mecanismos Near-Field Communications (NFC) han llevado al NFC Working Group a desarrollar la Web NFC API.

233 |

Un acceso más global de sensores y hardware (incluyendo USB y bluetooth) está en el ámbito de System Applications Working Group. Recientemente un Web Bluetooth Community Group ha comenzado a desarrollar una Bluetooth Low Engergy API para navegadores.

234 |
235 |
236 |

9. 237 | Red

238 |

La conectividad de red representa un activo importante para los dispositivos móviles: la Web es una inmensa tienda de contenidos, así como una fuente casi inagotable de poder de procesamiento, superando dos de las limitaciones de los dispositivos móviles.

239 |

La plataforma Web está creando una serie de APIs que facilitan el establecimiento de la conectividad de red en diferentes contextos.

240 |
241 |

242 | XMLHttpRequest (la base del desarrollo Ajax) es una API ampliamente desplegada para cargar contenido desde servidores Web utilizando el protocolo HTTP y HTTPS: la especificación W3C (anteriormente conocido como XMLHttpRequest Level 2) completa la vigente API con la capacidad de hacer peticiones a servidores en un dominio diferente, la retroalimentación programática sobre la marcha de las operaciones de red, y un manejo más eficiente de contenido binario.

243 |

La API Beacon iniciado recientemente permitirá a los desarrolladores encolar las peticiones HTTP sin supervisión, dejando que el navegador las ejecute cuando lo considere necesario, abriendo la puerta para una mejor optimización de la red.

244 |

El trabajo iniciado en Web Background Synchronization API proporcionaría un mecanismo robusto basado en Web Worker que permita a las aplicaciones Web descargar y subir contenido en segundo plano, incluso si el navegador no está en ejecución.

245 |
246 |

Por defecto, los navegadores no permiten hacer solicitudes a través de diferentes dominios (o más específicamente, a través de diferentes orígenes, una combinación del protocolo, el dominio y el puerto) desde una única página Web; esta regla protege al usuario de sufrir un abuso de sus credenciales y el robo de sus datos en otro sitio Web. Los sitios pueden optar por no usar esa regla, haciendo uso del mecanismo de Cross-Origin Resource Sharing, abriendo una cooperación mucho más amplia entre aplicaciones y servicios Web.

247 |
248 |

XMLHttpRequest es útil para las solicitudes de red iniciadas por el cliente, pero los dispositivos móviles con sus capacidades de red limitadas y el coste que las solicitudes de red inducen en su batería (y algunas veces en su factura de usuarios), a menudo puede hacer un mejor uso de las solicitudes iniciadas por el servidor. La API Server-Sent Events permite desencadenar eventos DOM basados en notificaciones push (a través de HTTP y otros protocolos).

249 |

Los primeros trabajos sobre una Push API permitiría a las aplicaciones Web recibir mensajes enviados por el servidor tanto si la aplicación está activa en una ventana del navegador como si no. Para estandarizar los aspectos del protocolo del mecanismo, se está discutiendo un manifiesto por un IETF Working Group.

250 |
251 |

La API WebSocket, construida sobre el protocolo IETF WebSocket, ofrece una conectividad de red bidirectional, más flexible, y menos intesiva en recursos que XMLHttpRequest.

252 |

El trabajo en Web Real-Time Communications también ofrecerá conexiones directas de datos fuente a fuente entre navegadores con características de tiempo real, abriendo el camino para la colaboración multi-dispositivos de las aplicaciones Web.

253 |

Por supuesto, una parte importante de la utilización de la conectividad de red se basa en ser capaz de determinar si existe dicha conectividad, y el tipo de red disponible. La flag DOM HTML5 onLine (y su evento de cambio asociado, ononline) señala cuando la conectividad de red está disponible para el entorno Web.

254 |
255 |

La network-information API, que se suponía iba a abordar el descubrimiento de las características de la red, ha sido abandonada por el momento debido a la falta de casos de uso.

256 |

La API Resource Timing ofrece medir con precisión el impacto de la red en el tiempo necesario para cargar diversos recursos, ofreciendo otro enfoque para adaptar una aplicación Web a su entorno de red.

257 |
258 |
259 |
260 |

10. 261 | Comunicación y Descubrimiento

262 |

Más allá de la conexión a los servicios en línea, permitir la comunicación entre usuarios y también entre dispositivos y entre aplicaciones es un aspecto importante de una buena plataforma de desarrollo móvil. Para comunicarse con dispositivos desconocidos o servicios ya existentes, un componente de descubrimiento es fundamental.

263 |

Para las aplicaciones Web no en un navegador, el System Applications Working Group está trabajando en una completa Messaging API.

264 |
265 |

La API postMessage del HTML5 Web Messaging permite a las aplicaciones Web comunicarse entre sí.

266 |
267 |

La API Network Service Discovery ofrece descubrir servicios en la red local (como los que se ofrecen a través de DLNA), permitiendo a las aplicaciones Web móviles integrarse perfectamente con estos servicios.

268 |

El Web Real-Time Communications Working Group es el encargado de un diverso y amplio conjunto de oportunidades de comunicación:

269 | 273 | 274 |
275 |
276 |

11. 277 | Packaging

278 |

Un aspecto importante de la experiencia del usuario de aplicaciones está ligada a cómo la persona percibe que dicha aplicación está disponible de forma permanente (incluso off-line, que es particularmente importante en dispositivos móviles), así como la forma en que puede ser compartida y distribuida, típicamente a través de compras vía tiendas de aplicaciones - esta se aborda adecuadamente mediante el empaquetado de la aplicación.

279 |

La plataforma Web ofrece dos enfoques complementarios para el empaquetado de aplicaciones Web:

280 | 284 | 285 |
286 |
287 |

12. 288 | Payment

289 |

Las tiendas de aplicaciones nativas en dispositivos móviles han facilitado la monetización de las aplicaciones a los desarrolladores, tanto a través de la venta de las propias aplicaciones como de la venta a través de las mismas (las in-app purchases).

290 |

Mientras que las aplicaciones Web pueden usar soluciones bien conocidas de pago on-line, se ha comprobado que estas soluciones son más difíciles de usar en dispositivos móviles.

291 |

En Marzo de 2014, W3C organizó un taller sobre pagos en la Web para identificar posibles vías en que los estándares pudieran ayudar a hacer la experiencia de pago más simple, especialmente en disositivos móviles. Se está elaborando un manifiesto para un W3C Interest Group que dirija el trabajo en éste ámbito.

292 |

Mientras tanto, HTML5.1 especifica ayuda para autocompletar los detalles de la tarjeta de crédito, haciendo más simple el pago mediante tarjeta de crédito una vez que los datos han sido ya introducidos una vez.

293 |
294 |
295 |

13. 296 | Rendimiento y Optimización

297 |

Debido a su CPU limitada, y más importante su batería limitada, los dispositivos móviles requieren una gran cantidad de atención en términos de rendimiento.

298 |

El trabajo iniciado por el Web Performance Working Group en Navigation Timing, Resource Timing, Performance Timeline y User Timing, da las herramientas a los desarrolladores Web para la optimización de sus aplicaciones Web.

299 |

Los primeros trabajos en una especificación de Resource Priorities, part del nuevo objetivo del Web Performance Working Group, dejará que los desarrolladores indiquen qué solicitudes de red deben ser priorizadas.

300 |

El trabajo propuesto sobre Efficient Script Yielding ofrece la oportunidad a los desarrolladores Web de utilizar la programación asíncrona más eficiente, pero ha ganado hasta el momento tracción muy limitada.

301 |

La API para determinar si se está visualizando una página Web (Page Visibility API) también se puede utilizar para adaptar el uso de los recursos a la necesidad de la aplicación Web, por ejemplo mediante la reducción de actividad de la red cuando se minimiza la página. Del mismo modo, la API para control del timing para animaciones basadas en scripts puede ayudar a reducir el uso de los recursos necesarios para la reproducción de animaciones.

302 |

Más allá de la optimización de los recursos, la reactividad percibida de una aplicación es también un aspecto crítico de la experiencia del usuario móvil. El mecanismo tipo hilos hecho posible por Web Workers permite mantener la interfaz de usuario en modo responsive al descargar las operaciones que mayor recursos consumen en un proceso en segundo plano.

303 |

La API de batería permite ajustar el uso de los recursos al nivel actual de energía disponible en la batería de un dispositivo móvil.

304 |

Las Mobile Web Application Best Practices proporcionan recomendaciones generales sobre cómo crear aplicaciones Web que funcionan bien en los dispositivos móviles, teniendo en cuenta en particular las necesidades de optimización. La oportunidad de actualizar estas mejores prácticas se está construyendo en el Web and Mobile Interest Group.

305 |
306 |
307 |

14. 308 | Privacidad y Seguridad

309 |

Los dispositivos móviles siguen a sus usuarios por todo el mundo, y tienen en ellos algunos de los datos más privados y confidenciales (contactos, fotos, calendario, etc.). En consecuencia, es fundamental que los usuarios puedan confiar en sus teléfonos para mantener los datos a salvo de posibles ataques.

310 |

Las especificaciones del W3C son revisados por su impacto en la seguridad y la privacidad como parte de su progreso a través del track de Recommendation; el Privacy Interest Group y el Web Security Interest Group en particular, están coordinando revisiones en sus respectivos campos.

311 |

Pero más allá de estas consideraciones de tecnología, una serie de elementos de trabajo en curso necesitan protección adicional.

312 |

La primera línea de defensa para los usuarios y la unidad de aislamiento para las aplicaciones Web es la política del mismo origen, que limita a qué puede acceder una aplicación Web en cuanto a los contenidos y datos alojados en el mismo origen, es decir, la combinación del esquema de URL, nombre de dominio y el puerto.

313 |
314 |

Por razones de herencia, esta política no es tan estricta en algunas partes de la plataforma Web, exponiendo a los usuarios a una mayor posibilidad de ataque a través de secuencias de comandos en sitios cruzados o cross-site request forgery. Para habilitar que los autores de aplicaciones Web reduzcan la superficie de ataque más allá de lo que exige la recomendación, la Content Security Policy ofrece hooks que limita los daños que un atacante podría aspirar a lograr.

315 |

Para fortalecer aún más la integridad de sus aplicaciones, los desarrolladores Web pueden hacer uso del mecanismo Subresource integrity, que hace posible bloquear los ataques man-in-the-middle o comprometidos proveedores terceros.

316 |

En las aplicaciones que agregan el contenido de múltiples fuentes (posiblemente de no confianza), el sandbox HTML5 iframe permite restringir con qué tipo de interacciones con contenido intregrado de terceros se puede hacer uso.

317 |
318 |

Como se describió anteriormente, la Web Cryptography API proporciona las herramientas necesarias para cifrar los datos para el almacenamiento y la transmisión desde las aplicaciones Web, con claves de acceso aprovisionado previamente a través de la API WebCrypto Key Discovery.

319 |

Para los usuarios que deseen indicar en sus preferencias no ser rastreados a través de sitios y aplicaciones Web, la Tracking Preference Expression (también conocida como Do No Track) permite a los navegadores comunicar de manera explícita su deseo a los proveedores de contenido, y determinar si un proveedor de contenido dado cumple ese deseo.

320 |

Para facilitar la autenticación de las personas a los servicios on-line, se ha comenzado a trabajar en la identificación de las oportuniades para gestionar las credenciales y la autorización on-line.

321 | 322 |
323 |
324 |

Agradecimientos

325 | 326 |

Gracias a Art Barstow, Anssi Kostiainen, Jo Rabin, Jose Manrique Lopez, Mounir Lamouri, Marcos Caceres, François Daoust and Ronan Cremin for their contributions to this document.

327 | 328 |

Este documento es producido a través del HTML5Apps project, financiado por la Unión Europea a través del Séptimo Programa Marco (FP7/2013-2015) bajo el acuerdo n°611327 - HTML5 Apps.

329 | 330 |

La traducción al español ha sido producida en el marco del proyecto “Asesoramiento experto en materia de movilidad y visualización sobre Software de Fuentes Abiertas”, financiado por Cenatic.

331 | 332 |
333 | 340 |
341 | 342 | 343 | 344 | -------------------------------------------------------------------------------- /js/generate.js: -------------------------------------------------------------------------------- 1 | var sections = document.querySelectorAll("section.featureset"); 2 | var template = document.getElementById("template").textContent; 3 | 4 | var maturityLevels = {"ed":"low","LastCall":"medium","WD":"low","CR":"high","PR":"high","REC":"high"}; 5 | 6 | function fillCell(el, data, image) { 7 | if (data.level) { 8 | el.setAttribute("class",data.level); 9 | } 10 | if (image) { 11 | var img = new Image(); 12 | img.setAttribute("src", image.src); 13 | img.setAttribute("alt", image.alt); 14 | if (image.width) { 15 | img.setAttribute("width", image.width); 16 | } 17 | if (image.height) { 18 | img.setAttribute("height", image.height); 19 | } 20 | } 21 | if (data.url) { 22 | var a = document.createElement("a"); 23 | a.setAttribute("href", data.url); 24 | if (image) { 25 | a.setAttribute("title", data.label); 26 | a.appendChild(img); 27 | } else { 28 | a.appendChild(document.createTextNode(data.label)); 29 | } 30 | el.appendChild(a); 31 | } else { 32 | if (image) { 33 | el.appendChild(img); 34 | } else { 35 | el.appendChild(document.createTextNode(data.label)); 36 | } 37 | } 38 | } 39 | 40 | function importSVG(svgurl, el, postHook) { 41 | var xhr = new XMLHttpRequest(); 42 | xhr.open("GET",svgurl); 43 | xhr.responseType = "document"; 44 | xhr.onload = function (e) { 45 | if (e.target.status == "200" || e.target.status == "304") { 46 | var svg = e.target.response.documentElement; 47 | svg.querySelector("style").remove(); 48 | el.appendChild(svg); 49 | if (postHook) { 50 | postHook(el); 51 | } 52 | } 53 | }; 54 | xhr.send(); 55 | } 56 | 57 | function maturityData(spec) { 58 | var maturity ; 59 | var maturityIcon ; 60 | if (!maturityLevels[spec.maturity]) { 61 | if (spec.maturity == "NOTE") { 62 | level = "high"; 63 | } else { 64 | level = "low"; 65 | } 66 | maturity = {label: spec.maturity, level:level}; 67 | } else { 68 | maturity = {label:spec.maturity, level: maturityLevels[spec.maturity]}; 69 | maturityIcon = {src:"http://www.w3.org/2013/09/wpd-rectrack-icons/" + spec.maturity.toLowerCase().replace(/lastcall/,'lcwd') + '.svg', alt:spec.maturity, width:50, height:50}; 70 | if (spec.maturity == "REC" || spec.maturity == "LastCall") { 71 | maturityIcon.height = 53; 72 | } 73 | } 74 | return {maturity: maturity, maturityIcon: maturityIcon}; 75 | } 76 | 77 | var specData; 78 | var specXhr = new XMLHttpRequest(); 79 | specXhr.open("GET", "specs/tr.json"); 80 | specXhr.onload = function() { 81 | specData = JSON.parse(this.responseText); 82 | fillTables(); 83 | }; 84 | specXhr.send(); 85 | 86 | function ghLink(url, title, width) { 87 | var gh_link = document.createElement("a"); 88 | var gh_logo = document.createElement("img"); 89 | gh_logo.setAttribute("src", "github.svg"); 90 | if (width) { 91 | gh_logo.setAttribute("width", width); 92 | } 93 | gh_link.setAttribute("href", url); 94 | gh_link.setAttribute("title", title); 95 | gh_link.appendChild(gh_logo); 96 | return gh_link; 97 | } 98 | 99 | function fillTables() { 100 | var counterReq = 0 ,counterRes = 0; 101 | for (var i = 0; i < sections.length; i++) { 102 | var section = sections[i]; 103 | var dataTable = document.createElement("div"); 104 | dataTable.innerHTML = template; 105 | var tbody = dataTable.querySelector("tbody"); 106 | var features = section.querySelectorAll("[data-feature]"); 107 | for (var j = 0; j < features.length; j++) { 108 | var featureEl = features[j]; 109 | var featureName = featureEl.dataset["feature"]; 110 | var tr = document.createElement("tr"); 111 | var th = document.createElement("th"); 112 | th.appendChild(document.createTextNode(featureName)); 113 | var specs = []; 114 | if (featureEl.dataset["featureid"]) { 115 | specs = [featureEl.dataset["featureid"]]; 116 | } else { 117 | var specEls = featureEl.querySelectorAll("[data-featureid]"); 118 | for (var k = 0; k 1) { 125 | th.setAttribute("rowspan", specs.length); 126 | } 127 | tr.appendChild(th); 128 | for (var k = 0; k < specs.length; k++) { 129 | var spec = specs[k]; 130 | if (k > 0) { 131 | tr = document.createElement("tr"); 132 | } 133 | tbody.appendChild(tr); 134 | 135 | var specTd = document.createElement("td"); 136 | var wgTd = document.createElement("td"); 137 | var maturityTd = document.createElement("td"); 138 | var stabilityTd = document.createElement("td"); 139 | var editorsTd = document.createElement("td"); 140 | var implTd = document.createElement("td"); 141 | var docTd = document.createElement("td"); 142 | var tsTd = document.createElement("td"); 143 | var xhr = new XMLHttpRequest(); 144 | xhr.open("GET", "data/" + spec + ".json"); 145 | counterReq++; 146 | xhr.onload = function(x, s, el1, el2, el3, el4, el5, el6, el7, el8) { 147 | return function() { 148 | counterRes++; 149 | var obj, level, editorsactivity, maturityInfo; 150 | try { 151 | var data = JSON.parse(x.responseText); 152 | } catch (e) { 153 | console.error("Failed to parse " + spec + ".json: " + x.responseText + "(" + e + ")"); 154 | } 155 | var links = document.querySelectorAll("a[data-featureid='" + s + "']"); 156 | for (var l = 0 ; l < links.length; l++) { 157 | var url = data.editors.url; 158 | if (!url) { 159 | url = data.TR; 160 | } 161 | links[l].setAttribute("href",url); 162 | } 163 | if (data.TR !== "") { 164 | fillCell(el1, {label: (data.feature ? data.feature + " in " : "") + specData[s].title, url: data.TR}); 165 | } else { 166 | fillCell(el1, {label: data.title}); 167 | specData[s] = { maturity: data.maturity, wgs:data.wgs}; 168 | } 169 | for (var w = 0 ; w < specData[s].wgs.length; w++) { 170 | wg = specData[s].wgs[w]; 171 | wg.label = wg.label.replace(/ Working Group/,'').replace(/Cascading Style Sheets \(CSS\)/,'CSS').replace(/Technical Architecture Group/,'TAG'); 172 | if (w > 0) { 173 | if (w < specData[s].wgs.length - 1) { 174 | el2.appendChild(document.createTextNode(",")); 175 | } else { 176 | el2.appendChild(document.createTextNode(" and")); 177 | } 178 | el2.appendChild(document.createElement("br")); 179 | } 180 | fillCell(el2, wg); 181 | } 182 | maturityInfo = maturityData(specData[s]); 183 | fillCell(el3, maturityInfo.maturity, maturityInfo.maturityIcon); 184 | fillCell(el4, data.stability); 185 | if (data.editors.url) { 186 | if (specData[s].maturity === "REC") { 187 | el5.appendChild(document.createTextNode("Finished")); 188 | } else { 189 | fillCell(el5, data.editors); 190 | editorsactivity = data.editors.url.replace(/^https?:\/\//, '').replace(/#.*/,'').replace(/[^a-z0-9]/g,''); 191 | el5.appendChild(document.createElement("br")); 192 | importSVG("editors-activity/" + editorsactivity + ".svg", el5, updateEditorsActivity); 193 | if (data.editors.url.match(/https?:\/\/[^\.\/]*\.github\.io\//)) { 194 | var ghUser = data.editors.url.split(".")[0].split("/")[2]; 195 | var ghRepo = data.editors.url.split("/")[3]; 196 | el5.appendChild(ghLink("https://github.com/" + ghUser + "/" + ghRepo + "/", "Contribute to " + data.title + " on GitHub", 20)); 197 | } 198 | } 199 | } 200 | fillCell(el6, data.impl); 201 | el6.appendChild(document.createElement("br")); 202 | importSVG("images/" + s + ".svg", el6); 203 | if (data.wpd) { 204 | fillCell(el7, data.wpd, {src:"http://www.webplatform.org/logo/wplogo_transparent.png", alt: "WebPlatform.org", width:115,height:124}); 205 | } 206 | if (data.wdc) { 207 | if (data.wdc) { 208 | el7.appendChild(document.createElement("br")); 209 | } 210 | fillCell(el7, data.wdc, {src:"http://www.w3.org/Mobile/mobile-web-app-state/w3devcampus.png", alt: "W3DevCampus", width:115, height:43}); 211 | } 212 | if (data.tests.repo) { 213 | el8.appendChild(ghLink(data.tests.repo, "Fork the test suite for " + specData[s].title + " on GitHub")); 214 | } 215 | fillCell(el8, data.tests); 216 | el8.classList.add("tests"); 217 | if (counterReq == counterRes) { 218 | mergeWGCells(); 219 | markDupLinks(); 220 | } 221 | }; 222 | }(xhr, spec, specTd, wgTd, maturityTd, stabilityTd, editorsTd, implTd, docTd, tsTd); 223 | xhr.send(); 224 | tr.appendChild(specTd); 225 | tr.appendChild(wgTd); 226 | tr.appendChild(maturityTd); 227 | tr.appendChild(stabilityTd); 228 | tr.appendChild(editorsTd); 229 | tr.appendChild(implTd); 230 | tr.appendChild(docTd); 231 | tr.appendChild(tsTd); 232 | } 233 | } 234 | section.appendChild(dataTable); 235 | } 236 | } 237 | 238 | // When two rows in a row (!) have the same content in the WG column, 239 | // merge the two cells 240 | function mergeWGCells() { 241 | var rows = document.querySelectorAll("tbody tr"); 242 | var wgCells = []; 243 | for (var i = 0 ; i < rows.length; i++) { 244 | if (rows[i].getElementsByTagName("td")) { 245 | wgCells.push(rows[i].getElementsByTagName("td")[1]); 246 | } 247 | } 248 | for (var i = wgCells.length - 1 ; i >= 0; i--) { 249 | var wgCell = wgCells[i]; 250 | var prevTr = wgCell.parentNode.previousElementSibling; 251 | if (prevTr && prevTr.getElementsByTagName("td")[1] && prevTr.getElementsByTagName("td")[1].textContent == wgCell.textContent) { 252 | var rowspan; 253 | if (wgCell.getAttribute("rowspan")) { 254 | rowspan = parseInt(wgCell.getAttribute("rowspan"), 10); 255 | } else { 256 | rowspan = 1; 257 | } 258 | prevCell = prevTr.getElementsByTagName("td")[1]; 259 | prevCell.setAttribute("rowspan", rowspan + 1); 260 | wgCell.remove(); 261 | } 262 | } 263 | } 264 | 265 | // For printing, we only want to print the first occurence of the target 266 | // of a link; so we mark links whose reference has already been printed 267 | // with a class dupref 268 | function markDupLinks() { 269 | var links = document.querySelectorAll("a[href]"); 270 | var targets = {}; 271 | for (var i = 0 ; i < links.length; i++) { 272 | var link = links[i]; 273 | if (targets[link.getAttribute("href")]) { 274 | link.classList.add("dupref"); 275 | } else { 276 | targets[link.getAttribute("href")] = 1; 277 | } 278 | } 279 | 280 | } 281 | 282 | function updateEditorsActivity(el) { 283 | var descEl = el.querySelector("desc"); 284 | if (descEl) { 285 | el.querySelector("a").textContent = descEl.textContent; 286 | var t = descEl.getAttribute("title"); 287 | if (t) { 288 | var commitsCount = parseInt(t.split(" ")[0], 10); 289 | if (commitsCount === 0) { 290 | el.querySelector('svg').outerHTML = ''; 291 | } 292 | } 293 | } 294 | } 295 | 296 | // clean up 297 | var scripts = document.querySelectorAll("script"); 298 | for (var i = 0; i < scripts.length; i++) { 299 | scripts[i].remove(); 300 | } 301 | -------------------------------------------------------------------------------- /specs/tr.json: -------------------------------------------------------------------------------- 1 | { 2 | "accelerometer": { 3 | "maturity": "LastCall", 4 | "title": "DeviceOrientation Event Specification", 5 | "wgs": [ 6 | { 7 | "label": "Geolocation Working Group", 8 | "url": "http://www.w3.org/2008/geolocation/" 9 | } 10 | ] 11 | }, 12 | "ambientlight": { 13 | "maturity": "WD", 14 | "title": "Ambient Light Events", 15 | "wgs": [ 16 | { 17 | "label": "Device APIs Working Group", 18 | "url": "http://www.w3.org/2009/dap/" 19 | } 20 | ] 21 | }, 22 | "animation-timing": { 23 | "maturity": "CR", 24 | "title": "Timing control for script-based animations", 25 | "wgs": [ 26 | { 27 | "label": "Web Performance Working Group", 28 | "url": "http://www.w3.org/2010/webperf/" 29 | } 30 | ] 31 | }, 32 | "aria": { 33 | "maturity": "REC", 34 | "title": "Accessible Rich Internet Applications (WAI-ARIA) 1.0", 35 | "wgs": [ 36 | { 37 | "label": "Protocols and Formats Working Group", 38 | "url": "http://www.w3.org/WAI/PF/" 39 | } 40 | ] 41 | }, 42 | "audio": { 43 | "maturity": "REC", 44 | "title": "HTML5", 45 | "wgs": [ 46 | { 47 | "label": "HTML Working Group", 48 | "url": "http://www.w3.org/html/wg/" 49 | } 50 | ] 51 | }, 52 | "audio-output": { 53 | "maturity": "WD", 54 | "title": "Audio Output Devices API", 55 | "wgs": [ 56 | { 57 | "label": "Device APIs Working Group", 58 | "url": "http://www.w3.org/2009/dap/" 59 | }, 60 | { 61 | "label": "Web Real-Time Communications Working Group", 62 | "url": "http://www.w3.org/2011/04/webrtc/" 63 | } 64 | ] 65 | }, 66 | "autocomplete": { 67 | "maturity": "WD", 68 | "title": "HTML 5.1", 69 | "wgs": [ 70 | { 71 | "label": "HTML Working Group", 72 | "url": "http://www.w3.org/html/wg/" 73 | } 74 | ] 75 | }, 76 | "autocomplete-cc": { 77 | "maturity": "WD", 78 | "title": "HTML 5.1", 79 | "wgs": [ 80 | { 81 | "label": "HTML Working Group", 82 | "url": "http://www.w3.org/html/wg/" 83 | } 84 | ] 85 | }, 86 | "battery": { 87 | "maturity": "CR", 88 | "title": "Battery Status API", 89 | "wgs": [ 90 | { 91 | "label": "Device APIs Working Group", 92 | "url": "http://www.w3.org/2009/dap/" 93 | } 94 | ] 95 | }, 96 | "beacon": { 97 | "maturity": "LastCall", 98 | "title": "Beacon", 99 | "wgs": [ 100 | { 101 | "label": "Web Performance Working Group", 102 | "url": "http://www.w3.org/2010/webperf/" 103 | } 104 | ] 105 | }, 106 | "calendar": { 107 | "maturity": "Retired", 108 | "title": "Calendar API", 109 | "wgs": [ 110 | { 111 | "label": "Device APIs Working Group", 112 | "url": "http://www.w3.org/2009/dap/" 113 | } 114 | ] 115 | }, 116 | "canvas": { 117 | "maturity": "CR", 118 | "title": "HTML Canvas 2D Context", 119 | "wgs": [ 120 | { 121 | "label": "HTML Working Group", 122 | "url": "http://www.w3.org/html/wg/" 123 | } 124 | ] 125 | }, 126 | "canvasproxy": { 127 | "maturity": "WD", 128 | "title": "HTML 5.1", 129 | "wgs": [ 130 | { 131 | "label": "HTML Working Group", 132 | "url": "http://www.w3.org/html/wg/" 133 | } 134 | ] 135 | }, 136 | "contacts": { 137 | "maturity": "Retired", 138 | "title": "Pick Contacts Intent", 139 | "wgs": [ 140 | { 141 | "label": "Device APIs Working Group", 142 | "url": "http://www.w3.org/2009/dap/" 143 | } 144 | ] 145 | }, 146 | "contacts-sys": { 147 | "maturity": "Retired", 148 | "title": "Contacts Manager API", 149 | "wgs": [ 150 | { 151 | "label": "System Applications Working Group", 152 | "url": "http://www.w3.org/2012/sysapps/" 153 | } 154 | ] 155 | }, 156 | "cors": { 157 | "maturity": "REC", 158 | "title": "Cross-Origin Resource Sharing", 159 | "wgs": [ 160 | { 161 | "label": "Web Applications Working Group", 162 | "url": "http://www.w3.org/2008/webapps/" 163 | }, 164 | { 165 | "label": "Web Application Security Working Group", 166 | "url": "http://www.w3.org/2011/webappsec/" 167 | } 168 | ] 169 | }, 170 | "credential-management": { 171 | "maturity": "WD", 172 | "title": "Credential Management Level 1", 173 | "wgs": [ 174 | { 175 | "label": "Web Application Security Working Group", 176 | "url": "http://www.w3.org/2011/webappsec/" 177 | } 178 | ] 179 | }, 180 | "crypto": { 181 | "maturity": "CR", 182 | "title": "Web Cryptography API", 183 | "wgs": [ 184 | { 185 | "label": "Web Cryptography Working Group", 186 | "url": "http://www.w3.org/2012/webcrypto/" 187 | } 188 | ] 189 | }, 190 | "cryptokey": { 191 | "maturity": "WD", 192 | "title": "WebCrypto Key Discovery", 193 | "wgs": [ 194 | { 195 | "label": "Web Cryptography Working Group", 196 | "url": "http://www.w3.org/2012/webcrypto/" 197 | } 198 | ] 199 | }, 200 | "csp": { 201 | "maturity": "CR", 202 | "title": "Content Security Policy Level 2", 203 | "wgs": [ 204 | { 205 | "label": "Web Application Security Working Group", 206 | "url": "http://www.w3.org/2011/webappsec/" 207 | } 208 | ] 209 | }, 210 | "css-2d": { 211 | "maturity": "WD", 212 | "title": "CSS Transforms Module Level 1", 213 | "wgs": [ 214 | { 215 | "label": "SVG Working Group", 216 | "url": "http://www.w3.org/Graphics/SVG/WG/" 217 | }, 218 | { 219 | "label": "Cascading Style Sheets (CSS) Working Group", 220 | "url": "http://www.w3.org/Style/CSS/members" 221 | } 222 | ] 223 | }, 224 | "css-3d": { 225 | "maturity": "WD", 226 | "title": "CSS Transforms Module Level 1", 227 | "wgs": [ 228 | { 229 | "label": "SVG Working Group", 230 | "url": "http://www.w3.org/Graphics/SVG/WG/" 231 | }, 232 | { 233 | "label": "Cascading Style Sheets (CSS) Working Group", 234 | "url": "http://www.w3.org/Style/CSS/members" 235 | } 236 | ] 237 | }, 238 | "css-animation": { 239 | "maturity": "WD", 240 | "title": "CSS Animations", 241 | "wgs": [ 242 | { 243 | "label": "Cascading Style Sheets (CSS) Working Group", 244 | "url": "http://www.w3.org/Style/CSS/members" 245 | } 246 | ] 247 | }, 248 | "css-border": { 249 | "maturity": "CR", 250 | "title": "CSS Backgrounds and Borders Module Level 3", 251 | "wgs": [ 252 | { 253 | "label": "Cascading Style Sheets (CSS) Working Group", 254 | "url": "http://www.w3.org/Style/CSS/members" 255 | } 256 | ] 257 | }, 258 | "css-boxshadow": { 259 | "maturity": "CR", 260 | "title": "CSS Backgrounds and Borders Module Level 3", 261 | "wgs": [ 262 | { 263 | "label": "Cascading Style Sheets (CSS) Working Group", 264 | "url": "http://www.w3.org/Style/CSS/members" 265 | } 266 | ] 267 | }, 268 | "css-device-adapt": { 269 | "maturity": "WD", 270 | "title": "CSS Device Adaptation", 271 | "wgs": [ 272 | { 273 | "label": "Cascading Style Sheets (CSS) Working Group", 274 | "url": "http://www.w3.org/Style/CSS/members" 275 | } 276 | ] 277 | }, 278 | "css-font-loading": { 279 | "maturity": "LastCall", 280 | "title": "CSS Font Loading Module Level 3", 281 | "wgs": [ 282 | { 283 | "label": "Cascading Style Sheets (CSS) Working Group", 284 | "url": "http://www.w3.org/Style/CSS/members" 285 | } 286 | ] 287 | }, 288 | "css-rounded": { 289 | "maturity": "CR", 290 | "title": "CSS Backgrounds and Borders Module Level 3", 291 | "wgs": [ 292 | { 293 | "label": "Cascading Style Sheets (CSS) Working Group", 294 | "url": "http://www.w3.org/Style/CSS/members" 295 | } 296 | ] 297 | }, 298 | "css-snappoints": { 299 | "maturity": "WD", 300 | "title": "CSS Scroll Snap Points Module Level 1", 301 | "wgs": [ 302 | { 303 | "label": "Cascading Style Sheets (CSS) Working Group", 304 | "url": "http://www.w3.org/Style/CSS/members" 305 | } 306 | ] 307 | }, 308 | "css-touch-action": { 309 | "maturity": "REC", 310 | "title": "Pointer Events", 311 | "wgs": [ 312 | { 313 | "label": "Pointer Events Working Group", 314 | "url": "http://www.w3.org/2012/pointerevents/" 315 | } 316 | ] 317 | }, 318 | "css-transitions": { 319 | "maturity": "WD", 320 | "title": "CSS Transitions", 321 | "wgs": [ 322 | { 323 | "label": "Cascading Style Sheets (CSS) Working Group", 324 | "url": "http://www.w3.org/Style/CSS/members" 325 | } 326 | ] 327 | }, 328 | "css-will-change": { 329 | "maturity": "WD", 330 | "title": "CSS Will Change Module Level 1", 331 | "wgs": [ 332 | { 333 | "label": "Cascading Style Sheets (CSS) Working Group", 334 | "url": "http://www.w3.org/Style/CSS/members" 335 | } 336 | ] 337 | }, 338 | "datalist": { 339 | "maturity": "REC", 340 | "title": "HTML5", 341 | "wgs": [ 342 | { 343 | "label": "HTML Working Group", 344 | "url": "http://www.w3.org/html/wg/" 345 | } 346 | ] 347 | }, 348 | "ddr": { 349 | "maturity": "REC", 350 | "title": "Device Description Repository Simple API", 351 | "wgs": [ 352 | { 353 | "label": "Device Description Working Group", 354 | "url": "http://www.w3.org/2005/MWI/DDWG/" 355 | } 356 | ] 357 | }, 358 | "discovery": { 359 | "maturity": "WD", 360 | "title": "Network Service Discovery", 361 | "wgs": [ 362 | { 363 | "label": "Device APIs Working Group", 364 | "url": "http://www.w3.org/2009/dap/" 365 | } 366 | ] 367 | }, 368 | "dnt": { 369 | "maturity": "CR", 370 | "title": "Tracking Preference Expression (DNT)", 371 | "wgs": [ 372 | { 373 | "label": "Tracking Protection Working Group", 374 | "url": "http://www.w3.org/2011/tracking-protection/" 375 | } 376 | ] 377 | }, 378 | "eme": { 379 | "maturity": "WD", 380 | "title": "Encrypted Media Extensions", 381 | "wgs": [ 382 | { 383 | "label": "HTML Working Group", 384 | "url": "http://www.w3.org/html/wg/" 385 | } 386 | ] 387 | }, 388 | "epr": { 389 | "maturity": "WD", 390 | "title": "Entry Point Regulation", 391 | "wgs": [ 392 | { 393 | "label": "Web Application Security Working Group", 394 | "url": "http://www.w3.org/2011/webappsec/" 395 | } 396 | ] 397 | }, 398 | "eventsource": { 399 | "maturity": "REC", 400 | "title": "Server-Sent Events", 401 | "wgs": [ 402 | { 403 | "label": "Web Applications Working Group", 404 | "url": "http://www.w3.org/2008/webapps/" 405 | } 406 | ] 407 | }, 408 | "filereader": { 409 | "maturity": "WD", 410 | "title": "File API", 411 | "wgs": [ 412 | { 413 | "label": "Web Applications Working Group", 414 | "url": "http://www.w3.org/2008/webapps/" 415 | } 416 | ] 417 | }, 418 | "flexbox": { 419 | "maturity": "LastCall", 420 | "title": "CSS Flexible Box Layout Module Level 1", 421 | "wgs": [ 422 | { 423 | "label": "Cascading Style Sheets (CSS) Working Group", 424 | "url": "http://www.w3.org/Style/CSS/members" 425 | } 426 | ] 427 | }, 428 | "frame-timing": { 429 | "maturity": "WD", 430 | "title": "Frame Timing", 431 | "wgs": [ 432 | { 433 | "label": "Web Performance Working Group", 434 | "url": "http://www.w3.org/2010/webperf/" 435 | } 436 | ] 437 | }, 438 | "fullscreen": { 439 | "maturity": "Retired", 440 | "title": "Fullscreen", 441 | "wgs": [ 442 | { 443 | "label": "Web Applications Working Group", 444 | "url": "http://www.w3.org/2008/webapps/" 445 | }, 446 | { 447 | "label": "Cascading Style Sheets (CSS) Working Group", 448 | "url": "http://www.w3.org/Style/CSS/members" 449 | } 450 | ] 451 | }, 452 | "gallery": { 453 | "maturity": "Retired", 454 | "title": "Pick Media Intent", 455 | "wgs": [ 456 | { 457 | "label": "Device APIs Working Group", 458 | "url": "http://www.w3.org/2009/dap/" 459 | } 460 | ] 461 | }, 462 | "geofencing": { 463 | "maturity": "WD", 464 | "title": "Geofencing API", 465 | "wgs": [ 466 | { 467 | "label": "Geolocation Working Group", 468 | "url": "http://www.w3.org/2008/geolocation/" 469 | } 470 | ] 471 | }, 472 | "geolocation": { 473 | "maturity": "REC", 474 | "title": "Geolocation API Specification", 475 | "wgs": [ 476 | { 477 | "label": "Geolocation Working Group", 478 | "url": "http://www.w3.org/2008/geolocation/" 479 | } 480 | ] 481 | }, 482 | "getusermedia": { 483 | "maturity": "LastCall", 484 | "title": "Media Capture and Streams", 485 | "wgs": [ 486 | { 487 | "label": "Device APIs Working Group", 488 | "url": "http://www.w3.org/2009/dap/" 489 | }, 490 | { 491 | "label": "Web Real-Time Communications Working Group", 492 | "url": "http://www.w3.org/2011/04/webrtc/" 493 | } 494 | ] 495 | }, 496 | "getusermedia-cap": { 497 | "maturity": "LastCall", 498 | "title": "Media Capture and Streams", 499 | "wgs": [ 500 | { 501 | "label": "Device APIs Working Group", 502 | "url": "http://www.w3.org/2009/dap/" 503 | }, 504 | { 505 | "label": "Web Real-Time Communications Working Group", 506 | "url": "http://www.w3.org/2011/04/webrtc/" 507 | } 508 | ] 509 | }, 510 | "html5-download": { 511 | "maturity": "REC", 512 | "title": "HTML5", 513 | "wgs": [ 514 | { 515 | "label": "HTML Working Group", 516 | "url": "http://www.w3.org/html/wg/" 517 | } 518 | ] 519 | }, 520 | "iframe-sandbox": { 521 | "maturity": "REC", 522 | "title": "HTML5", 523 | "wgs": [ 524 | { 525 | "label": "HTML Working Group", 526 | "url": "http://www.w3.org/html/wg/" 527 | } 528 | ] 529 | }, 530 | "imagecapture": { 531 | "maturity": "WD", 532 | "title": "Mediastream Image Capture", 533 | "wgs": [ 534 | { 535 | "label": "Device APIs Working Group", 536 | "url": "http://www.w3.org/2009/dap/" 537 | }, 538 | { 539 | "label": "Web Real-Time Communications Working Group", 540 | "url": "http://www.w3.org/2011/04/webrtc/" 541 | } 542 | ] 543 | }, 544 | "ime": { 545 | "maturity": "WD", 546 | "title": "Input Method Editor API", 547 | "wgs": [ 548 | { 549 | "label": "Web Applications Working Group", 550 | "url": "http://www.w3.org/2008/webapps/" 551 | } 552 | ] 553 | }, 554 | "indexeddb": { 555 | "maturity": "REC", 556 | "title": "Indexed Database API", 557 | "wgs": [ 558 | { 559 | "label": "Web Applications Working Group", 560 | "url": "http://www.w3.org/2008/webapps/" 561 | } 562 | ] 563 | }, 564 | "indieui": { 565 | "maturity": "WD", 566 | "title": "IndieUI: Events 1.0", 567 | "wgs": [ 568 | { 569 | "label": "Independent User Interface (Indie UI) Working Group", 570 | "url": "http://www.w3.org/WAI/IndieUI/" 571 | } 572 | ] 573 | }, 574 | "inputaccept": { 575 | "maturity": "CR", 576 | "title": "HTML Media Capture", 577 | "wgs": [ 578 | { 579 | "label": "Device APIs Working Group", 580 | "url": "http://www.w3.org/2009/dap/" 581 | } 582 | ] 583 | }, 584 | "inputdate": { 585 | "maturity": "REC", 586 | "title": "HTML5", 587 | "wgs": [ 588 | { 589 | "label": "HTML Working Group", 590 | "url": "http://www.w3.org/html/wg/" 591 | } 592 | ] 593 | }, 594 | "inputhint": { 595 | "maturity": "REC", 596 | "title": "HTML5", 597 | "wgs": [ 598 | { 599 | "label": "HTML Working Group", 600 | "url": "http://www.w3.org/html/wg/" 601 | } 602 | ] 603 | }, 604 | "inputmode": { 605 | "maturity": "WD", 606 | "title": "HTML 5.1", 607 | "wgs": [ 608 | { 609 | "label": "HTML Working Group", 610 | "url": "http://www.w3.org/html/wg/" 611 | } 612 | ] 613 | }, 614 | "inputpattern": { 615 | "maturity": "REC", 616 | "title": "HTML5", 617 | "wgs": [ 618 | { 619 | "label": "HTML Working Group", 620 | "url": "http://www.w3.org/html/wg/" 621 | } 622 | ] 623 | }, 624 | "inputtext": { 625 | "maturity": "REC", 626 | "title": "HTML5", 627 | "wgs": [ 628 | { 629 | "label": "HTML Working Group", 630 | "url": "http://www.w3.org/html/wg/" 631 | } 632 | ] 633 | }, 634 | "intents": { 635 | "maturity": "Retired", 636 | "title": "Web Intents", 637 | "wgs": [ 638 | { 639 | "label": "Web Applications Working Group", 640 | "url": "http://www.w3.org/2008/webapps/" 641 | }, 642 | { 643 | "label": "Device APIs Working Group", 644 | "url": "http://www.w3.org/2009/dap/" 645 | } 646 | ] 647 | }, 648 | "manifest": { 649 | "maturity": "REC", 650 | "title": "HTML5", 651 | "wgs": [ 652 | { 653 | "label": "HTML Working Group", 654 | "url": "http://www.w3.org/html/wg/" 655 | } 656 | ] 657 | }, 658 | "manifestjson": { 659 | "maturity": "WD", 660 | "title": "Manifest for a web application", 661 | "wgs": [ 662 | { 663 | "label": "Web Applications Working Group", 664 | "url": "http://www.w3.org/2008/webapps/" 665 | } 666 | ] 667 | }, 668 | "mediaqueries": { 669 | "maturity": "REC", 670 | "title": "Media Queries", 671 | "wgs": [ 672 | { 673 | "label": "Cascading Style Sheets (CSS) Working Group", 674 | "url": "http://www.w3.org/Style/CSS/members" 675 | } 676 | ] 677 | }, 678 | "mediaqueries4": { 679 | "maturity": "WD", 680 | "title": "Media Queries Level 4", 681 | "wgs": [ 682 | { 683 | "label": "Cascading Style Sheets (CSS) Working Group", 684 | "url": "http://www.w3.org/Style/CSS/members" 685 | } 686 | ] 687 | }, 688 | "messaging-sys": { 689 | "maturity": "Retired", 690 | "title": "Messaging API", 691 | "wgs": [ 692 | { 693 | "label": "System Applications Working Group", 694 | "url": "http://www.w3.org/2012/sysapps/" 695 | } 696 | ] 697 | }, 698 | "mobile-wcag": { 699 | "maturity": "WD", 700 | "title": "Mobile Accessibility: How WCAG 2.0 and Other W3C/WAI Guidelines Apply to Mobile", 701 | "wgs": [ 702 | { 703 | "label": "Web Content Accessibility Guidelines Working Group", 704 | "url": "http://www.w3.org/WAI/GL/" 705 | }, 706 | { 707 | "label": "User Agent Accessibility Guidelines Working Group", 708 | "url": "http://www.w3.org/WAI/UA/" 709 | } 710 | ] 711 | }, 712 | "mse": { 713 | "maturity": "CR", 714 | "title": "Media Source Extensions", 715 | "wgs": [ 716 | { 717 | "label": "HTML Working Group", 718 | "url": "http://www.w3.org/html/wg/" 719 | } 720 | ] 721 | }, 722 | "mwabp": { 723 | "maturity": "REC", 724 | "title": "Mobile Web Application Best Practices", 725 | "wgs": [ 726 | { 727 | "label": "Mobile Web Best Practices Working Group", 728 | "url": "http://www.w3.org/2005/MWI/BPWG/" 729 | } 730 | ] 731 | }, 732 | "mwbp-wcag": { 733 | "maturity": "NOTE", 734 | "title": "Relationship between Mobile Web Best Practices (MWBP) and Web Content Accessibility Guidelines (WCAG)", 735 | "wgs": [ 736 | { 737 | "label": "Mobile Web Best Practices Working Group", 738 | "url": "http://www.w3.org/2005/MWI/BPWG/" 739 | }, 740 | { 741 | "label": "Education and Outreach Working Group", 742 | "url": "http://www.w3.org/WAI/EO/" 743 | } 744 | ] 745 | }, 746 | "nav-timing": { 747 | "maturity": "REC", 748 | "title": "Navigation Timing", 749 | "wgs": [ 750 | { 751 | "label": "Web Performance Working Group", 752 | "url": "http://www.w3.org/2010/webperf/" 753 | } 754 | ] 755 | }, 756 | "networkapi": { 757 | "maturity": "Retired", 758 | "title": "The Network Information API", 759 | "wgs": [ 760 | { 761 | "label": "Device APIs Working Group", 762 | "url": "http://www.w3.org/2009/dap/" 763 | } 764 | ] 765 | }, 766 | "notification": { 767 | "maturity": "CR", 768 | "title": "Web Notifications", 769 | "wgs": [ 770 | { 771 | "label": "Web Notification Working Group", 772 | "url": "http://www.w3.org/2010/web-notifications/" 773 | } 774 | ] 775 | }, 776 | "online": { 777 | "maturity": "REC", 778 | "title": "HTML5", 779 | "wgs": [ 780 | { 781 | "label": "HTML Working Group", 782 | "url": "http://www.w3.org/html/wg/" 783 | } 784 | ] 785 | }, 786 | "p2p": { 787 | "maturity": "WD", 788 | "title": "WebRTC 1.0: Real-time Communication Between Browsers", 789 | "wgs": [ 790 | { 791 | "label": "Web Real-Time Communications Working Group", 792 | "url": "http://www.w3.org/2011/04/webrtc/" 793 | } 794 | ] 795 | }, 796 | "packaging": { 797 | "maturity": "WD", 798 | "title": "Packaging on the Web", 799 | "wgs": [ 800 | { 801 | "label": "Technical Architecture Group", 802 | "url": "http://www.w3.org/2001/tag/" 803 | }, 804 | { 805 | "label": "Web Applications Working Group", 806 | "url": "http://www.w3.org/2008/webapps/" 807 | } 808 | ] 809 | }, 810 | "perf-timeline": { 811 | "maturity": "REC", 812 | "title": "Performance Timeline", 813 | "wgs": [ 814 | { 815 | "label": "Web Performance Working Group", 816 | "url": "http://www.w3.org/2010/webperf/" 817 | } 818 | ] 819 | }, 820 | "permissions": { 821 | "maturity": "WD", 822 | "title": "The Permissions API", 823 | "wgs": [ 824 | { 825 | "label": "Web Application Security Working Group", 826 | "url": "http://www.w3.org/2011/webappsec/" 827 | } 828 | ] 829 | }, 830 | "picture": { 831 | "maturity": "WD", 832 | "title": "HTML 5.1", 833 | "wgs": [ 834 | { 835 | "label": "HTML Working Group", 836 | "url": "http://www.w3.org/html/wg/" 837 | } 838 | ] 839 | }, 840 | "pointer-events": { 841 | "maturity": "REC", 842 | "title": "Pointer Events", 843 | "wgs": [ 844 | { 845 | "label": "Pointer Events Working Group", 846 | "url": "http://www.w3.org/2012/pointerevents/" 847 | } 848 | ] 849 | }, 850 | "postmessage": { 851 | "maturity": "REC", 852 | "title": "HTML5 Web Messaging", 853 | "wgs": [ 854 | { 855 | "label": "Web Applications Working Group", 856 | "url": "http://www.w3.org/2008/webapps/" 857 | } 858 | ] 859 | }, 860 | "preload": { 861 | "maturity": "WD", 862 | "title": "Preload", 863 | "wgs": [ 864 | { 865 | "label": "Web Performance Working Group", 866 | "url": "http://www.w3.org/2010/webperf/" 867 | } 868 | ] 869 | }, 870 | "proximity": { 871 | "maturity": "WD", 872 | "title": "Proximity Events", 873 | "wgs": [ 874 | { 875 | "label": "Device APIs Working Group", 876 | "url": "http://www.w3.org/2009/dap/" 877 | } 878 | ] 879 | }, 880 | "push": { 881 | "maturity": "WD", 882 | "title": "Push API", 883 | "wgs": [ 884 | { 885 | "label": "Web Applications Working Group", 886 | "url": "http://www.w3.org/2008/webapps/" 887 | } 888 | ] 889 | }, 890 | "quota": { 891 | "maturity": "WD", 892 | "title": "Quota Management API", 893 | "wgs": [ 894 | { 895 | "label": "Web Applications Working Group", 896 | "url": "http://www.w3.org/2008/webapps/" 897 | } 898 | ] 899 | }, 900 | "recording": { 901 | "maturity": "WD", 902 | "title": "MediaStream Recording", 903 | "wgs": [ 904 | { 905 | "label": "Device APIs Working Group", 906 | "url": "http://www.w3.org/2009/dap/" 907 | }, 908 | { 909 | "label": "Web Real-Time Communications Working Group", 910 | "url": "http://www.w3.org/2011/04/webrtc/" 911 | } 912 | ] 913 | }, 914 | "res-hints": { 915 | "maturity": "WD", 916 | "title": "Resource Hints", 917 | "wgs": [ 918 | { 919 | "label": "Web Performance Working Group", 920 | "url": "http://www.w3.org/2010/webperf/" 921 | } 922 | ] 923 | }, 924 | "res-timing": { 925 | "maturity": "WD", 926 | "title": "Resource Timing", 927 | "wgs": [ 928 | { 929 | "label": "Web Performance Working Group", 930 | "url": "http://www.w3.org/2010/webperf/" 931 | } 932 | ] 933 | }, 934 | "runtime": { 935 | "maturity": "Retired", 936 | "title": "Runtime and Security Model for Web Applications", 937 | "wgs": [ 938 | { 939 | "label": "System Applications Working Group", 940 | "url": "http://www.w3.org/2012/sysapps/" 941 | } 942 | ] 943 | }, 944 | "screenlock": { 945 | "maturity": "WD", 946 | "title": "The Screen Orientation API", 947 | "wgs": [ 948 | { 949 | "label": "Web Applications Working Group", 950 | "url": "http://www.w3.org/2008/webapps/" 951 | } 952 | ] 953 | }, 954 | "secondscreen": { 955 | "maturity": "WD", 956 | "title": "Presentation API", 957 | "wgs": [ 958 | { 959 | "label": "Second Screen Presentation Working Group", 960 | "url": "http://www.w3.org/2014/secondscreen/" 961 | } 962 | ] 963 | }, 964 | "serviceworker": { 965 | "maturity": "WD", 966 | "title": "Service Workers", 967 | "wgs": [ 968 | { 969 | "label": "Web Applications Working Group", 970 | "url": "http://www.w3.org/2008/webapps/" 971 | } 972 | ] 973 | }, 974 | "smooth-scroll": { 975 | "maturity": "WD", 976 | "title": "CSSOM View Module", 977 | "wgs": [ 978 | { 979 | "label": "Cascading Style Sheets (CSS) Working Group", 980 | "url": "http://www.w3.org/Style/CSS/members" 981 | } 982 | ] 983 | }, 984 | "srcset": { 985 | "maturity": "WD", 986 | "title": "HTML 5.1", 987 | "wgs": [ 988 | { 989 | "label": "HTML Working Group", 990 | "url": "http://www.w3.org/html/wg/" 991 | } 992 | ] 993 | }, 994 | "subres-integrity": { 995 | "maturity": "WD", 996 | "title": "Subresource Integrity", 997 | "wgs": [ 998 | { 999 | "label": "Web Application Security Working Group", 1000 | "url": "http://www.w3.org/2011/webappsec/" 1001 | } 1002 | ] 1003 | }, 1004 | "svg12": { 1005 | "maturity": "REC", 1006 | "title": "Scalable Vector Graphics (SVG) 1.1 Specification", 1007 | "wgs": [ 1008 | { 1009 | "label": "SVG Working Group", 1010 | "url": "http://www.w3.org/Graphics/SVG/WG/" 1011 | } 1012 | ] 1013 | }, 1014 | "svg2": { 1015 | "maturity": "WD", 1016 | "title": "Scalable Vector Graphics (SVG) 2", 1017 | "wgs": [ 1018 | { 1019 | "label": "SVG Working Group", 1020 | "url": "http://www.w3.org/Graphics/SVG/WG/" 1021 | } 1022 | ] 1023 | }, 1024 | "task-scheduler": { 1025 | "maturity": "Retired", 1026 | "title": "Task Scheduler API Specification", 1027 | "wgs": [ 1028 | { 1029 | "label": "System Applications Working Group", 1030 | "url": "http://www.w3.org/2012/sysapps/" 1031 | } 1032 | ] 1033 | }, 1034 | "touchevent": { 1035 | "maturity": "REC", 1036 | "title": "Touch Events", 1037 | "wgs": [ 1038 | { 1039 | "label": "Web Events Working Group", 1040 | "url": "http://www.w3.org/2010/webevents/" 1041 | } 1042 | ] 1043 | }, 1044 | "user-timing": { 1045 | "maturity": "REC", 1046 | "title": "User Timing", 1047 | "wgs": [ 1048 | { 1049 | "label": "Web Performance Working Group", 1050 | "url": "http://www.w3.org/2010/webperf/" 1051 | } 1052 | ] 1053 | }, 1054 | "vibration": { 1055 | "maturity": "REC", 1056 | "title": "Vibration API", 1057 | "wgs": [ 1058 | { 1059 | "label": "Device APIs Working Group", 1060 | "url": "http://www.w3.org/2009/dap/" 1061 | } 1062 | ] 1063 | }, 1064 | "video": { 1065 | "maturity": "REC", 1066 | "title": "HTML5", 1067 | "wgs": [ 1068 | { 1069 | "label": "HTML Working Group", 1070 | "url": "http://www.w3.org/html/wg/" 1071 | } 1072 | ] 1073 | }, 1074 | "viewport-units": { 1075 | "maturity": "CR", 1076 | "title": "CSS Values and Units Module Level 3", 1077 | "wgs": [ 1078 | { 1079 | "label": "Cascading Style Sheets (CSS) Working Group", 1080 | "url": "http://www.w3.org/Style/CSS/members" 1081 | } 1082 | ] 1083 | }, 1084 | "visibilitychange": { 1085 | "maturity": "REC", 1086 | "title": "Page Visibility", 1087 | "wgs": [ 1088 | { 1089 | "label": "Web Performance Working Group", 1090 | "url": "http://www.w3.org/2010/webperf/" 1091 | } 1092 | ] 1093 | }, 1094 | "wake-lock": { 1095 | "maturity": "WD", 1096 | "title": "Wake Lock API", 1097 | "wgs": [ 1098 | { 1099 | "label": "Device APIs Working Group", 1100 | "url": "http://www.w3.org/2009/dap/" 1101 | } 1102 | ] 1103 | }, 1104 | "webanimations": { 1105 | "maturity": "WD", 1106 | "title": "Web Animations", 1107 | "wgs": [ 1108 | { 1109 | "label": "SVG Working Group", 1110 | "url": "http://www.w3.org/Graphics/SVG/WG/" 1111 | }, 1112 | { 1113 | "label": "Cascading Style Sheets (CSS) Working Group", 1114 | "url": "http://www.w3.org/Style/CSS/members" 1115 | } 1116 | ] 1117 | }, 1118 | "webaudio": { 1119 | "maturity": "WD", 1120 | "title": "Web Audio API", 1121 | "wgs": [ 1122 | { 1123 | "label": "Audio Working Group", 1124 | "url": "http://www.w3.org/2011/audio/" 1125 | } 1126 | ] 1127 | }, 1128 | "websockets": { 1129 | "maturity": "CR", 1130 | "title": "The WebSocket API", 1131 | "wgs": [ 1132 | { 1133 | "label": "Web Applications Working Group", 1134 | "url": "http://www.w3.org/2008/webapps/" 1135 | } 1136 | ] 1137 | }, 1138 | "websql": { 1139 | "maturity": "Retired", 1140 | "title": "Web SQL Database", 1141 | "wgs": [ 1142 | { 1143 | "label": "Web Applications Working Group", 1144 | "url": "http://www.w3.org/2008/webapps/" 1145 | } 1146 | ] 1147 | }, 1148 | "webstorage": { 1149 | "maturity": "REC", 1150 | "title": "Web Storage", 1151 | "wgs": [ 1152 | { 1153 | "label": "Web Applications Working Group", 1154 | "url": "http://www.w3.org/2008/webapps/" 1155 | } 1156 | ] 1157 | }, 1158 | "webworkers": { 1159 | "maturity": "CR", 1160 | "title": "Web Workers", 1161 | "wgs": [ 1162 | { 1163 | "label": "Web Applications Working Group", 1164 | "url": "http://www.w3.org/2008/webapps/" 1165 | } 1166 | ] 1167 | }, 1168 | "wi-local": { 1169 | "maturity": "Retired", 1170 | "title": "Web Intents Addendum - Local Services", 1171 | "wgs": [ 1172 | { 1173 | "label": "Device APIs Working Group", 1174 | "url": "http://www.w3.org/2009/dap/" 1175 | } 1176 | ] 1177 | }, 1178 | "woff": { 1179 | "maturity": "REC", 1180 | "title": "WOFF File Format 1.0", 1181 | "wgs": [ 1182 | { 1183 | "label": "WebFonts Working Group", 1184 | "url": "http://www.w3.org/Fonts/WG/" 1185 | } 1186 | ] 1187 | }, 1188 | "woff2": { 1189 | "maturity": "WD", 1190 | "title": "WOFF File Format 2.0", 1191 | "wgs": [ 1192 | { 1193 | "label": "WebFonts Working Group", 1194 | "url": "http://www.w3.org/Fonts/WG/" 1195 | } 1196 | ] 1197 | }, 1198 | "xhr2": { 1199 | "maturity": "WD", 1200 | "title": "XMLHttpRequest Level 1", 1201 | "wgs": [ 1202 | { 1203 | "label": "Web Applications Working Group", 1204 | "url": "http://www.w3.org/2008/webapps/" 1205 | } 1206 | ] 1207 | } 1208 | } 1209 | -------------------------------------------------------------------------------- /style.css: -------------------------------------------------------------------------------- 1 | h1, h2, h3 { font-family: "Gill Sans", Verdana, sans-serif;} 2 | 3 | body { font-family: serif;} 4 | 5 | dl.items {margin: 1em 2em;} 6 | dl.items dt {margin: 1.5em 0 0 1em;} 7 | dl.items dt a {font-weight: bold;} 8 | dl.items dd {margin: 0.5em 0 0 1em;} 9 | acronym { border-bottom: black dashed 1px } 10 | div#navigation li.current { color: white; 11 | font-weight: bold; 12 | } 13 | div#page { background-image:none; } 14 | div#page, #main { max-width:60em; margin-right:auto;margin-left:auto; } 15 | table { border-collapse:collapse;} 16 | th, td { border-left:thin solid black; border-right: thin solid black; text-align:left;} 17 | td.high { background-color:#efe;} 18 | td.medium { background-color: #ffe;} 19 | td.low { background-color: #fed;} 20 | p.figure { text-align:center; font-style:italic;} 21 | 22 | @media print { 23 | h2 { string-set: chapter-title content() } 24 | 25 | body { 26 | page: main; 27 | counter-reset: page 1 28 | } 29 | @page main:first { 30 | @top-right { content: "";} 31 | @top-left { content: "";} 32 | } 33 | @page main, rotated { 34 | @top-left { content: "Standards for Web Applications on Mobile" ;font-family: arial; font-variant: small-caps; font-size:0.8em;} 35 | @top-right { content: string(chapter-title); font-family: arial; font-variant: small-caps; font-size:0.8em;} 36 | @bottom-right { 37 | content: counter(page) "/" counter(pages); font-size:0.8em; 38 | } 39 | } 40 | body, #main, div#page { padding:0; margin:0} 41 | div#page h1 { padding: 0.3em;} 42 | object, img { max-width: 100% !important} 43 | @page rotated { size: landscape 44 | } 45 | table { page: rotated } 46 | .githubribbon { display: none;} 47 | 48 | a[href^="#"] { text-decoration: none; color: inherit;} 49 | a[href^="#"]::after { 50 | content: " (page " target-counter(attr(href), page) ")" 51 | } 52 | 53 | ol a[href^="#"] { text-decoration: none; color: inherit;} 54 | ol a[href^="#"]::after { 55 | content: leader(".") target-counter(attr(href), page); 56 | } 57 | 58 | 59 | a[href^="http"]::after { 60 | float:footnote; 61 | content: "  " attr(href); 62 | font-weight:normal; 63 | font-size:0.8em; 64 | font-family: sans-serif ; 65 | font-style:normal; 66 | color:#333; 67 | display: none; 68 | } 69 | 70 | .versions a[href^="http"] { text-decoration: none; color: inherit;} 71 | a.dupref::after, .versions a[href^="http"]::after { 72 | content: none; 73 | float: none; 74 | } 75 | 76 | a[href^="http"]::footnote-call { 77 | display:block; 78 | 79 | } 80 | 81 | @page { 82 | @footnotes { 83 | border-top: solid black thin; 84 | padding-top: 8pt 85 | } 86 | } 87 | 88 | table { width: 120%; table-layout:fixed;} 89 | } 90 | 91 | @media screen and (max-width:800px) { 92 | body { margin:0;} 93 | 94 | } 95 | 96 | li.recstage img { vertical-align:middle; display:block; float:left; margin-right:0.4em;} 97 | li.recstage:first-child { border-top:thin gray dotted;} 98 | li.recstage { list-style-type:none; border-bottom:thin gray dotted; clear:left; min-height:53px; padding:0.5em 0;} 99 | li.recstage:nth-child(even) { background-color: #f9f9f9;} 100 | 101 | #rectrack { padding-left:0;} 102 | 103 | /* for imported SVG */ 104 | /* editors activty */ 105 | text { font-size:10px; text-anchor:middle;} 106 | line { stroke: #AAF; stroke-width:5px; } 107 | text.past { fill:#FFF;} 108 | 109 | /* implementation information */ 110 | .unknown, .not { opacity: 0.3 } 111 | .partial { opacity: 0.8} 112 | text.symbol { font-size:40px;} 113 | text.versions { font-size:20px; text-anchor:start;} 114 | .logo img { vertical-align: middle;} -------------------------------------------------------------------------------- /tools/extract-spec-data.py: -------------------------------------------------------------------------------- 1 | import sys 2 | import json 3 | from urllib import urlopen 4 | from lxml import etree 5 | 6 | trs_rdf = urlopen("http://www.w3.org/2002/01/tr-automation/tr.rdf") 7 | trs = etree.parse(trs_rdf) 8 | wgs_rdf = urlopen("http://www.w3.org/2000/04/mem-news/public-groups.rdf") 9 | wgs = etree.parse(wgs_rdf) 10 | closed_wgs_rdf = urlopen("http://www.w3.org/2000/04/mem-news/closed-groups.rdf") 11 | closed_wgs = etree.parse(closed_wgs_rdf) 12 | 13 | ns = {"c":"http://www.w3.org/2000/10/swap/pim/contact#", "o":"http://www.w3.org/2001/04/roadmap/org#", "d":"http://www.w3.org/2000/10/swap/pim/doc#", "rdf":"http://www.w3.org/1999/02/22-rdf-syntax-ns#", "rec":"http://www.w3.org/2001/02pd/rec54#", "dc":"http://purl.org/dc/elements/1.1/"} 14 | 15 | data = {} 16 | 17 | maturities = ["LastCall", "WD", "CR", "PR", "REC", "Retired", "NOTE"] 18 | 19 | for filename in sys.argv[1:]: 20 | id = filename.split("/")[-1].split(".")[0] 21 | f = open(filename) 22 | feature_data = json.loads(f.read()) 23 | tr_latest = "/".join(feature_data["TR"].split("/")[:5]) 24 | if tr_latest == "": 25 | continue 26 | tr = trs.xpath("/rdf:RDF/*[d:versionOf/@rdf:resource='%s' or d:versionOf/@rdf:resource='%s/']" % (tr_latest, tr_latest),namespaces=ns) 27 | if len(tr) == 0: 28 | sys.stderr.write("%s: %s not found in tr.rdf\n" % (id, tr_latest)) 29 | continue 30 | tr = tr[0] 31 | title = tr.xpath("dc:title/text()", namespaces=ns)[0] 32 | maturity_url = tr.xpath("rdf:type/@rdf:resource",namespaces=ns) 33 | maturity_type = tr.tag.split("}")[1:][0] 34 | maturity = "" 35 | maturity_types = [] 36 | if len(maturity_url) > 0: 37 | def getType(x): return x.split('#')[1] 38 | maturity_types = map(getType , maturity_url) 39 | maturity_types.append(maturity_type) 40 | pickMaturity = (lambda x, y: x if not y in maturities or (x in maturities and maturities.index(x) < maturities.index(y)) else y) 41 | maturity = reduce(pickMaturity, maturity_types) 42 | wg_urls = tr.xpath("o:deliveredBy/c:homePage/@rdf:resource", namespaces=ns) 43 | data[id]={"wgs":[], "maturity":maturity, "title":title} 44 | for url in wg_urls: 45 | wg = {"url":url} 46 | labels = wgs.xpath("/rdf:RDF/*[c:homePage/@rdf:resource='%s']/o:name/text()" % url, namespaces=ns) 47 | if len(labels) > 0: 48 | wg["label"] = labels[0] 49 | else: 50 | labels = closed_wgs.xpath("/rdf:RDF/*[c:homePage/@rdf:resource='%s']/o:name/text()" % url, namespaces=ns) 51 | if len(labels) > 0: 52 | wg["label"] = labels[0] 53 | elif url == "http://www.w3.org/2012/sysapps/": 54 | wg["label"] = "System Applications Working Group" 55 | else: 56 | sys.stderr.write("No group with home page %s found in public-groups.rdf nor closed-groups.rdf\n" % (url)) 57 | data[id]["wgs"].append(wg) 58 | 59 | print json.dumps(data, sort_keys=True, indent=2) 60 | --------------------------------------------------------------------------------