Upstream Adoption Roadmap¶
This is the long-running plan for using external OSS as design references without turning libgnss++ into an integration fork.
Principle¶
- Study upstream code directly.
- Import ideas selectively.
- Keep libgnss++ native module boundaries intact.
- Every imported idea must earn a local regression or sign-off gate.
Phase A — MADOCALIB¶
Focus:
- PPP measurement model
- PPP-AR gating and state management
- L6E / L6D correction flow
- product coverage around precise PPP
Deliverables:
madocalib-gap.md- a prioritized list of PPP-side PRs
Expected PR families:
ppp-measurement-improvementppp-ar-gatingppp-product-pipeline
Phase B — CLASLIB¶
Focus:
- Compact SSR subtype coverage
- grid / atmosphere handling
SSR2OSR-style thinking- PPP-RTK / VRS-RTK boundary
Deliverables:
claslib-gap.md- subtype-by-subtype adoption table
Expected PR families:
clas-grid-applicationclas-subtype-expansionclas-product-loader
Phase C — demo5 / rtklibexplorer¶
Focus:
- slip detection tuning
PARarfilter- measurement variance tuning
- low-cost receiver presets
Deliverables:
demo5-gap.md- a small set of RTK tuning PRs tied to PPC/Odaiba results
Expected PR families:
rtk-demo5-slip-tuningrtk-demo5-par-tuningrtk-demo5-varerr
Phase D — MALIB¶
Focus:
- replay workflow
- config layout
- sample data handling
- regression organization
- real-time replay validation
Deliverables:
malib-ops-gap.md- CI / replay / sign-off improvements
Expected PR families:
replay-and-config-hardeninglive-replay-signoff-expansion
Phase E — laika¶
Focus:
- precise product fetch
- cache layout
- product conversion tooling
Deliverables:
laika-gap.md- product downloader and cache design
Expected PR families:
laika-fetch-productslaika-ppp-pipeline
Supplemental reference — PocketSDR¶
Use PocketSDR mainly as an SDR frontend, IF replay, and L6D/L6E
interoperability reference.
Focus:
- recorded IF / SDR replay workflow,
PocketSDR convbininterop,- future
QZSS L6replay datasets, - keeping SDR tracking outside the libgnss++ core solver.
Expected future PR families:
pocketsdr-convbin-interoppocketsdr-l6-replay-signoffpocketsdr-if-import-evaluation
Supplemental reference — SignalSim¶
Use SignalSim mainly as a synthetic scenario and validation reference.
Focus:
- synthetic observation datasets,
- future
SignalSim -> RINEXor replay recipes, - solver edge-case regression beyond real-data collections,
- keeping signal simulation outside the libgnss++ core runtime.
Expected future PR families:
signalsim-rinex-interopsignalsim-synthetic-signoffsignalsim-edge-case-regression
Supplemental reference — GSILIB¶
Use GSILIB mainly as a correction-workflow and Japanese post-processing
reference.
Focus:
IONEXIFB / ISB / L2Ccorrection examples- post-processing runbook ideas
Ground rules for every adoption PR¶
1 PR = 1 user-visible value1 PR = 1 regression or sign-off improvement- no mixed protocol/solver/docs mega-PRs
- measured quality must stay visible through checked summaries
Benchmark and sign-off datasets¶
The current plan assumes these stay in the loop:
- bundled static PPP sample
- bundled kinematic sample
- UrbanNav Tokyo Odaiba
- PPC Tokyo run1
- PPC Nagoya run1
- recorded live replay datasets
Success criteria¶
The adoption plan succeeds when:
- PPP quality moves up without losing reproducibility,
- CLAS coverage grows without collapsing module boundaries,
- RTK tuning improvements are benchmarked against
RTKLIB, - replay and sign-off operations become more routine, not more ad hoc.