Shared publicly  - 
I recently wrote the following in an e-mail, but it seems suitable for a wider audience. tl;dr: I think it's more important for specs to be technically sound than it is to get consensus on them.

Consensus (also known as "design by committee") is a terrible way to design a language or platform. Committee design dilutes responsibility and blame (everyone just starts saying things like "yeah, I didn't like it, but we had to do that to get consensus") while letting everyone take credit for everything (since their ok is necessary to get consensus), which makes it an attractive proposition for people who want to further their careers without really doing any work. You also end up with people who arbitrarily disagree with things just so their voice is heard, you get political decisions ("I'll agree to your pet feature if you agree to mine"), you get specifications that feel like they've been written by fifteen people all with different styles, in short, you end up with a technology that doesn't know what it is and doesn't do anything well.

You get much better results by putting all the blame on one person, who then feels extremely motivated to not design something that sucks, while diluting the credit to all the people who are contributing solid technical information. This model pushes the people who don't want to do real work away, improves the quality of the final product, and provides an environment where if there are multiple completely divergent viewpoints, they can compete rather than being forced to ruin each other.

The other problem with "consensus" is the question of consensus among whom? In practice in specification working groups it ends up being consensus amongst those who bothered to show up, but this is almost always a non-representational group. For example, in some groups (e.g. W3C's WebApps group) implementors tend to be over-represented while authors and users are virtually absent. In others (e.g. IETF's hybi group) implementors of one conformance class (in this case servers) tend to completely outweigh implementors of another whose buy-in is actually more critical to the success of the technology (in this case browsers — WebSockets would have gone nowhere if none of the browsers implemented it, but would still have been a roaring success if only a fraction of server vendors cared to support it, since anyone can implement the server side). I've been in situations, e.g. the sXBL fiasco, where I've represented all the browser vendors in a group consisting of a dozen or more people, and if everyone agreed to something but me it was considered that we had consensus, even though in reality it meant none of the implementors were on board.

This is why "consensus" isn't a value I hold highly. Specs shouldn't be designed to consensus, they should be designed so that they end up solving real problems.

(Note that this does mean that there are certain stakeholders who need to be on board -- e.g. a majority of implementors for the key conformance class. So for example, for HTML, I need to make sure that whatever I spec is something that the bulk of implementors want to implement, otherwise it goes nowhere. But that's not consensus, it's just that "we won't implement that" is highly relevant technical feedback.)
Max Kanat-Alexander's profile photoMark Warren's profile photoShelley Powers's profile photoIan Hickson's profile photo
You have this problem only because technical committees practice more what's know as "not consensus" (not is often replaced with words like "broken" or "shitty".

First, consensus can only work in a group of people who all trust one another to behave well and in the interest of the common good.  If there are other interests, consensus can't work.

Second, consensus requires that people be willing to truly understand what another person is saying.  It requires listening to where you understand their position.  It requires asking for silence and time to make sure you've actually understood not only what they've said, but why they've said it and what their words are representing.

Last, consensus requires that a participant be willing to accept that the group has heard their voiced comments and concerns and have incorporated them.  That means the group needs to be willing to make notes about outstanding concerns, to ensure that unknowns and risks incorporated are included in the decisions, possibly to allow them to be revisited later.  In that way, things that can't be known now don't have to be decided now.

No technical committee I've seen does any of these three things.  So, consensus is not possible.

Consensus is powerful and requires training by each of the participants.  When employed correctly it is fast, effective, and a good way to make sure that everyone gets what needs to be said out into the group.

If you're interested in doing more with actual consensus:
Stipulated that shitty consensus is shitty.  It is also the dominant form of consensus sought in groups in which I've participated.  Its problem is that it sounds really nice on paper and there's no consensus that it doesn't work.  I think we can all agree on that.
Yes.  I don't attempt consensus with people unless they can tell me where they got their training in consensus.  And I really prefer that training to have come from Quakers rather than Anarchists.  (I've been to trainings from both those groups)
Yeah, for the record, when I refer to "consensus" above I specifically mean the kind of "consensus" that is used in standards working groups, which should really be called "majority vote".

