Re: [Boost-users] Getting started with Boost: what did you need to know?
David, At the risk of annoying some Boost developers... My single biggest complaint is the Boost documentation-- not so much that the libraries are undocumented, but that it's so hard to find your way through the documentation that is provided. There is the documentation on the Boost site rooted under Libraries | Documentation. Then there is the documentation under doc/html in the Boost source tree. Then there is the documentation under libs/<libraryName>/doc in the source tree. Sometimes, they are the same, sometimes, the libs documentation has extra stuff. Why? A side effect of having HTML documentation is that there is no index--a valuable tool when you are trying find your way through new territory. The Boost documentation standard recommends having a table of contents-like list of topics on the first page of a library's documentation. Sounds good, but since there usually isn't any paragraphing levels shown, what you get is a list of topics, some of which repeat with no indication of which are subtopics of which. The naming of documentation files can be misleading also. The discussion of mutexes (with no specific mention of threads) is called "thread" while the discussion of threading (with no specific mention of mutexes) is call "threads" [note the plural]. Or, maybe it's the other way around. The available documentation takes a scatter gun approach at to the intended audience. Under mutexes (whatever its name), there is a treatise (as I remember) on all possible mutex alternatives. It's only later that the reader discovers none of them are actually implemented. Similarly, the serialization documentation has a long discussion on shared pointers in a file named shared_ptr.html. Another file named shared_ptr2.html starts out by saying that about the stuff you just read in shared_ptr.html "Unfortunately, this way of doing it suffered from some undesirable features." This is a lot like giving someone detailed driving directions only to say, "if you go this far, you've taken a wrong turn." The documentation is written so that in order to do almost anything, you have to read everything, including all of the "here are all the wrong turns I took in developing this library" pages. For example, the documentation for the serialization library seems straightforward, but you'll probably miss the special macro you are supposed to use if you are serializing an abstract class. The Boost documentation is serverly in the need of global editing. Merrill
Merrill Cornish
David,
At the risk of annoying some Boost developers...
My single biggest complaint is the Boost documentation-- not so much that the libraries are undocumented, but that it's so hard to find your way through the documentation that is provided.
I think the documentation is very uneven, and that's a problem. The documentation for some of the libraries is really easy to navigate, but I think those are the exception.
There is the documentation on the Boost site rooted under Libraries | Documentation. Then there is the documentation under doc/html in the Boost source tree. Then there is the documentation under libs/<libraryName>/doc in the source tree. Sometimes, they are the same, sometimes, the libs documentation has extra stuff. Why?
I don't know what you mean by "extra," but it goes like this: the Boost source code repository contains at least four different documentation formats: 1. Straight HTML, authored by the library writer, in libs/<libraryName>/doc. Once upon a time, all our docs were written by hand in HTML. 2. ReStructuredText. This is used to generate HTML, and sometimes, PDF. Generally the resulting files are checked into the repository somewhere under libs/<libraryName>/doc. 3. BoostBook. This is used to generate HTML, and sometimes, PDF. The results become one unified document (see "Nightly generated BoostBook documentation" at http://engineering.meta-comm.com/boost.aspx) and are too big to check into the source code repository. They're generated on-the-fly and
A side effect of having HTML documentation is that there is no index--a valuable tool when you are trying find your way through new territory.
I don't think that's necessarily related to having HTML documentation.
The Boost documentation standard recommends having a table of contents-like list of topics on the first page of a library's documentation. Sounds good, but since there usually isn't any paragraphing levels shown,
Not sure what you mean.
what you get is a list of topics, some of which repeat with no indication of which are subtopics of which.
Usually? I think we're all over the map on this one, but it would surprise me if repeated headers were the norm.
The naming of documentation files can be misleading also. The discussion of mutexes (with no specific mention of threads) is called "thread" while the discussion of threading (with no specific mention of mutexes) is call "threads" [note the plural]. Or, maybe it's the other way around.
You mean, you're looking at the names of the HTML files? Or you're looking at their HTML titles?
The available documentation takes a scatter gun approach at to the intended audience. Under mutexes (whatever its name), there is a treatise (as I remember) on all possible mutex alternatives. It's only later that the reader discovers none of them are actually implemented.
You should know that the threads documentation (and the library itself) is suffering a bit from lack of maintenance. The original author disappeared on us and nobody has yet appeared who is really committed to it to take his place. I don't think you should take the condition of the threads docs as representative of anything.
Similarly, the serialization documentation has a long discussion on shared pointers in a file named shared_ptr.html. Another file named shared_ptr2.html starts out by saying that about the stuff you just read in shared_ptr.html "Unfortunately, this way of doing it suffered from some undesirable features." This is a lot like giving someone detailed driving directions only to say, "if you go this far, you've taken a wrong turn."
Yeah, that's bad. Have you posted anything about that with [serialization] in the subject line, to get the author's attention? If not, don't expect it to improve.
The documentation is written so that in order to do almost anything, you have to read everything, including all of the "here are all the wrong turns I took in developing this library" pages.
So, this conclusion is from a sample of two libraries? I haven't seen that sort of thing anywhere myself, but I could be missing something.
For example, the documentation for the serialization library seems straightforward, but you'll probably miss the special macro you are supposed to use if you are serializing an abstract class.
The Boost documentation is serverly in the need of global editing.
Full agreement there. We took some steps in that direction (see http://lists.boost.org/Archives/boost/2005/10/96025.php) but I'm afraid Mr. Stewart's other responsibilities may have overwhelmed him. Perhaps you'd like to help out in some way? We need people with a keen eye for what isn't working in the docs to work on this. Sounds like you're qualified. -- Dave Abrahams Boost Consulting www.boost-consulting.com
David Abrahams wrote:
I don't know what you mean by "extra," but it goes like this: the Boost source code repository contains at least four different documentation formats:
1. Straight HTML, authored by the library writer, in libs/<libraryName>/doc. Once upon a time, all our docs were written by hand in HTML.
2. ReStructuredText. This is used to generate HTML, and sometimes, PDF. Generally the resulting files are checked into the repository somewhere under libs/<libraryName>/doc.
3. BoostBook. This is used to generate HTML, and sometimes, PDF. The results become one unified document (see "Nightly generated BoostBook documentation" at http://engineering.meta-comm.com/boost.aspx) and are too big to check into the source code repository. They're generated on-the-fly and
Having followed Boost from afar for many years and now trying to know it better, my perspective is that different formats are mildly annoying, but different documents on the same topics in different locations is pretty baffling. Go to the Boost home page and click on Libraries>Documentation, and you're taken to http://www.boost.org/libs/libraries.htm. This appears to be a comprehensive listing of libraries in Boost, but, as was clarified for me in an earlier thread, this includes only libraries in the current release; libraries accepted into Boost since then are not listed here. Still, this page provides links to documentation for each library (in libs<libraryName>doc). However, a recent mention on this list of QuickBook, which I had never heard of, led me via Google to http://www.boost.org/doc/html/boostbook.html, which is in the middle the BoostBook David mentions above -- something else I had never heard of. Working my way up the path from there led me to http://www.boost.org/doc/html/, which is another listing of libraries in Boost, but this one is much shorter than the one above. Until I read David's post above, I was planning to post a question asking about the relationship between the two lists of libraries. Now I'll simply remark that the current situation is, in my view, confusing. Given that the BoostBook is far from complete, what is its purpose? Scott
Scott Meyers
David Abrahams wrote:
I don't know what you mean by "extra," but it goes like this: the Boost source code repository contains at least four different documentation formats:
1. Straight HTML, authored by the library writer, in libs/<libraryName>/doc. Once upon a time, all our docs were written by hand in HTML.
2. ReStructuredText. This is used to generate HTML, and sometimes, PDF. Generally the resulting files are checked into the repository somewhere under libs/<libraryName>/doc.
3. BoostBook. This is used to generate HTML, and sometimes, PDF. The results become one unified document (see "Nightly generated BoostBook documentation" at http://engineering.meta-comm.com/boost.aspx) and are too big to check into the source code repository. They're generated on-the-fly and
Having followed Boost from afar for many years and now trying to know it better, my perspective is that different formats are mildly annoying, but different documents on the same topics in different locations is pretty baffling.
I read on assuming you were going to point me at such documents, but having done so I don't know what you're talking about... oh, the lists of libraries?
Go to the Boost home page and click on Libraries>Documentation, and you're taken to http://www.boost.org/libs/libraries.htm. This appears to be a comprehensive listing of libraries in Boost, but, as was clarified for me in an earlier thread, this includes only libraries in the current release; libraries accepted into Boost since then are not listed here.
Of course. It would be pretty upsetting to most people if libraries were listed there and they downloaded the release only to find they weren't included.
Still, this page provides links to documentation for each library (in libs<libraryName>doc).
What do you mean "still?" I see no contradiction here. There are no libraries in http://www.boost.org/libs/ other than those in the last release. If you want to track the current CVS, we have a reflector of it at http://www.boost-consulting.com/boost, where you can see a complete list of everything that has been checked into the source code repository (assuming the authors of the new libraries have updated the links).
However, a recent mention on this list of QuickBook, which I had never heard of,
It's not a library.
led me via Google to http://www.boost.org/doc/html/boostbook.html, which is in the middle the BoostBook David mentions above -- ^^^^^^^^^^^^^^^^^^^^^^^^^^^ Sorry, can't parse it.
something else I had never heard of.
Not a library either.
Working my way up the path from there led me to http://www.boost.org/doc/html/, which is another listing of libraries in Boost, but this one is much shorter than the one above.
Yes, it's a table of contents for the docs that are generated from BoostBook. One day we'll port all the library docs to QuickBook or BoostBook and then it will be complete.
Until I read David's post above, I was planning to post a question asking about the relationship between the two lists of libraries. Now I'll simply remark that the current situation is, in my view, confusing. Given that the BoostBook is far from complete
BoostBook is complete. It is a documentation format. Perhaps you just mean that not all documents appear in the BoostBook TOC?
what is its purpose?
The documentation format? http://www.boost.org/doc/html/boostbook/introduction.html The BoostBook TOC is an index to the docs that happen to be written in the BoostBook format. Its existence probably _is_ somewhat confusing. Should we eliminate it? I'm not sure. Maybe it would be better to simply add a notice to the top that lets people know it doesn't cover everything. I've cross-posted this to the Boost documentation list so others more knowledgeable than me can chime in. -- Dave Abrahams Boost Consulting www.boost-consulting.com
On Mar 3, 2006, at 12:02 AM, Scott Meyers wrote:
However, a recent mention on this list of QuickBook, which I had never heard of, led me via Google to http://www.boost.org/doc/html/boostbook.html, which is in the middle the BoostBook David mentions above -- something else I had never heard of. Working my way up the path from there led me to http://www.boost.org/doc/html/, which is another listing of libraries in Boost, but this one is much shorter than the one above.
That second, shorter list of libraries should be obliterated. I've removed it for upcoming Boost versions.
Until I read David's post above, I was planning to post a question asking about the relationship between the two lists of libraries. Now I'll simply remark that the current situation is, in my view, confusing. Given that the BoostBook is far from complete, what is its purpose?
It was originally meant as a replacement for the first list, but that's not going to happen. Doug
participants (4)
-
David Abrahams
-
Douglas Gregor
-
Merrill Cornish
-
Scott Meyers