Skip to content

Commit d0408a5

Browse files
committed
Add contributing manual
1 parent b182ae1 commit d0408a5

File tree

1 file changed

+36
-0
lines changed

1 file changed

+36
-0
lines changed

CONTRIBUTING.md

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
- This repository follows the [SciMLStyle](https://github.com/SciML/SciMLStyle) and the SciML [ColPrac](https://github.com/SciML/ColPrac).
2+
- Please run `using JuliaFormatter, NonlinearSolve; format(joinpath(dirname(pathof(NonlinearSolve)), ".."))` before committing.
3+
- Add tests for any new features.
4+
- Additional help on contributing to the numerical solvers can be found at https://docs.sciml.ai/NonlinearSolve/stable/
5+
6+
## Developing Locally
7+
8+
NonlinearSolve is a large package and thus it uses a sublibrary approach to keep down
9+
the total number of dependencies per solver. As a consequence, it requires a bit of special
10+
handling compared to some other Julia packages.
11+
12+
When running the subpackage test suite, it's recommended that one has dev'd its relevant packages in NonlinearSolve.jl. This can be done via(use `NonlinearSolveFirstOrder` as example):
13+
14+
```julia
15+
using Pkg
16+
dev_pks = Pkg.PackageSpec[]
17+
for path in ("lib/SciMLJacobianOperators", "lib/NonlinearSolveBase")
18+
push!(dev_pks, Pkg.PackageSpec(; path))
19+
end
20+
Pkg.develop(dev_pks)
21+
```
22+
23+
When running the full test suite, it's
24+
recommended that one has dev'd all of the relevant packages. This can be done via:
25+
26+
```julia
27+
using Pkg
28+
Pkg.develop(map(
29+
path -> Pkg.PackageSpec.(; path = "$(@__DIR__)/lib/$(path)"), readdir("./lib")));
30+
```
31+
32+
and then running tests accordingly.
33+
34+
## Dependency Structure
35+
36+
There is a tree dependency structure to the sublibraries of NonlinearSolve.jl. The core package is NonlinearSolveBase.jl, which is the hard dependcy of all the other subpackages. SimpleNonlinearSolve.jl is a special one which have BracketingNonlinearSolve.jl as dependency. NonlinearSolve.jl as the parent package contains all of the subpackages.

0 commit comments

Comments
 (0)