True consensus-based development is great, but it is impractical in open communities since it only works when everyone basically already agrees on everything that's important anyway. In the standards world, people often don't even agree on fundamental principles and goals. True consensus-based development basically means turning away people who don't agree with you at a high level. I have seen working groups that work that way, but then you run into the problem of failing to achieve other important values like openness.
I think that it's possible to achieve consensus in that environment, but you have to be willing to take a very long time to do it.  I'm thinking years and years for everyone to truly understand all the positions involved.  I suspect that most people wouldn't stick through that in the absence of other value.
Well, then you are sacrificing another value — not openness, but promptness. Which leads to failing to get relevance, too, since someone else will have done it for you by the time everyone agrees. (In fact, taking a long time itself might get you consensus just because you're losing those who disagree and don't want to wait, so really it's just a variant of what I said above, pushing those who disagree out.)
Too often we start a standardization effort without agreeing on the principles of what we are trying to standardize. E.g. no agreement on how to measure a "good" outcome. This is the biggest repeated failure case I have seen.
This could work if the one person is completely unbiased, has experience and wisdom of all people who would be otherwise in committee, doesn't gives preference to one of competing approaches, completely understands to requirements and motivations of stakeholders affected by the developed technology, ... It's very unlikely that such person is living on planet called Earth. 

Of course design by committee sometimes sucks, but it really depends on committee. There are rather good ones and there are ones producing bad or useless specs.

In my experience the best approach is to take something good developed by one very talented person and then polish it and add few missing bits inside committee.
The context of this post had actually nothing to do with any of the specs I was editing, it was about Anne editing the URL spec. :-)

That people disagree with the approach I describe above is not news; I wouldn't have written the e-mail explaining it if it wasn't controversial. :-) However, an argument in favour of an organisational structure for tech development other than having a tech lead would need to be defended and argued for, rather than the tech lead model and the argument against the majority vote model just being insulted.

For example, the tech lead model is basically how almost all software development happens, both in private enterprise and in open source software. Why would Web technology be any different? I've given several examples of cases where the majority vote model has failed quite badly, or has bad failure modes with no recovery path. Why are those failures worth it? Competition is how capitalism works, and capitalism is one of the corner stones of modern developed society (even in newer economies like China). Why would competition (the recovery model for the "tech lead" approach to tech development) be a bad model in the Web standards world?

These are all questions that would have to be examined and answered if a true debate were to take place.
You're comparing apples to oranges, +Ian Hickson. There's a world of difference between developing a specific piece of software and creating a specification. 

In addition, you're also incorrect with your understanding of the 'tech lead model'. You may have worked on a lot of specs, but I've worked on a lot of projects for a great number of companies. What you're saying is, well, hogwash. 

Typically, software applications are defined for one specific use: a business use with well defined and finite customers who provide detailed instructions (user requirements) about what they want. 

The tech team meets regularly with the users, and the users--or the group of people representing the users--are the ones that have the final say on the product. 

There is usually an overall architect if the project is large--but they don't just think up what's needed on their own, and attempt to tell the users what they want. And the architect doesn't work in a vacuum. The data people are the ones responsible for data design, and others are responsible for other decisions, such as types of equipment to purchase and software to use. Then there's the testing team, the user acceptance folks, the documentation people, and so on.

I've worked on a couple of systems, including support for Saudi Arabia's air force defense system, where the numbers of people in the team number into the hundreds. Someone playing King of the Mountain wouldn't last a day.

It is very much a team effort.

And many of these teams work really well. I've been privileged to work with great teams at Boeing, Nike, Sierra Geophysics (a Halliburton subsidiary), John Hancock, and various other companies and government organizations. One key thing about all of the teams is the understanding of the importance of each team member, that no one is King of the Mountain, and cooperation and mutual respect is the name of the game. 

The problem with your comment Ian, and others of like nature, is you really don't have much exposure in the real world. You really haven't worked that many jobs for many companies. You've insulated yourself in a tech bubble and you seem to believe if you say something with enough surety and confidence, others will believe you. True, some do, but primarily only among others like yourself, who typically haven't a significant exposure to real world development. 

You're all spec wonks. 

Being a spec wonk isn't a bad thing, and brings its own expertise to the table--but it definitely doesn't somehow magically make you all capable of understanding what everyone needs.

Because you're all spec wonks, it's especially important to get feedback and input from others who do have the real world experience you lack. But you just don't see that. If anything, you seem to hold real world experience against people. 

