Boost C++ Libraries

...one of the most highly regarded and expertly designed C++ library projects in the world. Herb Sutter and Andrei Alexandrescu, C++ Coding Standards

Boost Library Submission Process

This page describes the process a library developer goes through to get a library accepted by Boost.

See the Boost Library Requirements and Guidelines page for issues of content.

Steps for getting a library accepted by Boost:

Learn about Boost

Subscribe to the main developers mailing list for a while, or look through the archives. Click around the web site. Understand the Requirements. Read the rest of this page to learn about the process. Otherwise, you will just end up wasting everyone's time.

There is a culture associated with Boost, aimed at encouraging high quality libraries by a process of discussion and refinement.

If what you really want is a site that will just post your library without even looking at it, you should go elsewhere.

Determine interest

While participation in prior reviews is not a prerequisite for submitting a library to Boost, it is highly recommended because it will acquaint you with the process and the emotional demands of a formal review.

Potential library submitters should use the Boost developers mailing list and Boost Library Incubator as forums to gauge interest a possible submission.

A message might be as simple as "Is there any interest in a library which solves Travelling Salesperson problems in linear time?"

A bit of further description or snippet of code may be helpful. Messages should be plain text; not rich text, HTML, etc.

Please don't post lengthy descriptions, documentation, or code to the mailing list, and no attachments, even small ones. Please make lengthy material available on the web. You can use a project hosting service such as sourceforge, github, google code, bitbucket etc.

Preliminary submission

If response to an initial query indicates interest, then make your preliminary submission publicly available if you haven't already done so.

Please post your code to a version control system such as Github, and make your documentation available in HTML format on a public website. An issue tracker is also highly recommended.

The submission should contain material as if on the boost.org web site. The closer the submission file mirrors the final directory structure and format of the web site, the better. This makes it possible for reviewers to simply copy your code into the Boost distribution for testing.

Please verify that your submission compiles and runs under at least two compilers. This flushes out obvious portability problems.

It is recommended that you release your code under the Boost Software License; see the Requirements page for more information.

You can receive preliminary feedback and reviews by submitting your library to the Boost Library Incubator.

Refinement

Discuss, refine, resubmit. Repeat until satisfied.

The exact details of this process varies a lot. Sometimes it is public, on the mailing list, sometimes a lot of discussion happens in private emails. For some libraries the process is over quickly, for others it goes on for months.  It's often challenging, and sometimes leads off in completely unexpected directions.

The archive of past messages is one way to see how this process worked for other Boost libraries.

Some best practices ideas with samples of script and code and links into source code in existing Boost libraries can be found on the Boost wiki.

Seek a Review Manager

In order to have a formal review, the author must find a capable volunteer to manage the review. This should be someone with knowledge of the library domain, and experience with the review process. See Formal Review Process for the responsibilities of the review manager.

Authors can find community members interested in managing reviews through discussion of the library on the developer list. If no one steps forward to volunteer to manage the review, it is appropriate to contact an experienced Boost member who showed interest in the library. Be considerate that managing a review is a serious commitment; for this reason, it's better to contact the member off-list.

Once a potential review manager has been found, contact the review wizards for approval. The wizards approve review managers based on their level of participation in the Boost community.

Formal Review

Before asking for formal review, your submission should be easily accessible to all. Please verify that your submission compiles and runs under at least two compilers. This flushes out obvious portability problems. If you don't have access to a second compiler, ask for help on the Boost mailing list.

Once a library author feels a submission has matured enough for the formal review, and has found someone to manage the review, the author sends a message requesting a formal review to the mailing list and the review wizards. Please use a subject in the form "Review Request: library" where library is replaced by the library name.

The review wizards will coordinate with the author and review manager to schedule a date convenient for the author and review manager.

See Formal Review Process for details.

Formal Review schedules are posted on the web site.

Boost web site posting

Once an accepted library is ready for inclusion on the Boost web site, the submitter is typically given Boost repository write access, and expected to check-in and maintain the library there. Contact the moderators if you need write access or direct use of the repository isn't possible for you.

People page

If the boost.org web site doesn't already have your capsule biography and picture (optional, with not-too-serious pictures preferred), please send them to the Boost webmaster. It is up to you as to whether or not the biography includes your email address or other contact information. The preferred picture format is .jpg, but other common formats are acceptable. The preferred image size is 500x375 but the webmaster has photo editing software and can do the image preparation if necessary.

Lifecycle

Libraries are software; they lose their value over time if not maintained. Postings on the Boost developers or users mailing lists can alert you to potential maintenance needs; please plan to maintain your library over time. If you no longer can or wish to maintain your library, please post a message on the Boost developers mailing list and help someone else take over as the library maintainer.

Orphaned libraries will be put in the care of the Community Maintenance Team.