Approachable System Dynamics
Approachable System Dynamics
open-source SD engine & free web-based modeling
open-source SD engine & free web-based modeling Read more
About this project
The world wide web is the future, allowing information and ideas to spread like never before. It is time for system dynamics to become a first-class web citizen that integrates well with other technology. My goal in this Kickstarter is to create a new platform for system dynamics which:
- runs fast directly on the web (no downloads or confusing installation)
- integrates seamlessly and professionally with other web tools
- is totally free and user friendly (lowers the barriers to entry and sharing)
Sound interesting? Read on!
Update (Dec. 25):
After some great discussions, I've added some additional items to the rewards. Everyone at the $10 reward level and above will get access to a 'behind the scenes/making of' video where you see the process behind making an SD engine.
Additionally, for the $50 reward level and above I am adding one-on-one consultation meetings. If you are new to system dynamics (SD), I can help you through making your first models on the website. If you are an experienced practitioner, we can work on making a website for your model, integrating it with other technology you're interested in, or talk about your thoughts and feedback for the future of the product. If you don't have a personal interest in SD we can practice English, or solve your general computer problems.
All existing supporters will get the above, along with new supporters. Merry Christmas and happy holidays :)
What is System Dynamics?
System dynamics (SD) is a method for studying the complex systems that make up the world we live in. Systems ranging from sheep herding to national development planning can be explored with SD. What system dynamics brings is a focus on the feedback loops and time delays that produce the behavior of systems, and the visual representation systems.
The field of system dynamics recently turned 50, and has provided some amazing insights. In the 1960s, Jay Forrester's Urban Dynamics model showed that contrary to popular belief, underemployed training programs and subsidized housing intensified rather than alleviated urban degeneration. The popular Limits to Growth study explored the exponential growth of people and consumption in a world of finite resources. Much of the work done using system dynamics methods is lower profile and more applied, but no less important. For example, a few years ago the Mayo Clinic created a model to assist doctors with dosing regimens for patients, resulting in a 40% increase in patients with stable hemoglobin levels and a 25% reduction in hospitalizations. That is an amazing outcome - lives improved and resources saved through system dynamics! Imagine if more open software could make these profound insights more portable and easier to communicate!
George Richardson has a great introduction to the details of the methodology on the System Dynamics Society's website here.
The Project - Approachable System Dynamics
I want to enable the staggering breadth of existing system dynamics models and insights to spread at the speed of the web, and to drastically lower the friction and barrier-to-entry for creating and modifying SD models. To accomplish this I want to complete a pair of web-based technologies to be finished by the end of June, 2014:
- An open-source library for displaying, running and exploring models in a web browser, with no reliance on plugins, desktop software to install or a specific web host.
- A free, web-based model editor focused on traditional stock and flow system dynamics modeling. Accessible from web browsers on desktop computers, laptops, tablets and even phones, with nothing to install to get started.
If you are a system dynamics practitioner, then you know that you develop insight through the process of model building and model exploration. Imagine being able to deliver fully interactive models to your clients or audience in a frictionless way, so that they can explore and build buy-in on their own time, on their own computers, tablets or phones. That is a powerful proposition. If you are new to system dynamics but are interested in what it has to offer, access to a free and open web platform so you can dig-in without up-front costs is pretty neat, too.
All of this functionality is designed from the ground up to be easy to embed in ebooks & web sites, so that current practitioners can share their existing (and future) work with new audiences.
Currently, the following is done & working:
- Simulates simple XMILE models in Firefox, Chrome and Safari
- Displays stock-and-flow diagrams
- Basic zoom + navigation
- Simulate modules
- Overlays simulation results on the stock and flow diagram
- Several built-in functions
With this Kickstarter, I can complete what is next:
- Display & edit equations
- Unit checking
- Internet Explorer simulation support
- Runge-Kutta integration
- Built-in live simulation (like SyntheSim and STELLA Live)
- Multidimensional arrays
- The rest of the common and uncommon built-in functions
- Display modules & 'zoom in' to them
- Documentation., both the API for programmer types, and higher level documentation for modelers looking to embed their models in ebooks or on websites.
The library is the first step, but needs to be paired with a website where people can go to create new models or upload and share existing models, for free. No software download or plugin will be necessary. The models on the site can be downloaded in the emerging industry standard format, XMILE.
The web platform is still in the prototype phase. It can currently create and open XMILE models, but doesn't have a web-interface for uploading existing models or modifying models yet:
The website features planned as part of this Kickstarter are:
- Import Vensim MDL format models and STELLA/iThink v10 XMILE models
- Start new models from scratch
- Edit & share models
- Export models in XMILE format
The goal is a minimalist web-based SD editing platform. The site will go live at the end of the Kickstarter campaign in June 2014, but backers at the $25 tier and above will get exclusive pre-release access to the site as it is developed! I have lots of ideas around collaboration and model reuse that I look forward to exploring in the future, and it is possible that some of these features will be made available on the platform at a reasonable but non-zero price. However - SD model editing as outlined and funded here will always be free.
Fast New Tools: Standing on the Shoulders of Giants
The idea is to make it easy to combine system dynamics with other web technologies and enable people to create learning environments and interactions that weren't possible before, quickly.
Community Involvement & Kickstarter Rewards
I want this project to both help new people get involved with system dynamics and enable existing work to reach new audiences. As mentioned above, the $25 rewards tier (and above) come with pre-release access to the free web-based modeling platform. Additionally, the rewards starting at the $50 tier come with my commitment to explicitly test models of your choosing, to ensure your work (or models you find important) run correctly now and in the future. There is also one-on-one internet-based consultations for these higher tier rewards. Here is how it will work for backers, if this Kickstarter is funded:
- I will send you an email with details about how to create an account on the website.
- After you create an account, you will be able upload the model (or models) you want supported and tested as your reward, and schedule a time to meet.
- As part of the upload process, you will have a chance to identify important indicator variables and choose whether you want this model public or kept private.
- I will run your model in either Vensim or iThink, and export the data.
- Next, I will add the model and reference data to either a public or private automated test suite, which will use the sd.js library to simulate your model and compare the results to the original data.
- Before releasing new versions of the library or site, the test suites will be run to ensure we continue to simulate the results you expect. Any regressions will be fixed before a release, so we can all sleep well with a high degree of confidence in upgrades.
In order to make this feasible on my end, there are a few model limitations:
- Models with discrete entities and custom macros are outside the scope of this Kickstarter, unless the stretch goal is reached. This is to keep the scope reasonable, rather than a value judgment - I would love to implement them eventually.
- The entity count is the number of symbols listed in Vensim under Model Settings -> Info, or in STELLA/iThink under the Model Diagnostics dialog.
- Vensim external functions are not supported.
- The new sd.js engine uses double-precision floating point numbers, while standard Vensim uses single-precision numbers. There may be some small numerical differences caused by this.
Stretch Goal: $50k
I have lots of ideas if we can raise additional funds! There are several immediate extensions:
- Discrete entities, like conveyors, queues and ovens.
- Additional UI elements like sliders, pictures and text
- Offline access to the modeling tool, letting you model and save your work without an internet connection. This would probably use the HTML5 application cache, but browser extensions and Android/iOS apps would also be a possibility.
- Broader model support and additional testing. Specifically, testing and showcasing models off the Creative Learning Exchange site.
- Support for XMILE and Vensim Macros.
- Support importing models from additional proprietary software, e.g. Powersim and Anylogic SD models.
- Export not only into XMILE, but back into Vensim MDL and the isee v10 XMILE variant.
If (and hopefully when!) we get near the main $35k goal, I will update this section with more details.
The sd.js library will be developed and released under the permissive MIT license. This license gives you the right to use, modify, sell or distribute the sd.js library however you see fit - all you are required to do is include the sd.js copyright notice and a copy of the MIT license, which typically is contained in the sd.js file itself. All of the simulation engine & display code is covered by this license, and only MIT or Apache-licensed 3rd party libraries will be used. What does this mean? Again, you can keep, modify and use the library for your models however you see fit, forever, where ever, without worrying about continuing fees, constraints, or gotchas down the road.
Licensing is the main reason I am not basing this work on Insight Maker. Insight Maker has 2 licensing issues. The first is that its model display code uses proprietary, commercial libraries, making it costly to set up an environment for private use. The second is that the Insight Maker code itself is GPLv3 licensed. This means that any work you incorporate Insight Maker into and distribute (like a custom website, or some solution for a consulting client) must be released in full and for free to the public under the same GPL license. Starting from scratch avoids these issues, allowing me to provide something liberally licensed that can be used (and adapted) by anyone, for any purpose. This includes other open source projects like Insight Maker or commercial products or consulting solutions I am not affiliated with. It would be pretty neat to have an open source, well tested simulation engine that multiple vendors contributed to, of which this is the start.
I am half of the development team behind STELLA Modeler for the iPad, responsible for much of the user experience. I have been involved in System Dynamics for the past 5 years, with a masters degree in it from the University of Bergen. I've worked on a wide variety of System Dynamics software, including STELLA/iThink, Forio Simulate, a SD activity for OLPC laptops, and my masters thesis. I am a member of the XMILE Technical Committee, helping to define a common file format for SD models. Additionally, I've been involved in software development for over a decade, and involved with open-source software for the majority of that time. For more details on my background and programming abilities, see bpowers.github.io.
Risks and challenges
System dynamics models and software have a rich vocabulary and set of features at this point. It's been said that individuals usually only use 20% of a programs features, but everyone uses a different 20%. Implementing some of the more esoteric SD features used by a few models could take more time than I am anticipating. With the experience in both system dynamics and software development I've accumulated over the past 5 years I am confident that the project scope I have outlined above is an achievable one.Learn about accountability on Kickstarter
Support this project
- (30 days)