4
edits
(Revise with more details on standardization) |
Krosylight (talk | contribs) (Add links for intenttoship bot) |
||
(19 intermediate revisions by 6 users not shown) | |||
Line 1: | Line 1: | ||
<span style="float:right">__TOC__</span> | |||
'''Always ask: ''Is this good for the web?''''' | '''Always ask: ''Is this good for the web?''''' | ||
=Adding or changing features= | =Adding or changing features= | ||
This process applies to all | This process applies to all code contributions to Firefox that introduce, modify, or remove features that change how the web platform operates. | ||
If you aim to expose a new feature to the web or change an existing feature, please follow these steps: | If you aim to expose a new feature to the web or change an existing feature, please follow these steps: | ||
# [[#New features|Evaluate the new feature]] or [[#Changing or evolving features|change to an existing features]]. | # [[#New features|Evaluate the new feature]] or [[#Changing or evolving features|change to an existing features]]. | ||
# Email [https://groups.google.com/a/mozilla.org/g/dev-platform dev-platform] declaring your [[#Intent to prototype|intent to prototype]]. (It is okay to skip this step for small changes.) | # Email [https://groups.google.com/a/mozilla.org/g/dev-platform dev-platform] declaring your [[#Intent to prototype|intent to prototype]]. (It is okay to skip this step for small changes*.) | ||
# Implement as normal. Code review rounds will take place, [https://github.com/w3c/web-platform-tests web-platform-tests] will be written, etc. | # Implement as normal. Code review rounds will take place, [https://github.com/w3c/web-platform-tests web-platform-tests] will be written, etc. | ||
# Email [https://groups.google.com/a/mozilla.org/g/dev-platform dev-platform] declaring your [[#Intent to ship|intent to ship]] on [[Release_Management/Release_Process|Firefox Release]]. | # Email [https://groups.google.com/a/mozilla.org/g/dev-platform dev-platform] declaring your [[#Intent to ship|intent to ship]] on [[Release_Management/Release_Process|Firefox Release]]. | ||
# If there's no negative feedback, ship it! | # If there's no negative feedback, ship it! | ||
<nowiki>*</nowiki>If you’re not sure, it’s unlikely to be a small change. | |||
=New features= | =New features= | ||
Line 28: | Line 31: | ||
==Ensure that the feature is standardized== | ==Ensure that the feature is standardized== | ||
Mozilla is committed to standardization as the basis for evolving the Web. We want to ensure that features are good for our users and have broad support from other browsers, web developers, and the broader community. The standards process is how we ensure that features meet these expectations. | Mozilla is committed to standardization as the basis for evolving the Web. We want to ensure that features are good for our users and have broad support from other browsers, web developers, and the broader community. The [[standards]] process is how we ensure that features meet these expectations. | ||
Our goal is that all new web-facing features are based on a specification that is the product of a recognized standards body. | Our goal is that all new web-facing features are based on a specification that is the product of a recognized standards body. | ||
Line 44: | Line 47: | ||
* For other bodies, a request for consideration according to the procedures of the body | * For other bodies, a request for consideration according to the procedures of the body | ||
Being able to prototype new features allows us to learn about them, but experimentation serves to inform our choices in standards bodies. Features that have not been discussed within the processes of a standards body will require extra scrutiny to ensure that it is safe to prototype. This applies especially to W3C work that is | Being able to prototype new features allows us to learn about them, but experimentation serves to inform our choices in standards bodies. Features that have not been discussed within the processes of a standards body will require extra scrutiny to ensure that it is safe to prototype. This applies especially to W3C work that is not the product of a working group or community group; the same applies to individual submissions to the IETF. | ||
===Standardization requirements for shipping features=== | ===Standardization requirements for shipping features=== | ||
Line 83: | Line 86: | ||
''Summary'': [https://en.wikipedia.org/wiki/Elevator_pitch elevator pitch] for the new functionality including benefits to users and web developers.<br> | ''Summary'': [https://en.wikipedia.org/wiki/Elevator_pitch elevator pitch] for the new functionality including benefits to users and web developers.<br> | ||
''Bug'': link to Bugzilla (tracking) bug.<br /> | ''Bug'': link to Bugzilla (tracking) bug.<br /> | ||
''Specification'': link to the specification (see [[#Standardization requirements for prototypes|details above]]<br /> | ''Specification'': link to the specification (see [[#Standardization requirements for prototypes|details above]])<br /> | ||
''Standards Body'': identify the standards body responsible for standardizing this feature if that is not obvious from the specification; if the specification is not already adopted by a standards body, link to the issue or a discussion about adoption of the work (if no discussion exists, please start that process before filing this intent)<br /> | ''Standards Body'': identify the standards body responsible for standardizing this feature if that is not obvious from the specification; if the specification is not already adopted by a standards body, link to the issue or a discussion about adoption of the work (if no discussion exists, please start that process before filing this intent)<br /> | ||
''Platform coverage'': where will this be available? Android, Desktop, only exposed to privileged apps (certified app-only functionality does not require an email), etc.<br /> | ''Platform coverage'': where will this be available? Android, Desktop, only exposed to privileged apps (certified app-only functionality does not require an email), etc.<br /> | ||
''Preference'': if applicable, how can interested parties test this before it ships pref'd on by default?<br /> | ''Preference'': if applicable, how can interested parties test this before it ships pref'd on by default?<br /> | ||
''DevTools bug'': link to a [https://bugzilla.mozilla.org/enter_bug.cgi?product=devtools Developer Tools bug] coordinating work with the DevTools team to build tools for this feature.<br /> | ''DevTools bug'': link to a [https://bugzilla.mozilla.org/enter_bug.cgi?product=devtools Developer Tools bug] coordinating work with the DevTools team to build tools for this feature.<br /> | ||
''Other browsers'': address with "shipped" (since version X, behind what flags if any), "intent emailed" (mailing list URL), or "considering" (citation). | ''Link to standards-positions discussion'': Link to an issue in [https://github.com/mozilla/standards-positions/ mozilla/standards-positions] about what we think about the specification.<br /> | ||
''Other browsers'': | |||
* Blink: address with "shipped" (since version X, behind what flags if any), "intent emailed" (mailing list URL), or "considering" (citation). | |||
* WebKit: address with "shipped" (since version X, behind what flags if any), "intent emailed" (mailing list URL), or "considering" (citation). | |||
''web-platform-tests'': Please link to the test suite. If any part of the feature is not tested by web-platform-tests, or if you had to write gecko-only tests for parts of the feature, please include links to one or more of: | ''web-platform-tests'': Please link to the test suite. If any part of the feature is not tested by web-platform-tests, or if you had to write gecko-only tests for parts of the feature, please include links to one or more of: | ||
* A web-platform-tests issue explaining why a certain thing cannot be tested ([https://github.com/w3c/web-platform-tests/issues/3867 example]). | * A web-platform-tests issue explaining why a certain thing cannot be tested ([https://github.com/w3c/web-platform-tests/issues/3867 example]). | ||
Line 100: | Line 106: | ||
If you're looking for extra credit, or to preempt common questions, consider adding any or all of the following (all based on existing dev-platform examples, and questions asked on dev-platform in response to intent to ship emails). | If you're looking for extra credit, or to preempt common questions, consider adding any or all of the following (all based on existing dev-platform examples, and questions asked on dev-platform in response to intent to ship emails). | ||
* ''How stable is the spec'': Note that even if it's unstable that shouldn't stop us implementing; that mostly affects shipping. So as long as we're pretty sure that the basic set of functionality is stable, even if the actual names of the values are not, implementing makes sense. | * ''How stable is the spec'': Note that even if it's unstable that shouldn't stop us implementing; that mostly affects shipping. So as long as we're pretty sure that the basic set of functionality is stable, even if the actual names of the values are not, implementing makes sense. | ||
** +1 [[User:Tantek|Tantek]] ([https://tantek.com/ tantek.com]) 14:21, 12 August 2022 (UTC) | |||
** ... add yourself | |||
* ''Security & Privacy Concerns'': consider providing a link to answers in [https://mikewest.github.io/spec-questionnaire/security-privacy/ this security/privacy questionnaire] for a spec feature, if the spec doesn't already answer it. In particular, consider if the spec exposes new information about a user's computer or behavior that can contribute to fingerprinting. | * ''Security & Privacy Concerns'': consider providing a link to answers in [https://mikewest.github.io/spec-questionnaire/security-privacy/ this security/privacy questionnaire] for a spec feature, if the spec doesn't already answer it. In particular, consider if the spec exposes new information about a user's computer or behavior that can contribute to fingerprinting. | ||
** +1 [[User:Tantek|Tantek]] ([https://tantek.com/ tantek.com]) 14:21, 12 August 2022 (UTC) | |||
** ... add yourself | |||
* ''Web designer / developer use-cases'' AKA ''Why a developer would use Feature X?'': Provide a URL to at least briefly documented use-cases for web designers and developers that illustrate why and when they would use this feature. E.g. a link to an https://webwewant.fyi/wants/ entry with that information. | * ''Web designer / developer use-cases'' AKA ''Why a developer would use Feature X?'': Provide a URL to at least briefly documented use-cases for web designers and developers that illustrate why and when they would use this feature. E.g. a link to an https://webwewant.fyi/wants/ entry with that information. | ||
** +1 [[User:Tantek|Tantek]] ([https://tantek.com/ tantek.com]) 14:21, 12 August 2022 (UTC) | |||
** ... add yourself | |||
* ''Example'': Provide a brief code sample on how to use the API. Even with a formal specification, not everyone will know about the feature just from the name of the spec. An example will make it easier to understand how this feature can be used. This can either be an inline code sample, or a direct link to an example on the web. | * ''Example'': Provide a brief code sample on how to use the API. Even with a formal specification, not everyone will know about the feature just from the name of the spec. An example will make it easier to understand how this feature can be used. This can either be an inline code sample, or a direct link to an example on the web. | ||
** +1 [[User:Tantek|Tantek]] ([https://tantek.com/ tantek.com]) 14:21, 12 August 2022 (UTC) | |||
** ... add yourself | |||
==Intent to ship== | ==Intent to ship== | ||
Line 118: | Line 132: | ||
Standard: link to the standard; if the work is not yet part of a standard, also provide evidence that the responsible standards body has agreement that shipping the feature has broad support (see [[#Standardization requirements for shipping features|details above]]) | Standard: link to the standard; if the work is not yet part of a standard, also provide evidence that the responsible standards body has agreement that shipping the feature has broad support (see [[#Standardization requirements for shipping features|details above]]) | ||
This feature was previously discussed in this "Intent to prototype" thread: <https://groups.google.com/ | This feature was previously discussed in this "Intent to prototype" thread: <https://groups.google.com/a/mozilla.org/g/dev-platform>. '''If anything changed since that thread please include that information in this email'''. | ||
</blockquote> | </blockquote> | ||
It's acceptable to merge the "intent to prototype" into the "intent to ship" email as long as all the relevant requirements are met. | It's acceptable to merge the "intent to prototype" into the "intent to ship" email as long as all the relevant requirements are met. | ||
===Suggested additions=== | |||
* ''TAG Review'': link to TAG review of the feature/spec. Note: Blink requires this in their intent process. | |||
** +1 [[User:Zcorpan]] (proposed) | |||
** +1 [[User:Tantek]] | |||
** ... add yourself | |||
=Removing features= | =Removing features= | ||
All removals require special care. In particular, most removals have a [[Compatibility/WebPlatform|significant web compatibility risk]] that needs to be carefully assessed. | |||
If you aim to remove a feature from the web, please follow these steps: | If you aim to remove a feature from the web, please follow these steps: | ||
Line 152: | Line 173: | ||
** [https://www.chromium.org/blink/launching-features Chrome/Blink process for Launching Features] in particular | ** [https://www.chromium.org/blink/launching-features Chrome/Blink process for Launching Features] in particular | ||
** [https://bit.ly/blink-signals Signals from other implementations] | ** [https://bit.ly/blink-signals Signals from other implementations] | ||
* Intent To Ship bot: [https://botsin.space/@intenttoship Mastodon] [https://twitter.com/intenttoship Twitter] [https://github.com/autonome/intenttoship-bot Source code] | |||
=FAQ= | =FAQ= | ||
Line 164: | Line 185: | ||
* Most of the time this should fall out of the standardization process (e.g., discussion in a GitHub repository) | * Most of the time this should fall out of the standardization process (e.g., discussion in a GitHub repository) | ||
* Watch for "intent to *" emails on mailing lists such as [https://groups.google.com/a/chromium.org/forum/#!forum/blink-dev blink-dev] | * Watch for "intent to *" emails on mailing lists such as [https://groups.google.com/a/chromium.org/forum/#!forum/blink-dev blink-dev] | ||
* By asking! | * By asking! | ||
** WebKit (Apple) can be asked on their [https://github.com/WebKit/standards-positions standards-positions repo] | |||
** Chrome: [https://source.chromium.org/chromium/chromium/src/+/main:docs/standards/positions/GoogleChrome/README.md Positions from Google Chrome Teams on Web Standards] | |||
==How do we let other browser engines know what we think?== | ==How do we let other browser engines know what we think?== | ||
Line 180: | Line 202: | ||
If the dev-platform thread results in a conflict, the respective [[Modules|module owner]] is responsible for resolving that conflict and making a decision on how to proceed. | If the dev-platform thread results in a conflict, the respective [[Modules|module owner]] is responsible for resolving that conflict and making a decision on how to proceed. | ||
== See Also == | |||
* [[Standards]] |
edits