On 06/14/2017 09:02 AM, Benjamin Smedberg wrote:
On Tue, Jun 13, 2017 at 8:40 PM, Nicholas Nethercote <n.netherc...@gmail.com
wrote:
(3) Do extensions use it? If so, changing it probably isn't possible. This
can
be imperfectly determined by searching through addons/ in DXR.
There is no rule that we can't break old-style addons: it just makes the
change riskier and may require outreach or an addon validation step. So
it's a question of risk/reward tradeoff.
Given that old-style addons are going away for 57, if it's possible to
delay addon-breaking IDL changes by one release until 57 that's probably
the easiest way to deal with this. We're already causing the addon
community a lot of churn.
Also note that not every kind of modification to IDL files has the same
kind of risk in terms of add-on (and also Thunderbird) breakage. For
example, adding a new method/attribute can very rarely break something
(unless for example code tests for existence of the currently
non-existing name and takes a different path based on that.) Similarly,
adding an optional argument at the end of the list of arguments to a
method can rarely break an add-on, except if the add-on implements the
method.
(Although, if DevTools are moved its their own repository, that repo will
have to be
checked as well?)
I've been trying to find out some technical details about the devtools
plan, but my initial understanding is that they are trying to target stable
web/webextensions/debugger API surfaces, and so they *shouldn't* be
affected by gecko internals changes. But I'd be a lot more comfortable if
that were in writing as part of the devtools plan.
(There's a google doc about the plans but I'm not sure if I'm allowed to
link to it here, someone from the devtools team can probably do so here
if that's OK...)
That sounds pretty hard to believe given how deeply tied devtools is
into Gecko. At least in a few areas that I'm familiar with, there are
no Web Extension APIs for what devtools needs, so it will most likely
need to depend on our XPCOM APIs at least in the immediate term.
Two items to add to njn's list:
[5] Pay attention to [builtinclass] interfaces (and make new ones where
possible!)
builtinclass means that JS code isn't allowed to implement an XPIDL
interface, which allows C++ code to assume things about the concrete
implementation behind an XPIDL interface which can sometimes be nice.
If you are modifying a [builtinclass] interface for example to add a new
argument to a method, you don't need to worry about add-ons implementing
that method, since that would be impossible. Where possible and
sensible, please try to make existing interfaces [builtinclass].
[6] Note that it's not clear yet how we will be able to remove XPCOM
APIs post-57 due to the existence of WebExtensions Experiments
<https://webextensions-experiments.readthedocs.io/en/latest/>. I'm not
sure who's going to make the call on which APIs we'd want to retain for
those WebExtensions and which APIs we'd want to freely modify/remove
after 57.
_______________________________________________
dev-platform mailing list
dev-platform@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-platform