Skip to content

joss: address reviewer Tangi - #813

Open
jbcaillau wants to merge 16 commits into
jossfrom
branch-reviewer-tangi
Open

joss: address reviewer Tangi#813
jbcaillau wants to merge 16 commits into
jossfrom
branch-reviewer-tangi

Conversation

@jbcaillau

@jbcaillau jbcaillau commented Jul 27, 2026

Copy link
Copy Markdown
Member

Context

Addresses the JOSS review comments of @tmigot, connected to openjournals/joss-reviews#10630. This PR collects all of the reviewer's issues; it is kept as a draft until they are all covered.

Issue Topic Status
#802 Minor typos / wording suggestions ✅ done
#803 Paper review (citations, problem class) ✅ done
#805 Repository-level comments ✅ done

All changes so far are in joss/ (paper.md, paper.bib). joss/paper.pdf is rebuilt and auto-committed by the Compile JOSS paper workflow (.github/workflows/JOSS.yml) on push.

The reviewer's line numbers refer to the rendered PDF; the mapping to joss/paper.md source lines is given below where relevant.


Issue #802 — minor typos / wording

All 12 suggestions applied verbatim; editorial only, no technical content changed.

# PDF line paper.md Change
1 52 57 In contrast with InfiniteOpt.jl that is designedIn contrast to InfiniteOpt.jl, which is designed
2 54 57 Besides, contributing to…Moreover, contributing to…
3 57 57 Pontryagin's Maximum Principle and that heavily relyPontryagin's Maximum Principle, which heavily rely
4 74 67 Direct method toolsDirect-method tools
5 75 67 Strong direct method implementations:Strong direct-method implementations:
6 87 69 PDE'sPDEs
7 121 85 arbitrary user defined functionsarbitrary user-defined functions
8 146 89 Non-regression on complex problems is increasingly driven by OptimalControlProblems.jl, used as a curated problem bank.Regression testing on complex optimal control instances is increasingly supported by OptimalControlProblems.jl, which serves as a curated problem bank.
9 162 97 Both approaches resort to iterative solversBoth approaches rely on iterative solvers
10 163 97 may converge or not, e.g. depending on…may or may not converge, e.g., depending on…
11 181 107 The package serves educational purposes through Tutorials.jl covering topics…The package also serves educational purposes through Tutorials.jl, which covers topics…
12 190 109 across the control-toolbox ecosystem packagesacross the control-toolbox ecosystem

Existing markdown links (items 8 and 11) and the *e.g.* italics (item 10) were preserved.


Issue #803 — paper review

1. Uniform styling / linking of .jl packages

A single explicit convention is now applied throughout the paper:

every package or tool is hyperlinked at each of its occurrences, and carries its bibliography tag [@key] only at the first occurrence.

  • Missing hyperlinks added: ForwardDiff.jl, DifferentiationInterface.jl, NonlinearSolve.jl, NLPModelsIpopt.jl, Knitro, InfiniteOpt.jl, JuMP, ADNLPModels, ExaModels, MadNLP, CUDSS, and every package in the Julia packages bullet of State of the Field.
  • Duplicated tags removed (kept at first occurrence only): @Patterson2014, @Verschueren2021, @Andersson2019, @arnstrom2022daqp, @Gagnon_*, @pulsipher2022unifying, @QuantumControl_jl, @shin2023accelerating, @SHIN2024110651, @SHIN2021693, @ADNLPModels_jl, @OptimalControlProblems_jl, @Wachter2006, @rackauckas2017differentialequations.
  • QuantumControl.jl is now cited: the QuantumControl_jl entry was present in paper.bib but unused.

The only names left unlinked are those inside the bold bullet labels of State of the Field (**Legacy tools (COTCOT, HamPath, NutoPy)**, **Direct-method tools (BOCOP, ACADO, GPOPS-II, acados, nosnoc)**), which are enumerations of what the bullet is about; each is hyperlinked in the body of its bullet.

2. MINPACK citation

Added @More1980 to paper.bib — Moré, Garbow & Hillstrom, User Guide for MINPACK-1, ANL-80-74, Argonne National Laboratory, 1980, doi:10.2172/6997568 — and cited it at the MINPACK.jl mention in the Indirect methods paragraph.

