Skip to content

Commit 642f926

Browse files
committed
Rewrite the "removing features" section, incorporating "Support Existing Content" from the HTTP Design Principles
1 parent 98f4a02 commit 642f926

File tree

1 file changed

+35
-15
lines changed

1 file changed

+35
-15
lines changed

index.bs

Lines changed: 35 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -307,22 +307,42 @@ it might still be possible; see [[#removing-features]].
307307

308308
Do not assume that a change or removal is impossible without first checking.
309309

310-
<h3 id=removing-features>Remove or change capabilities only once you understand existing usage</h3>
311-
312-
Prioritize compatibility with existing content when removing or changing functionality.
313-
314-
Once a significant amount of content has come to depend on a particular behavior,
315-
removing or changing that behavior is discouraged.
316-
Removing or changing features and capabilities is possible,
317-
but it first requires that the nature and scope of the impact on existing content
318-
is well understood.
319-
This might require research into how features are used by existing content.
320-
321-
The obligation to understand existing usage also applies to any features that content relies upon.
310+
<h3 id=removing-features>Prioritize compatibility when changing or removing features</h3>
311+
312+
Before changing how a feature behaves,
313+
fully understand how websites are currently using it.
314+
This might require research,
315+
for example by adding metrics to a popular user agent
316+
and/or by [searching the HTTP Archive](https://har.fyi/guides/getting-started/).
317+
Breaking content is harmful,
318+
and the benefit of a change has to
319+
significantly outweigh that harm to be worth doing.
320+
321+
The obligation to understand existing usage
322+
also applies to non-standardized or unspecified features
323+
that content relies upon.
322324
This includes vendor-proprietary features and
323-
behavior that might be considered implementation bugs.
324-
Web features are not solely defined in specifications;
325-
they are also defined by how content uses those features.
325+
implementation bugs.
326+
327+
Despite this, it is sometimes acceptable
328+
to break some existing content
329+
in order to help a large number of the web's users.
330+
Breakage is more likely to be acceptable if:
331+
332+
* Only a tiny amount of existing content depend on the feature or behavior.
333+
* Only a tiny number of people see that content.
334+
* The content only appears in test cases or examples.
335+
* The content is currently broken in most recent popular user agents.
336+
* The content is not on the public web,
337+
but is instead found on internal sites
338+
with a controlled user environment.
339+
Beware in this case that internal sites are
340+
often invisible to our analysis tools.
341+
Getting a single complaint is often a sign
342+
of a much larger amount of hidden breakage.
343+
* The benefit of breaking content is very large.
344+
For example, removing old SSL and TLS versions breaks lots of content
345+
but prevents even more security breaches.
326346

327347
<h3 id="leave-the-web-better">Leave the web better than you found it</h3>
328348

0 commit comments

Comments
 (0)