Boost logo

Boost :

Subject: [boost] Idea: Boost Software Foundation?
From: Dean Michael Berris (mikhailberis_at_[hidden])
Date: 2009-11-25 09:32:20


Hi Everyone,

I have been watching the passionate debate about how to go about
achieving the following:

  1. Make Boost less monolithic and more open to contributions
  2. Make Boost easier to distribute and support
  3. Make Boost better but less complex and more manageable

Someone mentioned the "incubator" idea and now that I think about it
more I think this model works very well for Boost. Let me try to draw
some parallels between the Boost C++ Library and the Apache Software
Foundation:

1. As a project, Boost and Apache try to (and I'd like to say both do)
deliver high quality open source components under a liberal and
commercially friendly license. Boost has many sub-projects that are
worth naming like Boost.Build, (Boost.?)Quickbook, BCP, and Boost.Jam
(although a little stagnant IIRC). Maybe treating other libraries as
sub-projects that have a publicly-accessible and easily "forkable"
repository would be a good thing. Git and Github come to mind.

2. As a software distribution, Apache has decentralized the release
management of the libraries and software projects under its umbrella.
This means sub-projects can depend on specific version releases of
other sub-projects instead of making sure that there's only one
release that bundles everything together.

3. As an entity, the only difference I see between Apache and Boost are that:
  * Boost is a volunteer-backed, non-foundation backed entity, while
the Apache Software Foundation is legally a non-profit non-stock
organization.
  * Boost does not have resources that "it" owns while ASF employs
people in different capacities.
  * Although the Boost Software License and the Apache Software
License are both OSI approved, there seems to be no legal team
dedicated to ensuring that the terms of the licenses (and the
contributions made by contributors) are "properly" applied.

I don't want to instigate an "uprising" here, but I for one would like
to see a Boost Software Foundation whose main task would be to further
the Boost-licensed projects, and lends its name to signify the high
quality and organized peer-reviewed and meritocracy-driven C++
application and library development for the betterment of the C++
language and vendor/implementor/library-author community. And then to
see the Boost Software Foundation have a formal means of having
projects "built for Boost-inclusion" be drawn into an umbrella project
to become "incubated and developed with Boost Quality in mind".

If I understand how Apache projects are run, it appears that:
  * A project manager is assigned/nominated by the community to
represent a sub-project in the bigger Apache project.
  * There are official developers who have commit access to the
repository; developers who want to become an official developer of the
project signs a contributor agreement which states in no uncertain
terms that they agree that their changes committed to the repository
are licensed under the Boost Software License.
  * To become a "committer" to the project, you have to be asked by
official developers or nominated by peers based on your contributions
in the form of patches or pulls from your "fork".

I do not see why this model should not work for Boost granted that
some people already take the libraries they maintain as their
full-time (or almost full-time) projects (Boost.Thread,
Boost.Spirit/Fusion/Phoenix). And because of the decentralized nature
of this model, the only "review" that has to happen is whether a
sub-project should be incubated, and whether projects in the incubator
are deemed "mature" enough to become full-blown Boost.* projects.

One other idea about distribution: the biggest hindrance I think is
the lack of a "centralized" or "repository-like" location from where
released versions of a library can be pulled easily. Haskell has
Cabal, Perl has CPAN, Debian has official 'apt' repositories, Ruby has
multiple Gem foundries, Python has the Cheese shop (?). Although SVN
is centralized by nature, it's not the best means of distributing
releases that can be kept in-sync from various locations. Maybe the
Boost community might be able to come up with a similar solution and
contribute towards building a C++ package-based solution to
distributing libraries in a cross-platform and scalable manner?

I hope this helps. I personally have no idea how to get a Boost
Software Foundation up and running but I do want to participate in
that effort in a substantial manner if other people think that would
be a good idea and would like to make it happen too.

Have a good day everyone, that's my $0.02 worth.

-- 
Dean Michael Berris
blog.cplusplus-soup.com | twitter.com/mikhailberis
linkedin.com/in/mikhailberis | facebook.com/dean.berris | deanberris.com

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