"Oh, I've done more spec work than any of these people. What do they know about specs?"

They may not know the mechanics of how a spec is worded, they may not have a lot of experience building browsers, but they definitely know what works outside the offices of Mozilla, Google, Opera, Microsoft, and Apple. 

You know what's funny, but in the teams I worked with, the most important player was the end user. We used to complain--loudly--if we couldn't get access to reps from the business end. We needed these people because they knew what the application needed to do in order to be successful. We wanted to create successful applications. 

The browser companies, they've forgotten all of this. They cater to a small portion of end users--most decidedly geek--and have ignored anyone else in their push to Be First with the latest gewgaw. 

They incorporate stuff into browsers now that make them insecure and decrease their performance, but it's all Cool and Stuff, and that's OK for the tiny audience they only seem to care about. The only problem is, in the real world, we actually care more about security, reliability, performance, and accessibility than if the browser is all Cool and Stuff.

You have users wanting to be involved. You have experts from other fields asking, sometimes even begging to be involved. You have other techs with vast experience--real world experience--wanting to be involved. Yet you throw it all away. And then you brag about it.

That are showing the existence of a communication issue in the decision model used.
"Competition is how capitalism works, and capitalism is one of the corner stones of modern developed society (even in newer economies like China)"

What an incredibly naieve view. Competition is important but so is consensus on standards such as currency, containerisation and the metric system.
+Shelley Powers Apart from the parts where you're dismissive about me, my experience, my knowledge, etc, we don't actually disagree on the original point that much. A spec can't be written in a vacuum. The users (in the case of a specification, the "users" are generally the implementors) do have the final say. The spec can only be successfully written by having discussions with lots of people. And so on. None of this contradicts the OP.
+Ian Davis We can hardly be said to have consensus on any of those things. Even within just the US, there are very few issues where there's any kind of consensus. For example presidential elections poll at around 50/50, which is about as far from consensus in a two-party system as one can get. We struggle through with hundreds of currencies, several different container standards (though with something like containers, arbitrary vote is probably ok, I don't know if there are deep technological decisions to what size a container should be), and whole parts of the world have not yet adopted the metric system — and in any case, I don't think it's a good example of consensus-driven development either. Scientists over the years have proposed new definitions unilaterally, and they get adopted or not in much the same way that specs get adopted or not.
Incorrect. We can definately say there is consensus on all of those things. If you want to trade internationally to any non-trivial degree you need to accept one or more of the internationally recognised currencies, fit out your operations to internationally agreed container standards and communicate with your supply chain in an internationally agreed measurement system. You don't make up your own versions of any of those things to compete. You use those pre-agreed standards to lower the cost of competition in areas that matter.
That doesn't disagree with the OP either. In fact, it's consistent with it. A currency is developed, mostly by fiat, and then offered on a market, and people either agree to use it, or don't (some currencies never get agreed to). This is pretty much exactly the model that I describe here; one person writes a spec, then the wider community either follows it, or doesn't. My argument isn't that people around the world should be forced to follow a spec written by one person, that would indeed be nuts (both in terms of it being impractical to enforce, and in terms of it being a terrible way to motivate the editor to do a good job). My argument is that you shouldn't micromanage the editor.

Maybe the misunderstanding here stems from a difference in understanding about what a standard is. Anyone or any group can write a standard using any methodology that they want. Nothing makes that standard be something people follow. At the end of the day, you have to write something people want to follow. For example, ISO HTML was basically universally ignored by Web browsers, while HTML4 was followed much more closely. Nobody could force the browser vendors to implement ISO HTML.

The only question I'm posing in the OP, or rather the only question I'm answering, is what methodology leads to the best spec before we ask the question of whether anyone is going to follow it. In fact, one could say it's the answer to the question "which methodology is most likely to end up with a spec that is followed".

Note that HTML actually provides a case study on this. Right now it's being developed in two simultaneous ways: at the WHATWG using the "tech lead" model I promote in the OP, and at the W3C using the consensus model. In a few years, we'll be able to look at the world and determine objectively using test suites, which spec was most closely followed by implementors, and this will give us a data point regarding which methodology was most successful in this particular case. The URL work may provide another datapoint, if Anne's work doesn't get adopted by the IETF: will implementors follow STD66, or the WHATWG URL standard? Time will tell.
+Ian Hickson I'm not being dismissive, as much as I'm trying to demonstrate that your assumptions are not based on what really exists. If I'm abrupt it's because I can't think of any other way of making a crack in that rigid view you have of How Things Are Supposed To Be. 

