You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The current implementation of HarmonicBalance.jl package is becoming bloated and difficult to maintain regarding building out the future NonlinearOscillations ecosystem. It would be beneficial to split it into multiple smaller packages in order to improve maintainability and ease of use. In that way, the packages under the ecosystem becomes more more lightweight, focused on a specific set of functionality.
Proposed solution
Mimic the SCIML ecosystem by creating a hierarchical structure of packages. Create a main interface package at the top of the hierarchy that serves as a low-dependency common interface for libraries downstream. Split the current package into smaller, focused packages that are designed to work well together. Another, maybe more relevant, ecosystem who does a similar thing would be QuantumOptics.jl.
Potential drawbacks
Implementation plan
Create a new main interface package and move the common interface code into it. This would be the package now called HarmonicBalanceBase.jl.
Identify the main functionalities of the current package that can be separated into smaller packages.
Computing slow-flow equations.
Solving slow-flow equations with Homotopy Continuation.
Time evolve and analyze slow-flow equations and the nonlinear oscillatory ODE's.
Create new packages for each of the functionalities identified in the previous step and move the corresponding code into them.
Find good names for all extra packages.
Test the new packages to ensure they work well together and with the main interface package.
Additional information
Here one can find some tips and tricks for making common interfaces between packages
From now on the Module is only loaded when `OrdinaryDiffEq` is also loaded
The Package `PackageExtensionCompat` is used to make sure that HB stays backwards compatible by using `Requires`
Resolves#100, #98
Problem
The current implementation of HarmonicBalance.jl package is becoming bloated and difficult to maintain regarding building out the future NonlinearOscillations ecosystem. It would be beneficial to split it into multiple smaller packages in order to improve maintainability and ease of use. In that way, the packages under the ecosystem becomes more more lightweight, focused on a specific set of functionality.
Proposed solution
Mimic the SCIML ecosystem by creating a hierarchical structure of packages. Create a main interface package at the top of the hierarchy that serves as a low-dependency common interface for libraries downstream. Split the current package into smaller, focused packages that are designed to work well together. Another, maybe more relevant, ecosystem who does a similar thing would be QuantumOptics.jl.
Potential drawbacks
Implementation plan
Additional information
The text was updated successfully, but these errors were encountered: