The Web Hypertext Application Technology Working Group

FAQ

See also the HTML Standard FAQ.

The WHATWG

What is the WHATWG?

The Web Hypertext Application Technology Working Group (WHATWG) is a community of people interested in evolving the web through standards and tests.

The WHATWG was founded by individuals of Apple, the Mozilla Foundation, and Opera Software in 2004, after a W3C workshop. Apple, Mozilla and Opera were becoming increasingly concerned about the W3C’s direction with XHTML, lack of interest in HTML, and apparent disregard for the needs of real-world web developers. So, in response, these organisations set out with a mission to address these concerns and the Web Hypertext Application Technology Working Group was born.

How do you spell and pronounce WHATWG?

It is spelled WHATWG, all uppercase, no spaces. It has various pronunciations: what-wee-gee, what-wig, what-double-you-gee.

What is the WHATWG working on?

The WHATWG’s main focus is web standards and their associated tests, specifically:

...and a number of other standards.

How can I get involved?

There are lots of ways you can get involved, take a look and see What you can do!

This video from Domenic Denicola is a good introduction to working with standards bodies.

Is participation free?

Yes, everyone can contribute. There are no memberships fees involved, it’s an open process. You may easily participate on GitHub or subscribe to the WHATWG mailing lists. There are no meetings, since meetings prevent people with limited time or money from participating.

The WHATWG Process

How does the WHATWG work?

Working Mode describes the day-to-day process in detail. Most of the activity consists of collaboration on GitHub.

In brief, each standard has one or more editors, who guide its evolution. Like a software project, a WHATWG standard undergoes continual maintenance, and occasionally gets new features. This work is driven by the community in collaboration with implementers.

What happens with WHATWG mailing list/GitHub issue discussions?

On the WHATWG list and in WHATWG issues on GitHub, the burden is on the editors to evaluate the various positions that have been put forward in a discussion, and figure out which one is strongest (or find another position that strikes a better balance between all of them).

The purpose of debate at the WHATWG therefore isn’t to convince everyone; it is to put forward the arguments that exist, so that the relevant editor can make a well-informed decision. As a corollary: If some points are made, rebutted, and not further defended, then maybe the person making the arguments is hoping that the relevant editor will consider the rebuttals weak, or thinks that the argument they have presented is strong despite the rebuttals. If you find someone is not making good arguments, or is ignoring your arguments, your best bet is to stop responding. Repeating previously-stated arguments doesn’t help, since the editors will see all the arguments when they look at the thread. Similarly, as soon as threads start being meta-threads about people’s argumentation behaviour, we stop making any kind of useful progress, since that isn’t input that can help the decision-making process later.

How should tool developers, screen reader developers, browser vendors, search engine vendors, and other implementors interact with the WHATWG?

File an issue on the relevant standard as indicated at the top of that standard. All feedback is supposed to be addressed in due course. You are also welcome to take a stab at addressing the problem yourself through a GitHub pull request.

If you want feedback to be dealt with faster than “eventually”, e.g., because you are about to work on that feature and need the standard to be updated to take into account all previous feedback, let the editors know by either emailing them, or contacting them on IRC. Requests for priority feedback handling are handled confidentially if desired so other implementers won’t know that you are working on that feature.

Is there a process for removing bad ideas from a standard?

There are several processes by which we trim weeds:

Removing features is a critical part of standards development.

Is there a process for adding new features to a standard?

The process is rather informal, but basically boils down to this:

  1. Forget about the particular solution you have in mind! Solution time is later!

  2. Write down a description of the underlying problem you’re trying to solve. What are the use cases? A use case is an actual user wanting to do something. Then list requirements for each use case. For a good example of how to do this, see this email.

  3. Get more people involved. Open a new issue in whatwg/html on GitHub that describes the use cases and their requirements. Ask fellow Web developers about their opinions (but remind them of step 1 above). Adjust the list of use cases and requirements as appropriate. Say which use cases are important and which are just nice to have.

  4. Optionally, your work is done at this point. If you have done a good job of the above steps and convinced other people that your use case is an important one to solve, they can do the remaining steps. (On the flip side, if nobody else cares about the use case, chances are solutions for it will not succeed despite being awesome.)

  5. Research existing solutions. Come up with new solutions. Try to keep the solutions as simple as possible, maybe only addressing the important use cases and leaving the nice to have use cases for later (when there’s implementation experience). Send this list of solutions, old and new, as a comment on the feature’s issue. Ask browser vendors for feedback. Maybe some particular solutions don’t fit with the browser’s architecture, optimizations, etc., and just are not going to be implemented no matter how much you like them. Strike those solutions and don’t grieve about the loss!

  6. Evaluate how well each of the remaining solutions address each use case and how well they meet the requirements. This step should show which solution is the technically best fit (might turn out to be someone else’s solution).

  7. Ask the editor to put that solution in the standard, or create a pull request on GitHub yourself. Possibly your text won’t be taken verbatim but will be written in a style that is more suitable for implementors or better hooks in to the rest of the standard, etc.

  8. Write a test suite for the feature to see if the implementations match the standard. This usually highlights bugs in the implementations and also bugs in the standard.

  9. Ask browser vendors to implement the newly specified solution, even if it’s just an experimental implementation. This implementation experience usually means that new problems are found with the solution that need to be addressed, or that a different solution is actually better.

  10. Participate in subsequent design discussions. When there are two or more mature implementations, it may be time to extend the feature to address the nice to have use cases (but this whole process should be repeated even for such extensions).

