• Runtimes
  • Licence for a new runtime written from scratch

I'm in the process of developing a runtime in Rust based on your documentation, e.g. http://en.esotericsoftware.com/spine-json-format

According to the license, only official runtimes are covered by the "Runtimes Licence Agreement":

The "Spine Runtimes" are software libraries made available by Esoteric Software

Since it's not a derivative of the official runtimes themselves, only the export format documentation, it seems to be acceptable to have my own license, e.g. MIT.

Is this correct?

Related Discussions
...

You can apply the license of your choosing to your runtime as long as you don't use any of the code from our Spine Runtimes. You would need to do a clean room implementation of your own runtimes, without reading through our code so you don't inadvertently use our code and taint your runtime with our license.

Please note that while the JSON format documentation should be accurate for 4.0, it hasn't yet been updated for 4.1. This isn't us being tricky to make writing your runtime more difficult, we just haven't yet gotten the chance to do a full documentation pass. We also haven't updated the editor documentation (the Spine User Guide) for 4.1.

Have you considered binding our spine-c runtime using rust-bindgen? It will likely save you a lot of time and allow the core of your runtime to stay up to date as we do new releases, though with the downside that our Spine Runtimes license would apply.

Hi Nate,

Thanks for the reply.

as long as you don't use any of the code from our Spine Runtimes

I've been very careful with this for this exact reason. I've only sourced information from your docs and exports from my pro licensed Spine editor.

If at any time the docs can't cover what I need to implement I'll have to reference the runtimes and switch over to your license.

Please note that while the JSON format documentation should be accurate for 4.0

I have had to deal with that already. Got around it by messing with the skeleton in the editor and re-exporting to see what changed in the JSON/Binary. So far it's not too bad.

Have you considered binding our spine-c runtime using rust-bindgen

I did consider it, but I wanted to create a Rust only implementation for the sake of safety and native types.