Firefox OS/spark: Difference between revisions

m
Redirect
mNo edit summary
m (Redirect)
 
Line 1: Line 1:
='''Overview'''=
#REDIRECT [[Firefox OS/Spark]]
==Why?==
 
The mobile ecosystem is in danger of becoming a set of completely walled gardens. The two biggest OS’s in mobile right now are iOS and Android, neither of which is really “open” in any sense of the word. Firefox OS is meant to stand against these and bring the web and web technologies to mobile, but so far, it hasn’t captured the hearts of developers.
 
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.
 
What’s lacking in Firefox OS is leveraging of these advantages. Developer tools for Firefox OS and web apps in general leave much to be desired, which have contributed to a generally weak ecosystem.
 
==Enter, Spark==
 
“Project Spark” is a set of tools, customizations, and features built on top of Firefox OS v3. It is a subset of the “Ignite” initiative, intended to empower users to customize their experience, hack whatever they want to, and make their devices truly theirs. It can be seen as analogous to Firefox desktop’s “Developer Edition”, except that it has many more new features and apps, and isn’t just a reskin. The intention is that we will leverage web technologies for realtime 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.
 
==Teasers, Examples==
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.
* Make Firefox OS more webby; take advantage of things that only the web platform can do, instead of trying to copy Android/iOS.
 
==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.
* “Firefox Hello”, a WebRTC client for making calls with other users, including those on desktop. Doesn’t require a SIM or data plan.
* “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.
* A “Foxfooding” app, with news and updates on the foxfooding program, feedback we’ve received, and issues that we’re dealing with.
* All system-level apps, such as the Dialer, Messages, Contacts, etc. apps are replaceable.
* All app permissions are unlocked with developer mode enabled.
* 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.
* MozVR demos and news. More Mozilla initiatives may be coming.
* WebGL mobile games.
* Built-in IRC client.
* Branding enabled by default.
* Cool new default theme and wallpaper.
 
==Priorities==
Spark takes priority over everything except for blockers for impending releases, e.g. v2.2.. Since Spark has well-defined milestones and a device launch, it requires focus. Spark is not a prototype, nor is it in ideation stages. Work on it should be viewed as being as important as any dogfooding program.
 
==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 v1 release, and then follow that up with a Spark v2 release which is not well-defined right now.
 
