Hello Jason,
Thank you for the answers!
I have noticed that Tortoise is a full reimplementation, but what
caught my eye was the org.nlogo file that was being used. While
compiling teletortoise from source, and wanted to change it to work
with NetLogo 5.2, I noticed that in the build.sbt you use a org.nlogo
version 0.1 provided by tortoise
(https://github.com/NetLogo/Teletortoise/blob/master/build.sbt).
Trying to change it with the org.nlogo provided from NetLogo 5.2
(desktop) i couldn’t compile. I assume they differ.
Because of that and one of the major features announced for NetLogo
6.0 - "Tortoise Integration” - I assumed that both desktop and web
netlogo would be using the same org.nlogo at one point.
This train of thought may be silly, but from what I read here:
https://github.com/NetLogo/NetLogo/wiki/Extensions-API
org.nlogo provides the API for programming extensions.
So, I take it that the plan is to have two APIs for building
extensions - one for desktop and one for web ?
Thank you for the info on NetLogo 5.3 using Scala 2.11!
—
Sent from Mailbox <https://www.dropbox.com/mailbox>
On Tue, Jul 7, 2015 at 6:54 PM, Jason Bertsche
<[email protected]
<mailto:[email protected]>> wrote:
Hi Marin,
I'm moving this conversation to the public development mailing
list, since I think others might find these questions and answers
helpful.
What is the plan with the API offered by Tortoise?
NetLogo Web (née Tortoise) does not currently have an extensions
API. It's certainly something that we plan to add at some point,
but definitely *don't* expect it in the next month or two.
I noticed that Galapagos uses Scala 2.11
Galapagos, Tortoise, and NetLogo-Headless use 2.11 because they
are on an entirely separate line of development from desktop
NetLogo, and therefore do not have to deal with the same
constraints that desktop NetLogo does (e.g. trying to retain
binary compatibility with of all the NetLogo ecosystem's extensions).
and the Tortoise API
To talk about a "Tortoise API" suggests to me a misunderstanding
as to what Tortoise is, and I think that clarifying this point
might help to better make sense of how Tortoise fits into all of
this. When you say "Tortoise API", I assume that you are
referring to this project <https://github.com/NetLogo/Tortoise>,
which is not so much an API as it is a full-fledged
reimplementation of NetLogo. The original NetLogo application
takes NetLogo code and converts it into Java code/Java Virtual
Machine bytecode that calls into a simulation engine written in
Java and Scala. The Tortoise project takes NetLogo code and
converts it into JavaScript code that calls into a simulation
engine that's written in JavaScript/CoffeeScript. Aside from both
projects implementing the NetLogo language and aiming to have the
same core features, they live very independently from one another.
Will future extensions of NetLogo be written using Tortoises API?
I don't expect so. The plan for the near future is that the two
NetLogo implementations (NetLogo and NetLogo Web) will continue to
exist separately from one another. I've thought about the idea of
somehow being able to have a shared ecosystem of extensions, but
I've concluded that such a thing is largely impractical. In some
ways, I'm not even sure it's desirable. Having simulations
running in the browser, on the web, opens up new doors for
extensions that don't make as much sense when you're using a
desktop application (e.g. embedding a model within a personal web
page). Conversely, the JVM offers sane solutions for concurrency
and dealing with the machine's file system, unlike the browser.
The two environments have their own strengths and weaknesses, so
what an extension is capable of will vary between those two
environments. Surely there are some extensions that people would
find useful in both environments, but I'm pessimistic that there
would be many overlapping extensions that it could be written once
and runnable in both the browser and the JVM while still being
/well-implemented/ for both environments.
Can I start developing extensions for the current release
(NetLogo 5.2) using the Tortoise API?
It probably goes without saying, at this point, but no. If you
want to build an extension will run in NetLogo 5.2, it needs to be
written against the NetLogo Extensions API in some language that
works with the Java 6 runtime. If you're going to use Scala, the
most-recent version you can use with NetLogo 5.2 is Scala 2.9.3.
However, the NetLogo 5.3 branch looks like
<https://github.com/NetLogo/NetLogo/blob/5.3/build.sbt#L1> it
supports Scala 2.11.
On 7/6/2015 10:44 AM, marin aglic wrote:
Greetings,
I was wondering about starting to build extensions for NetLogo
with Scala 2.11. However, I noticed that the API doesn’t support
Scala 2.10 and 2.11.
What is the plan with the API offered by Tortoise?
I noticed that Galapagos uses Scala 2.11 and the Tortoise API, so
I was wondering: Will future extensions of NetLogo be written
using Tortoises API?
Can I start developing extensions for the current release
(NetLogo 5.2) using the Tortoise API?
P.S. I apologize for any spelling or grammatical mistakes.
Thank you,
Marin Aglić Čuvić
—
Sent from Mailbox <https://www.dropbox.com/mailbox>