Skip to content

Boost Submission Guide

This guide outlines the process for submitting sparse_spatial_hash to the Boost C++ Libraries collection.

Overview

The Boost C++ Libraries are a collection of peer-reviewed, high-quality C++ libraries. Submitting to Boost involves:

  1. Meeting technical requirements
  2. Formal review process
  3. Community feedback
  4. Integration into Boost ecosystem

Technical Requirements

Library Quality

  • Header-only or compiled library: Header-only ✓
  • Portable: Works on GCC 10+, Clang 12+, MSVC 2019+ ✓
  • Standard compliance: C++20 ✓
  • License: Boost Software License 1.0 ✓
  • No dependencies (beyond std library): ✓

Documentation

  • Comprehensive documentation: MkDocs site ✓
  • Tutorial: Step-by-step guide ✓
  • API reference: Complete API docs ✓
  • Examples: Multiple working examples ✓
  • Rationale: Design decisions documented ✓

Testing

  • Unit tests: 31 comprehensive tests ✓
  • 100% pass rate: All tests passing ✓
  • Multiple compilers: GCC, Clang tested ✓
  • Multiple platforms: Linux, Windows, macOS ✓
  • Performance tests: Benchmark suite ✓

Code Quality

  • Generic programming: N-dimensional support ✓
  • Exception safety: Documented guarantees ✓
  • Const-correctness: All query methods const ✓
  • Modern C++: Uses C++20 features appropriately ✓
  • Zero overhead: Compile-time polymorphism ✓

Submission Process

Phase 1: Pre-Submission (Current)

  1. Complete documentation
  2. ✓ MkDocs documentation site
  3. ✓ Tutorial and quick start
  4. ✓ API reference
  5. ✓ Performance benchmarks

  6. Comprehensive testing

  7. ✓ Unit tests (31 tests, 197 assertions)
  8. ✓ Performance benchmarks
  9. ✓ Multiple compiler/platform testing

  10. Community engagement

  11. Post to Boost mailing list for initial feedback
  12. Address preliminary concerns
  13. Refine based on feedback

Phase 2: Formal Review Request

  1. Submit review request to boost-users@lists.boost.org
  2. Library name: Boost.Spatial (proposed)
  3. Category: Containers, Algorithms
  4. Author(s): DigiStar Contributors
  5. Description: N-dimensional sparse spatial hash grid
  6. Documentation: https://spinoza.github.io/sparse_spatial_hash/
  7. Repository: https://github.com/spinoza/sparse_spatial_hash

  8. Find review manager

  9. Volunteer from Boost community
  10. Coordinates 10-day formal review
  11. Collects feedback and votes

  12. Announce review period

  13. 10-day formal review
  14. Community members test and provide feedback
  15. Vote: Accept, Accept with conditions, or Reject

Phase 3: Formal Review (10 days)

During the review period, community members will:

  • Test the library on their platforms
  • Review documentation quality
  • Examine code quality and design
  • Provide written feedback
  • Cast their vote

Reviewers consider:

  1. Design: Is the design sound and appropriate for Boost?
  2. Implementation: Is the implementation clean and efficient?
  3. Documentation: Is the documentation clear and complete?
  4. Tests: Are tests comprehensive and passing?
  5. Utility: Is the library useful to the C++ community?

Phase 4: Post-Review

After review, the Review Manager will:

  • Summarize community feedback
  • Announce the result (Accept/Reject/Conditional)
  • List required changes for conditional acceptance

If accepted with conditions: - Address required changes - Re-submit for mini-review if needed - Integration into Boost repository

Phase 5: Integration

Once accepted:

  1. Repository integration
  2. Move to boostorg GitHub organization
  3. Set up CI/CD on Boost infrastructure
  4. Integrate with Boost build system

  5. Documentation integration

  6. Add to Boost documentation site
  7. Cross-link with related libraries

  8. Release

  9. Include in next Boost release
  10. Announce to community

Preparing for Review

Documentation Checklist

  • Main documentation page
  • Tutorial with examples
  • API reference with complexity guarantees
  • Rationale and design decisions
  • Performance benchmarks
  • Comparison with alternatives
  • Installation instructions
  • Building and testing instructions
  • Contributing guidelines

Code Checklist

  • Header-only library structure
  • Boost namespace convention
  • C++20 compliance
  • No external dependencies
  • Exception safety guarantees
  • Const-correctness
  • Move semantics support
  • Allocator support

Test Checklist

  • Comprehensive unit tests
  • Edge case coverage
  • Performance benchmarks
  • Multi-compiler testing
  • Multi-platform testing

Timeline Estimate

  • Pre-submission refinement: 1-2 months
  • Initial mailing list feedback: 2-4 weeks
  • Finding review manager: 2-6 weeks
  • Formal review: 10 days
  • Post-review changes: 2-4 weeks
  • Integration: 1-2 months

Total: 6-12 months from submission to inclusion in Boost release

Common Reasons for Rejection

Learn from past submissions:

  1. Insufficient documentation: Must be comprehensive
  2. Limited testing: Must test edge cases thoroughly
  3. Design issues: Must fit well with Boost/STL design patterns
  4. Narrow utility: Must be useful to broad audience
  5. Portability problems: Must work on major platforms

This Library's Strengths

Strong Points

Fills genuine gap: No existing hash-based sparse spatial grids in Boost ✓ Broad utility: Games, physics, robotics, GIS ✓ Production-tested: Extracted from real physics engine (10M+ particles) ✓ Excellent performance: 40x speedup for incremental updates ✓ Modern C++: Proper use of C++20 features ✓ Comprehensive testing: 31 tests, 100% pass rate ✓ Zero dependencies: Header-only, stdlib only

Potential Concerns

Concern: Overlaps with Boost.Geometry R-tree

Response: Complementary, not competing: - R-tree: Static/semi-static data, hierarchical queries - Sparse hash: Dynamic data, uniform queries, toroidal support

Concern: C++20 requirement excludes some users

Response: - C++20 widely available (GCC 10+ is 4+ years old) - Features (concepts, ranges) essential for clean implementation - Boost has other C++20 libraries (e.g., Boost.STLInterfaces)

Resources

Official Boost Resources

Mailing Lists

  • boost-users: General Boost discussions
  • boost-dev: Boost development discussions
  • boost-review: Library review discussions

Subscribe at: https://www.boost.org/community/groups.html

Example Submissions

Study successful submissions:

  • Boost.Geometry: Complex spatial library
  • Boost.Histogram: Statistical library with generic design
  • Boost.StaticString: Modern C++ string implementation

Next Steps

  1. Gather community feedback
  2. Post to boost-users mailing list
  3. Announce on Reddit r/cpp
  4. Seek early reviews

  5. Refine based on feedback

  6. Address concerns
  7. Improve documentation
  8. Add requested features

  9. Find review manager

  10. Identify potential managers
  11. Approach candidates

  12. Schedule review

  13. Coordinate with review manager
  14. Announce review period
  15. Prepare for formal review

Timeline

Estimated submission: Q3 2025

Target Boost release: 1.87 or 1.88 (2026)

Contact

Questions about Boost submission?

  • Boost mailing lists: https://www.boost.org/community/groups.html
  • GitHub discussions: https://github.com/spinoza/sparse_spatial_hash/discussions
  • Library author: [contact info]

Additional Resources


This library is ready for Boost submission! All technical requirements are met. The next step is community engagement and finding a review manager.