Hi,

> This brings up a discussion point for JVM and non-JVM languages. On the
> JVM, the RemoteConnection takes a Traversal object to ship to the server.

I think it should also take a String/String. Wait for it….

> It uses java serialization currently to do that. We did that largely
> because it was easy and because we could demonstrate our functionality for
> RemoteGraph quickly. As has been discussed before, java serialization isn't
> useful for non-JVM languages and also has a downside of heavily binding JVM
> drivers that implement RemoteConnection to versions (java object
> serialization can break pretty easily). So maybe this triggers an old
> discussion of making Traversal serializable to gryo/graphson?

No…..

> Or maybe
> RemoteConnection should actually send a Gremlin-Groovy string as specified
> in the NOTE in the GLV tutorial so that everything stays consistent?

BINGO!  What is the serialization of a traversal? Well, its String 
representation! 

        Iterator<Traverser> remoteConnection.submit("g.V().out().out()", 
"gremlin-groovy")

And watch this:

public interface RemoteConnection {

    public Iterator<Traverser.Admin<E>> submit(final Traversal.Admin<?,E> 
traversal);

    public default Iterator<Traverser.Admin<E>> submit(final String 
scriptEngine, final String traversal) {
      return 
this.submit(ScriptEngineFactory.get(scriptEngine).eval(traversal)); // of 
course be smart with cached engines
    }
}

In fact, use ScriptTraversal in the default method:
        
https://github.com/apache/incubator-tinkerpop/blob/cb229c00dcf2961af729ab706df5594937a2d92d/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/ScriptTraversal.java

return this.submit(new ScriptTraversal(scriptEngine,traversal));


Now, all the "GremlinServer-compliant" RemoteConnection implementing service 
(e.g. Neo4jServer, OrientServer, DseSession, etc.) needs to do is be able to 
turn the Iterator<Traverser.Admin> into a serialized stream for the remote VM 
to consume -- GraphSON, String, Gryo, etc… at that point.

This is why I think we should come up with the concept of 
"GremlinServer-compliant". Can it take Traversals and return Traversers?

Eh?,
Marko.



