Firefox OS/Spark/v0.1
README
This document contains all public information about Spark v0.1. More information is available from these sources:
- Spark NDA Information: There's very little here, don't worry. We're working to make this public, but we can't yet.
- Spark Foxfooding Guide: Guide for foxfooders.
- Spark Standup Logs: Our daily standup notes.
There is no longer any document for Spark v2, as it is not scoped yet, but more information will be available soon.
Contacts
Have a question, comment, or suggestion that isn't covered anywhere else?
If you'd like to contact someone directly, the following people can either help you, or get you in contact with whomever you're seeking:
Overview
Why?
As mobile platforms move closer to a strict "walled garden" ecosystem, Firefox OS strives to stand against this trend by bringing the open web to mobile.
There are several key advantages to the web. It is portable and standards-driven, thus it can run anywhere with the same experience. It is ubiquitous, thus there are many websites that already work on it, and almost every organization has a web presence already. It is open, thus anyone can publish to it.
Enter, Spark
Spark is a set of tools, customizations, and features built on top of the next generation of the Firefox OS platform and is a subset of the Ignite initiative. Spark is intended to empower users to customize their experience, hack whatever they want to, and make their devices truly theirs. The intention is that we will leverage web technologies for real-time hacking, as other platforms rely on native binaries that are difficult to edit once compiled. Sharing web apps and hacks is also easier as they are more portable and standards-driven.
We plan to iterate rapidly on the Spark feature set. The first release is just a set of basic building blocks and a framework that we can then build upon.
Imagine that you want a button in your Dialer that says “Call Mom”, and does exactly as you would think. Using tools from Spark, you could do any or all of:
- Open on-device developer tools to script your own new button that gets added to the app every time you open it.
- Open the app in WebIDE and make your changes there.
- Download a new Dialer app off of Hackerplace which does what you want, and replaces the existing app.
- Share the new app, or customization, to people nearby using the Sharing app, or by submitting it to Hackerplace.
- Use the Theme Editor app to change app themes, so that the rest of the Dialer fits in with the color that you want the “Call Mom” button to be.
High-level Goals
Primary
- Inspire Mozillians to create new cool things, and “foxfood” (our term for dogfooding).
- Make development and hacking first-class citizens in Firefox OS.
- Provide users with tools for sharing and discovering customizations.
Secondary
- Get novice users interested in hacking and customizing their devices.
- Take advantage of things that only the web platform can do.
Features
Spark either already has, or will have, the following features:
- Add-on support. This allows injection of JS and CSS files into any app. An add-on manager is included in the Settings app.
- “Customizer”, a tool that can be summoned in any app using a two finger gesture or launcher app, similar to desktop Dev Tools, but with better controls for mobile. This can be used to learn about apps, change them, and save your changes so that the app is however you want it from that point on.
- The Customizer can be used to create an entire app from scratch, should you so desire.
- It comes with templates that you can start your work on, and widgets that you can embed into your apps.
- “Hackerplace”, a marketplace for more experimental apps and add-ons that have not yet been approved for Marketplace. It focuses on cool hacks that community members have built, and replaceable apps.
- “P2P Sharing”, an app for quickly discovering people nearby, and sharing apps, add-ons, and themes with them via WiFi and WiFi Direct.
- “Theme Editor”, an app for managing your device themes, i.e. changing text, background, and component colors across the device.
- “Bugzilla Lite”, a lighter version of Bugzilla bundled into the build. This is used for reporting foxfooding bugs and getting updates on their status.
- “Achievements”, a system for rewarding users for completing developer-related tasks and experimenting.
- “BuddyUp”, a service for asking questions and getting answers from community members. You can also be on the other side, and answer questions for users.
- "Webmaker" an app that make it easy to create things on the web, i.e make your own web pages, interactive videos, remixes, mobile apps and more—learning web mechanics, code and other valuable skills as you go.
- All system-level apps, such as the Dialer, Messages, Contacts, etc. apps are replaceable.
- All app permissions are unlocked with developer mode enabled.
- Productivity apps such as Notes, Calculator and Calendar.
- Improvements to WebIDE, including the ability to debug over WiFi, create and edit add-ons.
- Automatic OTA (over-the-air) updates straight from Mozilla.
- Achievements for accomplishments, such as creating your first customization, publishing it on Hackerplace, etc.
- Bundled social apps, including Twitter, Facebook, Yammer, and others to be announced.
- Built-in IRC client.
- Branding enabled by default.
- Cool new default theme and wallpaper.
Milestones
Spark will follow a release pattern similar to the one that Firefox OS currently uses. It will be comprised of:
- Feature landing. The step where features are built and are not necessarily stable enough to go into production yet.
- All new apps built for Spark should have their features complete by the end of this phase.
- Any bundled apps and customizations should be included by the end of this phase.
- Feature complete. At the end of this stage, the build should be completely stable, and ready for release.
- No new apps, bundled or otherwise, are accepted in this phase.
- Code complete. During this stage, only critical and essential fixes are accepted. The release should be completely done.
We will begin with a Spark v0.1 release, and then follow that up with Spark v0.2, v0.3, etc. iterative releases which are not well-defined right now.
Dates
See the B2G Landing wiki page for more info on milestones.
Technical Strategy
Repos
Development is currently taking place in a variety of places:
- The new custom apps, Customizer, Hackerplace, Sharing, and Theme Editor, are all in separate repos on GitHub under the “fxos” organization. See each of their sections for more details.
- We are making heavy use of web components from the “gaia-components” GitHub organization.
Localization and Automated Testing
Currently, the new Spark features and apps lack localization and any automated testing at all. We are relying heavily on foxfooders to find, report, and perhaps even fix issues.
Call for Contributors
We'd love to have you contribute! If you're interested, we need help in the following areas:
- Testing. Our QA team needs your help finding bugs. You can install Spark onto your Firefox OS device and foxfood it. Finding and reporting bugs is tremendously valuable to us.
- Development. You can find any bug in the #Bugs section and take it. We'd be happy to mentor you.
- Ideas. Have you got a cool idea for how we can use the web to empower developers and users? We'd love to hear from you! You can post publicly in any Mozilla forum, or see the #Contacts section to contact someone directly with your idea.
Bugs
Blockers
Spark Blockers
Bugzilla query error
Array ( [type] => error [message] => http-bad-status [params] => Array ( [0] => 403 [1] => Forbidden ) ) 1
Spark Nominations
Bugzilla query error
Array ( [type] => error [message] => http-bad-status [params] => Array ( [0] => 403 [1] => Forbidden ) ) 1
All Features
Spark v0.1 - Essential Features List
Bugzilla query error
Array ( [type] => error [message] => http-bad-status [params] => Array ( [0] => 403 [1] => Forbidden ) ) 1
Spark P2 - Nice To Haves
Bugzilla query error
Array ( [type] => error [message] => http-bad-status [params] => Array ( [0] => 403 [1] => Forbidden ) ) 1
Major Apps
Theme Editor v0.1
- Custom app for editing, applying, and sharing themes.
- App Repo
- v0.1 Theme Editor Meta
- Component: Gaia::Theme Editor
- Owner: Etienne Segonzac (:etienne_s)
- Peers: Fabrice Desré (:fabrice), Hubert Figuière (:hub)
The Theme Editor app is the entry point for regular phone users looking to customize their experience, and/or take baby steps towards hacking.
Bugzilla query error
Array ( [type] => error [message] => http-bad-status [params] => Array ( [0] => 403 [1] => Forbidden ) ) 1
Customizer v0.1
- Custom app for editing other apps.
- App Repo
- v0.1 Customizer Meta
- Component: Gaia::Customizer
- Owner: Justin D'Arcangelo (:justindarc)
- Peers: Doug Sherk (:drs)
The Customizer is a suite of developer tools that can be opened in any app, for inspecting and making changes to content. It allows saving these changes so that they are persisted when apps restart.
The Customizer is an add-on which is injected to every app on load. It loads only a stub, which watches for the open gesture (2 fingers from bottom of screen to middle). Once it detects the gesture, it lazy-loads the rest of the Customizer code and opens the tool panel.
When a change is made and saved, another add-on is created by the Customizer, which targets only the edited app.
Bugzilla query error
Array ( [type] => error [message] => http-bad-status [params] => Array ( [0] => 403 [1] => Forbidden ) ) 1
Hackerplace v0.1
- Custom app for downloading specialized Ignite replaceable apps and add-ons.
- App Repo
- v0.1 Hackerplace Meta
- Component: Gaia::Hackerplace
- Owner: Mike Henretty (:mhenretty)
- Peers: Doug Sherk (:drs)
Hackerplace is a simpler version of the Firefox Marketplace. It contains experimental new apps and add-ons, as well as replaceable versions of some of the stock apps, such as the Dialer and Camera apps.
Users can submit new apps and add-ons to Hackerplace using GitHub pull requests, which the app contains a link to.
Bugzilla query error
Array ( [type] => error [message] => http-bad-status [params] => Array ( [0] => 403 [1] => Forbidden ) ) 1
P2P Sharing v0.1
- Custom app for sharing apps, add-ons and themes to people located nearby.
- App Repo
- v0.1 P2P Sharing Meta
- Component: Gaia::P2P Sharing
- Owner: Doug Sherk (:drs)
- Peers: Justin D'Arcangelo (:justindarc)
The Sharing app allows users to share apps, add-ons, and themes to others who are in the area. It discovers peers using the connected WiFi network, as well as ad-hoc WiFi Direct connections in the area.
Bugzilla query error
Array ( [type] => error [message] => http-bad-status [params] => Array ( [0] => 403 [1] => Forbidden ) ) 1
Minor Apps
Add-On Manager v0.1
- Custom extension to Settings app for enabling/disabling, viewing, and uninstalling add-ons.
- https://github.com/mozilla-b2g/gaia/tree/lightsaber/apps/settings Lives in “lightsaber” Gaia branch Settings app]
- v0.1 Add-On Manager Meta
- Owners/Peers: Refer to owners/peers of the Settings module.
- Assignees for this feature: Yura Zenevich (:yzen), Arthur Chen (:arthurcc), David Flanagan (:djf)
Bugzilla query error
Array ( [type] => error [message] => http-bad-status [params] => Array ( [0] => 403 [1] => Forbidden ) ) 1
Bugzilla Lite v0.1
- Custom app for reporting foxfooding bugs.
- v0.1 Bugzilla Lite Meta
- Component: Gaia::Bugzilla Lite
- Owner: Dale Harvey (:daleharvey)
- Peers: Doug Sherk (:drs)
Bugzilla Lite is a replacement front-end for Bugzilla, intended to be used for filing bugs on mobile devices.
Bugzilla query error
Array ( [type] => error [message] => http-bad-status [params] => Array ( [0] => 403 [1] => Forbidden ) ) 1
Foxfooding App v0.1
- Custom app for viewing information about the Foxfooding program.
- v0.1 Foxfooding App Meta
- Component: Gaia::Foxfooding
- Owner: Hubert Figuière (:hub)
Bugzilla query error
Array ( [type] => error [message] => http-bad-status [params] => Array ( [0] => 403 [1] => Forbidden ) ) 1
Customizer Launcher v0.1
- Launcher for the Customizer add-on.
- v0.1 Customizer Launcher Meta
- Owner: Punam Dahiya (:pdahiya)
- Peers: Justin D'Arcangelo (:justindarc)
The Customizer is not very discoverable right now, so to make it more visible, we will build a launcher app for it. This will appear on the Homescreen as a “Customizer” app.
Bugzilla query error
Array ( [type] => error [message] => http-bad-status [params] => Array ( [0] => 403 [1] => Forbidden ) ) 1
Achievements v0.1
- Achievements system to reward the user for completing fun and useful tasks.
- v0.1 Achievements Meta
- Owner: Yura Zenevich (:yzen)
Hacking and customizing your device should feel rewarding. But these rewards shouldn’t get in the way of experienced developers. Thus, we introduce Achievements.
Achievements will be rewarded when the user either follows a path that we want them to experience at least once, or accomplish something meaningful. When an achievement is awarded to the user, a notification will appear at the top of the screen, with an icon, title, and description.
An advantage of achievements is that they allow us to gently guide users into our new apps and add-ons, by rewarding them when they try new things, but without punishing them if they don’t. They will be non-intrusive, as they will be granted only once, and only when performing “fun” things like creating an add-on. Monotonous and common tasks like placing a phone call will be unaffected.
Bugzilla query error
Array ( [type] => error [message] => http-bad-status [params] => Array ( [0] => 403 [1] => Forbidden ) ) 1
Supporting Efforts
Aries Device Issues
- Assignees: Alexandre Lissy (:gerard-majax)
Bugzilla query error
Array ( [type] => error [message] => http-bad-status [params] => Array ( [0] => 403 [1] => Forbidden ) ) 1
Gaia Build
- Assignees: Dale Harvey (:daleharvey), Doug Sherk (:drs)
Bugzilla query error
Array ( [type] => error [message] => http-bad-status [params] => Array ( [0] => 403 [1] => Forbidden ) ) 1
Platform - Add-ons
- Assignees: Fabrice Desré
Bugzilla query error
Array ( [type] => error [message] => http-bad-status [params] => Array ( [0] => 403 [1] => Forbidden ) ) 1
OTA Updates
- Assignees: Wander Costa (:wcosta)
Bugzilla query error
Array ( [type] => error [message] => http-bad-status [params] => Array ( [0] => 403 [1] => Forbidden ) ) 1
720p UI Polish
- All bugs related to UI polish for 720p+ screens.
- Spark 720p Polish Meta
Bugzilla query error
Array ( [type] => error [message] => http-bad-status [params] => Array ( [0] => 403 [1] => Forbidden ) ) 1
Metrics
- Tracking bug for supporting work from the Metrics team to track success of the foxfooding program.
- Spark Metrics Meta
- Assignees: Tamara Hills (:thills)
Bugzilla query error
Array ( [type] => error [message] => http-bad-status [params] => Array ( [0] => 403 [1] => Forbidden ) ) 1
WebIDE Improvements
- Owner: Alex Poirot (:ochameau)
Bugzilla query error
Array ( [type] => error [message] => http-bad-status [params] => Array ( [0] => 403 [1] => Forbidden ) ) 1
New Flashing Tool - TBD
- Universal flashing tool that will have a simplistic UX for anyone to easily flash their device with a FxOS build.
- Owner: Alexandre Lissy (:gerard-majax)
- Peers: Fabrice Desré (:fabrice)
This will likely be descoped from Spark.
Bugzilla query error
Array ( [type] => error [message] => http-bad-status [params] => Array ( [0] => 403 [1] => Forbidden ) ) 1
Developer Mode
- Toggleable relaxed permissions model for more interesting app and feature possibilities. Set using WebIDE and/or the Settings app.
- Owner: Fabrice Desré (:fabrice)
- Support: Paul Theriault (:pauljt), Frederic Braun (:freddyb), Alex Poirot (:ochameau)
Bugzilla query error
Array ( [type] => error [message] => http-bad-status [params] => Array ( [0] => 403 [1] => Forbidden ) ) 1
Developers
As part of Spark, developers will now have access to several new API's and features.
Add-ons
More information is available in the Firefox OS Add-ons article on MDN.
Add-ons can now be created, which target an app or set of apps. When enabled, add-ons inject JavaScript and CSS into a targeted app, allowing the add-on some degree of control over the app. Add-ons are stored just like any other app, but they can't be run stand-alone, and don't show up on the Homescreen.
Developer Mode
More information is available in the Developer Mode article on MDN.
One of our goals in Spark is to open the door to greater customization and hacking. The current Firefox OS permissions model precludes modification and installation of certified apps, which makes some device API's completely unavailable to Marketplace and web apps.
The solution for now is to allow the user to indicate that they'd like to relax the permissions model through a "Developer Mode" group of preferences. This can be set using either the Settings app, or WebIDE.
Once set, the user receives the following benefits:
- Apps can create add-ons for themselves using the "import-app" activity.
- Certified apps can be installed from anywhere.
- All developer-related prefs and settings are enabled, such as certified app debugging, web components, etc.