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
- 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