Boost logo

Boost :

From: Caleb Epstein (caleb.epstein_at_[hidden])
Date: 2005-09-22 09:14:28


On 9/22/05, Eric Niebler <eric_at_[hidden]> wrote:

Here's a wacky thought: can we turn boost-sandbox into CBAN
> (the Comprehensive Boost Archive Network), and cherry-pick the best
> libraries from CBAN for inclusion in boost? If anybody could make
> something like this fly, it's boost. We'd need to look closely at the
> CPAN model to find out why it's successful.

Not so wacky at all. I'm a huge fan of both Perl and Boost, so here's my
take on what makes CPAN work in the hopes that this might take us somewhere:

   - CPAN isn't *entirely* a free-for-all. You need to register yourself
   with PAUSE (http://pause.cpan.org/) in order to maintain and upload
   packages to CPAN.
    - Perl includes a built-in CPAN module that can be used to find and
   fetch code from CPAN from the command line (try "perl -MCPAN -e shell" if
   you're curious. No space between M and CPAN). If you know what you're
   looking for, installing a CPAN module can be a single command (perl -MCPAN
   -e "install Foo::Bar").
   - The CPAN module walks the user through an interactive set-up process
   the first time they use it.
    - When you use the CPAN module to download and install modules, it
   can fetch and install any dependencies automatically.
   - There is a simple, well organized, searchable web site where all the
   modules can be found and there are README files for each of them. The web
   site is mirrored in many locations.
   - Packaging conventions. Every module contains a README file, MANIFEST
   of contents and stub Makefile for compiling. The standard Perl
   "Extutils::MakeMaker" module writes a Makefile with a number of useful
   targets, including one for creating a redistributable package of the code
   suitable for uploading to CPAN.
    - Even if you download them "by hand" from the CPAN web site, Perl
   modules are (usually) easy to build, test and install: "perl
   Makefile.PL && make test && make install" is usually enough.
   - Documentation is included with the code using the POD documentation
   format. Perl includes the command line "perldoc" tool can be used to view
   the documentation for any installed module.

A Boost "module" system and attendant tools should be possible, and a number
of the positive aspects of CPAN are already available as core pieces or best
practices of Boost:

   - Dependencies can be documented in Jamfiles. Downloading them if you
   don't have them would need to be handled by some other tool.
    - Build, test and install process is usually simple, though it may
   involve some level of "getting to know" bjam. Perhaps some sort of
   interactive setup ala the CPAN one could be written to set defaults that
   would be used for future bjam invocations (e.g. choose default
   compiler, threading model, etc). Unlike Dave, most folks don't care to build
   code on more than one platform or compiler at a time.
    - Documentation is generally of high quality and included with all
   modules. There is a meta-format (Boost Book) used to document most libraries
   that can be renedered as HTML, PDF, etc.

To make this a reality, a few more things would be required:

   - A CBAN web site. The Vault is passable, but it would need a lot of
   work before it was in the same league as the CPAN site.
   - A CBAN tool. A command line interface to browsing the CBAN
   repository and downloading and installing modules
   - Bjam "setup". Not sure if bjam supports any sort of "rc" file, but
   allowing a user to configure default settings and have them persisted for
   future bjam invocations would improve the overall experience for casual
   users.
   - Packaging standards (directory structure, required files, etc) and
   related tools (Jamfiles perhaps) analogous to ExtUtils::MakeMaker. This will
   make it easy for people to create and redistribute their modules.

Hope this helps,

--
Caleb Epstein
caleb dot epstein at gmail dot com

Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk