On 07/26/2017 10:45 PM, Andrew Swan wrote:

On Wed, Jul 26, 2017 at 4:27 PM, Steve Fink <sf...@mozilla.com <mailto:sf...@mozilla.com>> wrote:

    This thread worries me greatly. Somebody tell me we have a plan
    and policy around this already. Please?


We might, but I'm not sure what "this" you're concerned about. Whether API names should be prefixed? Or whether we should expose things at all that are unique to gecko/firefox to extensions? There are a whole bunch of things that get considered when new extension APIs are proposed including safety, maintainability, performance, and yes, cross-browser compatibility.

"this" == exposing Gecko-specific functionality, or rather, what Gecko-specific functionality to expose and how to expose it in general. With emphasis on the how. The prefixing decision (answer: no) and do-it-at-all decision (answer: yes) are part of that.

Unfortunately, there isn't anything written that explains actual criteria in detail (its on our radar but somewhere behind a long list of engineering tasks on the short-term priority list).

And I guess the parenthetical clause is what worries me. The people churning through that workload should be churning through that workload, and it's fine that they aren't spending time and mental space on the theoretical concerns of future compatibility issues or addon developer relations. But this is kind of a big deal for Mozilla strategically, so I would expect someone else to be working on the strategic plan before we reach the foot-shooting point.

Hopefully, that someone would be in close contact with the engineers doing the work, since they have the best context and familiarity with large parts of the problem space, and hence their opinions deserve a lot of weight. As long as the consultation doesn't get in the way of getting stuff done. There's a ton of weight on you people's shoulders, and we don't want to add more.

One person can do both strategy and tactics (or implementation) just fine, but it's usually not a good idea to do them at the same time. Different mindset, different tradeoffs.


My individual opinion is that something being unique to gecko or firefox should not disqualify it from being exposed to extensions. The webcompat analogy doesn't really work here, the principle that the web should be open and interoperable demands rigor in what gets exposed to content. But a browser extension isn't a web page, it is part of the browser itself, and different browsers are inherently ... different. They have different features, different user interfaces, etc. The fact that browser extensions are built with web technology and that they modify or extend the very thing that displays web content obscures this distinction, but it does make a big difference.

I agree. But it isn't completely different from webcompat, either. We have used up much of developer's tolerance for breaking changes, so we really want to try hard to minimize changes that are going to break addons. (And minimize the pain of such breakage -- if we have a mechanism allowing us to easily identify the addons that will be affected, and provide a warning and documentation of the change in advance, we can probably get away with quite a bit.)

Anyway, containers is a good example of something that we've exposed to extensions that isn't likely to be supported in other browsers any time soon. Nevertheless, we need to design APIs in a way that doesn't compromise on the other areas mentioned above: maintainability, safety, performance. And, to the extent we can, we should design APIs that could be adopted by other browsers if they choose to.

Sure, and in my mind, that's the sort of tactical decisionmaking that *should* be done in the context of implementation. Which is different from the overall strategy of prefixing / opt-in imports / signing / versioning.

    Given our position, it's a bold move that says we're willing to
    take the painful hit of pissing off addon authors and users
    because we truly believe it is necessary to produce a top-quality
    product.


There are certainly outraged addon authors out there but for what its worth, we're also already getting a good amount of positive feedback from both addon authors and users.

Sorry, don't take my ranting to imply that I'm somehow unhappy with the work you people are doing. To the contrary, it all seems to be going stunningly well, which is much to the credit of your team.


    That's my argument for why the default answer here should be "Heck
    yeah! If we can provide something that other browsers don't, DO
    IT!" I could describe it as a fairness/good faith argument
    instead: we just took away a bunch of powerful tools from our
    users, claiming that it was for their own long-term good, so it
    behooves us to give back whatever we can in a more manageable
    form, in order to provide that promised good.


I think that's basically the attitude of most of the people working on webextensions. To be pedantic, the threshold is higher than "If we can". I mean, we *could* expose Components to webextensions but of course that would bring us right back to all the problems we're working on putting behind us.

No disagreement there.

Again, documenting more formally specifically what it means for an extension API to be safe, maintainable, performant, etc. is something we know is needed. Hopefully when we come up for air after 57 we can work on this (and complementary things like webextensions experiments).

Yeah, that's not really what I'm talking about. In a way, that's the hard part. But it's unavoidable, and it's happening in practice, and I'm sure there'll be a lag in formalization while things are taking shape. That's probably a good thing, since it'll require experience to flesh these things out.

But that's about individual APIs. I want high-level answers to the simultaneous questions "How are we going to expose sufficient functionality to provide extension authors with what they need?" and "How are we going to avoid shooting ourselves in the foot when we get further down the road?" The sort of things you read in high-level strategy documents that set down the goals, direction, and approach to known obstacles. (Not that I necessarily want such a document; they're boring and make for dull reading, and I'm always suspicious as to whether anyone's paying attention to them. But I want the thinking behind it.)

_______________________________________________
dev-platform mailing list
dev-platform@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-platform

Reply via email to