Even your continued--and may I say, obsessive--adherence to a belief that the only customers of web specifications are the browser makers is so far wrong as to completely undermine anything else you say. It is this, probably more than anything else, that has led to the divisiveness inherent in the HTML5 specification process (and from I can see, other spec developments, too). 

Browsers are a tool. They're an application. They are the thing being used. You're basically ignoring almost the entire body of users in favor of the tool developers. 

A real world analogy would be fulfilling a request for a new claims system for an insurance company, and then asking the developers of the application what the requirements should be. And if the actual users of the tools timidly put up their hands and say, "Please, sir, can I have some say?" you look right through them. 

We don't exist to you. At all. An irritation, a little noise in the background to joke about or quickly dismiss. 

You know something else? The lack of teamwork shows in the specs. It really does. 
"I hold it, that a little rebellion, now and then, is a good thing, and as necessary in the political world as storms in the physical."  
-- Thomas Jefferson

Perhaps challenging the existing model of 'consensus' could be seen as a worthwhile endeavor, especially if the alternative process for determining that a spec be 'technically sound' was agreeable.  That part seems to amount to peer review and open discussion, in which case there's still a risk of someone with a good argument not showing up...  There's also a risk of bias and siloed-perspectives entering the writing, but would that be different in either case?

The fact that many people are getting riled up and a bit enraged makes it seem to me like the +Ian Hickson / +WHATWG way is either a very good thing, or a very bad one, but who knows which.
+Shelley Powers Saying things like "you really don't have much exposure in the real world. You really haven't worked that many jobs for many companies" is dismissive, whether you intend it that way or not.

You have a tendency to take my statements and extrapolate them to extremes that aren't justified, and then arguing against those points. I agree entirely that users are the most important constituency for Web specs. In fact we even have a shorthand way of saying this ("The Priority of Constituencies", which refers to the order "users, authors, implementors, spec writers, spec purity"), which is brought up regularly when discussing what the specs should say. It's frankly offensive to me that you suggest that users (and authors) aren't important to me. They are the two most important constituencies.

That's orthogonal to what I was saying, though.

The point I was making (in response to your longer comment above) is a pragmatic one, not a value judgement. It is an empiric fact that if all the users in the world were to agree on a particular feature, and all of the implementors were to agree on another instead, that the Web — regardless of the specs, even! — would end up having the feature the implementors want. This is because the only power the users have is in choosing an implementation, and if they all do the same thing that the users don't want, the users cannot chose the feature they do want.

Similarly, if all the authors and all the spec writers in the world wanted a particular feature, but the implementors wanted another, the feature that would end up in the actual shipping Web is the one the implementors want.

If you disagree that this is what reality is like, then I fear you fundamentally misunderstand how the Web actually works.

I'm not saying this is the way it SHOULD be, or that it is the way I WANT it to be (it's not), I'm saying it's the way it IS. We ignore this at our peril. (I think the W3C losing track of this is why XHTML2 failed.)

This is why spec writers cannot write in a vacuum, why it must be teamwork. Indeed, there's tons of teamwork on the HTML spec, the URL spec, all the WHATWG specs. The OP doesn't argue against teamwork. It argues in favour of that team having a leader with final say, as opposed to the team making decisions by majority vote. That's all.
+Ian Hickson what I said is true. You've worked for browser companies and on specs. 

This provides valuable expertise on specification writing and browser development...but it is limited to just this one specific environment. You have a lot of depth, but you don't have a lot of breadth of experience. 

The thing is, that's OK. You don't need to have all the experience, when you're part of a team and other people bring in other experience. 

That's what you don't seem to get. You can't operate in a vacuum, because you just don't have the background to do so. No one does. But if anyone tells you this, you take it as either a personal insult or challenge. 

And let's drop the The Priority of Constituencies et al stuff. Seriously.  That's just a geeky way of shutting people down.

The whole purpose behind principles is they act as aid to communication--not as rigid ideological bars in order to assert control. Even now, you talk about how important users are to you, but if I ask you to define the users, what will you say?

Can I take a guess?

Browser developers.

Yes, browser developers are important, the same as application developers are important. If something just isn't going to be possible, the developers have a responsibility to speak up.

But you all conflate what is meaningful from a tech implementation standpoint, with what you all feel is the "right way" of doing things. It's not that there's implementation difficulties with doing things a certain way--you just don't agree with them. 

You've become the be all-end all to the web specifications--basically you all work in a room full of mirrors.

As for your comment about the only choices we have is which browser we use--oh that is so wrong, on so many levels. And frankly, the only option you, the WHATWG, even, sadly, the W3C have left us now, is to show you how very wrong you are.

"You can't operate in a vacuum, because you just don't have the background to do so. No one does. But if anyone tells you this, you take it as either a personal insult or challenge."

I don't take it as a personal insult or challenge... I agree that I can't (and don't) operate in a vacuum! Nor does Anne, whom the OP was originally about. Nobody has ever suggested that we should.

"And let's drop the The Priority of Constituencies et al stuff. Seriously.  That's just a geeky way of shutting people down."

If you can't take my saying that I think user are the most important constituency as anything other than my trying to shut you down, then I don't think we're in a position to make any progress via discussion.

"if I ask you to define the users, what will you say? Can I take a guess? Browser developers."

Um, no, browser developers are implementors, the third in the priority of constituencies. Users (in the context of Web technologies) are the two or so billion people who use software to browse the Web.

"And frankly, the only option you, the WHATWG, even, sadly, the W3C have left us now, is to show you how very wrong you are."

I have no idea what you mean, but please, do so! Since we are unable to communicate usefully, showing is all that we have left.
Having worked in open source and having been a web author following spec work for the last 10 years or so, I can attest that everything you say in the OP conforms completely to my experience.

The comment thread here in fact seems to be an example of exactly what you're taking about. Imagine if many of the commenters in this thread were allowed to design, as a group, the system by which specs were made. Thankfully at the WHATWG it's you who does that, and that seems to have resulted overall in the best web spec process we have ever had.

If anybody disagrees, instead of arguing abstract philosophy, they should point out two similar specs (or two similar products): one which was designed by committee, and one which took the tech lead approach ("I accept input but all final decisions are mine alone."). Then, you'd have to show that the spec or product made by committee was considered better by all affected than the spec created by the tech lead approach (excluding proprietary standards where no input was allowed or searched for ever, which is not this tech lead approach).
Max's challenge above (<i>to show that the spec or product made by committee was considered better by all affected than the spec created by the tech lead approach</i>) is absurd.

Over the last fifty years we've had great specs developed by consensus building and we've had great specs developed by individuals, some of whom accepted and incorporated input from a group. We've had open source specs and proprietary specs. We've had open architectural strategies and proprietary architectural strategies. The W3C, the IETF, the ISO, the IEEE, and dozens of vendors from IBM and Microsoft to the holy church of Apple have created standards and the specs to buttress them. No matter what historical point of entry you choose for an examination of the craft of systems development and implementation, you will find intelligent, highly motivated people there almost obsessively engaged in their work.

Over thirty years ago Tracy Kidder wrote "The Soul of a New Machine," a good book that I think probably still has some descriptive relevance. [More about it here: ] All of us who are following this thread are blessed to work in such a fascinating milieu, but if I've learned anything over the years I've spent working and managing systems work it's this: there is always more than one way to do things and when your spec is finally written and the products it describes have been developed, then they will last a little while but soon be obsolete.
Hey Frank. That's really well said.

I don't think that the specifics of my request were absurd, though--the argument bring made in the comments was, in its essence, that consensus-based specification is actually better than "individual who gathers input then makes decisions" specification building, and that specs should be built by committee. (Some of the commenters didn't quite some out and say that, but it sure sounded like that was the point they were arguing.) So all I was saying is that if those people would like to substantiate their argument, they should give some examples that demonstrate how much better their process worked.

I totally agree with you that there are all sorts of ways to do things, and that they way you do something should be appropriate to the thing you're trying to accomplish. There are lots of different motivations behind why somebody would choose a particular system for their specification.

