Introduction to the project
This page serves as a quick introduction to the project. It's written in a form of a list of answers to some of the frequently asked questions.
What is this project about?
It's about creation of user friendly environment for simulation model design and processing. It's about discovering possibilities for collaboration on certain kinds of simulation models.
At a more basic level it's about discovering a good minimal simulation architecture that's useful, extendable and easy to use.
What are the overall goals for this project?
- provide a system for modelling and simulating real-world socio-economic systems (to try to get a better understanding of how things work and how we can influence large complex systems)
- provide an inclusive environment for simulation modelling for anyone interested
- provide a basic and easy to reason about simulation framework
- provide a simple to use interface for simulation modelling, based on already existing formats
- provide a simple interface for simulation modelling that could be used by custom applications
How useful is it right now?
Right now the project consists of a proposed system for how collaborative simulation-modelling could happen, as well as experimental software implementing things that are necessary for this to happen.
If you're ready to build from source (Rust programming language) you can already run some of the software.
How useful could it become?
That's hard to say. It depends on how useful the base simulation engine and it's API interface is.
It's designed to be relatively basic and generic so it can scale well, but it's not certain that it will.
The design of the engine itself imposes important limitations on the possible simulations to be created for it. There are tradeoffs to be had, as with most things, and the overall design here is influenced by the larger goals of the project.
Community created content?
The goal is to create a situation where multiple users can collaborate on files organized into versioned modules.
User files (for the sake of simplicity also collectively called content) are parsed and a simulation instance is spawned using that data.
User files provide both the initial state information (here state meaning a data-based representation of an object at some point in simulation time; we call this data) as well as the computation instructions necessary for running the simulation.