
Paul Giaccone wrote:
There is a thread on the Boost-users mailing list at the moment asking what users needed to know when they got started with Boost.
One of the points raised is that, while pretty much all users of Boost think it is great, they didn't know when they started using it why it was so great and why it would be to their advantage to use it. One of the reasons for this is that the front page of the website does not really sell the product.
I agreed with this point. Here's a summary of my posting:
"What the site needs, in my view, on the front page is some sort of material selling Boost. Why was Boost set up in the first place? 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.
"Essentially, Boost needs to sell itself as something that no C++ programmer would want to be without. 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. 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."
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.
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?
Keep up the excellent work.
Paul Giaccone
"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
deallocate
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."
"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."
,and more,
"In standard C++, handling multiple command-line arguments usually requires the user to write a bespoke
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."
"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."
"C++ allows for casting between similar types, such as int and double. The Boost conversion library extends what is possible with casting, enabling the user to cast integers to strings and vice versa, and to cast safely between polymorphic types."
It would be better if each library had a generalized explanation of its advantages similar to what you have written above, with possible links from the main Boost page, than just a number of blurbs for a number of different libraries on the main page.