We've relied on ScriptEngine since the early days of TinkerPop and it has always been just a construct for usage with Groovy. We now find in a world of GLVs that other ScriptEngine implementations are important and require similar attention that we've given to GremlinGroovyScriptEngine. Unfortunately, so much of the logic and code that is tied to ScriptEngines, like the Plugin system,Gremlin Server, Gremlin Console is trapped inside the gremlin-groovy module. Ultimately that stuff needs to move to gremlin-core so that other GLVs that are JVM-based can take advantage of that.
If you recall, I started this work on 3.2.2 and 3.2.3 but then got blocked for a number of reasons and decided to hang up the effort for a while to clear my head. Anyway, I'm trying to get back into it again so that a number of different dominoes can fall (all things we've discussed on this list - like getting rid of gremlin-groovy-test. Yes, even doing that isn't possible without these changes). I'm not completely sure where this work will take me but expect some big changes in 3.3.0 - specifically I can see where: 1. GremlinModule will be the new thing that configures ScriptEngines - they are quite similar to GremlinPlugins but are not bound to groovy. 2. Not sure what will happen to GremlinPlugins - they may stay a groovy construct and remain bound to Gremlin Console for now. Though we've had other discussions here about a more generalized Gremlin Console not bound just to groovy sooooo...... 3. Gremlin Server yaml configuration file will change format around how ScriptEngines are configured. So far, I have the beginnings of this work all happening without any breaking changes - meaning lots of deprecation and adapter code that allows new stuff to work with old stuff. I prefer this approach as it allows the code base to continue to work and I don't have to blast it back to the stone age to get the new changes in (though it is more frustrating and slower). Anyway, please let me know if there are any questions.