I can certainly see your point about using Drake in an automated environment where this delay would still matter, but running a daemon is not practical. I think you have a lot of good arguments against JVM. There were some moments when I thought it might not have been the best choice as well - for example, Java world is notoriously poor with dealing with child processes.
So, I agree, but there are several arguments that it's not that bad after all:
- Drake is fundamentally an interactive tool. If you run it as a part of an automated process, all its flexibility is not quite needed. You could have Drake print a list of all shell commands it would execute, and save it to get your automated script.
- Most data workflows Drake is good for are quite expensive. Minutes, sometimes hours. Definitely much more than 5 seconds. The reason is simple - if your workflow takes so little time, you're really not gaining much by using a complicated tool like Drake, instead of just putting it all in a linear shell script, and simply re-running everything every time you need it.
- Maybe we'll find a good solution like Nailgun and Drip.
- Maybe someone will make a Java-code compiler that would create a stand-alone executable out of a JAR.
- Maybe Sun will eliminate JVM startup overhead. Or somebody will release a 3rd party JVM without it.
- Maybe we'll have a compiled version of Clojure one day.
- Other maybes. :)
We certainly would support any effort to port Drake into Lisp, C++, Ruby, Python or any language you desire. Porting it into Common Lisp might not be that much easier than to Ruby. We might not consider it ourselves, since the effort will be quite substantial.
Does it sound reasonable to you?