WebAPI
The Mozilla WebAPI team is pushing the envelope of the web to include --- and in places exceed --- the capabilities of competing stacks.
Contributing
WebAPI work is being tracked by Mozilla bug 673923. Find an dependent bug that interests you (and is unassigned), and assign it to yourself.
APIs
Here's a list of the APIs that we're working on. Some of them are done, and some of them we haven't gotten further than acknowledge that we probably need them.
API | Bugs | Description | Progress |
---|---|---|---|
WebTelephony | bug 674726 | Allow placing and answering phone calls as well as build in-call UI. | Basic functionality done. Some work remaining |
Vibration API | bug 679966 | Control device vibration for things like haptic feedback in games. Not intended to solve things like vibration for notification. | Done on B2G and Android. Standard in progress. |
WebSMS | bug 674725 | Send/receive SMS messages as well as manage messages stored on device. | Done on Android though might not ship there for security reasons. Mostly done for B2G. |
Idle API | bug 715041 | Get notifications when user is idle. | Implementation in progress, almost done. |
Screen Orientation | bug 720794 bug 740188 bug 673922 | Get notification when screen orientation changes as well as control which screen orientation a page/app wants. | Implemented! |
Settings API | bug 678695 | Set system-wide configurations that are saved permanently on the device. | Implementation done for content, chrome in progress. |
Resource lock API | bug 697132 | Prevent resources from being turned off, for example screen dimming, WiFi turning off, CPU going into sleep mode etc. | Complete. |
Power Management API | bug 708964 | Turn on/off screen, cpu, device power, etc. Listen and inspect resource lock events. | API design and implementation in progress. |
Mobile Connection API | bug 729173 | Expose signal strength, operator, etc for GSM and other mobile connections. This does not cover WiFi. | Complete. |
TCP Socket API | bug 733573 | Low-level TCP socket API. Will also include SSL support. | Implementation in progress |
UDP Datagram Socket API | bug 745283 | Low-level UDP API. | Planning. |
Sensor API | bug 697361 | Access to device sensors such as accelerometer, magnetic field (compass), proximity, ambient light etc. | API design and implementation started. |
WiFi Information API | Enumerate available WiFi networks, get signal strength and name of currently connected network, etc. | API drafted, implementation mostly complete. | |
Device Storage API | bug 717103 | Add/Read/Modify files stored on a central location on the device. For example the "pictures" folder on modern desktop platforms or the photo storage in mobile devices. | API drafted, implementation in progress. |
USB file-reading API | ask qDot for bug | Add/Read/Modify files stored on memory cards and USB keys connected to the device. Get notified when storage devices are connected/disconnected. Will be very similar to the Device Storage API above with a few additional methods. | Muts be complete by June/July. |
Contacts API | bug 674720 | Add/Read/Modify the device contacts address book. | v1 Complete, v2 implementation in progress. |
Camera API | This is part of the larger WebRTC effort. This is a big piece of work so see the link. | API and implementation underway. | |
Peer to Peer API | This is part of the larger WebRTC effort. This is a big piece of work so see the link. | API and implementation underway. | |
Mouse Lock API | bug 633602 | Lock access to mouse and get access to movement deltas rather than coordinates. | API being standardized in W3C. Implementation complete. |
Open WebApps | bug 697006 | Install web apps and manage installed webapps. Also allows an installed webapp to get payment information. Everything needed to build a Opeb WebApps app store. | API drafted, implementation underway. |
WebNFC | bug 674741 | Low level access to NFC hardware. So far focusing on NDEF support. | API drafted, implementation underway for B2G (not Andorid/Desktop), must be complete by June/July. |
WebBluetooth | bug 674737 | Low level access to Bluetooth hardware. | API drafted, implementation underway for B2G headset only, must be complete by June/July. |
WebUSB | bug 674718 | Low level access to USB hardware. | Implementation stalled, not important for B2G yet. |
Network Information API | bug 677166 bug 713199 | Get basic information about current network connectivity. | API in W3C. Implemented on Android, not yet started on B2G. |
Battery Status API | bug 678694 | Information about battery charge level and if device is plugged in. | API in W3C. Implemented on Android, Linux, Windows, B2G. |
HTTP-cache API | Query what's stored in the browsers http-cache. Add/remove entries. Update expiration time. Get data directly from cache. | None | |
Alarm API | Schedule a notification, or for an application to be started, at a specific time. | None | |
Browser API | bug 693515 | Enables implementing a browser completely in web technologies. | Implementation in progress. |
Time/Clock API | bug 714357 | Set current time. Timezone will go in the Settings API. | None |
Calendar API | Add/Read/Modify to the device calendar. | None | |
Intents/Activities/Actions | Have a problem? This API will be able solve it. | API drafts being discussed on webapi list. | |
Device Capabilities API | Check if the device has certain capabilities, such as front-facing camera, gps, etc. | None | |
Keyboard/IME API | Enables implementing virtual keyboards. | None | |
Spellcheck API | Enable webpages to check if a piece of text is correctly spelled as well as get suggestions for corrections. | None | |
Background services | Enable a web application to run in the background and perform tasks like syncing or respond to incoming messages. | Initial proposal of API. | |
Push Notifications API | Allow the platform to send notification messages to specific applications. | None |
Process
A draft specification and prototype implementation of new Web APIs will be discussed publicly on our mailing list and at our public meetings (see below). Once we have an API that we feel that we are satisfied with, we will submit the new API for standardization to the W3C.
The goal is to standardize all APIs.
Design Principles
Security
Security will be a central aspect of all the APIs that we design. We wouldn't want any random webpage to be able to read the user's contact list, or able to issue arbitrary commands to any USB device which is hooked up to the user's computer.
In some cases the solution will be to simply ask the user, like we do today for Geolocation for example. In other cases, where security implications are scarier or where describing the risk to the user is harder, we'll have to come up with better solutions.
This is an area where we're still doing a lot of research. I really want to emphasize that we don't have all the answers yet, but that we plan on having them before we roll out these APIs to millions of users.
Low Level vs. High Level
One question that often comes up, is should we do low level APIs, like USB access, or high level APIs, like camera access?
In many cases we are going to want to do both high level and low level APIs, with an initial priority on low level. High level APIs will let us create more friendly APIs, which are both easier to use for developers, and better for users since we can provide better security guarantees. However low level APIs will provide support for a wider range of hardware and use cases and will get the browser out of the critical path for innovation.
Meetings
- Tuesday @ 10:00am Pacific Time
- Dial-in: Audio-only conference# 254
- People with Mozilla phones or softphones please dial x4000 Conf# 254
- US/Toll-free: +1 800 707 2533, (pin 4000) Conf# 254
- US/California/Mountain View: +1 650 903 0800, x4000 Conf# 254
- US/California/San Francisco: +1 415 762 5700, x4000 Conf# 254
- US/Oregon/Portland: +1 971 544 8000, x4000 Conf# 254
- CA/British Columbia/Vancouver: +1 778 785 1540, x4000 Conf# 254
- CA/Ontario/Toronto: +1 416 848 3114, x4000 Conf# 254
- UK/London: +44 (0)207 855 3000, x4000 Conf# 254
- FR/Paris: +33 1 84 88 37 37, x4000 Conf# 254
- Gmail Chat (requires Flash and the Google Talk plugin): paste +1 650 903 0800 into the Gmail Chat box that doesn't look like it accepts phone numbers
- SkypeOut is free if you use the 800 number
- No vidyo since the phone-vidyo bridge is too unreliable
- *1 to unmute yourself
- join irc.mozilla.org #webapi for back channel
Communication
Mailing-list / Newsgroup
You can subscribe to the mailing list here: https://lists.mozilla.org/listinfo/dev-webapi
And the web based API is here: http://groups.google.com/group/mozilla.dev.webapi/topics
The newsgroup lives on the news.mozilla.org server and has the name mozilla.dev.webapi
IRC
Find us on irc.mozilla.org in #webapi. Need help to use Mozilla IRC servers?
See also
- Introducing WebAPI blog post by Robert Nyman
- More details about the WebAPI effort blog post by Jonas Sicking
- Mozilla joins the W3C DAP – WebAPI progress blog post by Robert Nyman and Jonas Sicking
- A look at the latest WebAPIs a demo/blog post by John Hammink
Demos
Other efforts
- W3C Device APIs (DAP). Mozilla developers are members of the DAP working group (announcement).
- Wholesale Applications Community (WAC)
Subpages of WebAPI
- WebAPI/0-0-0
- WebAPI/2011-08-23
- WebAPI/2011-08-30
- WebAPI/2011-09-06
- WebAPI/2011-09-20
- WebAPI/2011-09-27
- WebAPI/2011-10-04
- WebAPI/2011-10-11
- WebAPI/2011-10-18
- WebAPI/2011-10-25
- WebAPI/2011-11-01
- WebAPI/2011-11-08
- WebAPI/2011-11-15
- WebAPI/2011-11-22
- WebAPI/2011-11-29
- WebAPI/2011-12-13
- WebAPI/2011-12-20
- WebAPI/2012-01-03
- WebAPI/2012-01-10
- WebAPI/2012-01-17
- WebAPI/2012-01-24
- WebAPI/2012-01-31
- WebAPI/2012-02-07
- WebAPI/2012-02-14
- WebAPI/2012-02-28
- WebAPI/2012-03-06
- WebAPI/2012-03-13
- WebAPI/2012-03-20
- WebAPI/2012-04-03
- WebAPI/2012-04-10
- WebAPI/2012-04-24
- WebAPI/2012-05-01
- WebAPI/2012-05-08
- WebAPI/2012-05-15
- WebAPI/2012-05-22
- WebAPI/2012-05-29
- WebAPI/2012-06-05
- WebAPI/2012-06-12
- WebAPI/2012-06-19
- WebAPI/2012-06-26
- WebAPI/2012-07-03
- WebAPI/2012-07-10
- WebAPI/2012-07-17
- WebAPI/2012-07-24
- WebAPI/2012-07-31
- WebAPI/2012-08-07
- WebAPI/2012-08-14
- WebAPI/2012-08-21
- WebAPI/2012-09-04
- WebAPI/2012-09-11
- WebAPI/2012-09-18
- WebAPI/2012-09-25
- WebAPI/2012-10-02
- WebAPI/2012-10-09
- WebAPI/2012-10-16
- WebAPI/2012-10-23
- WebAPI/2012-10-30
- WebAPI/2012-11-13
- WebAPI/2012-11-20
- WebAPI/2012-11-27
- WebAPI/2012-12-04
- WebAPI/2012-12-11
- WebAPI/2012-12-18
- WebAPI/2013-01-15
- WebAPI/2013-01-22
- WebAPI/2013-01-29
- WebAPI/2013-02-12
- WebAPI/2013-02-19
- WebAPI/2013-02-26
- WebAPI/2013-03-05
- WebAPI/2013-03-12
- WebAPI/2013-03-19
- WebAPI/2013-03-26
- WebAPI/2013-04-02
- WebAPI/2013-04-09
- WebAPI/2013-04-23
- WebAPI/2013-04-30
- WebAPI/2013-05-07
- WebAPI/2013-05-14
- WebAPI/2013-05-21
- WebAPI/2013-05-28
- WebAPI/2013-06-04
- WebAPI/2013-06-11
- WebAPI/2013-06-18
- WebAPI/2013-06-25
- WebAPI/2013-07-02
- WebAPI/2013-07-16
- WebAPI/2013-07-23
- WebAPI/2013-07-30
- WebAPI/2013-08-06
- WebAPI/2013-08-13
- WebAPI/2013-08-20
- WebAPI/2013-08-27
- WebAPI/2013-09-03
- WebAPI/2013-09-10
- WebAPI/2013-09-17
- WebAPI/2013-09-24
- WebAPI/2013-10-01
- WebAPI/2013-10-08
- WebAPI/2013-10-15
- WebAPI/2013-10-22
- WebAPI/2013-10-29
- WebAPI/2013-11-05
- WebAPI/2013-11-12
- WebAPI/2013-11-19
- WebAPI/2013-11-26
- WebAPI/2013-12-03
- WebAPI/2013-12-10
- WebAPI/2013-12-17-take2
- WebAPI/2014-01-07
- WebAPI/2014-01-14
- WebAPI/2014-01-21
- WebAPI/2014-02-04
- WebAPI/2014-02-11
- WebAPI/2014-02-18
- WebAPI/2014-03-04
- WebAPI/2014-03-11
- WebAPI/2014-03-18
- WebAPI/2014-03-25
- WebAPI/2014-04-01
- WebAPI/2014-04-15
- WebAPI/2014-04-18
- WebAPI/2014-04-22
- WebAPI/2014-04-29
- WebAPI/2014-05-06
- WebAPI/2014-05-20
- WebAPI/2014-05-27
- WebAPI/2014-06-10
- WebAPI/2014-06-24
- WebAPI/2014-07-22
- WebAPI/2014-08-05
- WebAPI/2014-08-12
- WebAPI/2014-09-09
- WebAPI/2014-09-30
- WebAPI/AlarmAPI
- WebAPI/AppDefinedTeleophony
- WebAPI/AppDefinedTelephony
- WebAPI/ArchiveAPI
- WebAPI/AudioChannels
- WebAPI/B2G1.0
- WebAPI/BatteryAPI
- WebAPI/BrowserAPI
- WebAPI/BrowserAPI/Common Subset
- WebAPI/BrowserAPI/KeyboardEvent
- WebAPI/CalendarAPI
- WebAPI/CameraControl
- WebAPI/ContactsAPI
- WebAPI/ContactsAPI/2012
- WebAPI/DataStore
- WebAPI/DesignGuidelines
- WebAPI/DeviceIndexedDB
- WebAPI/DeviceStorageAPI
- WebAPI/DeviceStorageAPI2
- WebAPI/Direct Billing
- WebAPI/Docs schedule
- WebAPI/FileHandleAPI
- WebAPI/IdleAPI
- WebAPI/InputMethod API with hardware keyboard
- WebAPI/InputPortAPI
- WebAPI/Inter App Communication
- WebAPI/Inter App Communication Alt proposal
- WebAPI/KeboardIME
- WebAPI/LogAPI
- WebAPI/MobileIdentity
- WebAPI/Navigator.hasFeature
- WebAPI/NetworkAPI
- WebAPI/PlannedWork
- WebAPI/PowerManagementAPI
- WebAPI/PresentationAPI
- WebAPI/PresentationAPI/Meeting Minutes 20151208
- WebAPI/PresentationAPI/ProgramManagement
- WebAPI/PresentationAPI:CoreService
- WebAPI/PresentationAPI:Protocol Draft
- WebAPI/PresentationAPI:WebIDL Implementation
- WebAPI/PresentationDeviceInfoAPI
- WebAPI/ProposedDeviceStorageAPIWithNotifications
- WebAPI/Push
- WebAPI/Push/Meetings
- WebAPI/Push/Requirements
- WebAPI/PushAPI
- WebAPI/PushAPI old
- WebAPI/ResourceLockAPI
- WebAPI/ResourceStats
- WebAPI/ScreenOrientation
- WebAPI/Security
- WebAPI/Security/Alarm
- WebAPI/Security/Background
- WebAPI/Security/Battery
- WebAPI/Security/Bluetooth
- WebAPI/Security/BrowserAPI
- WebAPI/Security/Camera
- WebAPI/Security/Contacts
- WebAPI/Security/DeviceStorage
- WebAPI/Security/FMRadioAPI
- WebAPI/Security/Geolocation
- WebAPI/Security/Idle
- WebAPI/Security/MobileConnection
- WebAPI/Security/NetworkInfo
- WebAPI/Security/NetworkInformation
- WebAPI/Security/OpenWebApp
- WebAPI/Security/PermissionsAPI
- WebAPI/Security/PowerManagement
- WebAPI/Security/ResourceLock
- WebAPI/Security/SMS
- WebAPI/Security/ScreenOrientation
- WebAPI/Security/Sensor
- WebAPI/Security/Settings
- WebAPI/Security/TCPSocket
- WebAPI/Security/Vibration
- WebAPI/Security/WebNFC
- WebAPI/Security/WebTelephony
- WebAPI/Security/WebUSB
- WebAPI/Security/Wifi
- WebAPI/Security/indexDB
- WebAPI/Security/pushNotificationsAPI
- WebAPI/SettingsAPI
- WebAPI/SimpleCellID
- WebAPI/SimplePush
- WebAPI/SimplePush/Meetings
- WebAPI/SimplePush/Meetings/2013-02-26
- WebAPI/SimplePush/Meetings/2013-02-27
- WebAPI/SimplePush/Protocol
- WebAPI/SimplePush/ServerAPI
- WebAPI/Softkey through context menu
- WebAPI/SpeakManager
- WebAPI/SpeakerManager
- WebAPI/Storage2013
- WebAPI/SystemUpdateAPI
- WebAPI/TVAPI
- WebAPI/ThoughtsOnProposals
- WebAPI/WebActivities
- WebAPI/WebActivities/LessonsLearned
- WebAPI/WebBluetooth
- WebAPI/WebBluetooth (Until Firefox OS 2.1)
- WebAPI/WebIccManager/Multi-SIM
- WebAPI/WebMMS
- WebAPI/WebMobileConnection
- WebAPI/WebMobileConnection/Multi-SIM
- WebAPI/WebMobileConnection嗎
- WebAPI/WebNFC
- WebAPI/WebNFC/WebNFCv2 draft
- WebAPI/WebPayment
- WebAPI/WebPayment/Multi-SIM
- WebAPI/WebPaymentProvider
- WebAPI/WebPrintAPI
- WebAPI/WebSMS
- WebAPI/WebSMS/Multi-SIM
- WebAPI/WebSTK
- WebAPI/WebSerial
- WebAPI/WebSocketOverApps
- WebAPI/WebTelephony
- WebAPI/WebTelephony/Multi-SIM
- WebAPI/WebUSB
- WebAPI/WebVoicemail
- WebAPI/WebVoicemail/Multi-SIM
- WebAPI/WidgetAPI
- WebAPI/XHRBatch