> 
> 
> On Thu, Apr 21, 2016 at 1:04 PM, Stephen Mallette <spmalle...@gmail.com>
> wrote:
> 
>> Yes - that's the position from the other thread - i started a new one to
>> catch people's attention and not distract from the cool stuff here on
>> gremlin and python.  Anyway, I think that your position to not be concerned
>> with JVM languages makes sense. Those languages can also directly work with
>> RemoteGraph so the need there is lessened.
>> 
>> On Thu, Apr 21, 2016 at 12:59 PM, Marko Rodriguez <okramma...@gmail.com>
>> wrote:
>> 
>>> Hi,
>>> 
>>> Sorry, I'm getting all confused. I just read the other thread on language
>>> variants! :) "TinkerPop mantained Gremlin Language Variants"
>>> 
>>> So I now understand what you are talking about. I think the keyword in
>>> your other email is "base language variant." Apache TinkerPop finds a
>>> simple repeatable/testable pattern for "knocking out" simple language
>>> variants in all the major programming language and we maintain those.
>>> People can then, as you say, extend those with other niceties like how
>>> Gremlin-Scala does operator overloading for its ASCII-art mutation system,
>>> etc. Moreover, I think we can just NOT do this for all the JVM languages
>>> given that these languages can talk to GraphTraversal directly -- thus, the
>>> "base implementation" is just the JVM language itself talking to
>>> GraphTraversal. Thus, I think a good list of languages to target that
>>> outside the JVM are:
>>> 
>>>        Gremlin-Ruby
>>>        Gremlin-Python
>>>        Gremlin-PHP
>>>        Gremlin-R
>>> 
>>> I have competence in Python (as of 48 hours ago) and R. Dylan is good
>>> with PHP. I'm sure someone knows Ruby.
>>> 
>>> Too many threads.
>>> 
>>> ?,
>>> Marko.
>>> 
>>> http://markorodriguez.com
>>> 
>>> On Apr 21, 2016, at 10:25 AM, Marko Rodriguez <okramma...@gmail.com>
>>> wrote:
>>> 
>>>> Have I ever been serious? … ah, yea, but people already have their own
>>> variants with those names, like, for example, Gremlin-Scala! :D And I don't
>>> think (or maybe I'm wrong) that we want to take in, for example,
>>> Gremlin-Scala into TinkerPop? -- and all the others? ………. gets back to the
>>> TinkerPop2 days when MongoGraph was in our repo.
>>>> 
>>>> Marko.
>>>> 
>>>> http://markorodriguez.com
>>>> 
>>>> On Apr 21, 2016, at 9:55 AM, Stephen Mallette <spmalle...@gmail.com>
>>> wrote:
>>>> 
>>>>> ha - i can't tell how serious you are being but i get what you're
>>> saying.
>>>>> it's not really something we can impose anyway.  i guess i was thinking
>>>>> ahead a bit and more about any TinkerPop maintained GLVs (getting
>>> tired of
>>>>> typing Gremlin Language Variants) and their naming pattern.
>>>>> 
>>>>> On Thu, Apr 21, 2016 at 11:13 AM, Marko Rodriguez <
>>> okramma...@gmail.com>
>>>>> wrote:
>>>>> 
>>>>>> Hi,
>>>>>> 
>>>>>> One of the problem is, what if someone HATES (like literally is
>>> DISGUSTED
>>>>>> by) Michael's Gremlin-Scala implementation and decides to make their
>>> own?
>>>>>> Should it be called Gremlin-Scala-Cause-I-Hate-Gremlin-Scala?
>>>>>> 
>>>>>> Marko.
>>>>>> 
>>>>>> http://markorodriguez.com
>>>>>> 
>>>>>> On Apr 21, 2016, at 9:10 AM, Stephen Mallette <spmalle...@gmail.com>
>>>>>> wrote:
>>>>>> 
>>>>>>> it would be nice if we had some consistency in the community around
>>>>>> naming
>>>>>>> of these things. I think that
>>>>>>> 
>>>>>>> gremlin-php
>>>>>>> gremlin-scala
>>>>>>> gremlin-go
>>>>>>> gremlin-python
>>>>>>> gremlin-whatever
>>>>>>> 
>>>>>>> should be the official Gremlin Language Variant naming patterns.
>>> That''s
>>>>>>> especially true if the other parallel thread to this has community
>>>>>>> consensus that these things should become TinkerPop maintained
>>> projects.
>>>>>>> 
>>>>>>> 
>>>>>>> 
>>>>>>> On Thu, Apr 21, 2016 at 10:59 AM, Dylan Millikin <
>>>>>> dylan.milli...@gmail.com>
>>>>>>> wrote:
>>>>>>> 
>>>>>>>> Hey, gremlin-php being the driver do you mean making some sort of
>>>>>>>> gremlin-php-language library that would then leverage the driver?
>>>>>>>> Any suggestion with naming more than welcome here.
>>> natural-gremlin-php?
>>>>>>>> 
>>>>>>>> On Thu, Apr 21, 2016 at 10:52 AM, Marko Rodriguez <
>>> okramma...@gmail.com
>>>>>>> 
>>>>>>>> wrote:
>>>>>>>> 
>>>>>>>>> Hello,
>>>>>>>>> 
>>>>>>>>> So, I had to move the tutorial to 3.2.x+ branch because it uses
>>> the new
>>>>>>>>> TraversalSource API. Thus, the new URL for the DRAFT tutorial is
>>> here:
>>>>>>>>> 
>>>>>>>>> 
>>>>>>>>> 
>>>>>>>> 
>>>>>> 
>>> http://tinkerpop.apache.org/docs/3.2.1-SNAPSHOT/tutorials/gremlin-language-variants/
>>>>>>>>> 
>>>>>>>>> I think this is near complete. Here are some things I would like
>>> to add
>>>>>>>>> before calling it quits:
>>>>>>>>> 
>>>>>>>>>      1. I would like to make a head-nod at least to JINI. I didn't
>>>>>>>> feel
>>>>>>>>> that it was worth going into that model in the tutorial. Most
>>> people
>>>>>>>> won't
>>>>>>>>> do that.
>>>>>>>>>      2. I would like to work with Mark to make Gremlinpy
>>> "compliant"
>>>>>>>>> and then promote Gremlinpy at the end.
>>>>>>>>>      3. I would like to work with Dylan to make Gremlin-PHP
>>>>>>>> "compliant"
>>>>>>>>> and then promote Gremlin-PHP at the end.
>>>>>>>>>      4. Any recommendations you may have… ?
>>>>>>>>> 
>>>>>>>>> Thank you,
>>>>>>>>> Marko.
>>>>>>>>> 
>>>>>>>>> http://markorodriguez.com
>>>>>>>>> 
>>>>>>>>> On Apr 20, 2016, at 5:36 PM, Marko Rodriguez <okramma...@gmail.com
>>>> 
>>>>>>>> wrote:
>>>>>>>>> 
>>>>>>>>>> Hello,
>>>>>>>>>> 
>>>>>>>>>> I have pure Python talking to GremlinServer now via David Brown's
>>>>>>>>> gremlin-python WebSocket driver.
>>>>>>>>>> 
>>>>>>>>>> 
>>>>>>>>> 
>>>>>>>> 
>>>>>> 
>>> http://tinkerpop.apache.org/docs/3.1.3-SNAPSHOT/tutorials/gremlin-language-variants/#using-python-and-gremlin-server
>>>>>>>>>> 
>>>>>>>>>> I haven't updated the text, but you can see the Groovy script that
>>>>>>>>> generates the code. Slicky.
>>>>>>>>>> 
>>>>>>>>>> Here it is in action:
>>>>>>>>>> 
>>>>>>>>>>>>> execfile("/Users/marko/Desktop/gremlin-python.py")
>>>>>>>>>>>>> g = PythonGraphTraversalSource("g")
>>>>>>>>>>>>> 
>>>>>>>> 
>>> g.V().hasLabel("person").repeat(__.out()).times(2).name[0:2].toList()
>>>>>>>>>> [u'ripple', u'lop']
>>>>>>>>>>>>> m =
>>>>>>>>> 
>>> g.V().hasLabel("person").repeat(__.out()).times(2).name[0:2].toList()
>>>>>>>>>>>>> type(m)
>>>>>>>>>> <type 'list'>
>>>>>>>>>>>>> g.V().out("created").count().toList()
>>>>>>>>>> [4]
>>>>>>>>>>>>> g.V().out("created").groupCount().by("name").toList()
>>>>>>>>>> [{u'ripple': 1, u'lop': 3}]
>>>>>>>>>>>>> 
>>>>>>>>>> 
>>>>>>>>>> Criznazy,
>>>>>>>>>> Marko.
>>>>>>>>>> 
>>>>>>>>>> http://markorodriguez.com
>>>>>>>>>> 
>>>>>>>>>> On Apr 20, 2016, at 2:25 PM, Marko Rodriguez <
>>> okramma...@gmail.com>
>>>>>>>>> wrote:
>>>>>>>>>> 
>>>>>>>>>>> Hi,
>>>>>>>>>>> 
>>>>>>>>>>> I added the pure Python model:
>>>>>>>>>>> 
>>>>>>>>>>> 
>>>>>>>>> 
>>>>>>>> 
>>>>>> 
>>> http://tinkerpop.apache.org/docs/3.1.3-SNAPSHOT/tutorials/gremlin-language-variants/#using-python-and-gremlin-server
>>>>>>>>>>> 
>>>>>>>>>>> So this section just ends with a generated String. It would be
>>> neat
>>>>>> to
>>>>>>>>> show David Brown's python driver library submitted that string and
>>>>>>>> getting
>>>>>>>>> back a result set. Anyone have the patience to set up
>>> GremlinServer and
>>>>>>>>> import python driver module and "do the do" ?
>>>>>>>>>>> 
>>>>>>>>>>> Also note the section on "Language Drivers vs. Language
>>> Variants."
>>>>>>>>>>> 
>>>>>>>>> 
>>>>>>>> 
>>>>>> 
>>> http://tinkerpop.apache.org/docs/3.1.3-SNAPSHOT/tutorials/gremlin-language-variants/
>>>>>>>>> (forgot to a href anchor it -- scroll down)
>>>>>>>>>>> 
>>>>>>>>>>> Finally, here is the generate gremlin-python.py file.
>>>>>>>>>>> 
>>>>>>>>> 
>>>>>>>> 
>>>>>> 
>>> https://github.com/apache/incubator-tinkerpop/blob/TINKERPOP-1232/docs/static/resources/gremlin-python.py
>>>>>>>>>>> 
>>>>>>>>>>> Take care,
>>>>>>>>>>> Marko.
>>>>>>>>>>> 
>>>>>>>>>>> http://markorodriguez.com
>>>>>>>>>>> 
>>>>>>>>>>> On Apr 20, 2016, at 1:20 PM, Marko Rodriguez <
>>> okramma...@gmail.com>
>>>>>>>>> wrote:
>>>>>>>>>>> 
>>>>>>>>>>>> Hi Dylan,
>>>>>>>>>>>> 
>>>>>>>>>>>>> That's a nice article on Jython. I can confirm that the same
>>> can be
>>>>>>>>>>>>> accomplished with PHP. I actually like the script to generate
>>> the
>>>>>>>>>>>>> traversal. It's more effort but is more IDE friendly than using
>>>>>>>> magic
>>>>>>>>>>>>> methods.
>>>>>>>>>>>> 
>>>>>>>>>>>> Great. Its still DRAFT so please provide ideas/directions.
>>>>>>>>>>>> 
>>>>>>>>>>>>> To bounce off of the  Python->Gremlin-Groovy(String). How would
>>>>>> that
>>>>>>>>> work
>>>>>>>>>>>>> with bindings? For instance how would one write the following
>>>>>> groovy
>>>>>>>>> script:
>>>>>>>>>>>>> 
>>>>>>>>>>>>> a = "person";b = "name";c = "marko";
>>>>>>>>>>>>> g.V().has(a, b, c);
>>>>>>>>>>>>> 
>>>>>>>>>>>>> (I think it's important to support multiline queries as the
>>>>>>>>> gremlin-server
>>>>>>>>>>>>> communication overhead is pretty significant)
>>>>>>>>>>>> 
>>>>>>>>>>>> I don't know yet. Perhaps, in Python, you write:
>>>>>>>>>>>> 
>>>>>>>>>>>> g.V().has("#a") to denote that you want the #a-string to be a
>>>>>>>> variable
>>>>>>>>> and thus, the compilation is g.V().has(a). Then its up to the
>>> language
>>>>>>>>> driver to determine how bindings are declared.
>>>>>>>>>>>> 
>>>>>>>>>>>> Thoughts?,
>>>>>>>>>>>> Marko.
>>>>>>>>>>>> 
>>>>>>>>>>>> http://markorodriguez.com
>>>>>>>>>>>> 
>>>>>>>>>>>> 
>>>>>>>>>>>>> 
>>>>>>>>>>>>> On Wed, Apr 20, 2016 at 12:09 PM, Marko Rodriguez <
>>>>>>>>> okramma...@gmail.com>
>>>>>>>>>>>>> wrote:
>>>>>>>>>>>>> 
>>>>>>>>>>>>>> Hi,
>>>>>>>>>>>>>> 
>>>>>>>>>>>>>> Here is a published SNAPSHOT DRAFT of what I have so far for
>>> the
>>>>>>>>> tutorial.
>>>>>>>>>>>>>> 
>>>>>>>>>>>>>> 
>>>>>>>>> 
>>>>>>>> 
>>>>>> 
>>> http://tinkerpop.apache.org/docs/3.1.3-SNAPSHOT/tutorials/gremlin-language-variants/
>>>>>>>>>>>>>> 
>>>>>>>>>>>>>> I've asked Ketrina to do a new graphic for this. It will be
>>> CrAzY.
>>>>>>>>>>>>>> 
>>>>>>>>>>>>>> The gremlin-jython.py link is broken as I didn't do a full doc
>>>>>>>>> build. Its
>>>>>>>>>>>>>> here to look at if you are interested:
>>>>>>>>>>>>>> 
>>>>>>>>>>>>>> 
>>>>>>>>> 
>>>>>>>> 
>>>>>> 
>>> https://github.com/apache/incubator-tinkerpop/blob/TINKERPOP-1232/docs/static/resources/gremlin-jython.py
>>>>>>>>>>>>>> 
>>>>>>>>>>>>>> Marko.
>>>>>>>>>>>>>> 
>>>>>>>>>>>>>> http://markorodriguez.com
>>>>>>>>>>>>>> 
>>>>>>>>>>>>>> On Apr 19, 2016, at 10:08 PM, 8trk <mark.hender...@8trk.com>
>>>>>>>> wrote:
>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> Ha. That is very cool. You can easily just rewrite that for
>>> PHP
>>>>>>>> and
>>>>>>>>>>>>>> probably Ruby too and have working native interfaces.
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> I updated my Gist to work with your examples. I had to update
>>>>>>>>> Gremlinpy
>>>>>>>>>>>>>> because I didn’t define __ correctly (thanks! this was a fun
>>>>>>>>> challenge).
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> 
>>>>>> https://gist.github.com/emehrkay/68a9e64789826f6a59e8b5c837dd6ce4
>>>>>>>> <
>>>>>>>>>>>>>> 
>>> https://gist.github.com/emehrkay/68a9e64789826f6a59e8b5c837dd6ce4
>>>>>>> 
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> On Apr 19, 2016, at 11:55 PM, Marko Rodriguez <
>>>>>>>>> okramma...@gmail.com>
>>>>>>>>>>>>>> wrote:
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> Hi,
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>> I think adhering to the Gremlin-Java interface is a great
>>> idea
>>>>>>>>> exactly
>>>>>>>>>>>>>> for the reasons that you stated.
>>>>>>>>>>>>>>>>> The main reason that I didn’t map one-to-one with the
>>> native
>>>>>>>>> interface
>>>>>>>>>>>>>> is because I wasn’t too sure how to do so, I knew that there
>>> was a
>>>>>>>>> lot of
>>>>>>>>>>>>>> method overloading which isn’t possible in either of the
>>> languages
>>>>>>>>> that I
>>>>>>>>>>>>>> wrote this in (Python/PHP), and I figured this approach would
>>> be
>>>>>>>> more
>>>>>>>>>>>>>> flexible with regard to changes in the language (to make it
>>> TP3
>>>>>> all
>>>>>>>>> I had
>>>>>>>>>>>>>> to do was define all of the predicates check for them when
>>> they’re
>>>>>>>>> passed
>>>>>>>>>>>>>> into functions).
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> Check this out. Here is a Groovy script the generates the
>>> Python
>>>>>>>>>>>>>> traversal class.
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>> https://gist.github.com/okram/940adc02834a97a7187d3da57cbf3227
>>>>>>>>>>>>>>>>         - super simple.
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> Thus, no need to fat finger anything in and you know you
>>> have
>>>>>>>> every
>>>>>>>>>>>>>> method implemented. Moreover, every release, just generate the
>>>>>>>>> Python class
>>>>>>>>>>>>>> by running this script in the Gremlin Console. And it just
>>> works:
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>> g.V().has("name","marko")
>>>>>>>>>>>>>>>> g.V().has("name", "marko")
>>>>>>>>>>>>>>>>>>> g.V().has("person","name","marko")
>>>>>>>>>>>>>>>> g.V().has("person", "name", "marko")
>>>>>>>>>>>>>>>>>>> g.V().where(out("knows"))
>>>>>>>>>>>>>>>> g.V().where(__.out("knows"))
>>>>>>>>>>>>>>>>>>> 
>>>>>>>>> g.V()._as("a").out("created")._as("b").where(_as("a").out("knows"))
>>>>>>>>>>>>>>>> 
>>>>>>>> g.V().as("a").out("created").as("b").where(__.as("a").out("knows"))
>>>>>>>>>>>>>>>>>>> g.V().match(_as("a").out("knows")._as("b"),
>>>>>>>>>>>>>> _as("b").out("knows")._as("a"))
>>>>>>>>>>>>>>>> g.V().match(__.as("a").out("knows").as("b"),
>>>>>>>>>>>>>> __.as("b").out("knows").as("a"))
>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>> 
>>>>>>>>> 
>>> g.V().hasLabel("person").has("age",gt(30)).out("created","knows").name
>>>>>>>>>>>>>>>> g.V().hasLabel("person").has("age", P.gt(30)).out("created",
>>>>>>>>>>>>>> "knows").values("name")
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>> The more that I think about it, I think that Gremlinpy’s
>>> aim
>>>>>> was
>>>>>>>>> to be
>>>>>>>>>>>>>> able to write Groovy in Python. That is the main reason why I
>>>>>>>> didn’t
>>>>>>>>> choose
>>>>>>>>>>>>>> just straight-up string concatenation — I needed to be able
>>> to do
>>>>>>>>> things
>>>>>>>>>>>>>> like if clauses or closures or really compounded queries. (In
>>>>>>>> Gizmo,
>>>>>>>>> my
>>>>>>>>>>>>>> OGM, I’ve built some pretty dense queries to send to the
>>> Gremlin
>>>>>>>>> server).
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> Yea, the closures are the hard part. I saw that in Python
>>> you
>>>>>> can
>>>>>>>>> walk
>>>>>>>>>>>>>> the syntax tree of a closure :) … nasty.
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>> Your approach is clearly closer to to Gremlin-Java
>>> interface
>>>>>> and
>>>>>>>>> we
>>>>>>>>>>>>>> should probably use some variant of it going forward. I
>>> quickly
>>>>>>>> took
>>>>>>>>> that
>>>>>>>>>>>>>> interface and used Gremlinpy to handle all of the processing
>>> as
>>>>>>>> seen
>>>>>>>>> in
>>>>>>>>>>>>>> this gist:
>>>>>>>>>>>>>> 
>>> https://gist.github.com/emehrkay/68a9e64789826f6a59e8b5c837dd6ce4
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> Interesting. See how it does with my auto-code generator.
>>> Also,
>>>>>> I
>>>>>>>>> want
>>>>>>>>>>>>>> to steal your P, T constructs as I think you do that better in
>>>>>>>>> Gremlinpy.
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> Marko.
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> http://markorodriguez.com
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>> On Apr 19, 2016, at 10:54 PM, Marko Rodriguez <
>>>>>>>>> okramma...@gmail.com>
>>>>>>>>>>>>>> wrote:
>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>> Hi,
>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>> Sweet -- your dev@ mail works now.
>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>> I think you are on to something with this code example.
>>>>>>>>> Gremlinpy
>>>>>>>>>>>>>> does this, but a bit differently. It uses Python’s magic
>>> methods
>>>>>> to
>>>>>>>>>>>>>> dynamically build a linked list.
>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>> So when you do something like
>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>> g = Gremlin()
>>>>>>>>>>>>>>>>>>> g.function()
>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>> It creates simply adds an gremlinpy.gremlin.Function
>>> object
>>>>>> to
>>>>>>>>> the
>>>>>>>>>>>>>> queue. That object has the parameters to send once the linked
>>> list
>>>>>>>> is
>>>>>>>>>>>>>> converted to a string.
>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>> Why would you create a queue and not just concatenate a
>>>>>> String?
>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>> Check out the readme for a few more examples (it can do
>>>>>> things
>>>>>>>>> like
>>>>>>>>>>>>>> add pre-defined statements to the chain, nesting Gremlin
>>>>>> instances,
>>>>>>>>> and
>>>>>>>>>>>>>> manually binding params)
>>> https://github.com/emehrkay/gremlinpy <
>>>>>>>>>>>>>> https://github.com/emehrkay/gremlinpy>
>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>> Ah, parameter bindings. Hmm…
>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>> I think that a very simple linked list build with a fluid
>>>>>>>>> interface
>>>>>>>>>>>>>> and few predefined object types may be a good approach to
>>> defining
>>>>>>>> a
>>>>>>>>> native
>>>>>>>>>>>>>> way to represent a Gremlin query.
>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>> What do you think?
>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>> It would be really clean if there was
>>> GraphTraversalSource,
>>>>>>>>>>>>>> GraphTraversal, and __ Traversal without any "extra methods."
>>> In
>>>>>>>>> Gremlinpy
>>>>>>>>>>>>>> README I see lots of other methods off of "g" that are not
>>>>>>>>> Gremlin-Java
>>>>>>>>>>>>>> methods. It would be cool if it was a direct map of
>>> Gremlin-Java
>>>>>>>>> (like
>>>>>>>>>>>>>> Gremlin-Groovy and Gremlin-Scala). Where the only deviations
>>> are
>>>>>>>>> things
>>>>>>>>>>>>>> like _in(), _as(), etc and any nifty language tricks like
>>>>>>>> g.V().name
>>>>>>>>> or
>>>>>>>>>>>>>> g.V().out()[0:10]. This way, we instill in the designers that
>>> any
>>>>>>>>> Gremlin
>>>>>>>>>>>>>> language variant should be "identical," where (within reason)
>>> the
>>>>>>>>> docs for
>>>>>>>>>>>>>> Gremlin-Java are just as useful to Gremlinpy people.
>>> Furthermore,
>>>>>>>> by
>>>>>>>>>>>>>> stressing this, we ensure that variants don't deviate and go
>>> down
>>>>>>>>> their own
>>>>>>>>>>>>>> syntax/constructs path. For instance, I see g.v(12) instead of
>>>>>>>>> g.V(12).
>>>>>>>>>>>>>> When a Gremlin language variant wants to do something new, we
>>>>>>>> should
>>>>>>>>> argue
>>>>>>>>>>>>>> -- "submit a PR to Gremlin-Java w/ your desired addition" as
>>>>>>>> Apache's
>>>>>>>>>>>>>> Gremlin-Java should be considered the standard/idiomatic
>>>>>>>>> representation of
>>>>>>>>>>>>>> Gremlin.
>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>> Finally, it would be cool to have a tool that
>>> introspected on
>>>>>>>>>>>>>> Gremlin-Java and verified that Gremlinpy had all the methods
>>>>>>>>> implemented.
>>>>>>>>>>>>>> Another thing to stress to language variant designers -- make
>>> sure
>>>>>>>>> you are
>>>>>>>>>>>>>> in sync with every version so write a test case that does such
>>>>>>>>>>>>>> introspection.
>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>> Thoughts?,
>>>>>>>>>>>>>>>>>> Marko.
>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>> http://markorodriguez.com
>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>> On Apr 19, 2016, at 10:19 PM, Marko Rodriguez <
>>>>>>>>> okramma...@gmail.com>
>>>>>>>>>>>>>> wrote:
>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>> Hello,
>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>> Okay, so I got into a groove. Here is
>>>>>>>>>>>>>> Python->Gremlin-Groovy(String). This is pure Python -- nothing
>>>>>>>>> Jython going
>>>>>>>>>>>>>> on here.
>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>> 
>>>>>>>> https://gist.github.com/okram/4705fed038dde673f4c5323416899992
>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>> Here it is in action:
>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>> # create a traversal source (stupid class name, I know)
>>>>>>>>>>>>>>>>>>>>>>> g = PythonStringGraphTraversalSource("g")
>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>> # simple warmup
>>>>>>>>>>>>>>>>>>>>>>> g.V().has("name","marko")
>>>>>>>>>>>>>>>>>>>> g.V().has("name", "marko")
>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>> # one has()-method, but varargs parsing is smart
>>>>>>>>>>>>>>>>>>>>>>> g.V().has("person","name","marko")
>>>>>>>>>>>>>>>>>>>> g.V().has("person", "name", "marko")
>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>> # strings and numbers mixed
>>>>>>>>>>>>>>>>>>>>>>> g.V().has("person","age",32)
>>>>>>>>>>>>>>>>>>>> g.V().has("person", "age", 32)
>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>> # nested anonymous traversal
>>>>>>>>>>>>>>>>>>>>>>> g.V().where(out("knows"))
>>>>>>>>>>>>>>>>>>>> g.V().where(__.out("knows"))
>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>> # as() is reserved in Python, so _as() is used.
>>>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>> 
>>>>>> g.V()._as("a").out("created")._as("b").where(_as("a").out("knows"))
>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>> g.V().as("a").out("created").as("b").where(__.as("a").out("knows"))
>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>> # multi-traversal match()
>>>>>>>>>>>>>>>>>>>>>>> g.V().match(_as("a").out("knows")._as("b"),
>>>>>>>>>>>>>> _as("b").out("knows")._as("a"))
>>>>>>>>>>>>>>>>>>>> g.V().match(__.as("a").out("knows").as("b"),
>>>>>>>>>>>>>> __.as("b").out("knows").as("a"))
>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>> # P-predicates and .name-sugar (attribute access
>>>>>>>> interception)
>>>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>> 
>>>>>>>>> 
>>> g.V().hasLabel("person").has("age",gt(30)).out("created","knows").name
>>>>>>>>>>>>>>>>>>>> g.V().hasLabel("person").has("age",
>>> P.gt(30)).out("created",
>>>>>>>>>>>>>> "knows").values("name")
>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>> # smart about boolean conversion
>>>>>>>>>>>>>>>>>>>>>>> g.V().valueMap(True,"name","age")
>>>>>>>>>>>>>>>>>>>> g.V().valueMap(true, "name", "age")
>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>> # lambdas -- ghetto as its not a Python lambda, but a
>>> Groovy
>>>>>>>>> lambda
>>>>>>>>>>>>>> string
>>>>>>>>>>>>>>>>>>>>>>> g.V().map('it.get().value("name")')
>>>>>>>>>>>>>>>>>>>> g.V().map(it.get().value("name"))
>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>> What other constructs are there? I think thats it…
>>>>>> Everything
>>>>>>>>> else
>>>>>>>>>>>>>> from here is just fat fingering in all the methods. Then, from
>>>>>>>> there
>>>>>>>>> you
>>>>>>>>>>>>>> use David Brown's GremlinClient (
>>>>>>>>>>>>>> https://github.com/davebshow/gremlinclient) to shuffle the
>>> string
>>>>>>>>> across
>>>>>>>>>>>>>> the network to GremlinServer and get back results. I suppose
>>> there
>>>>>>>>> needs to
>>>>>>>>>>>>>> be some sort of .submit() method ? …. hmmm… wondering if
>>>>>>>>> .next()/hasNext()
>>>>>>>>>>>>>> iterator methods can be used to submit automagically and then
>>> it
>>>>>>>>> feels JUST
>>>>>>>>>>>>>> like Gremlin-Java.
>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>> @Mark: This is what Gremlinpy should do, no?
>>>>>>>>>>>>>>>>>>>> @Dylan: Can you find any Gremlin syntax hole I'm missing
>>>>>> that
>>>>>>>>> isn't
>>>>>>>>>>>>>> solvable with the current espoused pattern?
>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>> Good, right?
>>>>>>>>>>>>>>>>>>>> Marko.
>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>> http://markorodriguez.com
>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>> On Apr 19, 2016, at 4:51 PM, Marko Rodriguez <
>>>>>>>>> okramma...@gmail.com>
>>>>>>>>>>>>>> wrote:
>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>> Hi,
>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>> Done for the night. Here is PythonStringGraphTraversal.
>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>> https://gist.github.com/okram/4705fed038dde673f4c5323416899992
>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>> ??? Cool?
>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>> Marko.
>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>> http://markorodriguez.com
>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>> On Apr 19, 2016, at 4:28 PM, Marko Rodriguez <
>>>>>>>>> okramma...@gmail.com>
>>>>>>>>>>>>>> wrote:
>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>>> Hi,
>>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>>> So I "learned" Python and am able to do a Python class
>>>>>>>>> wrapper
>>>>>>>>>>>>>> around GraphTraversal.
>>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>> 
>>> https://gist.github.com/okram/1a0c5f6b65a4b70c558537e5eeaad429
>>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>>> Its crazy, it "just works" -- with __ static methods
>>> and
>>>>>>>> all.
>>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>>> The reason I wanted to create a wrapper is because I
>>> want
>>>>>>>> to
>>>>>>>>> use
>>>>>>>>>>>>>> Python-specific language constructs and not only Gremlin-Java.
>>>>>> What
>>>>>>>>> those
>>>>>>>>>>>>>> specific language constructs are, I don't know as I don't know
>>>>>>>>> Python :).
>>>>>>>>>>>>>> Moreover, this shell of a wrapper will be used for the JNI and
>>>>>>>> String
>>>>>>>>>>>>>> construction models. Right?
>>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>>>>>> g = PythonGraphTraversalSource(graph)
>>>>>>>>>>>>>>>>>>>>>>>>> g
>>>>>>>>>>>>>>>>>>>>>> graphtraversalsource[tinkergraph[vertices:6 edges:6],
>>>>>>>>> standard]
>>>>>>>>>>>>>>>>>>>>>>>>> g.V()
>>>>>>>>>>>>>>>>>>>>>> [GraphStep(vertex,[])]
>>>>>>>>>>>>>>>>>>>>>>>>> g.V().toList()
>>>>>>>>>>>>>>>>>>>>>> [v[1], v[2], v[3], v[4], v[5], v[6]]
>>>>>>>>>>>>>>>>>>>>>>>>> 
>>> g.V().where(__.out("created")).values("name").toList()
>>>>>>>>>>>>>>>>>>>>>> [marko, josh, peter]
>>>>>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>>> Even valueMap() which takes var args of different
>>> types
>>>>>>>>> works.
>>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>>>>>> g.V().valueMap()
>>>>>>>>>>>>>>>>>>>>>> [GraphStep(vertex,[]), PropertyMapStep(value)]
>>>>>>>>>>>>>>>>>>>>>>>>> g.V().valueMap().toList()
>>>>>>>>>>>>>>>>>>>>>> [{name=[marko], age=[29]}, {name=[vadas], age=[27]},
>>>>>>>>> {name=[lop],
>>>>>>>>>>>>>> lang=[java]}, {name=[josh], age=[32]}, {name=[ripple],
>>>>>>>> lang=[java]},
>>>>>>>>>>>>>> {name=[peter], age=[35]}]
>>>>>>>>>>>>>>>>>>>>>>>>> g.V().valueMap("name").toList()
>>>>>>>>>>>>>>>>>>>>>> [{name=[marko]}, {name=[vadas]}, {name=[lop]},
>>>>>>>> {name=[josh]},
>>>>>>>>>>>>>> {name=[ripple]}, {name=[peter]}]
>>>>>>>>>>>>>>>>>>>>>>>>> g.V().valueMap(True,"name").toList()
>>>>>>>>>>>>>>>>>>>>>> [{label=person, name=[marko], id=1}, {label=person,
>>>>>>>>> name=[vadas],
>>>>>>>>>>>>>> id=2}, {label=software, name=[lop], id=3}, {label=person,
>>>>>>>>> name=[josh],
>>>>>>>>>>>>>> id=4}, {label=software, name=[ripple], id=5}, {label=person,
>>>>>>>>> name=[peter],
>>>>>>>>>>>>>> id=6}]
>>>>>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>>> Easy peasy lemon squeezy or is there something
>>> fundamental
>>>>>>>>> I'm
>>>>>>>>>>>>>> missing?
>>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>>> Marko.
>>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>>> http://markorodriguez.com
>>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>>> On Apr 19, 2016, at 2:58 PM, Marko Rodriguez <
>>>>>>>>>>>>>> okramma...@gmail.com> wrote:
>>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>>>> Hi,
>>>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>>>> So I downloaded and installed Jython 2.7.0.
>>>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>>>> This how easy it was to get Gremlin working in
>>> Jython.
>>>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>>>> import sys
>>>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>> 
>>>>>>>>> 
>>>>>>>> 
>>>>>> 
>>> sys.path.append("/Users/marko/software/tinkerpop/tinkerpop3/gremlin-console/target/apache-gremlin-console-3.2.1-SNAPSHOT-standalone/lib/commons-codec-1.9.jar")
>>>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>> 
>>>>>>>>> 
>>>>>>>> 
>>>>>> 
>>> sys.path.append("/Users/marko/software/tinkerpop/tinkerpop3/gremlin-console/target/apache-gremlin-console-3.2.1-SNAPSHOT-standalone/lib/commons-configuration-1.10.jar")
>>>>>>>>>>>>>>>>>>>>>>> … lots of jars to add
>>>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>> 
>>>>>>>>> 
>>>>>>>> 
>>>>>> 
>>> sys.path.append("/Users/marko/software/tinkerpop/tinkerpop3/gremlin-console/target/apache-gremlin-console-3.2.1-SNAPSHOT-standalone/ext/tinkergraph-gremlin/lib/tinkergraph-gremlin-3.2.1-SNAPSHOT.jar")
>>>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>>>> from
>>> org.apache.tinkerpop.gremlin.tinkergraph.structure
>>>>>>>>> import
>>>>>>>>>>>>>> TinkerFactory
>>>>>>>>>>>>>>>>>>>>>>> graph = TinkerFactory.createModern()
>>>>>>>>>>>>>>>>>>>>>>> g = graph.traversal()
>>>>>>>>>>>>>>>>>>>>>>> g
>>>>>>>>>>>>>>>>>>>>>>> g.V().hasLabel("person").out("knows").out("created")
>>>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>> g.V().hasLabel("person").out("knows").out("created").toList()
>>>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>>>> Then, the output looks like this:
>>>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>>>>>>> from
>>>>>> org.apache.tinkerpop.gremlin.tinkergraph.structure
>>>>>>>>>>>>>> import TinkerFactory
>>>>>>>>>>>>>>>>>>>>>>>>>> graph = TinkerFactory.createModern()
>>>>>>>>>>>>>>>>>>>>>>>>>> g = graph.traversal()
>>>>>>>>>>>>>>>>>>>>>>>>>> g
>>>>>>>>>>>>>>>>>>>>>>> graphtraversalsource[tinkergraph[vertices:6 edges:6],
>>>>>>>>> standard]
>>>>>>>>>>>>>>>>>>>>>>>>>> 
>>> g.V().hasLabel("person").out("knows").out("created")
>>>>>>>>>>>>>>>>>>>>>>> [GraphStep(vertex,[]), HasStep([~label.eq(person)]),
>>>>>>>>>>>>>> VertexStep(OUT,[knows],vertex),
>>> VertexStep(OUT,[created],vertex)]
>>>>>>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>> g.V().hasLabel("person").out("knows").out("created").toList()
>>>>>>>>>>>>>>>>>>>>>>> [v[5], v[3]]
>>>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>>>> Note that, of course, Jython's command line doesn't
>>>>>>>>> auto-iterate
>>>>>>>>>>>>>> traversals. Besides that -- sheez, that was simple.
>>>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>>>> The trick now is to use Jython idioms to make
>>>>>>>>> Gremlin-Jython be
>>>>>>>>>>>>>> comfortable to Python users…
>>>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>>>> Marko.
>>>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>>>> http://markorodriguez.com
>>>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>>>> On Apr 19, 2016, at 11:43 AM, Marko Rodriguez <
>>>>>>>>>>>>>> okramma...@gmail.com> wrote:
>>>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>>>>> Hi,
>>>>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>>>>> So I just pushed:
>>>>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>> 
>>>>>>>>> 
>>>>>>>> 
>>>>>> 
>>> https://git1-us-west.apache.org/repos/asf?p=incubator-tinkerpop.git;a=commitdiff;h=0beae616
>>>>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>>>>> This should help provide the scaffolding for the
>>>>>>>> tutorial.
>>>>>>>>>>>>>> Given that I know nothing about Python, I think my
>>> contributions
>>>>>>>>> start to
>>>>>>>>>>>>>> fall off significantly here. :) … Well, I can help and write
>>> more
>>>>>>>>> text, I
>>>>>>>>>>>>>> just don't know how to use Jython, Python idioms, Gremlinpy,
>>>>>> etc…..
>>>>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>>>>> @Mark/Dylan: If you want to build the tutorial and
>>> look
>>>>>>>> at
>>>>>>>>> it,
>>>>>>>>>>>>>> you simple do:
>>>>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>>>>> $ bin/process-docs.sh --dryRun
>>>>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>>>>> And then for me, the URI to which I point my
>>> browser for
>>>>>>>>> the
>>>>>>>>>>>>>> index.html on my local computer is:
>>>>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>> 
>>>>>>>>> 
>>>>>>>> 
>>>>>> 
>>> file:///Users/marko/software/tinkerpop/tinkerpop3/target/docs/htmlsingle/tutorials/gremlin-language-variants/index.html
>>>>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>>>>> Marko.
>>>>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>>>>> http://markorodriguez.com
>>>>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>>>>> On Apr 19, 2016, at 9:16 AM, Marko Rodriguez <
>>>>>>>>>>>>>> okramma...@gmail.com> wrote:
>>>>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>>>>>> Hello (NOTE: I dropped gremlin-users@),
>>>>>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>>>>>> Thank you Stephen. Its crazy how simple that is :D.
>>>>>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>> https://twitter.com/apachetinkerpop/status/722432843360546816
>>>>>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>>>>>> So Mark, now your fork's TINKERPOP-1232/ branch and
>>>>>>>>>>>>>> 
>>> https://github.com/apache/incubator-tinkerpop/tree/TINKERPOP-1232
>>>>>>>>> exist
>>>>>>>>>>>>>> and we can keep them sync'd accordingly as we develop this
>>>>>>>> tutorial.
>>>>>>>>> When
>>>>>>>>>>>>>> we feel that the tutorial is ready for primetime, we will
>>> issue a
>>>>>>>> PR
>>>>>>>>> to
>>>>>>>>>>>>>> have it merged into tp31/ (and thus, up merged to master/).
>>>>>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>>>>>> Where do we go from here? I think this is a good
>>>>>>>>> opportunity
>>>>>>>>>>>>>> to work both on Gremlinpy and the tutorial. Can we make
>>> Gremlinpy
>>>>>>>> as
>>>>>>>>> true
>>>>>>>>>>>>>> to the spirit of "host language embedding" as possible? In
>>> doing
>>>>>>>> so,
>>>>>>>>> can we
>>>>>>>>>>>>>> explain how we did it so other language providers can learn
>>> the
>>>>>>>> best
>>>>>>>>>>>>>> practices?
>>>>>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>>>>>> In the tutorial we have 3 models we want to
>>> promote:
>>>>>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>>>>>> 1. Jython
>>>>>>>>>>>>>>>>>>>>>>>>> 2. Python JINI
>>>>>>>>>>>>>>>>>>>>>>>>> 3. Python String
>>>>>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>>>>>> (1) is easy to knock off. In fact, we should ask
>>>>>> Michael
>>>>>>>>>>>>>> Pollmeier for advice here given his work on Gremlin-Scala.
>>> (2) --
>>>>>>>> ??
>>>>>>>>> do you
>>>>>>>>>>>>>> know how do this? If so, it should be only fairly more
>>> difficult
>>>>>>>>> than (1).
>>>>>>>>>>>>>> Finally, (3) is the big win and where I think most of the work
>>>>>> both
>>>>>>>>> in the
>>>>>>>>>>>>>> tutorial and in Gremlinpy will happen.
>>>>>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>>>>>> How do you propose we proceed?
>>>>>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>>>>>> Thank you,
>>>>>>>>>>>>>>>>>>>>>>>>> Marko.
>>>>>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>>>>>> http://markorodriguez.com
>>>>>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>>>>>> On Apr 19, 2016, at 8:24 AM, Stephen Mallette <
>>>>>>>>>>>>>> spmalle...@gmail.com> wrote:
>>>>>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>>>>>>> ok - done:
>>>>>>>>>>>>>> 
>>> https://github.com/apache/incubator-tinkerpop/tree/TINKERPOP-1232
>>>>>>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>>>>>>> On Tue, Apr 19, 2016 at 9:41 AM, Marko Rodriguez <
>>>>>>>>>>>>>> okramma...@gmail.com> wrote:
>>>>>>>>>>>>>>>>>>>>>>>>>> Hello,
>>>>>>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>>>>>>> *** Mark, if you are not on dev@tinkerpop, I
>>> would
>>>>>>>>> recommend
>>>>>>>>>>>>>> joining that as I will drop gremlin-users@ from
>>> communication on
>>>>>>>>> this
>>>>>>>>>>>>>> ticket from here on out. ***
>>>>>>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>>>>>>> @Stephen: Mark forked the TinkerPop repository to
>>> his
>>>>>>>>> GitHub
>>>>>>>>>>>>>> account. I believe he gave you access as well as me.
>>>>>>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>>>>>>> Can you create a new stub tutorial for
>>> Mark+Dylan+me?
>>>>>>>>> (Moving
>>>>>>>>>>>>>> forward, I will learn how to do it from your one commit).
>>>>>>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>>>>>>> gremlin-language-variants/
>>>>>>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>>>>>>> After that Mark+Dylan+me will go to town on:
>>>>>>>>>>>>>>>>>>>>>>>>>> 
>>> https://issues.apache.org/jira/browse/TINKERPOP-1232
>>>>>>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>>>>>>> Thank you,
>>>>>>>>>>>>>>>>>>>>>>>>>> Marko.
>>>>>>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>>>>>>> http://markorodriguez.com
>>>>>>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>>>>>>> Begin forwarded message:
>>>>>>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>>>>>>>> From: Mark Henderson <nore...@github.com>
>>>>>>>>>>>>>>>>>>>>>>>>>>> Subject: emehrkay added you to
>>> incubator-tinkerpop
>>>>>>>>>>>>>>>>>>>>>>>>>>> Date: April 15, 2016 10:04:54 AM MDT
>>>>>>>>>>>>>>>>>>>>>>>>>>> To: "Marko A. Rodriguez" <okramma...@gmail.com>
>>>>>>>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>>>>>>>> You can now push to this repository.
>>>>>>>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>>>>>>>> ---
>>>>>>>>>>>>>>>>>>>>>>>>>>> View it on GitHub:
>>>>>>>>>>>>>>>>>>>>>>>>>>> https://github.com/emehrkay/incubator-tinkerpop
>>>>>>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>>>>>>> --
>>>>>>>>>>>>>>>>>>>>>>>>>> You received this message because you are
>>> subscribed
>>>>>> to
>>>>>>>>> the
>>>>>>>>>>>>>> Google Groups "Gremlin-users" group.
>>>>>>>>>>>>>>>>>>>>>>>>>> To unsubscribe from this group and stop receiving
>>>>>>>> emails
>>>>>>>>> from
>>>>>>>>>>>>>> it, send an email to
>>> gremlin-users+unsubscr...@googlegroups.com.
>>>>>>>>>>>>>>>>>>>>>>>>>> To view this discussion on the web visit
>>>>>>>>>>>>>> 
>>>>>>>>> 
>>>>>>>> 
>>>>>> 
>>> https://groups.google.com/d/msgid/gremlin-users/18A7D2FD-B9B1-4DC9-980B-66A6A8F9C7C8%40gmail.com
>>>>>>>>>>>>>> .
>>>>>>>>>>>>>>>>>>>>>>>>>> For more options, visit
>>>>>>>>> https://groups.google.com/d/optout.
>>>>>>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>>>>>>> --
>>>>>>>>>>>>>>>>>>>>>>>>>> You received this message because you are
>>> subscribed
>>>>>> to
>>>>>>>>> the
>>>>>>>>>>>>>> Google Groups "Gremlin-users" group.
>>>>>>>>>>>>>>>>>>>>>>>>>> To unsubscribe from this group and stop receiving
>>>>>>>> emails
>>>>>>>>> from
>>>>>>>>>>>>>> it, send an email to
>>> gremlin-users+unsubscr...@googlegroups.com.
>>>>>>>>>>>>>>>>>>>>>>>>>> To view this discussion on the web visit
>>>>>>>>>>>>>> 
>>>>>>>>> 
>>>>>>>> 
>>>>>> 
>>> https://groups.google.com/d/msgid/gremlin-users/CAA-H43990bN1xrtkL%2BWW4Z%3DKY-bhamBuunpzmYcqVxniyv3NOw%40mail.gmail.com
>>>>>>>>>>>>>> .
>>>>>>>>>>>>>>>>>>>>>>>>>> For more options, visit
>>>>>>>>> https://groups.google.com/d/optout.
>>>>>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>> 
>>>>>>>>>>>>>> 
>>>>>>>>>>>> 
>>>>>>>>>>> 
>>>>>>>>>> 
>>>>>>>>> 
>>>>>>>>> 
>>>>>>>> 
>>>>>> 
>>>>>> 
>>>> 
>>> 
>>> 
>> 

Reply via email to