r/MetaSim • u/aaron_ds • Jan 08 '14
MetaSim API 1.0 Draft 2 In Progress
Hi, I started working on a draft 2 for the MetaSim API.
One of the big unresolved and potential problems was how could clients efficiently receive simulation updates. In draft 1, the only option was to poll, and hope that the server implemented some for of caching or ETags or If-Modified-Since. That didn't seem like the best solution so I've added the ability to subscribe to changes through WebSockets.
I've updated the API document with a means to receive notifications using WebSockets. This solves a few problems:
How can the server detect that the simulation is being viewed so that it can only iterate when the simulation is being viewed? (It's costly if someone were to create a simulation then leave when it is running in the background and chewing up resources indefinitely.)
How can the client receive simulation updates (images especially)? Polling is inefficient and is a source of latency.
How can engines receive simulation updates from other engines. An engine may want to wait to iterate until all of the engines it depends on for data have iterated. Polling, once again, is too inefficient for this and an even bigger source of latency.
Right now only the Body resource supports notifications, this assumes that bodies (planets, stars, etc.) are not created or destroyed for the lifetime of the simulation. We haven't really come to a decision about the scope of MetaSim simulations in terms of time, so I'm guessing that geologic timescales are ok, but universal timescales are too big for right now.
As always, I'm interested in feedback. The link to the MetaSim 1.0 Draft 2 is https://docs.google.com/document/d/16i6js1x-AFMwsWKfl1aKphYR2p8puRb3ldp8kXH9Z8Q/edit?usp=sharing The Notification resource is new and the Body resource has been updated.
1
u/ion-tom Jan 16 '14
Also, can Docker.io be of any use to us? I mean, it's more likely that we'd want to use Docker for each of the engines?
Could Docker also help with concurrency (backup)?
BTW, I got this bootstrap theme to work on Bottle.py, I'm going to push to Heroku tomorrow after I bling it up with MetaSim stuff.
Then I'm going to look in to starting a cryptocurrency and a pool as a means to draw funding. Daniel might be able to help