I personally can't think of any situation in which designing a spec by committee has been better than a spec designed by an individual, except perhaps that sometimes more people are willing to implement it because they feel like they had a hand in it. (That's not a small advantage, but I think it might not actually be as necessary [or even true] as we sometimes imagine--note that more organizations currently seem willing to go by the WHATWG HTML spec than the W3C spec, and it's edited by Hixie and not designed by committee.) I wouldn't rule it out from consideration as a possible process, but I would rank it pretty low to start off with in any consideration of how a spec should be built.
Max, the problem is that teamwork has become redefined as "design by committee" in this thread. I don't know of many things designed by committee that are good, but I know of many good things coming from teams. 

Many technologies we use today may have originated with an idea or concept from a single individual, such as JavaScript and HTML, but usually the individual has either moved on, or has become part of a team of people who work on the underlying specifications. And even then, the originators were inspired by others, or part of a group within their respective organizations. 

People may say this person or that is the 'father' of the specification, but most of these people will take pains to remind others that they worked as part of a team. 

Case in point is XML. Jon Bosak may be thought of as the father of XML. Some would say Tim Bray is. Both, though, worked as part of a W3C working group. As part of a team. Architect and editor, yes. But still part of a team. 

Tim Berners-Lee is the father of HTML, but he's never assumed ownership of the specification. And he was inspired by another SGML, which was designed by a team. Though you may criticize earlier versions of HTML, they have been extremely successful and they were developed as part of a team. 

Point of fact, if anyone should assume ownership of HTML it should be Tim B-L, not Ian Hickson. Tim B-L did the heavy lifting. Others after Tim B-L set the stage for HTML5 today. Most of us don't know their names, because they've never tried to assume some kind of proprietary rights to the spec. 

In fact, I don't know of any specification developed as part of a group effort that has such control exerted by one individual. I don't know where people got the idea that they somehow "control" the spec, but they should lose the attitude, and quickly. They do more harm than good. 

As for the goodness of "design by an individual", you may count HTML5 a success. I don't. The spec is bloated, the co-chairs have had to become dictatorial just to try and get the thing out the door, there are many features at risk, many in the community of end users are unhappy--and the lines that mark it are so fuzzy that practically anything ongoing in the W3C has become subsumed under this grand banner of "HTML5", 

Lots of noise does not equate to success. 
Teamwork is orthogonal to the decision process. There's tons of teamwork going on with WHATWG specs.

An interesting thing that I learnt recently in discussing this with IETF folk is that what I describe as the "tech lead model" is actually exactly what the IETF describe as "rough consensus". In the IETF's case, the decision maker is a chair, rather than an editor, but the effect is the same. (At least, in groups running by that model. Apparently the IETF has had issues with groups running on actual consensus, rather than rough consensus, in recent years, with all of the problems I describe in the OP.)

As far as the W3C's HTML5 spec goes, note that I'm no longer editor of that spec, and that spec is no longer edited according to the model I describe above. I agree that it's not a success. I think the WHATWG HTML spec is, though. If nothing else, just look at the amazing results we've had in getting the browser vendors to converge on a single parsing model. Five years ago I wouldn't have believed that was possible, let alone possible in as short a timeframe as we managed it. That was the direct result of teamwork amongst many people on the WHATWG list, funneled through one decision maker.

The only people who control the spec, though, are the implementors. If you think I think I control HTML, you are woefully mistaken. I think it's a prerequisite to doing a good job to realise that spec writers, whether single individuals or committees, have no meaningful power. When one forgets this, one ends up doing things like XHTML2.

If TimBL wants to edit the HTML spec, he's welcome to it, by the way. There's tons of other specs to edit that I could work on instead. I don't think he's interested, though.
A continuation of this line of thinking - only second place and lower players need specs; the market-share owners (e.g. Apple, Microsoft, IBM etc...) implement whatever they & their customers want while the rest of the players attempt to catch up.
Yeah, that's something one can see a lot of in the Web standards world, especially in the past. Right now we're in a sweet spot where there isn't really a clear market leader in the browser world, which is awesome. Here's hoping things remains that way forever. :-)
The WHATWG process is even worse. It's not even a process: It's a lead singer with backup.
Several lead singers now; don't forget we now have several specs with several different editors. The lack of process is very intentional, so I'm glad it's recognisable.