Skip to content

Commit c548056

Browse files
committed
state more clearly and better organized the library goals
1 parent 2912cf3 commit c548056

File tree

2 files changed

+29
-13
lines changed

2 files changed

+29
-13
lines changed

Project.toml

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
name = "DynamicalSystems"
22
uuid = "61744808-ddfa-5f27-97ff-6e42cc95d634"
33
repo = "https://github.com/JuliaDynamics/DynamicalSystems.jl.git"
4-
version = "3.3.16"
4+
version = "3.3.17"
55

66
[deps]
77
Attractors = "f3fd9213-ca85-4dba-9dfd-7fc91308fec7"

README.md

+28-12
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99

1010
**DynamicalSystems.jl** is an [award-winning](https://dsweb.siam.org/The-Magazine/Article/winners-of-the-dsweb-2018-software-contest) Julia software library for nonlinear dynamics and nonlinear timeseries analysis.
1111

12-
To install **DynamicalSystems.jl**, run `import Pkg; Pkg.add("DynamicalSystems")`.
12+
To install **DynamicalSystems.jl**, run `import Pkg; Pkg.add("DynamicalSystems")` as a Julia language command.
1313
To learn how to use it and see its contents visit the documentation, which you can either find [online](https://juliadynamics.github.io/DynamicalSystems.jl/dev/) or build locally by running the `docs/make.jl` file.
1414

1515
**DynamicalSystems.jl** is part of [JuliaDynamics](https://juliadynamics.github.io/JuliaDynamics/), an organization dedicated to creating high quality scientific software.
@@ -20,22 +20,38 @@ Aspects of **DynamicalSystems.jl** that make it stand out among other codebases
2020

2121
- **Exceptional documentation**. All implemented algorithms provide a high-level scientific description of their functionality in their documentation string as well as references to scientific papers. The documentation features hundreds of tutorials and examples ranging from introductory to expert usage.
2222
- **Accessible source code**. One of the main priorities of the library is that the source code of (almost) all implementations is small, simple, easy to understand and modify. This increases confidence, reduces bugs, and allows users to become developers without unnecessary effort.
23-
- **Open source community project**. Built from the ground up entirely on GitHub, **DynamicalSystems.jl** is 100% open source and built by community contributions. Anyone can be a developer of the library. Everyone is welcomed.
24-
- **Extensive content**. It aims to cover the entire field of nonlinear dynamics. It has functionality for complexity measures, delay embeddings, stability and bifurcation analysis, chaos, surrogate testing, recurrence quantification analysis, and much more. Furthermore, all algorithms are "general" and work for any dynamical system applicable. Missing functionality that falls under nonlinear dynamics is welcomed to be part of the library!
23+
- **Open source community project**. Built from the ground up entirely on GitHub, **DynamicalSystems.jl** is 100% open source and based on community contributions. Anyone can be a developer of the library. Everyone is welcomed.
24+
- **Extensive content**. It aims to cover the entire field of nonlinear dynamics and nonlinear timeseries analysis. It has functionality for complexity measures, delay embeddings, periodic orbits, nonlocal stability analysis, continuation, chaos, fractal dimensions, surrogate testing, recurrence quantification analysis, and much more. Furthermore, all algorithms are "general" and work for any dynamical system applicable. Missing functionality that falls under this wide category of content is welcomed to be part of the library!
2525
- **Well tested**. All implemented functionality is extensively tested. Each time any change in the code base is done, the extensive test suite is run and checked before merging the change in.
2626
- **Extendable**. **DynamicalSystems.jl** is a living, evolving project. New contributions can become part of the library and be accessed by all users in the next release. Most importantly, all parts of the library follow professional standards in software design and implement extendable interfaces so that it is easy to contribute new functionality.
27-
- **Active development**. Since the start of the project (May 2017) there has been activity every month: new features, bugfixes, and the developer team answers users questions on Discourse/Slack.
27+
- **Active development**. Since the start of the project (May 2017) there has been activity every month: new features, bugfixes, and the developer team answers users questions on official Julia language forums.
2828
- **Performant**. Written entirely in Julia, heavily optimized and parallelized, and taking advantage of some of the best packages within the language, **DynamicalSystems.jl** is _really fast_.
2929

3030
## Goals
3131

32-
The primary goal of **DynamicalSystems.jl** is to be a library in the literal sense: where people go to learn something (here in particular for nonlinear dynamics). That is why the main priority is that the documentation is detailed and references articles and why the source code is written as clearly as possible, so that it is examinable by any user.
32+
The **DynamicalSystems.jl** library started as a vision with three main goals;
33+
These same goals now are the core pillars guiding development, and are largely the source of where the aforementioned unique highlights stem from.
3334

34-
The second goal is to fill the missing gap of high quality general purpose software for nonlinear dynamics which can be easily extended with new functionality. The purpose of this is to make the field of nonlinear dynamics accessible and reproducible.
35+
### Goal 1: Accessible and reproducible nonlinear dynamics
3536

36-
The third goal is to fundamentally change the perception of the role of code in both scientific education as well as research.
37-
It is rarely the case that real, _runnable_ code is shown in the classroom, because it is often long and messy.
38-
This is especially hurtful for nonlinear dynamics, a field where computer-assisted exploration is critical.
39-
And published scientific work in this field fares even worse, with the overwhelming majority of published research not sharing the code used to create the paper.
40-
This makes reproducing these papers difficult, while some times straight-out impossible.
41-
**DynamicalSystems.jl** can change this situation, because it is high level (requires writing little code to get lots of results) while offering extensive and well-tested functionality.
37+
The first goal of the library is to make this beautiful field **accessible and reproducible**.
38+
39+
**Accessible** means that if you read on some sorts of fancy algorithm online in a scientific article, you should be able to use it instantly. You shouldn't have to put in the work to code it yourself. The authors of the paper already did that.
40+
_So why should you do it again?!_ To resolve this problem we developed, and continue to develop, a library that has an incredibly low threshold of entry: contributing to **DynamicalSystems.jl** and making your code available to all is truly _easier_ than coding your own algorithms from scratch, due to the well thought out and generic interfaces it provides for dynamical systems.
41+
42+
**Reproducible** means that given some sorts of dynamical systems analysis in a scientific article, you should be able to do _exactly the same analysis_ and get _exactly the same results_ (within some numeric precision) as the article.
43+
After all, computers are deterministic constructs.
44+
**DynamicalSystems.jl** allows this by (1) being written in a modern programming language with incredible environment and reproducibility support, (2) being well tested, and (3) by providing thousands of algorithms out of the box, allowing most dynamical systems analysis to be done instantly while implementing only as little new stuff as necessary.
45+
46+
### Goal 2: Library in the literal sense
47+
48+
**DynamicalSystems.jl** is not just a software library. It is also a library in the literal sense: _where people go to learn something new_ (here in particular for nonlinear dynamics).
49+
That is why the documentation is of exceptionally high quality: detailed descriptions and explanations of algorithms, with references to the scientific articles articles. It is also partly a reason for the source code to be written as clearly as possible, so that it is examinable by any user.
50+
51+
### Goal 3: A general purpose software
52+
53+
The third goal is to fill the missing gap of a high quality _general purpose software_ for nonlinear dynamics which can be easily extended with new functionality. This can be particularly impactful in teaching.
54+
You see, it is unfortunately rarely the case that real, _runnable_ code is shown in the classroom, because it is often long and messy. This is especially hurtful for nonlinear dynamics, a field where computer-assisted exploration is critical.
55+
56+
**DynamicalSystems.jl** provides teachers with a framework capable of demonstrating actual, real-world nonlinear dynamics code and its output, without having to invest the weeks to code the internal infrastructure themselves.
57+
Its high level syntax requires writing little code to get lots of meaningful analysis done, while its extensive functionality covers most typical classroom applications.

0 commit comments

Comments
 (0)