Closed baggepinnen closed 2 years ago
Sounds reasonable to me. How do you plan to organize it? Different repos or just subfolders of the main repo?
Not sure yet, Optimization.jl uses different folders in the same repo for their sub projects, many other org use different repos. I'd like to find out what the pros and cons of the different approaches are
Sounds good.
I remember liking it when ReinforcementLearning.jl switched from different repos to subfolders, felt easier to navigate and find the code after the change. But I have not played around with some of the surrounding stuff like docs (seems like this could be easy to keep as is for subfolders?) or testing (which I think I understood might be trickier if you e.g. make changes to one of the subfolders and don't want all tests to run) so wouldn't weight my experience very high...
I think that docs can still be kept like it is now, instead of having separate docs for each package. It's rather easy in documenter to document several packages in the same docs. It's also good for discoverability if the docs are centralized. With everything in the same repo, you'd also get issues centralized in one place rather than having multiple different issue trackers etc., so maybe the subfolders way is most convenient.
Yeah, both issues that are centralized and PRs where if you have a PR that covers multiple packages it can now be contained in a single PR instead of having to synchronize multiple PRs over all repos.
This is now done, users can now install and use ControlSystemsBase.jl
for any workflow that does not use continuous-time simulation (using an ODE solver). Discrete-time simulation is handled by ControlSystemsBase.
In Julia v1.8, OrdinaryDiffEq takes an enormous amount of time to precompile and load without a system image. The following breakdown indicates that most of the latency when loading CS is related to
OrdinaryDiffEq
and dependencies ofOrdinaryDiffEq
such asReverseDiff
. I therefore propose to create aControlSystemsBase
where most things, everything that does not significantly contribute to latency, is kept, andControlSystemsSimulation
that contains the features that depend onOrdinaryDiffEq
. The packageControlSystems
will continue to export all the existing functionality, so the change would be non-breaking and only add the option to loadControlSystemsBase
for workflows that do not need continuous-time simulation.Removal of
DelayDiffEq, OrdinaryDiffEq
from the Manifest rids us of the following dependenciesRemoving
Colors
further removes the following depswhich can be done independently from the other changes