SmartPhone Code Transition

Project Description
A team led by Gregor Wagner and Fabrice Desré conducted the analysis necessary to determine what changes should be made and the level of effort those changes would take to move us closer to being able to run on generic gecko to reduce its maintenance cost. The results of the analysis has led to the final version of the Firefox OS Code Transition Plan, and the plan has been approved to proceed with the following as its primary goal:
To transition the Firefox OS for smartphone code to reduce its maintenance cost and get it into a state where the volunteer contributor community can successfully take the lead and ownership for the future direction of the b2g for smartphone code Description
Requirements:
There were four areas analyzed for inclusion in the code transition plan (shown below with their owners):
- Packaged apps (b2g features), perhaps the most important piece (Fabrice)
- Removal of security model and wait for platform team to give us new security layer. (Paul)
- Process model - abandon ours and move to the one desktop has (Kan-Ru)
- Graphics/media (Kan-Ru)
It was decided that the focus of the transition would be on the first two of these areas. In addition, an effort has begun to reduce code duplication by merging the 2 separate system apps.
User Stories and Acceptance Criteria
Title | BUG ID | User story | Acceptance Criteria |
---|---|---|---|
[META] Firefox OS Transition work | Bug ID | [META] Firefox OS Transition work | Completion of all dependencies |
[transition] Browser: Remove reference and logos relating to Firefox | Bug ID | 1. Remove all references to Firefox OS
2. Change browser icon to not be firefox logo |
1. All references to Firefox OS removed.
2. Browser icon no longer a firefox logo |
Bootstrap the transition | Bug ID | Created attachment 8725097 [details] [diff] [review]
new-apps.patch I'm gonna land that on Pine, but here is the gecko patch for those that want to play with it. You will also need to use my Pine gaia branch: https://github.com/fabricedesre/gaia/tree/pine Steps: - build your custom gecko and push it. - push $gaia/httpd to /system/bin and start it with |httpd -h /system/b2g/apps|. This is simply a busybox server. - stop b2g, and rm -r /data/b2g, /data/local/storage, /data/local/permissions.sqlite - run $gaia/push_apps.sh push_apps.sh is very slow, so once we have done it once, you can update a single app with $gaia/push_apps.sh system.gaiamobile.org We should really push zips and unzip on device instead... |
Acceptance Criteria to be added |
Remove FTU app | Bug ID | Keeping the FTU app around and maintain it during the transition period isn't a high priority. We should move the code and tests to a separate repository so it doesn't get lost. We might want to leave the 'hooks' to create a custom FTU app in the system app but we won't maintain ours going forward. This also includes the tutorial parts.
My assumption is that users don't use any functionality since they can do everything in the settings app afterwards. The work will be done on the transition branch. Sam, can you help out here? |
Acceptance Criteria to be added |
Remove mozPay | Bug ID | The Marketplace is removing payments support [1], so we can get rid of all mozPay related code.
[1] https://wiki.mozilla.org/Marketplace#Upcoming_Changes_to_Marketplace |
Acceptance Criteria to be added |
Unknown | Bug ID | Unknown | Unknown |
Remove "improve Firefox OS" from settings | Bug ID | Remove "improve Firefox OS" from settings | No reference to Firefox OS in settings |
Rename Firefox OS to B2G OS | Bug ID | Rename - settings - device information - “about Firefox OS" - to About B2G OS - including all subtext. | "about Firefox OS" renamed to "about B2G OS" in device information under settings |
Review all legal statements under settings | Bug ID | Review content under:
a. settings - device info - your rights b. settings - device info - your privacy c. settings - device info - legal information For consistency with the new way of working. |
All legal statements reviewed and inconsistencies noted. |
Remove Firefox OS logos from startup sequence | Bug ID | Remove all logos from the device startup sequence that shows and refers to Firefox OS. | No Firefox OS logos in the device startup sequence |
Remove current location for OTA lookup | Bug ID | Remove the current location pointer for OTS search but still leave the OTA option in the settings so future possible OTA hosting services can just put their URL in there for usage. | Current location pointer for OTS search removed |
Integrate nginx | Bug ID | Following bug 1252371 we are relying on an http daemon. Let's use one with a bit more features to allow future work (https, multiple domains) | Acceptance criteria to be entered |
Build system changes for the transitioned Gaia | Bug ID | This is to prepare for a chrome:// served Gaia. Instead of packaging each app independently in an application.zip file, we will package them all together, and put the shared/ alongside the apps.
The directory tree will look like:
Compared to today's builds, we have to:
|
Acceptance criteria to be entered |
Remove the dependency on apps status in the audiochannel code | Bug ID | It should be chrome only now. See http://mxr.mozilla.org/mozilla-central/source/dom/system/gonk/AudioChannelManager.cpp#157 for a starting point of things to fix. | Acceptance criteria |
Remove the dependency on apps status in the NFC code | Bug ID | Keeping the permission is ok, but everything that is gated by AvailableIn=CertifiedApps needs to be chrome only instead.
http://mxr.mozilla.org/mozilla-central/source/dom/webidl/MozNFC.webidl#38 |
Acceptance criteria |
Remove the dependency on apps status in the Bluetooth code | Bug ID | Keeping the permission is ok, but everything that is gated by AvailableIn=CertifiedApps needs to be chrome only instead.
http://mxr.mozilla.org/mozilla-central/source/dom/webidl/BluetoothAdapter.webidl#38 |
Acceptance criteria |
Remove the dependency on apps status in the Downloads api code | Bug ID | Keeping the permission is ok, but everything that is gated by AvailableIn=CertifiedApps needs to be chrome only instead.
http://mxr.mozilla.org/mozilla-central/source/dom/webidl/Downloads.webidl#63 |
Acceptance criteria |
Remove the dependency on apps status in the RequestSync api cod | Bug ID | Keeping the permission is ok, but everything that is gated by AvailableIn=CertifiedApps needs to be chrome only instead.
http://mxr.mozilla.org/mozilla-central/source/dom/webidl/RequestSyncManager.webidl#7 |
Acceptance criteria |
Remove the dependency on apps status in the EngineeringMode api code | Bug ID | Keeping the permission is ok, but everything that is gated by AvailableIn=CertifiedApps needs to be chrome only instead.
http://mxr.mozilla.org/mozilla-central/source/dom/webidl/EngineeringMode.webidl#7 |
Acceptance Criteria |
Remove all uses of APP_STATUS_CERTIFIED and APP_STATUS_PRIVILEGED | Bug ID | On top of the webidl gated instances, there are direct use of these constants that we need to update:
APP_STATUS_CERTIFIED: http://mxr.mozilla.org/mozilla-central/search?string=APP_STATUS_CERTIFIED&find=&findi=&filter=%5E%5B%5E%5C0%5D*%24&hitlimit=&tree=mozilla-central APP_STATUS_PRIVILEGED: http://mxr.mozilla.org/mozilla-central/search?string=APP_STATUS_PRIVILEGED&find=&findi=&filter=%5E%5B%5E%5C0%5D*%24&hitlimit=&tree=mozilla-central We will fully remove dom/apps, dom/activities and dom/messages so there's no need to fix these. |
Acceptance Criteria |
Testing / Build Related Tasks | Bug ID | Meta for tracking build and test related tasks for fxos sunset program |
Program Status
Milestone | Date | Status | Status Notes |
---|---|---|---|
Develop execution plan for the code transition | 3/11/16 | On Target | Meta bug created for the entire project. Have also entered bugs for some, but not all of the major components of the work. Next, need to identify milestones and target dates for tracking the progress of the work. |
Document requirements for build and test support for re-architecture effort. | 3/11/16 | On Target | Need to identify requirements now that the code transition plan has been finalized and approved. Work breakdown will help in identifying the requirements |
Set up branch, build, and test environment. | 3/18/16 | On Target | Created a meta-bug to track the build/test work here: https://bugzil.la/1252482. Working on some MarionetteJS enhancements to support the system app merge with TV, and will enable the B2G tests on the Pine branch this week. |
Code Transition Milestones | TBD | Not Started | Development milestones will be added as milestones once they're identified. |
Status Key
Color | Status | Key |
---|---|---|
On Target | The project or deliverable is expected to meet its due date. | |
Challenged | The project or deliverable is facing an issue that might cause it to miss its due date, but a “get well” plan has been developed to get it back on track. | |
At Risk or Late | The project or deliverable is blocked or facing an issue that might cause it to miss its due date, and there’s no “get well” plan to get it back on track, or it is already late. | |
Done | The project or deliverable has been completed. | |
On Hold or Not Started | The project or deliverable has either not been started or has been placed on hold. |
Program Timeline
This timeline is simply a placeholder. Timeline to be inserted once milestones and schedule are known.
Program Stakeholders
Role | Name | IRC |
---|---|---|
Sponsor | Faramarz Rashed | faramarz |
EPM | Julie McCracken | Julie |
EM | Gregor Wagner | gwagner |
PM | Wilfred Mathanaraj | wilfred |
TL | Fabrice Desré | fabrice |
QA | Al Tsai | atsai |
- EPM = Engineering Program Manager
- EM = Engineering Manager
- PM = Product Manager
- TL = Tech Lead
- QA = Quality Assurance
Archived Completed Deliverables
Milestone | Date | Status | Status Notes |
---|---|---|---|
Gather feedback on the plan after discussion at 2/9 Engineering Program Review. | 2/12/16 | Done | 2/9 review was well attended and lots of feedback was shared in the Transition of Firefox OS Code Base Proposed Plan. 2-3 additional reviews were held via videoconf. Participation was good. |
Identify engineers to work on the code transition plan | 2/12/16 | Done | Identified engineers' names have been inserted into the plan. We've documented which components of the plan they'll each work on and for how long. |
Hold a final review of the proposed plan with the engineering team | 2/12/16 | Done | Final reviews held via email. |
Present plan at weekly Engineering Program Review | 2/16/16 | Done | Wasn't ready by the 2/16 review but plan was submitted to Faramarz 2/19 via email. |
Present plan at All Hands | 2/25/16 | Done | |
Public wiki created | 3/4/16 | Done | Public wiki (this one) has been created. Need to break down code transition work so that all milestones for eng. work can be posted, along with a schedule. Those tasks remain. |
Identify who will set up branch, build, and test environment. | 3/11/16 | Done | Team identified and has begun the work. |