GSoC 2025 Bandwidth Algorithm - pgRouting/pgrouting GitHub Wiki
Table of Contents
Proposal
Brief Description
This project aims to add Bandwidth Boost Graph Library Algorithm for pgRouting.
State of the Project Before GSoC
Bandwidth algorithm has not been implemented in pgRouting. However, from the graph metrics of the Boost Graph Library, only brandes_betweenness_centrality has been implemented in pgRouting so far.
Deliverables
- Implementation of pgr_bandwidth() function.
- Code with detailed comments.
- User's documentation.
- A wiki page for each week's progress and product created.
- Basic pgTap tests for the mentioned functions.
- Integration examples with existing pgRouting algorithms.
Detailed Proposal
Participants
Title | GitHub Handle | Name |
---|---|---|
1st Mentor | @robe2 | Regina Obe |
2nd Mentor | @cvvergara | Vicky Vergara |
3rd Mentor | @sanak | Ko Nagase |
4th Mentor | @iosefa | Iosefa Percival |
Student Developer | @Saloni-2005 | Saloni Kumari |
Timeline
Community Bonding Period
- Introduce myself to the community, interact with my mentors, and learn more about pgRouting.
- Understand the coding style, generating documentation, and the interaction of pgRouting with other applications.
- Set up a wiki page to keep track of my progress.
- Make a branch in the GSoC_pgRouting repository where I will push my weekly code.
- Review pgRouting C++ coding style from Google C++ coding style guide.
- Participate in community discussions, meetings, or forums to engage with the project
Community Bonding Period Report
- Created OSGeo profile and linked it to the GSoC 2025 Accepted Students wiki page.
- Set up project wiki page with project summary, and placeholders for weekly reports and deliverables.
- Initialized basic folder structure for the Bandwidth algorithm implementation in pgRouting.
- Explored pgRouting and Boost Graph Library to understand integration and function design.
- Interacted with mentors and participated in community discussions for onboarding and project clarity.
- Ready for coding phase with a clear understanding of next steps: C++ implementation, SQL wrapping, and testing setup.
First Coding Period
Week 1 (June 2nd - June 8th)
-
Original Plan
-
Review BGL’s Bandwidth algorithm.
-
Design data structures for pgr_bandwidth().
-
-
Revised Plan:
- Focused on setting up file structure to support later development.
-
Work Done:
-
Created foundational files for pgr_bandwidth() implementation:
-
SQL: bandwidth.sql, _bandwidth.sql
-
Include: bandwidth_driver.h, bandwidth.hpp, bandwidth_process.h
-
Src: bandwidth_driver.cpp, bandwidth_process.cpp, bandwidth.c
-
-
-
Plan for Next Week:
-
No major progress expected due to final exams (June 9–15).
-
Will resume implementation and testing in Week 3.
-
-
Blockers:
- Final exams during Week 2 (non-technical).
Week 2
-
Original Plan:
-
Create initial SQL function interface
-
Develop C++ bandwidth calculation algorithm
-
-
Revised Plan:
-
Focus shifted to resolving structural and naming issues across files
-
Postpone logic implementation until after final exams
-
Prioritize clean, consistent codebase setup for upcoming development
-
-
Work Done:
-
Fixed naming issues and removed duplicate/unnecessary files
-
Renamed files for consistency and clarity
-
Updated license headers across all implementation files
-
Modified CMakeLists.txt accordingly
-
Attended project meetings (June 8 & 9)
-
Implemented mentor feedback
-
Updated wiki documentation
-
-
PR link : #445
-
Plan for Week 3:
-
Resolve compilation errors
-
Resume full development
-
Catch up on pending work
-
-
Blockers:
- None
Week 3
TBD
Week 4
TBD
Week 5
TBD
Week 6
TBD
Second Coding Period
Week 7
TBD
Week 8
TBD
Week 9
TBD
Week 10
TBD
Week 11
TBD
Week 12
TBD
Log of Pull Requests
Link to pull requests made in GSoC-pgRouting repository
Pull Request | Description | Date | Status |
---|---|---|---|
#441 | Week 1 | June 3 | Closed |
#443 | Week 1 | June 7 | Merged |
#445 | Week 2 | June 9 | Open |
Final Report
TBD
Potential Future Work :
TBD
Links:
- Pull Requests:
- Final Pull Request: TBD
- Intermediate pull requests: TBD