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:
- Meeting technical requirements
- Formal review process
- Community feedback
- 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)¶
- Complete documentation
- ✓ MkDocs documentation site
- ✓ Tutorial and quick start
- ✓ API reference
-
✓ Performance benchmarks
-
Comprehensive testing
- ✓ Unit tests (31 tests, 197 assertions)
- ✓ Performance benchmarks
-
✓ Multiple compiler/platform testing
-
Community engagement
- Post to Boost mailing list for initial feedback
- Address preliminary concerns
- Refine based on feedback
Phase 2: Formal Review Request¶
- Submit review request to boost-users@lists.boost.org
- Library name: Boost.Spatial (proposed)
- Category: Containers, Algorithms
- Author(s): DigiStar Contributors
- Description: N-dimensional sparse spatial hash grid
- Documentation: https://spinoza.github.io/sparse_spatial_hash/
-
Repository: https://github.com/spinoza/sparse_spatial_hash
-
Find review manager
- Volunteer from Boost community
- Coordinates 10-day formal review
-
Collects feedback and votes
-
Announce review period
- 10-day formal review
- Community members test and provide feedback
- 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:
- Design: Is the design sound and appropriate for Boost?
- Implementation: Is the implementation clean and efficient?
- Documentation: Is the documentation clear and complete?
- Tests: Are tests comprehensive and passing?
- 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:
- Repository integration
- Move to boostorg GitHub organization
- Set up CI/CD on Boost infrastructure
-
Integrate with Boost build system
-
Documentation integration
- Add to Boost documentation site
-
Cross-link with related libraries
-
Release
- Include in next Boost release
- 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:
- Insufficient documentation: Must be comprehensive
- Limited testing: Must test edge cases thoroughly
- Design issues: Must fit well with Boost/STL design patterns
- Narrow utility: Must be useful to broad audience
- 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¶
- Gather community feedback
- Post to boost-users mailing list
- Announce on Reddit r/cpp
-
Seek early reviews
-
Refine based on feedback
- Address concerns
- Improve documentation
-
Add requested features
-
Find review manager
- Identify potential managers
-
Approach candidates
-
Schedule review
- Coordinate with review manager
- Announce review period
- 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¶
- CppCon Proposal - Present at CppCon before Boost submission
- Submission Checklist - Complete pre-submission checklist
- Design Decisions - Detailed rationale
This library is ready for Boost submission! All technical requirements are met. The next step is community engagement and finding a review manager.