The browser internals aren't userspace. Web Extensions are userspace. The browser internals are more like kernel space, which the Linux kernel breaks, all the time [1].
[1]: https://github.com/torvalds/linux/blob/e7aa8c2eb11ba69b1b690...
Indeed, if you provide an API you'd better commit to it. The difference is that before WebExtensions, there was no API. Everybody was just hooking into the internals.
That's not "do not break userspace" – which makes sense – that's "do not change anything, ever" – which is project suicide.
Now, with WebExtensions, there is a difference between the API and the internals, so we can commit to something. And, while there is a cost to this change, that's definitely a much, much, much better base for developers on both side of the API.
Re:Firefox 57.0 Released
by pseudalopex on Thursday November 16, 2017 @03:36PM
(#15716370)
Mozilla pitched the Add-on SDK to developers as that kind of API. It was deprecated less than a year ago with no migration path and a half-baked replacement.
Legacy extensions were not an API:
http://dblohm7.ca/blog/2015/08/30/on-webextensions/
Nor were they userspace: http://dblohm7.ca/blog/2017/11/16/legacy-firefox-extensions-...
Sure, to be pedantic about it, but the point of "not breaking userspace" is not a technical nitpick on browser extensions.
It's the guideline from Linus and for a good reason. It's impossible to base work on shifting sands.
If you provide an API you'd better commit to it.
A lot of work is being wasted because of this.
"Do not break userspace".