AMO/FlightDeck/Roadmap

From MozillaWiki
Jump to: navigation, search

APP HARDENING

Refactor client-side code and the related server-side pieces that support it


Summary Details Difficulty
Retrofit the site’s JS code with client-side MVC model The JavaScript needs a major refactoring and integration of a cleaner JS MVC system. HARD
Revision queue for editor actions Create a back-end mechanism that organizes and executes revisions in the proper order, regardless of how or when various async, revision-creating events finish processing. HARD
Refactor and clean-up CSS The CSS across the site is redundant and sub-optimal. We will refactor and slim down all the style sheets that need it. MEDIUM
Increase page load performance Minify and gzip all assets, integrate a legit dependency system in FlightDeck. EASY
Package build speed optimization Look into both software and hardware options for decreasing build times and increasing stability of the service. UNKNOWN
Update ACE editor to latest stable version Update the ACE editor and ensure that it recognizes and correctly handles debugging suggestions for the advanced ES5 keywords and methods found in Firefox. MEDIUM


ADVANCED SEARCH

Provide advanced search facets/filters and better fuzzy search


Summary Details Difficulty
Add advanced facets/filters FlightDeck search should allow for more advanced facets and filters that allow developers a more convenient way to find the result set they are looking for.
   filter: author/owner
   filter: dependencies
   facet: number of forks
   facet: most active (recency of last update in ratio to # of total commits divided by age)
   facet: size of the add-on/library
   facet: number of dependencies
MEDIUM
Enhance fuzzy search The full-text search should be augmented to allow for fuzzy search in the same vein as other full-text search engines like Solr. UNKNOWN
Develop a system for elevating user libraries We need to analyze and discuss the best way to expose well made user libraries to the community. Will this be a search-based solution, some kind of repository that is managed, or something else that we haven’t considered? UNKNOWN


AMO INTEGRATION

Make it easy for developers to use/view AMO features from the Builder


Summary Details Difficulty
Ability to push add-ons to AMO FlightDeck should allow developers to push their add-ons to AMO with any associated meta data pre-populated. HARD
Provide AMO status messages FlightDeck should sync messages from AMO that let the developer know at what stage in the add-on life-cycle a given add-on is at. MEDIUM
Share AMO sessions via OAuth FlightDeck should use AMO’s OAuth service to share sessions, thus eliminating the need for the user to login multiple places with the same credentials. HARD


EDITOR ENHANCEMENTS

Augment the editor in the Builder with new add-on specific development features


Summary Details Difficulty
Code completion for official API modules Code completion should be added for all the add-on kit and api-utils modules. This shall include object and method completion for any public objects/functions provided by the module. MEDIUM
Code completion for third-party libraries Code completion should be extended to support third-party. It should be aware of when a library has been introduced into the environment with the require() statement and load the associated completion data into ACE. HARD
Code completion for require() calls Code completion will be offered for all modules accessible via require(). This feature will be context dependent.
  • EXAMPLE: If Library A is packaged with Modules B and C, the require() string values for Modules B and C should show up in code completion when the developer user types “require(“ into the ACE editor.
MEDIUM
API Stubs Create a UI that allows developers to auto-populate stubs for APIs to the editor that add appropriate code templates and files for the API in question. Comments should optionally be included within the skeleton to describe the various parts of the code and what developers need to input in the unpopulated areas. HARD


VERSION CONTROL INTEGRATION (Github)

Allow users to use Github as their version control system


Summary Details Difficulty
Enable linking of Github accounts Developers should be able to link their Github and FlightDeck accounts. This link should provide simple mirroring for add-ons and libraries they choose to host on GitHub. We will not support things like merging and other complex git actions. HARD
Develop a simple push/pull flow from the Builder to Github Pulls should sync all local and server stored files with GitHub’s copy of the user’s add-on, if there are unpushed changes, alert the user and require that they either blow out unpushed changes or merge them outside of the Builder. Allow developers to push changes to an associated Github repo if there are no conflicts detected. If conflicts are found, notify the user that syncing is not possible until they resolve the conflicts outside of the Builder. MEDIUM


COLLABORATION AND SHARING

Enable multi-user collaboration and advanced user permissions


Summary Details Difficulty
Ability to add collaborators to add-ons/libraries Developers will have the option to grant collaborative permissions for add-ons and libraries to other registered users of FlightDeck. The permissions should account for the following:
  • The collaborator can access and edit an add-on or library they are given permission to regardless of its public/private state.
  • The add-on or library owner should have control over the collaborator’s ability change which revision is marked as the base version.
  • Permissions to edit an add-on or library are package-wide, thus they needn’t be configurable on a per file basis.
  • The owner should have the ability to grant permissions that enable collaborators to invite other collaborators.
  • The permissions settings for a collaborator should be able to allow or disallow the collaborator from editing the add-on or library’s properties data (Name, Description, etc.)
HARD


CLIENT-SIDE EDITING & TESTING

Allow the Builder to edit and test add-ons locally


Summary Details Difficulty
Sync, edit, and save data locally Enable the app to CRUD add-on/library data on the local file system. HARD
Compile add-on XPIs locally Allow for client-side creation of XPIs using a TBD JavaScript version of the CFX build tool HARD
Enable offline use of the app Handle the offline state so that the app runs normally and syncs any necessary changes when a connection is acquired. HARD