Jetpack/Roadmap: Difference between revisions

From MozillaWiki
Jump to navigation Jump to search
m (Mark as outdated)
 
(19 intermediate revisions by 2 users not shown)
Line 1: Line 1:
__NOTOC__
{{outdated}}
 
__FORCETOC__


<section begin=summary />{{RoadmapSummary
<section begin=summary />{{RoadmapSummary
|icon=Jetpackicon.png
|icon=Jetpackicon.png
|pagelocation=Labs/Jetpack/Roadmap
|pagelocation=Labs/Jetpack/Roadmap
|pagetitle=Jetpack 2012 Roadmap
|pagetitle=Jetpack Product Roadmaps
|owner=David Mason
|owner=Jeff Griffiths
|updated=December 2011
|updated=Oct 2012
|status=Draft
|status=Draft
|description=The Roadmap for Jetpack in 2012 shifts focus to Deep-integrators. Top priorities are: Mobile Prefs API, Mobile Add-on Tab API, Chrome-mods, CType Helper Util, Places API, Crypto API, l10n, and moving Add-on's from lower add-on bar to the top of the browser.}}<section end=summary />
|description=Roadmaps for Jetpack}}<section end=summary />
 
{{draft| Detail will be added in the coming days}}
 
= 2012 Jetpack Roadmap =
 
= The State of Jetpack =
 
The Jetpack project had a very successful year in 2011. We have
created a set of APIs and tools which present an excellent platform in
which to create Firefox add-ons. We have answered a good number of
use-cases for the audience we initially set out to address and we have
joined Firefox in the train-release cycle to good effect. At this
stage of the life of the project, it is time to step-back and assess
where we are and who we are developing for.
 
= Changing Focus =
 
The Jetpack project had a desire from the beginning to make the
creation of Firefox add-ons easier than using the existing,
traditional toolset. To that end, we also had the goal of trying to
bring in new developers by utilizing the tools of web development
(javascript, css).
 
== Who Develops Add-ons? ==
 
As the Jetpack project is into its second year of existence, defining
exactly who develops add-ons for Firefox has become more apparent as
we see who chooses the Add-on SDK and who chooses the traditional
toolset. In our observations there tend to be four types of add-on
developer: the Greasemonkey Scripter, the Shallow-integrator, the
Cross-Browser developer, and the Deep-integrator.
 
=== Shallow Integrators ===
 
We started the jouney of developing the Add-on SDK with the
Greasemonkey Scripter and Shallow-Integrator in mind. The Add-on SDK
has allowed for minimal changes to the browser, but a powerful set of
APIs to create certain categories of add-ons. We have mostly been
successful at fulfilling the needs of these developers who we can call
"Shallow-integrators" as their add-ons don't have a need to integrate
as tightly with Firefox as many traditional add-ons.
However, with the approach of open web apps, we expect that the
shallow-integrators will be slowly moving away from add-on development
as apps will answer many of their development needs and provide an
even wider distribution. If this is to be true, we need to expand
the SDK to include a different, and now wider, audience.
 
=== Greasemonkey Scripters ===
 
Another audience we tried to include in the Jetpack project up till
now has been the "Greasemonkey scripter". These are people who simply
want to make modifications to web pages and easily distribute those
changes with anyone. While we have an answer for this audience, we
feel like it is far too heavy and difficult to properly answer the
needs of these people. While we won't be altering the work we have
done here, there are better ways to fulfill this audience which are
likely to be outside of the scope of the Jetpack team's 2012 work[fn:1].
 
=== Cross-Browser Developers ===
 
A good number of developers that span all of the other three
categories are Cross-browser developers who need to develop for any
and all browsers. We have not had much focus on these developers and
we are unlikely to anytime soon. The challenge is a tough one and is
answered in small part by us making sure it is easy to develop for
Firefox. Certainly its not a full answer, but for time and resources,
is the best we can do for now.
 
=== Deep Integrators - A Proposal ===
 
With shallow-integrators having better options coming in the form of
apps, and the Jetpack project never really satisfying the
Greasemonkey-scripters properly, we are proposing that we now turn our
focus to the "Deep-Integrators".
 
Deep-integrators are the backbone of Firefox's add-on community. They
are the developers who have made Firefox unique among browsers. While
the SDK is still useful to them in its current state, we can make it
an excellent toolset for them that offers a better platform than the
traditional tools have. This shift does not abandon the goal of making
add-on development easier, but it does expand the scope of the toolset
to include APIs and tools which will appeal more to these
deep-integrators.
 
This roadmap reflects this change in audience and the work we are
proposing to do in 2012 should align better with the deep-integrators.
 
= The Roadmap =
 
DRAFT - at this stage the items in this roadmap are simple notes and
will be more full-featured explanations as I get to them!
 
= Top Priorities =
 
The top priorities for the Add-on SDK in 2012 are: Continuation of
Mobile work, new APIs, continuation of l10n work, and moving the add-ons
from the add-on bar to the top of Firefox.
 
===Mobile===
 
We must continue our work on making the development of add-ons for
Firefox mobile easy and familiar using the same APIs and tools used to
create desktop add-ons. We still have a good deal of scope to figure
out with mobile add-ons as there have been so few created to this
point, and a small amount of usage. To that end, we are unsure which
use-cases are the most desired for mobile add-ons.
 
Because of this lack of scope, we have decided to pick a couple of
APIs which seem important to tackle early, get them running and see
how people use them and what they ask for in addition to these. As we
already have page-mods working, the two additional APIs we have
decided to look at are:
 
====Preferences API====
This allows developers to add simple preferences to their add-on. We
have just landed this for Desktop and need to make sure it works in
Mobile. The initial scope suggests looking at the native android
preferences screen as the UI, though that may change as we investigate.
 
====Add-on Tab API====
This is represented in the
[https://wiki.mozilla.org/Features/Jetpack/Add-onTab-API feature page]
for adding the add-on tab to Desktop Firefox, we simply need to port
this over to mobile.
 
===P1 APIs===
====Chrome-mods====
An important piece of the SDK to-date has been the ability to simply
alter web pages with the Page-mod API. We wish to allow the same
functionality to developers to alter chrome with a simple script and
CSS. The scope of this work also calls for the ability to revert those
changes (and possibly to add that same reverting function to
page-mods).
 
====Simpler Ctype API====
The initial scope of this is to add a untility that will help add-on
developers who are working with binaries to be able to automatically
scope thier binary and include the proper headers, instantly, to their
add-on. There may be greater scope once this is complete. In addition,
we need to document how binaries can be used with the SDK.
 
====Places API====
The Places API will allow developers access to the bookmarks menu,
bookmarks tool, and possibly more. This needs more scope.
 
====[https://wiki.mozilla.org/AddonSDKCryptoAPI Crypto API]====
The crypto API will give SDK developers simple key/pair functionality
to sign and verify data.
 
===[https://wiki.mozilla.org/Features/Jetpack/Add-on_SDK_Localization_API_and_Service Continue Localization Work]===
We still have a great deal to do to provide the best localization
answer to add-on developers and those who localize add-ons. The scope
of what's left includes answering the html localizing question,
starting the shared-string-translation service, connecting to that
service, and making sure it all integrates with AMO.
 
===Move Add-ons to top of browser===
For a while we have talked about moving the widgets and panels the SDK
provides to the top of the browser and away from the small add-on bar
at the bar. The UX team agrees with this move and has given us some
guidance to go ahead and make this move.
 
= Secondary Priorities =
 
===Improve XPCOM Access===
We currently allow developers access to XPCOM when developing add-ons
with the SDK, but this could be vastly improved. The scope of that
improvement is still being worked on.
 
===Hidden window===
We currently provide a good deal of functionality by hiding a window
and doing things like parsing a DOM in that window. This is rather
hacky and there have often been calls for Firefox to provide a window
to do such things that is not tied to the OS. We want to do this
platform work and provide that window. The scope of use-cases is still
being worked on though some of this is provided in
[https://etherpad.mozilla.org/background-window this etherpad].
 
===SDK as an Add-on===
Landing SDK in AMO only
 
There is a great deal of work that is scheduled to happen to make the
SDK an add-on, including the removal of our python code at some
stage. However, the first focus should be the investigation of simply
using AMO as a distribution of the SDK while leaving the SDK exactly
as it is now. If this is possible we could get the benefits of
distribution from AMO earlier than if we waited till the full scope is
reached.
 
===Land APIs & Loader in Firefox===
 
 
===P2 APIs===
 
====Intercept Network requests====
====Add-on Menu====
 
= Tertiary Priorities =
 
===Extend Functionality in existing APIs===
===Subclassing===
===Test add-ons without restarting Firefox===
 
== P3 APIs ==
====Awesome Bar API====
====Integration with JS Debugging====
 
= Non-Goals =
 
===Apps===
Mozilla, other browser vendors, and other industry participants
havebeen defining standards, UX affordances, and distribution channels
for the next generation of web apps. But apps differ from add-ons,
even if they sometimes bundle themselves as such for lack of better
distribution channels.
 
Mozilla Labs' Open Web Applications project is kicking ass here and is
much better positioned to identify and address the exposure and
distribution needs of apps, while Mozilla's developer tools team
headed by Kevin Dangoor is the right locus for activity around tools
for web developers.
 
Although we can see future work where we can make some of our APIs
available for App developers who wish to have some integration with
Firefox when rnu there, the Jetpack project will not focus on building
tools for app development and distribution in 2012.
 
  Note that the absence of a goal from the priorities list, or its
  presence on the anti-list, does not mean we won't accept code that
  achieves it. To the contrary, provided such contributions don't work
  at cross-purposes to the core goals of the project, we couldn't be
  more thrilled to see our technologies get used by the Mozilla and
  broader open source communities.
  So if you're a Thunderbird developer, a web dev tools hacker, a
  XULRunner appmeister, or anyone else who wants to see Add-on SDK and
  Builder (or their component parts) better support your own particular
  use cases (or get repurposed into your own new products), know that we
  want to see that too! So please don't hesitate to dream about how the
  project can help you, talk about your ideas with us, and make them
  happen. Besides code to see some of these things happen, we also
  desire a commitment to supporting that code through our train release
  process which we cannot afford at this time.
 
= Persistant Goals =
 
There are goals we shall strive to achieve in the Jetpack project that
may or may not be explicitly written in this Roadmap or in our
Quarterly goals. However, these things will always be goals for the
project and any products which we create:
 
====Performance====
We must always measure our preformance and be thoughtful of how the
Add-on SDK affects the performance of Firefox.
 
====Footprint====
We should try to make sure that everything we create is as small as it
can be while still providing the functionality we think is necessary.
 
====Security====
We must ensure the security of all our users and make sure that we are
consistently reviewing, with the help of security experts, our code to
be as secure as we can make it.
 
====Simplicity====
We should strive to provide the simplest structure to our APIs and
tools to make sure the Jetpack experience is easy to use. In addition
we should keep the codebase clean and simple to ease and encourage
contributions.
 
====Memory Consumption====
We should strive to keep memory consumption of an add-on built with
our high-level APIs as small as possible.


====Stability====
=Under construction=
We will strive to make the Add-on SDK as stable as possible and
respond to issues as quickly as possible to make sure that users can
trust the SDK for their development.


= Footnotes =
=== Future ===
* [https://wiki.mozilla.org/Jetpack/Roadmap/2013 2013 Roadmap] [DRAFT]


[fn:1] We can make Greasemonkey scripting far easier than either
=== Archive ===
Jetpack or Greasemonkey has done by creating a tool that rides on
top of our devtools and allows a page-modification to happen with
the click of a button. The proposal for such a tool can be found in
its own feature page that is not specifically assigned to the
Jetpack project.


= Goals =
* [https://wiki.mozilla.org/Jetpack/Roadmap/2012 2012 Roadmap]
[https://wiki.mozilla.org/Jetpack/Goals/2012-Goals 2012 Goals By Quarter]
* [https://wiki.mozilla.org/Jetpack/Roadmap-2011 2011 Roadmap]

Latest revision as of 23:02, 19 April 2018

Ambox outdated.png THIS PAGE MAY BE OUTDATED
This article is in parts, or in its entirety, outdated. Hence, the information presented on this page may be incorrect, and should be treated with due caution until this flag has been lifted. Help by editing the article, or discuss its contents on the talk page.


Jetpackicon.png Jetpack Product Roadmaps
Owner: Jeff Griffiths Updated: 2018-04-19
Roadmaps for Jetpack

Under construction

Future

Archive