If the idea survives the above design process, the standard will be eventually updated to reflect the new design. Implementations will then be updated to reflect the new design (if they aren’t, that indicates the new design is not good, and it will be reworked or removed). The standard will be updated to fix the many problems discovered by authors and implementors, over a period of several years, as more authors and implementors are exposed to the design. Eventually, a number of provably interoperable implementations are deployed. At this point development of the feature is somewhat frozen.

Writing a comprehensive test suite is also an important step, which should start before implementations start being written to the standard. Cross-browser tests are maintained in web-platform-tests on GitHub.

Should I send new proposed text when I have a suggestion?

Please do not suggest new text, instead, say what is wrong with the current text. Just proposing new text makes it impossible for the editor to determine if the problem is endemic (requiring more changes than you realise), or whether what the editor thinks of as mistakes in the new proposed text are intentional or not (and should be fixed or not), or whether stylistic differences are intentional or not, etc.

What does “Living Standard” mean?

The WHATWG standards are described as Living Standards. This means that they are standards that are continuously updated as they receive feedback, either from web developers, browser vendors, tool vendors, or indeed any other interested party. It also means that new features get added to them over time, at a rate intended to keep the standard a little ahead of the implementations, but not so far ahead that the implementations give up.

Despite the continuous maintenance, or maybe we should say as part of the continuing maintenance, a significant effort is placed on getting the standard and the implementations to converge — the parts of the standard that are mature and stable are not changed willy nilly. Maintenance means that the days where the standard are brought down from the mountain and remain forever locked, even if it turns out that all the browsers do something else, or even if it turns out that the standard left some detail out and the browsers all disagree on how to implement it, are gone. Instead, we now make sure to update the standard to be detailed enough that all the implementations (not just browsers, of course) can do the same thing. Instead of ignoring what the browsers do, we fix the standard to match what the browsers do. Instead of leaving the standard ambiguous, we fix the the standard to define how things work.

Does that mean the standards can change at any time?

The standards do not change arbitrarily: we are extremely careful! As parts of a standard mature, and implementations ship, the standard cannot be changed in backwards-incompatible ways (because the implementors would never agree to break compatibility unless for security reasons). The standards are never complete, since the web is continuously evolving. The last time HTML was described as “complete” was after HTML4, when development stopped for several years, leading to stagnation. (If the web is replaced by something better and dies, the HTML standard will die with it.)

For references to stable copies of the standard, most WHATWG standards follows a process by which each change to the standard (embodied in a commit) triggers the publication of a frozen snapshot of the said standard.

These snapshots are published as historical references. The WHATWG intends to keep these frozen snapshots available at their published URL permanently.

What’s the patent story for WHATWG standards?

The WHATWG operates as a W3C Community Group and thus uses the W3C Community Group patent policies. So far we have published one FSA with patent commitments from Google, Mozilla, and others covering the URL standard. You can make patent commitments too! Some of our standards have also been forked and republished by the W3C with patent commitments from certain companies.

What is the process for translating WHATWG standards?

Many WHATWG standards have been translated into other languages by the WHATWG community. This is great, and highly encouraged!

In general, if you translate a WHATWG Standard, please communicate with the maintainers of the standard (e.g. via a GitHub issue) letting them know about your work. In general this will lead to adding a link to your translation to the top of the original standard, to allow interested readers to view it. You can see examples of this in many WHATWG standards, e.g., the Streams Standard.

Such translations are not normative (i.e., implementations should be sure to consult the original). Due to the nature of living standards, which can change often, it’s possible for translations to become out of date compared to the original standard. If the translation shows signs of no longer being maintained, or has other quality problems, community members are encouraged to provide feedback to the maintainers of the standard, so that any links to the translation can be removed in order to avoid confusing readers.

Note that WHATWG standards are always licensed under liberal licenses that allow the creation of derivative works like translations.