WebAPI/PlannedWork: Difference between revisions

From MozillaWiki
Jump to navigation Jump to search
No edit summary
 
(11 intermediate revisions by 4 users not shown)
Line 4: Line 4:
== P1 ==
== P1 ==
=== Owned ===
=== Owned ===
* Future; owners: baku, mounir and annevk, [https://bugzilla.mozilla.org/show_bug.cgi?id=839064 bug 839064]
* <s>Future</s>Promises; owners: baku, mounir and annevk, [https://bugzilla.mozilla.org/show_bug.cgi?id=839064 bug 839064]
* AudioChannel API; owners: baku and bent, [https://bugzilla.mozilla.org/show_bug.cgi?id=853101 bug 853101]
* AudioChannel API; owners: baku and bent, [https://bugzilla.mozilla.org/show_bug.cgi?id=853101 bug 853101] and {{bug|876631}}
* Storage: move appcache, cookies(?) and localStorage to centralized quota manager, owner: janv
* Storage: move appcache, cookies(?) and localStorage to centralized quota manager, owner: janv
* Storage: temporary/permanent storage for IDB, owner: janv
* Storage: temporary/permanent storage for IDB, owner: janv
* Storage: IDB in workers, owner, janv
* Storage: IDB in workers, owner, bent
* inputmode: http://lists.whatwg.org/htdig.cgi/whatwg-whatwg.org/2013-February/038914.html, owner: mounir
* inputmode: http://lists.whatwg.org/htdig.cgi/whatwg-whatwg.org/2013-February/038914.html, owner: mounir
* [http://github.com/mounirlamouri/storage.js storage.js], owner: mounir
* [https://github.com/slightlyoff/ServiceWorker/ Service Worker], owners: nsm, bkelly, baku
* [https://wiki.mozilla.org/WebAPI/KeboardIME IME/Keyboard API], owner: mounir and others (Gaia and B2G)
* <s>[https://wiki.mozilla.org/WebAPI/Inter_App_Communication Inter App Communication], owners: mounir, gene, ferjm</s>


=== Need implementer ===
=== Need implementer ===
* [https://wiki.mozilla.org/WebAPI/Inter_App_Communication Inter App Communication], design: mounir
* <s>[https://wiki.mozilla.org/WebAPI/DataStore Data Store], design: mounir, sicking and others</s>
* [https://wiki.mozilla.org/WebAPI/DataStore Data Store], design: mounir, sicking and others
* <s>Improve appcache, design: sicking</s>
* Improve appcache, design: sicking
** <s>Mozilla's proposal:  http://lists.w3.org/Archives/Public/public-webapps/2013JanMar/0977.html</s>
** Mozilla's proposal:  http://lists.w3.org/Archives/Public/public-webapps/2013JanMar/0977.html
** Google's NavigationController:  https://github.com/slightlyoff/NavigationController/
* Add a way to make the manifest file discoverable (via a manifest attribute or something similar), design: sicking, marcosc, mounir
* Add a way to make the manifest file discoverable (via a manifest attribute or something similar), design: sicking, marcosc, mounir


=== Need design ===
=== Need design ===
* Sync API (sicking), eg. keep GMail synchronized
* Sync API (sicking), eg. keep GMail synchronized
** https://github.com/slightlyoff/BackgroundSync/ ?
* System Messages on Desktop
* System Messages on Desktop
* support shared workers and background workers explicitly for things like social API (?) (dougt)
* <s>support shared workers and background workers explicitly for things like social API (?) (dougt)</s>
** support web pages and apps doing something in the background
** support web pages and apps doing something in the background - https://github.com/slightlyoff/BackgroundSync/ ?


== P2 ==
== P2 ==
Line 31: Line 30:
* Web Activities on Desktop
* Web Activities on Desktop


* Fix browser API (jlebar)
* Fix browser API (Kan-Ru (?))
** don't use iframe element
** don't use iframe element
** due to ^ can't load browser API when element is created
** due to ^ can't load browser API when element is created
Line 46: Line 45:


* Storage: Sandboxed Filesystem
* Storage: Sandboxed Filesystem
** http://w3c.github.io/filesystem-api/Overview.html


* navigator.language change event (W3C HTML Bug)
* <s>navigator.language change event (W3C HTML Bug)</s>
* API for generic LED actuators (usually camera LED, though some phones include additional ones)  


== P3 ==
== P3 ==
Line 53: Line 54:
* Battery API v2 (temperature, voltage, etc.); the real world use cases are not clear but we might need that in FxOS soon enough and we should be ready
* Battery API v2 (temperature, voltage, etc.); the real world use cases are not clear but we might need that in FxOS soon enough and we should be ready


* Fix FM Radio API (jlebar)
* Fix FM Radio API
** doesn't behave sanely with multiple windows attempting to access it
** doesn't behave sanely with multiple windows attempting to access it
** will likely require major changes
** will likely require major changes
Line 61: Line 62:


* ArchiveReader prototype in Javascript
* ArchiveReader prototype in Javascript
* Speech API
* Speech API (smaug has been involved and Andre Natal has been implementing)
* Storage: Quota API
* Storage: Quota API (janv)
* Storage: Data-moving (temp -> perm)
* Storage: Data-moving (temp -> perm) (janv, bent)
* Keyboard layouts and gaming: KeyboardEvent.code (bug 865649) and KeyboardEvent.locale (bug ???) (smaug?)
* Keyboard layouts and gaming: KeyboardEvent.code (bug 865649) and KeyboardEvent.locale (bug ???) (smaug?)


Line 74: Line 75:
* Expose audio API to Firefox Desktop Internal code
* Expose audio API to Firefox Desktop Internal code


* Build a Web API dashboard similar to chromestatus.com, see if we can integrate it with the devtools UI, and what other cool things we can do with it. (ehsan)
* Build a Web API dashboard similar to chromestatus.com
** see if we can integrate it with the devtools UI, and what other cool things we can do with it. (ehsan)
* tests
* tests
* resolving intermittent test failures
* resolving intermittent test failures
Line 81: Line 83:


== Untriaged ==
== Untriaged ==
* URL parsing
* base URLs
* find and findAll methods
** needs special subclass of JS array
* Shadow DOM (wchen is working on this)
* Fetch + Service Worker (annevk continues to work on spec and nsm, baku, and bkelly are implementing)
** lots of questions here (e.g. iframes, workers)
* <s>delayed delivery of DOMContentLoaded event</s>decided this wasn't useful
** <s>after IDB data has been loaded</s>
** <s>allows for synchronous querying of data in <script blocks</s>
** <s>Ben says this isn't related:  https://docs.google.com/document/d/1EGM9xmQXbJ_rI0IFhbnACiDaaBPTSb7T3RynwD-naJg/edit?hl=en&authkey=CO7aqZAO#</s>
* Jonas' plans around necko threadsafety (notably URI/URL)
* Web Push ({{bug|1024730}})
** SimplePush is the existing non-standard API we have now
** Web Push will be implemented by other browsers and be cross-platform
** Web Push requires Service Workers
* landing some in-process work
** Broadcast Channel ({{bug|966439}})
** MessagePort and MessageChannel ({{bug|741618}}, {{bug|911972}})
** finish Blob porting ({{bug|1047483}})
===The following came from a discussion with some Gecko and Gaia developers in May 2014===
* DataStore in workers (rewrite in C++: {{bug|990554}})
* child process support for FileHandle
** FileSystem proposal is a potential future standard that can be used here
** ex. stream into IDB, hand off fully-formed blob from IDB to download manager
*** baku says magical Blob feature Jonas wants will make this easy
* apps knowing how much memory they're using (probably a debug-only feature)
* audiochannelmanager (maybe?) feature to allow video/audio recording to be muted when a phone call or alarm happens
** setVisible is used as a workaround here right now
** make oom priority controllable by system app (on mozapp mozbrowsers)
* notification of interruption by events like phone call or pressing home button or alarm
** needs UX consideration around visibility of notifications, etc.
** having an API for an app to save its state can help here (notably in OOM situations) or perhaps some state on the visibility change event indicating why that change happened
* Passing CSS transform dimensions as typed arrays or making the current JIT faster in parsing values out of strings
* Calendar API for writing a privileged calendar app
** mozCalendar?
** some primitives like storage (can DataStore work with its onchange notifications?)
** sync
*** what features do we need for some sort of local store to easily be able to sync?
** seems like writing libraries that we can provide to apps is the best solution here
* make DataStore available to privileged apps
* media player API
** e.g. rdio on the lock screen
** Google has put forward an idea here about sending media key events
** alternative is a widget
*** but then each player (e.g. rdio *and* songza *and* spotify) has to write their own custom widget
** communication:  IAC (Inter-App Communication API)?
* A standardized share Web Activity
** see https://etherpad.mozilla.org/activities
* Figuring out what we should do for apps that want to run when the device is locked (context: activities opened from lockscreen widgets, etc.)
** deal with exposing permissions when running in locked more (we can't prompt because prompts will go under the lockscreen.)
* attention screen (not sure what was meant here)
* localization
** We should look into what fast path localization support we could add to our parser/dom code. This will be a significant project given how long we've fought with figuring out the right approach here.


* API for generic LED actuators (usually camera LED, though some phones include additional ones)
[[Category:Web APIs]]

Latest revision as of 23:54, 1 October 2014

NOTE
This is a backlog of ideas for potential future work. Nothing is committed until it lands in a release :) .

P1

Owned

Need implementer

Need design

P2

  • Web Activities on Desktop
  • Fix browser API (Kan-Ru (?))
    • don't use iframe element
    • due to ^ can't load browser API when element is created
    • may want to rewrite in C++
    • Improve security checks
    • Support "nested child processes"
  • Change <iframe mozbrowser> to <webview> (or whatever).
    • Right now the mozbrowser API doesn't get loaded until some time after the iframe is inserted into the DOM. This makes things difficult for clients who would like to be able to count on e.g. always being able to call setVisible().
    • When we make this change, we should look into converting mozbrowser into C++. Loading it currently has relatively high overhead, and we've put in a bunch of hacks to work around it.
    • If we do this, we should coordinate this HTML parser hack somehow and probably not expose it (and not reserve "webview" as a name for normal content).
  • Getting back notifications after the page has been killed. Some links: [1] [2] [3]
  • navigator.language change event (W3C HTML Bug)
  • API for generic LED actuators (usually camera LED, though some phones include additional ones)

P3

  • Battery API v2 (temperature, voltage, etc.); the real world use cases are not clear but we might need that in FxOS soon enough and we should be ready
  • Fix FM Radio API
    • doesn't behave sanely with multiple windows attempting to access it
    • will likely require major changes
  • Contacts API in desktop, related permissions situation
    • We are planning to deprecate the current Contacts API so we should make sure that we keep that into consideration
  • ArchiveReader prototype in Javascript
  • Speech API (smaug has been involved and Andre Natal has been implementing)
  • Storage: Quota API (janv)
  • Storage: Data-moving (temp -> perm) (janv, bent)
  • Keyboard layouts and gaming: KeyboardEvent.code (bug 865649) and KeyboardEvent.locale (bug ???) (smaug?)

Side track

  • integrate better with profiling tools
    • work with SPS profiler people
    • IDB performance
    • for both B2G and Firefox
  • Expose audio API to Firefox Desktop Internal code
  • Build a Web API dashboard similar to chromestatus.com
    • see if we can integrate it with the devtools UI, and what other cool things we can do with it. (ehsan)
  • tests
  • resolving intermittent test failures
  • worker-ification of existing APIs
    • make this easier

Untriaged

  • URL parsing
  • base URLs
  • find and findAll methods
    • needs special subclass of JS array
  • Shadow DOM (wchen is working on this)
  • Fetch + Service Worker (annevk continues to work on spec and nsm, baku, and bkelly are implementing)
    • lots of questions here (e.g. iframes, workers)
  • delayed delivery of DOMContentLoaded eventdecided this wasn't useful
  • Jonas' plans around necko threadsafety (notably URI/URL)
  • Web Push (bug 1024730)
    • SimplePush is the existing non-standard API we have now
    • Web Push will be implemented by other browsers and be cross-platform
    • Web Push requires Service Workers
  • landing some in-process work

The following came from a discussion with some Gecko and Gaia developers in May 2014

  • DataStore in workers (rewrite in C++: bug 990554)
  • child process support for FileHandle
    • FileSystem proposal is a potential future standard that can be used here
    • ex. stream into IDB, hand off fully-formed blob from IDB to download manager
      • baku says magical Blob feature Jonas wants will make this easy
  • apps knowing how much memory they're using (probably a debug-only feature)
  • audiochannelmanager (maybe?) feature to allow video/audio recording to be muted when a phone call or alarm happens
    • setVisible is used as a workaround here right now
    • make oom priority controllable by system app (on mozapp mozbrowsers)
  • notification of interruption by events like phone call or pressing home button or alarm
    • needs UX consideration around visibility of notifications, etc.
    • having an API for an app to save its state can help here (notably in OOM situations) or perhaps some state on the visibility change event indicating why that change happened
  • Passing CSS transform dimensions as typed arrays or making the current JIT faster in parsing values out of strings
  • Calendar API for writing a privileged calendar app
    • mozCalendar?
    • some primitives like storage (can DataStore work with its onchange notifications?)
    • sync
      • what features do we need for some sort of local store to easily be able to sync?
    • seems like writing libraries that we can provide to apps is the best solution here
  • make DataStore available to privileged apps
  • media player API
    • e.g. rdio on the lock screen
    • Google has put forward an idea here about sending media key events
    • alternative is a widget
      • but then each player (e.g. rdio *and* songza *and* spotify) has to write their own custom widget
    • communication: IAC (Inter-App Communication API)?
  • A standardized share Web Activity
  • Figuring out what we should do for apps that want to run when the device is locked (context: activities opened from lockscreen widgets, etc.)
    • deal with exposing permissions when running in locked more (we can't prompt because prompts will go under the lockscreen.)
  • attention screen (not sure what was meant here)
  • localization
    • We should look into what fast path localization support we could add to our parser/dom code. This will be a significant project given how long we've fought with figuring out the right approach here.