3. Companion example citation / version

The reviewer is right that v1.0.0 was stale (v1.0.1 was released on 2026-06-11). Rather than bumping to the version DOI, the entry now uses the Zenodo all-versions (concept) DOI 10.5281/zenodo.19663649, which always resolves to the latest release and cannot go stale again. The now-misleading version field was dropped.

4. Ipopt citation in Modelers and solvers

IPOPT is now hyperlinked in that paragraph. Its @Wachter2006 tag stays at the first occurrence (Summary), per the convention in §1 above — repeating the tag would break the rule applied to every other tool.

5. Supported problem class

New Problem Class section, placed right after the Summary, giving the Bolza formulation and stating the scope explicitly. Every capability listed was verified against docs/src/manual-abstract.md:

  • fixed and free final time — the time bounds t₀, t_f may be fixed or be components of the optimisation variable v, covering minimum time problems;
  • endpoint constraints — boundary constraints;
  • path constraints — state, control and mixed (control and state);
  • box constraints on state, control and variable;
  • Mayer, Lagrange and Bolza costs — Bolza is the general form, Mayer (f⁰ = 0) and Lagrange (g = 0) the special cases; maximisation via minimisation of the opposite cost;
  • autonomous and non-autonomous dynamics — dependences detected by the parser;
  • multiphase — not supported;
  • DAEs — not supported, explicit ODEs only;
  • hybrid / nonsmooth systems — not supported.

The section also records the finite-dimensional optimisation variable v (a parameter optimised together with the trajectory), which has no counterpart in the reviewer's list but is part of the supported class.


Issue #805 — repository-level comments

# Item Status Notes
1 .zenodo.json DOI mismatch with CITATION.bib/CITATION.cff ✅ done .zenodo.json now uses 10.5281/zenodo.13336563, the Zenodo concept DOI (verified via the Zenodo API: 13336652 was a stale version-specific DOI for v0.11.2).
2 Spurious deps in Project.toml (Documenter, ADNLPModels, NLPModels, SolverCore) ✅ done Documenter and NLPModels removed entirely ([deps]+[compat]) — confirmed unused anywhere in src/ or test/. ADNLPModels and SolverCore are unused in src/ but are used by the test suite (SolverCore for an AbstractExecutionStats signature check, ADNLPModels — which will also trigger the CTSolversADNLPModels extension once CTSolvers ships it), so both were moved to [extras]/[targets] instead of dropped; ExaModels, also flagged for review, was checked and kept as-is — it's genuinely imported in src/imports/examodels.jl.
3 README.md basic usage: using NLPModelsIpopt unexplained ✅ done Added inline comments on using NLPModelsIpopt and using Plots (same issue applies there) in README.md and docs/src/index.md, explaining they activate package extensions. docs/src/manual-solve.md already documented this in depth, so it was left untouched.
4 CITATION.cff missing version/date-released ⬜ not fixed (deliberate) These fields would go stale at every release without an automated bump, which this repo doesn't have yet. Left as-is rather than adding fields that immediately drift.
5 test/README.md Unix-only / shell-heavy commands ✅ done File removed — it was an internal doc, not part of the public API surface.
6 Tests don't run on Windows (CTBase.run_tests path-separator bug) ✅ fixed upstream Root-caused and fixed in CTBase.jl#512. Bumping OptimalControl.jl's CTBase compat to pull in that fix is deferred to a follow-up PR alongside other pending upstream updates.
7 Spurious DataFrames dep in docs/Project.toml ✅ done Removed from [deps]/[compat] — confirmed unused anywhere under docs/.
8 CPU/GPU Julia version inconsistency in CI.yml ✅ done Removed the pinned versions: input from both jobs; they now inherit the reusable CTActions workflow's default (["1.10", "1.12"]), so CPU and GPU always test the same two Julia versions instead of diverging.

See commit 7eb98a15.


Closes #802
Closes #803
Closes #805

🤖 Generated with Claude Code

