    <rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:admin="http://webns.net/mvcb/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:content="http://purl.org/rss/1.0/modules/content/">
     <channel>
        <title>ACCU  :: What is Boost?</title>
        <link>https://members.accu.org/index.php/journals/417</link>
        <description>Professionalism in Programming</description>
        <dc:language>en-us</dc:language> 
        <dc:creator>Administrator</dc:creator> 
        <admin:generatorAgent rdf:resource="http://www.xaraya.org" /> 
        <admin:errorReportsTo rdf:resource="mailto:webeditor@accu.org" />
       <sy:updatePeriod>hourly</sy:updatePeriod>
       <sy:updateFrequency>1</sy:updateFrequency>
       <docs>http://backend.userland.com/rss</docs>


        <h2>Journal Articles</h2>


<div class="xar-mod-head"><span class="xar-mod-title">Overload Journal #47 - Feb 2002 + Programming Topics + Design of applications and programs</span></div>

<table border="0" cellpadding="1" cellspacing="0">
    <tbody>
    <tr>
        <td valign="top">
            Browse in :
       </td>
       <td valign="top">

                                            <a href="https://members.accu.org/index.php/journals/">All</a>

                     &gt;                         <a href="https://members.accu.org/index.php/journals/c76/">Journals</a>

                     &gt;                         <a href="https://members.accu.org/index.php/journals/c78/">Overload</a>

                     &gt;                         <a href="https://members.accu.org/index.php/journals/c198/">47</a>
                    (8)
<br />

                                            <a href="https://members.accu.org/index.php/journals/">All</a>

                     &gt;                         <a href="https://members.accu.org/index.php/journals/c13/">Topics</a>

                     &gt;                         <a href="https://members.accu.org/index.php/journals/c65/">Programming</a>
                    (877)
<br />

                                            <a href="https://members.accu.org/index.php/journals/">All</a>

                     &gt;                         <a href="https://members.accu.org/index.php/journals/c13/">Topics</a>

                     &gt;                         <a href="https://members.accu.org/index.php/journals/c67/">Design</a>
                    (236)
<br />

                                            <a href="https://members.accu.org/index.php/journals/c198-65-67/">Any of these categories</a>

                    -                        <a href="https://members.accu.org/index.php/journals/c198+65+67/">All of these categories</a>
<br />
</td>
   </tr>
   </tbody>
</table>




<div class="xar-error">
   <p>
 <strong>Note:</strong> when you create a new publication type,
the articles module will automatically use the templates
<em>user-display-[publicationtype].xt</em>
and <em>user-summary-[publicationtype].xt</em>.
If those templates do not exist when you try to preview or display a new article,
you'll get this warning :-)  Please place your own templates in themes/<em>yourtheme</em>/modules/articles . The templates will get the extension .xt there. </p>
</div>
<div class="xar-norm xar-standard-box-padding">
   <h1><strong>Title:</strong>&nbsp;What is Boost?</h1>
<p><strong>Author:</strong>&nbsp;</p>
<p>
<strong>Date:</strong> 26 February 2002 16:46:09 +00:00 or Tue, 26 February 2002 16:46:09 +00:00</p>
<p><strong>Summary:</strong>&nbsp;</p>
<p><strong>Body:</strong>&nbsp;<div class="sect1" lang="en">
<div class="titlepage">
<h2><a name="d0e18" id="d0e18"></a></h2>
</div>
<p>Welcome to an introduction to Boost, and especially the
community behind the Boost libraries. Although many of the
libraries are amazing, the people that are Boost are the reason for
the rapidly growing interest. For those of you that aren't yet
Boosters, let me give you some fast facts on Boost:</p>
<p>Boost is a collection of class libraries for C++. The libraries
range from math to threading, built on Standard C++ and highly
portable. Moreover, it is also a community of expert C++
programmers, all contributing by taking part in reviews, submitting
libraries, helping users etceteras.</p>
<p>There are currently 35 Boost libraries, and several of them are
proposed for inclusion in the next C++ Standard. Beyond being an
excellent source of inspiration, top-quality libraries and
interesting discussions, Boost is also a place to learn. C++
Library design, design patterns and idioms are honed to perfection
in the peerreviewed Boost community.</p>
</div>
<div class="sect1" lang="en">
<div class="titlepage">
<h2><a name="d0e26" id="d0e26"></a>The
libraries</h2>
</div>
<p>Although reading through a list of libraries with short
descriptions may seem dull to some, I assure you that it's worth
your time: You will find at least five libraries that would be very
useful to you, no matter what type of application you're currently
working on.</p>
<div class="variablelist">
<dl>
<dt><span class="term">any</span></dt>
<dd>
<p>Safe, generic container for single values of different value
types, from Kevlin Henney.</p>
</dd>
<dt><span class="term">array</span></dt>
<dd>
<p>STL compliant container wrapper for arrays of constant size,
from Nicolai Josuttis.</p>
</dd>
<dt><span class="term">bind and mem_fn</span></dt>
<dd>
<p>Generalized binders for function/object/pointers and member
functions, from Peter Dimov.</p>
</dd>
<dt><span class="term">call_traits</span></dt>
<dd>
<p>Defines types for passing parameters, from John Maddock, Howard
Hinnant, et al.</p>
</dd>
<dt><span class="term">compatibility</span></dt>
<dd>
<p>Help for non-conforming standard libraries, from Ralf Grosse-
Kunstleve and Jens Maurer.</p>
</dd>
<dt><span class="term">compose</span></dt>
<dd>
<p>Functional composition adapters for the STL, from Nicolai
Josuttis.</p>
</dd>
<dt><span class="term">compressed_pair</span></dt>
<dd>
<p>Empty member optimization, from John Maddock, Howard Hinnant, et
al.</p>
</dd>
<dt><span class="term">concept check</span></dt>
<dd>
<p>Tools for generic programming, from Jeremy Siek.</p>
</dd>
<dt><span class="term">config</span></dt>
<dd>
<p>Helps boost library developers adapt to compiler idiosyncrasies;
not intended for library users.</p>
</dd>
<dt><span class="term">conversion</span></dt>
<dd>
<p>Numeric, polymorphic, and lexical casts, from Dave Abrahams and
Kevlin Henney.</p>
</dd>
<dt><span class="term">crc</span></dt>
<dd>
<p>Cyclic Redundancy Code, from Daryle Walker.</p>
</dd>
<dt><span class="term">function</span></dt>
<dd>
<p>Function object wrappers for deferred calls or callbacks, from
Doug Gregor.</p>
</dd>
<dt><span class="term">functional</span></dt>
<dd>
<p>Enhanced function object adaptors, from Mark Rodgers.</p>
</dd>
<dt><span class="term">graph</span></dt>
<dd>
<p>Generic graph components and algorithms, from Jeremy Siek and a
University of Notre Dame team.</p>
</dd>
<dt><span class="term">integer</span></dt>
<dd>
<p>Headers to ease dealing with integral types.</p>
</dd>
<dt><span class="term">iterator adaptors</span></dt>
<dd>
<p>Adapt a base type into a standard conforming iterator, and more,
from Dave Abrahams, Jeremy Siek, and John Potter.</p>
</dd>
<dt><span class="term">math</span></dt>
<dd>
<p>Several contributions in the domain of mathematics, from various
authors.</p>
</dd>
<dt><span class="term">math/common_factor</span></dt>
<dd>
<p>Greatest common divisor and least common multiple, from Daryle
Walker.</p>
</dd>
<dt><span class="term">math/octonion</span></dt>
<dd>
<p>Octonions, from Hubert Holin</p>
</dd>
<dt><span class="term">math/quaterion</span></dt>
<dd>
<p>Quaterions, from Hubert Holin.</p>
</dd>
<dt><span class="term">math/special_functions</span></dt>
<dd>
<p>Mathematical special functions such as atanh, sinc, and sinhc,
from Hubert Holin.</p>
</dd>
<dt><span class="term">operators</span></dt>
<dd>
<p>Templates ease arithmetic classes and iterators, from Dave
Abrahams and Jeremy Siek.</p>
</dd>
<dt><span class="term">pool</span></dt>
<dd>
<p>Memory pool management, from Steve Cleary.</p>
</dd>
<dt><span class="term">preprocessor</span></dt>
<dd>
<p>Preprocessor metaprogramming tools including repetition and
recursion, from Vesa Karvonen.</p>
</dd>
<dt><span class="term">property map</span></dt>
<dd>
<p>Concepts defining interfaces which map key objects to value
objects, from Jeremy Siek.</p>
</dd>
<dt><span class="term">python</span></dt>
<dd>
<p>Reflects C++ classes and functions into Python, from Dave
Abrahams.</p>
</dd>
<dt><span class="term">random</span></dt>
<dd>
<p>A complete system for random number generation, from Jens
Maurer.</p>
</dd>
<dt><span class="term">rational</span></dt>
<dd>
<p>A rational number class, from Paul Moore.</p>
</dd>
<dt><span class="term">regex</span></dt>
<dd>
<p>Regular expression library, from John Maddock.</p>
</dd>
<dt><span class="term">smart_ptr</span></dt>
<dd>
<p>Four smart pointer classes, from Greg Colvin and Beman
Dawes.</p>
</dd>
<dt><span class="term">static_assert</span></dt>
<dd>
<p>Static assertions (compile time assertions), from John
Maddock.</p>
</dd>
<dt><span class="term">test</span></dt>
<dd>
<p>Support for program testing and execution, from Beman Dawes.</p>
</dd>
<dt><span class="term">thread</span></dt>
<dd>
<p>Portable C++ multi-threading, from William Kempf.</p>
</dd>
<dt><span class="term">timer</span></dt>
<dd>
<p>Event timer, progress timer, and progress display classes, from
Beman Dawes.</p>
</dd>
<dt><span class="term">tokenizer</span></dt>
<dd>
<p>Break of a string or other character sequence into a series of
tokens, from John Bandela.</p>
</dd>
<dt><span class="term">tuple</span></dt>
<dd>
<p>Ease definition of functions returning multiple values, and
more, from Jaakko J&auml;rvi.</p>
</dd>
<dt><span class="term">type_traits</span></dt>
<dd>
<p>Templates for fundamental properties of types, from John
Maddock, Steve Cleary, et al.</p>
</dd>
<dt><span class="term">utility</span></dt>
<dd>
<p>Class noncopyable plus checked_delete(), checked_array_delete(),
next(), prior() function templates, plus base-from-member idiom,
from Dave Abrahams and others.</p>
</dd>
</dl>
</div>
</div>
<div class="sect1" lang="en">
<div class="titlepage">
<h2><a name="d0e260" id="d0e260"></a>Behind the
libraries</h2>
</div>
<p>To understand more about the mysterious powers that summons so
many of the very best C++ programmers, I interviewed three of the
original Boosters; Beman Dawes, David Abrahams and Jens Maurer.
They are important people for the C++ community, and I want to
thank them for taking the time to give us their answers.</p>
<div class="variablelist">
<dl>
<dt><span class="term">Q: What is the essence of Boost's
importance?</span></dt>
<dd>
<p><span class="bold"><b>Beman:</b></span> It has created a
community of C++ library users and developers.</p>
<p><span class="bold"><b>Dave:</b></span> Boost is one of the only
communities working on the process and practice of library design.
In today's professional software development world, it can be hard
to make the case for long-term investment in reusable components.
Developers are (often rightly) expected to do the simplest thing
that could possibly work, under the assumption that the
generalization won't be needed. As the problems they need to solve
become more complex, however, they need library components that can
help them keep their solutions simple. The C++ standard library
goes some distance towards filling that role, but programmers will
continue to need more than it provides. What should be the design,
documentation, and coding practices for the libraries that
programmers need? Boost's emergent collaborative process provides
one answer.</p>
<p><span class="bold"><b>Jens:</b></span> First and foremost, Boost
gives examples how C++ libraries should be designed. There are lots
of libraries available elsewhere whose design pre-dates the ISO C++
standard. These libraries often fail to exploit the potential of
compile-time evaluation (i.e. templates) and thus miss type
checking and optimization opportunities. Furthermore, these
libraries are occasionally difficult to extend or poorly
documented.</p>
<p>Second, Boost produces ready-to-use, well-documented,
highquality libraries from the practice of programming. The license
requirements allow the use of Boost libraries in commercial and
non-commercial projects free of charge, thereby helping them to
produce better programs.</p>
<p>Third, Boost is a test-bed for components that may end up in a
future revised C++ standard. I am proud to be part of a respected
effort with worldwide recognition.</p>
<p>Fourth, Boost attracts some of the best C++ programmers in the
world. Its open discussions and peer-reviews cause every
participant to learn quite a lot.</p>
</dd>
<dt><span class="term">Q: Which parts of Boost do you consider most
important for inclusion in the Standard?</span></dt>
<dd>
<p><span class="bold"><b>Jens:</b></span> The small things: Smart
pointers, utility.hpp, &quot;functional&quot;, probably &quot;any&quot; and
&quot;function&quot;</p>
</dd>
<dt><span class="term">Q: When the next C++ standard is final, what
do you think will happen to Boost?</span></dt>
<dd>
<p><span class="bold"><b>Beman:</b></span> The potential for Boost
libraries goes way beyond the C++ Standards effort. Standardization
of some of the Boost libraries may help validate the Boost concept,
but just plain user interest is really important too. As long as
users ask for new libraries, and developers are willing to write
them, Boost will grow and prosper.</p>
<p><span class="bold"><b>Dave:</b></span> Yes, I'm sure it will
continue. Boost's value to the C++ community goes well beyond
standardization.</p>
</dd>
<dt><span class="term">Q: The members of Boost are some of the most
talented and experienced C++ developers around. What is the reason
that all this talent is present in Boost?</span></dt>
<dd>
<p><span class="bold"><b>Dave:</b></span> I think most talented
programmers - in any language - love to collaborate and are dying
to work with others of similar caliber. A really good programmer
craves thoughtful and careful review of his code, useful feedback
and ideas about design alternatives. That sort of environment can
be hard to find, especially If you are at the top of your game in
your daily work. The process we've established at Boost and the
highly professional tone of the discussion give the best
programmers what they crave, and gives others a path to reaching
that level.</p>
<p><span class="bold"><b>Jens:</b></span> Boost has an open
discussion policy. Its peer-review atmosphere, well established in
the scientific community, fosters learning for every participant.
Plus, we've had the luck to distribute very little off-topic e-mail
in the mailing list so far, and we as the moderators try our best
so that it will stay that way. Also, Boost library authors and
maintainers are asked to acknowledge contributions, another
wellestablished behaviour in the scientific and open-source
communities. This gives contributors a permanent record to put
pride in.</p>
</dd>
<dt><span class="term">Q: Why should C++ users start using the
Boost libraries?</span></dt>
<dd>
<p><span class="bold"><b>Dave:</b></span> I can think of four
reasons:</p>
<p>0. Would you rather write it yourself? The Boost libraries are
time-savers and code-savers. You'll spend less time developing your
application and have less code to maintain if you can re-use the
appropriate Boost library.</p>
<p>1. Quality. Most of the boost libraries have had a more thorough
review by more talented and critical eyes than I've ever seen in a
commercial environment.</p>
<p>2. Open Source. If you absolutely need to change the library to
suit your own application, the source is all there.</p>
<p>3. Tests. No boost libraries are accepted without a
comprehensive test suite, and all are tested against a wide variety
of platforms and compilers.</p>
</dd>
<dt><span class="term">Q: Do you see an upper limit to the number
of libraries in Boost?</span></dt>
<dd>
<p><span class="bold"><b>Jens:</b></span> No. We may have to adjust
our organization to cope, though.</p>
</dd>
<dt><span class="term">Q: In what areas do you think Boost will
grow in the near future?</span></dt>
<dd>
<p><span class="bold"><b>Dave:</b></span> Several interesting and
ambitious libraries seem to be on the immediate horizon. There is a
template metaprogramming library that brings STL-like algorithms
and functional programming idioms to compile-time computation, we
have an effort to develop next-generation linear algebra and matrix
computation, and the developers of the Spirit parsing framework
have expressed an intention to &quot;Boostify&quot; soon.</p>
</dd>
<dt><span class="term">Q: How (and to what) do you think that Boost
will develop?</span></dt>
<dd>
<p><span class="bold"><b>Beman:</b></span> More of the same; more
libraries, more interesting discussions. It all depends on the C++
programmers who are members of Boost, but there is no sign of
interest leveling off. Every measure we have continues to show
strong growth. Quality of new libraries being submitted seems
strong. The future looks bright!</p>
<p><span class="bold"><b>Dave:</b></span> One of the best things
about Boost is the way that the participants generate its
direction, and only when enough people are sufficiently committed
to pull it off. For example, in the past week a group of dedicated
Boosters who straddle the developer/user line set up a separate
mailing list and a Wiki for Boost users. I am convinced that this
couldn't have happened if the boost moderators had tried to
spearhead the effort.</p>
</dd>
<dt><span class="term">Q: As Boost grows; do you plan to organize
differently?</span></dt>
<dd>
<p><span class="bold"><b>Dave:</b></span> As shown by the
spontaneous creation of the users list and Wiki, when Boost begins
to grow beyond its capacity, I expect it to reorganize. We have
been discussing different ways to enable better collaboration as
this happens: we want to have the required knowledge when the time
comes, but I think we've learned not to try to plan too far in
advance.</p>
<p><span class="bold"><b>Jens:</b></span> We may have separate
moderators for library subcollections, e.g. for the maths and
numerics libraries. We may have to split the mailing list further,
though there are good arguments against doing so. Namespaces in C++
and directories in the file system are hierarchical, so we have all
the tools we need to effectively sub-divide organizationally.</p>
</dd>
<dt><span class="term">Q: When a library is submitted to Boost, the
members decide whether it should be accepted. Will that still be
possible if the number of members keep increasing?</span></dt>
<dd>
<p><span class="bold"><b>Jens:</b></span> I think so. Not all
members cast a vote on every submission, and it is assumed that
members casting a vote have had a look at the library before. Also,
the review manager is entitled to disregard votes that are cast
without observing the review guidelines.</p>
</dd>
<dt><span class="term">Q: Does Boost ever organize meetings or
conferences?</span></dt>
<dd>
<p><span class="bold"><b>Jens:</b></span> Boost meets every half a
year on the Sunday afternoon before the ISO C++ meeting starts, at
the same place than the ISO C++ meeting.</p>
</dd>
<dt><span class="term">Q: Boost as an independent organization has
become a &quot;waterhole&quot; for developers from all over the world. Is
this a part of the intent for Boost, or is it just a lucky side
effect?</span></dt>
<dd>
<p><span class="bold"><b>Dave:</b></span> Definitely a lucky side
effect. I guess that's what happens when you provide services and
code that people want.</p>
<p><span class="bold"><b>Jens:</b></span> For me, it's part of the
intent.</p>
<p>[Author's note: Select the answer that you like!]</p>
</dd>
<dt><span class="term">Q: If companies hesitate to use Boost
because it is free, and therefore don't offer support agreements
etc, what would be your advice to them?</span></dt>
<dd>
<p><span class="bold"><b>Beman:</b></span> If the company doesn't
normally have support agreements for software libraries of about
the same scope as Boost, they probably don't need a support
agreement for Boost either. If the company does want a support
agreement, they should ask their usual support contractors for
Boost support. I know several folks at one of the support
companies, and they would be perfectly capable of supporting the
Boost libraries.</p>
<p><span class="bold"><b>Dave:</b></span> Re-use first; rewrite if
necessary. In other words, start by using the boost libraries to
achieve short time-to-market with high quality. If independence
from open source is important to your longterm mission, you can
always go back and replace boost components with internally
developed and maintained ones.</p>
<p><span class="bold"><b>Jens:</b></span> Other open-source
projects (e.g. Linux) have shown that when there's money being
offered, someone shows up offering support for the project. I'm
confident that some of Boost's members would take a support
contract when one was offered.</p>
</dd>
<dt><span class="term">Q: Boost adds value to users but also aims
to impact the next C++ standard. Which one is more
important?</span></dt>
<dd>
<p><span class="bold"><b>Dave:</b></span> So far, making it
possible for users to cover more domains with cross-platform code
has been our main focus. Although many libraries seem to fit the
bill for addition to the standard, a few are less likely
candidates. We have also made occasional concessions to
nonconforming compilers and compilers that don't implement all of
the optimizations one would like, because these things have
practical importance for users. One would not expect to see such
concessions to appear in the C++ standard library, however. As the
C++ committee prepares to start considering what the next version
of C++ will look like, standardization will likely increase in
importance.</p>
<p><span class="bold"><b>Beman:</b></span> The issues really go
hand-in-hand. Well-developed, widely used libraries benefit both
users and the C++ Standard. Users get the use of the libraries,
while the standards committee gets &quot;existing-practice&quot; to
standardize, and that is what standards committees do best. That
leads to a better standard, which in turn benefits users. The
circle is closed.</p>
<p><span class="bold"><b>Jens:</b></span> I agree, there isn't a
clear separation between these two aims: The next C++ standard is
also aimed at providing added value to users. For me, adding value
to users is the major aim of Boost; be it directly (and rather
short-term) or indirectly by impacting the next C++ standard.
Formal standardization has the advantage of broad recognition even
in non-technical circles, but takes longer to produce results.</p>
</dd>
</dl>
</div>
</div>
<div class="sect1" lang="en">
<div class="titlepage">
<h2><a name="d0e438" id="d0e438"></a>Becoming a
Booster</h2>
</div>
<p>There are two different mailing lists of interest for Boosters -
the Boost and Boost-Users. The Boost-Users list was created only a
few months ago, to accommodate the needs of the many users of the
Boost libraries. The list is dedicated to questions and answers for
Boost library usage. The original Boost list on the other hand
deals with library design, submissions, and reviews etc. The list
is rather high-volume, and very suitable for those interested in
library design in general, or Boost libraries in particular. Many
Boost members subscribe to both lists. There is also the new Boost
Wiki web (not officially maintained by Boost developers), which is
another promising venture for spreading the word and increasing the
discussion about Boost.</p>
<p>Of course, you don't have to be a member of the mailing lists to
use the Boost libraries, but it is nice to know that there is a
strong commitment to helping users of the libraries. The tone is
always friendly, and the level of expertise is outstanding.</p>
<p>I find it very rewarding to follow the discussions even on
libraries that I'm yet not using, because there is always new
things to learn and new ideas being tossed around.</p>
</div>
<div class="sect1" lang="en">
<div class="titlepage">
<h2><a name="d0e447" id=
"d0e447"></a>Literature</h2>
</div>
<p>Just recently, Jeremy Siek, Lie-Quan Lee and Andrew Lumsdaine
finished &quot;The Boost Graph Library User Guide and Reference Manual&quot;,
a book about the Boost Graph Library. I highly recommend it! (ISBN
0201729148).</p>
<p>Although there are references to Boost in many books and
articles, there are no books other than the BGL book available. I'm
confident this will change in the near future, as Boost is being
recognized for excellent libraries, strong standards committee
presence and a rapidly growing user base.</p>
<p>Meanwhile, be sure to read the top computer magazines - several
of the Boost libraries and the techniques used in the libraries are
being featured in articles.</p>
<div class="bibliography">
<div class="titlepage">
<h2><a name="d0e456" id="d0e456"></a>Boost links</h2>
</div>
<div class="bibliomixed">
<p class="bibliomixed">Boost website, <span class=
"bibliomisc"><a href="http://www.boost.org" target=
"_top">http://www.boost.org</a></span></p>
</div>
<div class="bibliomixed">
<p class="bibliomixed">Boost mailing list, <span class=
"bibliomisc"><a href="http://groups.yahoo.com/group/boost" target=
"_top">http://groups.yahoo.com/group/boost</a></span></p>
</div>
<div class="bibliomixed">
<p class="bibliomixed">Boost-Users mailing list, <span class=
"bibliomisc"><a href="http://groups.yahoo.com/group/Boost-Users"
target=
"_top">http://groups.yahoo.com/group/Boost-Users</a></span></p>
</div>
<div class="bibliomixed">
<p class="bibliomixed">Boost Wiki, <span class=
"bibliomisc"><a href="http://www.crystalclearsoftware.com/cgi-bin/boost_wiki/wiki.pl"
target=
"_top">http://www.crystalclearsoftware.com/cgi-bin/boost_wiki/wiki.pl</a></span></p>
</div>
</div>
</div>
</p>
<p><strong>Notes:</strong>&nbsp;</p>
<p><em>More fields may be available via dynamicdata ..</em></p>
</div>
</channel>
</rss>
