
Paul Giaccone wrote: [...] What you wrote is probably a result of enthusiasm. However, I have to object strongly to some parts of your message.
"What the site needs, in my view, on the front page is some sort of material selling Boost.
This is nonsense. We don't need to "sell" Boost. Why was Boost set up in the first place? This information is on the front page in the first section.
Because, in some areas, C++ is deficient, is difficult to use or expects too much of the programmer. Boost helps by providing what is useful but missing and takes a lot of the work out of C++ programming.
That's blah-blah. Every library is supposed to provide something that is useful but missing and to take work out of programming.
"Essentially, Boost needs to sell itself as something that no C++ programmer would want to be without.
[stronger wording self-censored] This is nonsense. Boost does not need to sell itself or to be sold by anyone. People are free to use Boost libraries or not, at their own (or their boss') will. Think how the adman would write it:
"C++ getting you down? Spending hours tracking down that memory leak? Then try Boost! It will change your life!" Well, maybe not, but something along these lines would certainly go a long way to showing why anyone should be using Boost.
Frankly, you seem to be an evangelist (in the worst sense of that word) on a mission here. I strongly object to this attitude. Anything like that on any Boost web page would strongly discourage contributing to Boost, at least in my case. At the moment, the front page tells me is
that the libraries are free, portable, peer-reviewed and work well with the C++ standard library, but that doesn't tell me why it is to anyone's advantage to use them."
This is very essential and useful information, though. It names a lot of advantages Boost has over many other libraries. Just consider the many expensive and/or restrictively licensed, non-portable libraries of questionable quality you have seen. The front page also tells us that Boost libraries have been written with standardization in mind and that standardization is in progress for certain subset of Boost libraries. This already describes a very good reason to delve into Boost. The existing front page also tells us that Boost has a hassle-free license, which certainly is also an advantage.
David Abrahams of Boost Consulting, who started the thread, suggested that I write a paragraph for a selection of Boost libraries that did just this.
This is not a bad idea.
Below is what I came up with, from my experience as a Boost user who has used the libraries mentioned. I think it would be helpful to both users and developers if this text or something similar could be included on the front page of boost.org or some other prominent place on the website. For myself, if I had seen something like this content on the front page, I would have rushed to download the libraries. What do you, as the developers, think of this proposal?
We discussed this earlier on this list. The tendency seemed to be towards a separate page linked from the front page (at least in my perception; we didn't vote). The complete text you suggest is definitely way too much for the front page. What do you think of teasers: if technically feasible, a box with a single section describing the advantage of one Boost library could be put on the front page. The library described would be selected randomly. This would give the page a dynamic touch and it would also stimulate curiosity. Similar things could be done for "Who uses Boost" and for "What do people say about Boost".
"Memory allocation on the heap in C++ requires the programmer to manage the memory, make sure that there is always at least one pointer to the memory and deallocating it at the right time. It is easy to forget to do this or to do it in the wrong place in the code, which causes memory leaks, or, worse, program crashes. Boost makes life easier for the programmer by providing various 'smart pointers' that automatically maintain memory allocated on the heap, deallocating it at the right time and requiring minimal intervention from the user."
Please, keep in mind that memory is, to some extent, easier to manage than other resources. The smart pointers are extremely useful for managing other types of resources, too. Also, programmers are aware of memory management issues. I don't think they need a long explanation.
"A programmer wanting to read and write structured data (such as the member variables of a class) to file can run into a number of problems. How should the data be formatted when written to file? Do the read and write functions correspond exactly? If the structure of the data changes in future releases of the program, will it still possible to read files that were written using the old format? Are files written on one platform readable on another? How should pointers be handled? Boost provides a serialization library that manages all of these problems and more simply and elegantly."
The introduction is too long in this paragraph. Programmers usually know about the difficulties of serialization. If they don't then they will likely not understand the advantages of Boost.Serialization, anyway.
"In standard C++, handling multiple command-line arguments usually requires the user to write a bespoke parser to read in and interpret these arguments and handle syntax errors, missing arguments, duplicated flags and the like. Boost's program_options library handles command-line arguments without fuss."
I don't like this wording. It seems to be addressed to programmers. Programmers tend not to be interested in arguments like "handles command-line arguments without fuss" presented without any technical backing.
"Writing user-defined input and output streams can be tricky. The Boost iostreams library gives the user easy access a range of useful functionality, including data encryption, compression in various standard formats, line-ending conversion and output in XML format."
How about: "Boost.Iostreams simplifies the implementing of user-defined streams by wrapping itself around compositions of simple user-defined classes that model sources, sinks or filters of data. Boost.Iostreams also offers ready to use classes for conversion of line-endings, filtering of regular expressions, compression, dealing with native OS file handles, and for other purposes." Regards, m Send instant messages to your online friends http://au.messenger.yahoo.com