Apply the 12 editorial suggestions from JOSS review issue #802 to
joss/paper.md. No content changes; paper.pdf is regenerated by the
Compile JOSS paper workflow.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
actions-user and others added 4 commits July 27, 2026 13:01
- Uniform styling: hyperlink and cite every .jl package / tool at its
  first mention in each section (ForwardDiff.jl, DifferentiationInterface.jl,
  NonlinearSolve.jl, ADNLPModels, ExaModels, MadNLP, Knitro, IPOPT,
  NLPModelsIpopt.jl, DifferentialEquations.jl, and the Julia packages
  bullet of State of the Field).
- Add a MINPACK citation (More, Garbow & Hillstrom 1980, ANL-80-74).
- Cite IPOPT directly in the "Modelers and solvers" paragraph.
- joss-oc-example: point at the Zenodo all-versions (concept) DOI
  10.5281/zenodo.19663649 so the reference always resolves to the
  latest release; drop the now-misleading version field.
- Add a "Problem Class" section making the supported problem class
  explicit (Bolza/Mayer/Lagrange, free initial/final time, boundary,
  variable, path and mixed constraints, box constraints, autonomous and
  non-autonomous dynamics) and stating what is out of scope (multiphase,
  DAEs, hybrid/nonsmooth systems).
- Cite the previously unused QuantumControl.jl bib entry.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Every package / tool is hyperlinked at each of its occurrences, while the
bibliography tag [@key] is given only at the first occurrence. Adds the
missing hyperlinks (InfiniteOpt.jl, JuMP, ADNLPModels, ExaModels, MadNLP,
CUDSS) and drops the duplicated tags (@Patterson2014, @Verschueren2021,
@Andersson2019, @arnstrom2022daqp, @Gagnon_*, @pulsipher2022unifying,
@QuantumControl_jl, @shin2023accelerating, @shin*, @ADNLPModels_jl,
@OptimalControlProblems_jl, @Wachter2006, @rackauckas2017*).

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@jbcaillau jbcaillau changed the title joss: address reviewer Tangi Migot minor typos/wording (#802) joss: address reviewer Tangi Jul 27, 2026
@jbcaillau jbcaillau mentioned this pull request Jul 27, 2026
5 tasks
jbcaillau and others added 7 commits July 27, 2026 15:39
- Align .zenodo.json DOI with the concept DOI already used in
  CITATION.bib/CITATION.cff (10.5281/zenodo.13336563)
- Remove unused Documenter/NLPModels/SolverCore from Project.toml;
  move ADNLPModels to [extras]/[targets] since it is only needed by
  tests for now (CTSolversADNLPModels extension not yet in the
  pinned CTSolvers version)
- Remove unused DataFrames dependency from docs/Project.toml
- Explain why NLPModelsIpopt/Plots must be loaded (extension
  triggers) in README.md and docs/src/index.md basic usage examples
- Drop pinned Julia versions in CI.yml so CPU and GPU jobs both use
  the reusable workflow's default (1.10 and 1.12) instead of
  diverging (1.12 vs floating 1)

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@ocots
ocots marked this pull request as ready for review July 27, 2026 16:16
@ocots ocots added run ci gpu Trigger CI on GPU run ci cpu Trigger CI on CPU run documentation Trigger Documentation labels Jul 27, 2026
@ocots ocots added run ci gpu Trigger CI on GPU and removed run ci gpu Trigger CI on GPU run documentation Trigger Documentation run ci cpu Trigger CI on CPU labels Jul 27, 2026
ocots and others added 2 commits July 27, 2026 18:37
SolverCore was fully removed as unused, but it is used by
test/suite/reexport/test_ctsolvers.jl (AbstractExecutionStats
signature check) — same situation as ADNLPModels. Move it to
[extras]/[targets] instead of dropping it entirely, and loosen its
compat bound to "0.3" to match the other extras entries.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
…1.11

On Julia 1.10, type inference for _extract_kwarg gives the wider
Union{Nothing, AbstractDiscretizer} instead of the concrete runtime
type, making @inferred fail — a compiler precision difference, not
a logic bug. Same pattern already used in CTFlows.jl for an
analogous allocation check.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@ocots ocots added run ci gpu Trigger CI on GPU run ci cpu Trigger CI on CPU labels Jul 27, 2026
@jbcaillau

Copy link
Copy Markdown
Member Author

@tmigot can you please review?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

run ci cpu Trigger CI on CPU run ci gpu Trigger CI on GPU

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants