>  It's imperative that you have the ability to group multiline scripts
into a single query or the reactivity of your applications will greatly
suffer.

A fair point and something we might yet address as part of all this
thinking. RemoteGraph is pretty new and it demonstrated a critical aspect
of communications with Gremlin Server. Now we need to think about how to
improve upon it.

> Namely having the ability to edit/modify/add steps to an already defined
traversal.

I don't quite follow that point...could you please elaborate?




On Wed, Apr 20, 2016 at 4:15 PM, Dylan Millikin <dylan.milli...@gmail.com>
wrote:

> Nice post,
>
> I'm going to jump straight to the end. I think that one of the problems of
> doing an abstraction similar to remoteGraph is that in reality the overhead
> of communicating with the server is too big to make this viable. It's
> imperative that you have the ability to group multiline scripts into a
> single query or the reactivity of your applications will greatly suffer.
>
> The Gremlin-java base also has a few limitations that some query builders
> try to fix (which can only be done if you abandon the idea of a natural
> gremlin language variant in favor of a query builder). Namely having the
> ability to edit/modify/add steps to an already defined traversal. Though in
> time it might be nice to have these be part of the original implementation.
>
> I personally love the idea of gremlin language variants. I just don't think
> they're production value is any good without some extended functionality
> (beyond what gremlin-java currently is).
>
> On Wed, Apr 20, 2016 at 3:23 PM, Stephen Mallette <spmalle...@gmail.com>
> wrote:
>
> > This thread on Gremlin Language Variants has been very interesting:
> >
> > https://pony-poc.apache.org/thread.html/Zcazrw7k442xcwc
> >
> > I think that this work goes a long way to address two issues I've been
> > concerned about:
> >
> > 1. Greater consistency in how different languages do Gremlin
> > 2. Less fragmentation in terms of libraries and how they work so that
> users
> > aren't confused with how to get started (though I don't think the goal
> here
> > is to restrict choices or slow down innovation)
> >
> > One of the first things we should probably do is start thinking in terms
> of
> > the types of libraries that are built on TinkerPop (outside of those
> things
> > that are Graph Systems) and those are listed here currently:
> >
> > http://tinkerpop.apache.org/#graph-libraries
> >
> > Marko mentioned to me that he saw the libraries we listed here breaking
> > into three categories:
> >
> > 1. Gremlin Language Variants - which the other thread demonstrates quite
> > nicely
> > 2. Gremlin Drivers - the Gremlin Server protocol implementations - those
> > things that send traversals to Gremlin Server and get back results.
> > 3. OGM and others - I say "others" because there might be plugins and
> other
> > similar odds and ends
> >
> > I like Marko's category system here and I think that having these kinds
> of
> > categories will help folks organize their libraries to fit into one of
> > these spaces and make it easier for users to know what they need to get
> in
> > order to start doing TinkerPop in their language.
> >
> > Anyway, the category thing is just setting the stage for this big
> > bombshell.  I think TinkerPop should consider maintaining the Gremlin
> > Language Variants.
> >
> > Heresy! right?
> >
> > Well, I think it's the best way to achieve consistency across languages.
> > Under this model, TinkerPop provides the base language variant and people
> > can choose to extend upon it, but the base stays tied to our archetype of
> > Java and we end up with a much more clear story for virtually any
> > programming language.
> >
> > So how do we do this? Slowly and deliberately. We should look to only
> > include language variants where we:
> >
> > + have good automation in place (like what Marko did for Python),
> > + some competence on the committer list in that language
> > + a nice testing framework that operates in our standard build/release
> > process.
> >
> > That's setting a high bar, but if we don't keep it high, I think we will
> be
> > left unable to properly support and maintain what we hang out there.
> >
> > I'd also like to express that we should not be looking to maintain
> language
> > drivers. I think that should remain a third-party community effort just
> > like Graph Systems. In other words, we remain a repository for reference
> > implementations for everything else. Why? Because, as it sits right now,
> > just based on the level of effort for what Marko did with Python,
> > maintaining a "base" Gremlin Language Variants shouldn't be hard. We
> won't
> > be building tons of add-on capabilities to the base variants - they will
> > pretty much just stay on par with the java archetype.  Drivers on the
> other
> > hand have lots of implementation details, with many different
> technologies
> > that could be used, etc.  They have similar complexity to Graph System
> > implementations in many ways. I also think that the drivers can afford to
> > have different APIs and approaches without being detrimental to the
> > community.
> >
> > If gremlin-js-driver wants to do:
> >
> > client.submit("g.V()")
> >
> > and gremlin-python-driver wants to do:
> >
> > client.send("g.V()")
> >
> > that's not a big deal.
> >
> > The last point that I'll make is that I think Gremlin Language Variants,
> > that don't operate on the JVM (e.g. Jython) and use Gremlin Server,
> should
> > have some abstraction that is similar to RemoteGraph.  RemoteGraph
> exposes
> > a DriverConnection interface that is currently implemented by
> > gremlin-driver.  The DriverConnection is responsible for sending a
> > traversal to the server and returning results. It would be nice if the
> > language variants had a similar interface that the various community
> > drivers could implement. In that way, the user never has to do any form
> of:
> >
> > client.submit(someGremlinString)
> >
> > in any language. We really need to try to make that pattern go away
> across
> > the TinkerPop community.
> >
> > So - that's was a long email. Looking forward to hearing some discussion
> on
> > this.
> >
> > Stephen
> >
>

Reply via email to