[Dev] Split src into submodules (ct-conventions MOD1, MOD2), keeping the public exports
Maintainer antworten meist innerhalb von 1 Tag
@ocots arbeitet bereits daran.
Seit 07.11.2026.
Bewertung
Dieses Issue wurde noch nicht bewertet.
Beschreibung
Agents: read the guide for agents in #310 first (order, difficulty, how to claim an issue, working method).
Goal
Split src/OptimalControlProblems.jl (683 lines: modelings, discovery of the problems, metadata schema and loading, references, parameters, initial guesses, aliases of CTModels) into submodules, one per responsibility, following ct-conventions (MOD1, MOD2), so that the package file only declares. Submodules also hide what users do not need: internals stay reachable as OptimalControlProblems.<Submodule>.f and no longer appear at the top level.
Decisions (maintainer, 2026-11-07)
- The package keeps its exports.
MOD8(no top-level export) is written for the internalCT*packages; OptimalControlProblems is user-facing, like OptimalControl.jl.using OptimalControlProblems; beam(OptimalControlBackend())keeps working. No breaking change of the public API. - Problems and public functions live in submodules that export them, and the package re-exports them. The public API is the union of the submodule exports re-exported by the package; what a submodule does not export stays qualified (
OptimalControlProblems.Metadata._references…). The extensions keep defining methods on the same functions (OptimalControlProblems.beamis the same function asOptimalControlProblems.<Submodule>.beam). - Wait for #408 (documentation rewrite): its API reference is generated per module (
docs/api_reference.jl). Start only once #408 is merged.
Proposed split (to confirm when taking the issue)
| Submodule | What moves there |
|---|---|
Modelings/ |
AbstractModelBackend, JuMPBackend, OptimalControlBackend, OptimalControlScalarizedBackend, MODELING_SPECS and what derives from it |
Catalogue/ |
discovery of the problems (make_list_of_problems, PROBLEM_NAMES), the problem functions (beam…), problems, status, the draft warning |
Metadata/ |
schema, loading of ext/MetaData/, problem_metadata, grid_size_data, parameters_data, initial_guess_data, merge |
References/ |
SAME_SOLUTION, loading of ext/MetaData/references/, reference_objective, solution_kind, the analytic solutions (solutions.jl); later the typed references of #409 |
Problems/ |
Problem (problem.jl), model, initial_guess, metadata, solution, the aliases of CTModels (state, control, objective…) |
Order of the submodules follows their dependencies (MOD7, one-way). The precompilation dependencies (Base.include_dependency on ext/ and the reference files) move with the code that reads them.
Order
- After #408 is merged.
- Before part 2 of #409, which adds
AbstractReferenceand its types: they go directly intoReferences/. Part 1 of #409 (#412) only touchestest/and is independent.
Done when
-
src/OptimalControlProblems.jlonly declares: imports, includes ofsrc/<Name>/<Name>.jl,using .<Name>, re-exports. - Each submodule follows
MOD1/MOD2, exports its public part. -
names(OptimalControlProblems)is unchanged (a test compares it with the list before the move, generated, not hand-written), and every internal used by the tests, tools, extensions and docs is reached through its submodule. - Extensions,
tools/,test/anddocs/updated; full test suite and documentation build green. - A README in
src/saying what each submodule holds (developer documentation lives next to the code, #307).
Related: #409 (typed references), #408 (documentation), #310.
- Vorherrschende Sprache
- Julia
- Sterne
- 13
- Forks
- 1
- Ø Merge
- 3 Std. 9 Min.
- Gemergte PRs (30 T.)
- 47
Entwicklungsumgebung
- Kein Dockerfile und keine Docker-Compose-Datei
- Keine Pull-Request-Vorlage
- Beitragsleitfaden lesen
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus control-toolbox/OptimalControlProblems.jl
-
[Cron] cron-convergenceOffencron-convergence
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 28/100
control-toolbox/OptimalControlProblems.jl#418 ·
Maintainer antworten meist innerhalb von 1 Tag
-
[Metadata] Reference solutions with how they were obtained: typed references and APIEvtl. vergeben @ocots hat das heute übernommen. Offenfeature
control-toolbox/OptimalControlProblems.jl#409 · 2 Kommentare · 1 zugewiesene Person ·
Maintainer antworten meist innerhalb von 1 Tag
-
[Tests] Remove the MadNLP barrier bypass once CTSolvers ≥ 0.7.1 is usedEvtl. vergeben @ocots hat das heute übernommen. Offen
control-toolbox/OptimalControlProblems.jl#398 · 1 zugewiesene Person ·
Maintainer antworten meist innerhalb von 1 Tag
-
[Dev] One source of truth per problem, and the equality of the modelings checked by computationEvtl. vergeben @ocots hat das vor 1 Tag übernommen. Offen
control-toolbox/OptimalControlProblems.jl#391 · 1 Kommentar · 1 zugewiesene Person ·
Maintainer antworten meist innerhalb von 1 Tag
-
Restore the full CI matrix (Julia 1.10, macOS, Windows) after the reorganisationEvtl. vergeben @ocots hat das vor 2 Tagen übernommen. Offen
control-toolbox/OptimalControlProblems.jl#344 · 1 Kommentar · 1 zugewiesene Person ·
Maintainer antworten meist innerhalb von 1 Tag
Alle Issues in control-toolbox/OptimalControlProblems.jl
Ähnliche Issues
-
lux
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 76/100
JuliaGraphs/GraphNeuralNetworks.jl#732 ·
Maintainer antworten meist innerhalb von 2 Tagen
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 68/100
Maintainer antworten meist innerhalb von 1 Tag
-
erfinv(::Float16) and erfcinv(::Float16) are wrong for abs(x) <= 0.75 (erfinv(Float16(0)) == 0.2201)Offen
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 82/100
JuliaMath/SpecialFunctions.jl#571 ·
-
Add project: Typst_jll.jlEvtl. vergeben @github-actions hat das vor 1 Tag übernommen. Offenadd-project
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 76/100
YDX-2147483647/best-of-typst#590 · 1 Kommentar ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 74/100