ISO/IEC Website and Charging for C and C++ Standards
The ISO C Standard (ISO/IEC 9899) and the ISO C++ Standard (ISO/IEC 14882) are not published online; instead, one must purchase the PDF for each of those standards. I am wondering what the rationale is behind this... is it not detrimental to both the C and C++ programming languages that the authoritative specification for these languages is not made freely available and searchable online? Doesn't this encourage the use of possibly inaccurate, non-authoritative sources for information regarding these languages?
While I understand that much time and effort has gone into developing the C and C++ standards, I am still somewhat puzzled by the choice to charge for the specification. The OpenGroup Base Specification, for example, is available for free online; they make money by charging for certification. Does anyone know why the ISO standards committees don't make their revenue in certifying standards compliance, instead of charging for these documents? Also, does anyone know if the ISO standards committee's atrociously looking website is intentionally made to look that way? It's as if they don't want people visiting and buying the spec.
One last thing... the C and C++ standards are generally described as "open standards"... while I realize that this means that anyone is permitted to implement the standard, should that definition of "open" be revised? Charging for the standard rather than making it openly available seems contrary to the spirit of openness.
P.S. I do have a copy of the ISO/IEC 9899:1999 and ISO/IEC 14882:2003, so please no remarks about being cheap or anything... although if you are tempted to say such things, you might want to consider the high school, undergraduate, and graduate students who might not have all that much extra cash. Also, you might want to consider the fact that the ISO website is really sketchy and they don't even tell you the cost until you proceed to the checkout... doesn't really encourage one to go and get a copy, now does it?
Edit / Comment
It occurs to me that if the ISO standards committees were to make their revenues from certification that it would incentivize smaller but more frequent changes to the standard rather than very large revisions very infrequently. It would also incentivize creating an implementable standard (I doubt the ISO C++ committee would have introduced "export" in the first place if they got their revenues from certification).
I have found a solution to one of the annoyances of not having the PDF online.... I have uploaded my copy of the standards into my Google Docs, so that I can still access it from any computer without carrying it around.
For what it's worth, Herb Sutter wrote an article touching on this issue, and there's a fair bit of discussion in the comments:
- http://herbsutter.com/2010/03/03/where-can-you-get-the-iso-c-standard-and-what-does-open-standard-mean/
As he mentions, "open" does not necessarily mean "no-cost". As far as students or others with limited financial means who might want free versions of thee documents, note that:
- many references that students may want (or even be required to access) are not free
- for most work, the standards simply aren't a requirement - there is plenty of freely available documentation that is more than adequate for much of the work that almost anyone might want to do with C or C++
- the draft documents are freely downloadable in many cases; while they aren't the standard, the final draft versions are very close and might be good enough for a lot of uses.
If you're serious about C or C++ programming, I'd suggest that you should have a copy of the standards (though I wouldn't say it's a requirement). I'd also suggest that there shouldn't be an expectation that they'd be free, just as for any occupation or avocation the 'tools of the trade' are generally not free - whether those tools are physical objects like hammers, or information such as manuals or specifications.
In fact, I'd argue that a good set of references would be preferable to a set of the standards, if you could only have one or the other or you're starting out (you'd probably want a couple different ones for C++, while Harbison & Steele is all that's needed for C).
Don't get me wrong - I'm not opposed to them being made freely available (and I'm happy that they're currently rather inexpensive), but I don't think there's any reason to expect them to free.
The answers to the SO question, "Where do I find the current C or C++ standard documents?", have pointers to cheap versions and free draft versions. Also note that the current C99 standard (with TC1 and TC2 incorporated) is available for free download:
- http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1124.pdf
There's a note that N1124 "is a WG14 working paper, but it reflects the consolidated standard at the time of issue".
It's unfortunate, but I can see why it is the way that it is.
The standards bodies are required to be self-funding - the idea behind charging for the standards is that those that are benefiting from the standard are then paying for its production. As these standards bodies are intergovernmental organisations (not incorporated companies like The Open Group), they don't have a charter to be in the business of providing certification, so they can't fund it that way.
Does anyone know why the ISO standards committees don't make their revenue in certifying standards compliance, instead of charging for these documents?
This one I can answer: There is no money to make there. Except for EDG, there never was a standard-conforming C++ compiler. And even if they charged for vendors trying (and vendors being stupid enough to have their obviously non-conforming compilers evaluated), besides GCC (who would pay for it?) there's very few vendors to make money from.
Regarding the fee: At least at one point the best deal was to buy the C++03 standard bound as a book.
While I understand that much time and effort has gone into developing the C and C++ standards, I am still somewhat puzzled by the choice to charge for the specification. The OpenGroup Base Specification, for example, is available for free online; they make money by charging for certification. Does anyone know why the ISO standards committees don't make their revenue in certifying standards compliance, instead of charging for these documents?
I can't speak for the exact motivation, but keep in mind that ISO is a huge organization. They don't just standardize programming languages, but also container dimensions, power plugs, show sizes and a million other things. They are also, much more than the more specialized standardization organizations, very focused on stability, even at the cost of a lot of red tape, and very slow working processes.
I'd imagine there are a couple of reasons why they charge for the document:
- it finances some of the organization's work, and
- they don't see it as a problem. ISO in general does not really deal much with standards to be used by individuals. Most of their standards are intended for large companies to work with other large companies. For those, paying a few dollars means nothing, and may even be seen as a proof of quality.
- the organization is fairly old. They weren't always able to just distribute a PDF document. Most likely, the rule to charge a fee for the documents originated in the days when they had to be printed and shipped to you.
- you're not buying the document from ISO itself, but from specific national bodies, like ANSI. This should give you some idea of how big ISO is, and how big a network it has to fund. In fact, the price for the standard varies widely between countries, leading me to believe that the price is set by the individual national bodies, rather than centrally by ISO.
- an ISO standard is pretty heavy-weight. It is the standards body, and if something is standardized by ISO, you can generally be fairly sure that it's worked through, considered from all angles and actually works in practice. Few organizations have this track record. Look at the trainwreck that is every single W3C "standard". Look at the vast number of horrendously underspecified RFC's that make up the internet.
- charging for certification of C++ compilers isn't likely to be a very profitable venture. There aren't many compliant compilers around, and several of the compilers that exist are written for free, as open source projects. They could be significantly hindered by having to pay thousands of dollars in certification fees (and it'd have to be thousands of dollars to make up for the lost income from thousands of users downloading the standard). Are you willing to drive new compilers out of business just so you can save $20 or whatever they charge? Would G++ ever have gotten off the ground if they'd had that kind of barrier to entry? Would LLVM's Clang compiler? Hell, would Microsoft be willing to pay this fee year after year, when they could just be focusing on .NET?
One last thing... the C and C++ standards are generally described as "open standards"... while I realize that this means that anyone is permitted to implement the standard, should that definition of "open" be revised? Charging for the standard rather than making it openly available seems contrary to the spirit of openness.
No, they use the correct definition. They are not charging for the standard. You can implement a C++ compiler for free, without paying any royalties or licensing costs. The standard is openly available. It is just not freely available. But certainly openly. Anyone can gain access to it. You don't have to be associated with ISO, or work for a specific company (or any company at all). You don't have to be a citizen of a specific country or work in the government or have an uncle who worked on the standards committee. It is openly available to anyone who's willing to hand over a few dollars, less than what a good C++ textbook costs.
It is the document they charge for. Not the standard. The standard is free and open. The document is not free.
Really, there should be nothing new in this. Why do you think the Open Source movement makes such a big distinction of "free as in beer" and "free as in freedom"? Because open source does not necessarily imply free of charge. Often, open source software is free, but it doesn't have to be, and it isn't always.
Do you then also think the "open source" name should be changed?
We've already got a word that means "free". It's "free". A standard that is distributed free of charge could be called "free". "open" means something else. Why do you want to change the meaning of "open" to mean the same thing as "free"?