===Dates===
See the [[Release_Management/B2G_Landing#Versions_and_Scheduling|B2G Landing wiki page]] for more info on milestones.
 
[[File:Screen Shot 2015-04-28 at 2.55.32 PM.png]]
 
==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 “[https://github.com/fxos fxos]” organization. See each of their sections for more details.
* We are making heavy use of web components from the “[https://github.com/gaia-components 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 dogfooders to find, report, and perhaps even fix issues.
 
='''Bugs'''=
 
=='''Blockers'''==
 
===Spark Blockers===
 
<bugzilla>
    {
        "cf_blocking_b2g":"spark+",
        "include_fields": "id, summary, target_milestone, component, status, resolution, assigned_to, depends_on, blocks, whiteboard, cf_blocking_b2g, last_change_time" 
    }
</bugzilla>
 
===Spark Nominations===
 
<bugzilla>
    {
        "cf_blocking_b2g":"spark?",
        "include_fields": "id, summary, target_milestone, component, status, resolution, assigned_to, depends_on, blocks, whiteboard, cf_blocking_b2g, last_change_time" 
    }
</bugzilla>
 
=='''All Features'''==
 
===Spark V1 - Essential Features List===
 
<bugzilla>
    {
        "whiteboard":"spark",
        "whiteboard_type":"contains",
        "priority":"P1",
        "include_fields": "id, summary, status, resolution, component, assigned_to, depends_on, blocks, whiteboard, cf_feature_b2g, cf_blocking_b2g"
    }
</bugzilla>
 
===Spark P2 - Nice To Haves===
 
<bugzilla>
    {
        "whiteboard":"spark",
        "whiteboard_type":"contains",
        "priority":"P2",
        "include_fields": "id, summary, status, resolution, component, assigned_to, depends_on, blocks, whiteboard, cf_feature_b2g, cf_blocking_b2g"
    }
</bugzilla>
 
=='''Major Apps'''==
 
===Theme Editor V1===
* Custom app for editing, applying, and sharing themes.
* [https://github.com/fxos/studio App Repo]
* [https://bugzilla.mozilla.org/show_bug.cgi?id=1133768 V1 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>
    {
        "blocks":["1133768"],
        "priority":"P1",
        "include_fields": "id, summary, status, resolution, component, assigned_to, depends_on, blocks, whiteboard"
    }
</bugzilla>
 
===Customizer V1===
* Custom app for editing other apps.
* [https://github.com/fxos/customizer App Repo]
* [https://bugzilla.mozilla.org/show_bug.cgi?id=1133943 V1 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>
    {
        "blocks":["1133943"],
        "priority":"P1",
        "include_fields": "id, summary, status, resolution, component, assigned_to, depends_on, blocks, whiteboard"
    }
</bugzilla>
 
===Hackerplace V1===
* Custom app for downloading specialized Ignite replaceable apps and add-ons.
* [https://github.com/fxos/directory/ App Repo]
* [https://bugzilla.mozilla.org/show_bug.cgi?id=1133975 V1 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>
    {
        "blocks":["1133975"],
        "priority":"P1",
        "include_fields": "id, summary, status, resolution, component, assigned_to, depends_on, blocks, whiteboard"
    }
</bugzilla>
 
===P2P Sharing V1===
* Custom app for sharing apps, add-ons and themes to people located nearby.
* [https://github.com/fxos/sharing App Repo]
* [https://bugzilla.mozilla.org/show_bug.cgi?id=1133984 V1 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>
    {
        "blocks":["1133984"],
        "priority":"P1",
        "include_fields": "id, summary, status, resolution, component, assigned_to, depends_on, blocks, whiteboard"
    }
</bugzilla>
 
=='''Minor Apps'''==
 
===Add-On Manager V1===
* 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]
* [https://bugzilla.mozilla.org/show_bug.cgi?id=1133990 V1 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>
    {
        "blocks":["1133990"],
        "priority":"P1",
        "include_fields": "id, summary, status, resolution, component, assigned_to, depends_on, blocks, whiteboard"
    }
</bugzilla>
 
===Bugzilla Lite V1===
* Custom app for reporting foxfooding bugs.
* [https://bugzilla.mozilla.org/show_bug.cgi?id=1134701 V1 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>
    {
        "blocks":["1134701"],
        "include_fields": "id, summary, status, resolution, component, assigned_to, depends_on, blocks, whiteboard"
    }
</bugzilla>
 
===Foxfooding App V1===
* Custom app for viewing information about the Foxfooding program.
* [https://bugzilla.mozilla.org/show_bug.cgi?id=1155938 V1 Foxfooding App Meta]
* Component: Gaia::Foxfooding
* Owner: Hubert Figuière (:hub)
 
<bugzilla>
    {
        "blocks":["1155938"],
        "include_fields": "id, summary, status, resolution, component, assigned_to, depends_on, blocks, whiteboard"
    }
</bugzilla>
 
===Customizer Launcher V1===
* Launcher for the Customizer add-on.
* [https://bugzilla.mozilla.org/show_bug.cgi?id=1160235 V1 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>
    {
        "blocks":["1160235"],
        "include_fields": "id, summary, status, resolution, component, assigned_to, depends_on, blocks, whiteboard"
    }
</bugzilla>
 
===Achievements V1===
* Achievements system to reward the user for completing fun and useful tasks.
* [https://bugzilla.mozilla.org/show_bug.cgi?id=1156786 V1 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>
    {
        "blocks":["1156786"],
        "include_fields": "id, summary, status, resolution, component, assigned_to, depends_on, blocks, whiteboard"
    }
</bugzilla>
 
=='''Supporting Efforts'''==
 
===Aries Device Issues===
* Assignees: Alexandre Lissy (:gerard-majax)
<bugzilla>
    {
        "blocks":["1162197"],
        "include_fields": "id, summary, status, resolution, component, assigned_to, depends_on, blocks, whiteboard"
    }
</bugzilla>
 
===Gaia Build===
* Assignees: Dale Harvey (:daleharvey), Doug Sherk (:drs)
<bugzilla>
    {
        "blocks":["1162181"],
        "priority":"P1",
        "include_fields": "id, summary, status, resolution, component, assigned_to, depends_on, blocks, whiteboard"
    }
</bugzilla>
 
===Platform - Add-ons===
* Assignees: Fabrice Desré
<bugzilla>
    {
        "blocks":["1162200"],
        "priority":"P1",
        "include_fields": "id, summary, status, resolution, component, assigned_to, depends_on, blocks, whiteboard"
    }
</bugzilla>
 
===OTA Updates===
* Assignees: Wander Costa (:wcosta)
<bugzilla>
    {
        "blocks":["1162203"],
        "priority":"P1",
        "include_fields": "id, summary, status, resolution, component, assigned_to, depends_on, blocks, whiteboard"
    }
</bugzilla>
 
===720p UI Polish===
* All bugs related to UI polish for 720p+ screens.
* [https://bugzilla.mozilla.org/show_bug.cgi?id=1158985 Spark 720p Polish Meta]
 
<bugzilla>
    {
        "blocks":["1158985"],
        "include_fields": "id, summary, status, resolution, component, assigned_to, depends_on, blocks, whiteboard"
    }
</bugzilla>
 
===Metrics===
* Tracking bug for supporting work from the Metrics team to track success of the foxfooding program.
* [https://bugzilla.mozilla.org/show_bug.cgi?id=1161650 Spark Metrics Meta]
* Assignees: Tamara Hills (:thills)
 
<bugzilla>
    {
        "blocks":["1161650"],
        "include_fields": "id, summary, status, resolution, component, assigned_to, depends_on, blocks, whiteboard"
    }
</bugzilla>
 
===WebIDE Improvements===
* Owner: Alex Poirot (:ochameau)
<bugzilla>
    {
        "blocks":["1157889"],
        "priority":"P1",
        "include_fields": "id, summary, status, resolution, component, assigned_to, depends_on, blocks, whiteboard"
    }
</bugzilla>
 
===New Flashing Tool - TBD===
* Universal flashing tool that will have a simplistic UX for anyone to easily flash their device with a FxOS build.
* Bugs to be created soon
* Owner: Alexandre Lissy (:gerard-majax)
* Peers: Fabrice Desré (:fabrice)
 
This will likely be descoped from Spark.
Confirmed users
525

edits