blob: c17c728d8804822ddf4b20ce97a2bb219c87f08d [file] [log] [blame]
<!--
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The ASF licenses this file to You under the Apache License, Version 2.0
(the "License"); you may not use this file except in compliance with
the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<div class="container">
<div class="hero-unit">
<div class="row">
<div class="col-md-6">
<b><font size="6" face="american typewriter">Apache TinkerPop&trade;</font></b>
<p><img src="img/tinkerpop-splash.png" width="420" class="img-responsive" style="padding:10px;"/></p>
<p><font size="3">Apache TinkerPop&trade; is a graph computing framework for both graph databases (OLTP) and graph analytic systems (OLAP).</font></p>
</div>
<div class="col-md-6">
<br/>
<p>
</p>
<b><font size="4">TinkerPop</font> <font size="4">3.4.2</font></b> (<font size="2">Released: 28-May-2019</font>)
<p><b>Downloads</b></p>
<p>
<a href="https://www.apache.org/dyn/closer.lua/tinkerpop/3.4.2/apache-tinkerpop-gremlin-console-3.4.2-bin.zip" class="btn btn-primary">Gremlin Console <span class="glyphicon glyphicon-download-alt"></span></a>
<a href="https://www.apache.org/dyn/closer.lua/tinkerpop/3.4.2/apache-tinkerpop-gremlin-server-3.4.2-bin.zip" class="btn btn-primary">Gremlin Server <span class="glyphicon glyphicon-download-alt"></span></a>
<a href="https://www.apache.org/dyn/closer.lua/tinkerpop/3.4.2/apache-tinkerpop-3.4.2-src.zip" class="btn btn-primary">Source <span class="glyphicon glyphicon-download-alt"></span></a>
</p>
<div class="row">
<div class="col-md-6">
<p><b>Documentation</b></p>
<ul>
<li><a href="http://tinkerpop.apache.org/docs/current/">TinkerPop Documentation</a></li>
<ul>
<li><a href="http://tinkerpop.apache.org/docs/current/reference">Reference Documentation</a></li>
</ul>
<li><a href="http://tinkerpop.apache.org/docs/3.4.2/upgrade/#_tinkerpop_3_4_2">Upgrade Information</a></li>
<li>TinkerPop Javadoc - <a href="http://tinkerpop.apache.org/javadocs/current/core/">core</a> / <a href="http://tinkerpop.apache.org/javadocs/current/full/">full</a></li>
</ul>
</div>
<div class="col-md-6">
<br/>
<a href="http://kelvinlawrence.net/book/Gremlin-Graph-Guide.html">
<img src="img/practical-gremlin-titled.png" width="150" class="img-responsive" align="left"/>
</a>
</div>
</div>
<div class="row">
<div class="col-md-5">
<div class="hovereffect">
<img src="img/cityscape-button.png" style="width:200px;" class="img-responsive" /></a>
<div class="overlay"><a class="info" href="gremlin.html">Understand Gremlin</a></div>
</div>
</div>
<div class="col-md-5">
<div class="hovereffect">
<img src="img/meeting-room-button.png" style="width:200px;" class="img-responsive" /></a>
<div class="overlay"><a class="info" href="providers.html">Become TinkerPop-Enabled</a></div>
</div>
</div>
<div class="col-md-2"></div>
</div>
</div>
</div>
</div>
<div><br/></div>
<div id="gremlinCarousel" class="carousel slide" data-ride="carousel" data-interval="30000" border="none">
<!-- Indicators -->
<ol class="carousel-indicators carousel-indicators-numbers">
<li data-target="#gremlinCarousel" data-slide-to="0" class="active">1</li>
<li data-target="#gremlinCarousel" data-slide-to="1">2</li>
<li data-target="#gremlinCarousel" data-slide-to="2">3</li>
<li data-target="#gremlinCarousel" data-slide-to="3">4</li>
<li data-target="#gremlinCarousel" data-slide-to="4">5</li>
</ol>
<div class="carousel-inner" role="listbox">
<div class="item active">
<pre><code class="language-gremlin">
// What are the names of Gremlin's friends' friends?
g.V().has("name","gremlin").
out("knows").out("knows").values("name")
</code></pre>
</div>
<div class="item">
<pre><code class="language-gremlin">
// What are the names of projects that were created by two friends?
g.V().match(
as("a").out("knows").as("b"),
as("a").out("created").as("c"),
as("b").out("created").as("c"),
as("c").in("created").count().is(2)).
select("c").by("name")
</code></pre>
</div>
<div class="item">
<pre><code class="language-gremlin">
// What are the names of the managers in
// the management chain going from Gremlin to the CEO?
g.V().has("name","gremlin").
repeat(in("manages")).until(has("title","ceo")).
path().by("name")
</code></pre>
</div>
<div class="item">
<pre><code class="language-gremlin">
// What is the distribution of job titles amongst Gremlin's collaborators?
g.V().has("name","gremlin").as("a").
out("created").in("created").
where(neq("a")).
groupCount().by("title")
</code></pre>
</div>
<div class="item">
<pre><code class="language-gremlin">
// Get a ranking of the most relevant products for Gremlin given his purchase history.
g.V().has("name","gremlin").out("bought").aggregate("stash").
in("bought").out("bought").
where(not(within("stash"))).
groupCount().
order(local).by(values,desc)
</code></pre>
</div>
</div>
</div>
<!-- /.carousel -->
<div class="container">
<h3>The Benefits of Graph Computing</h3>
<p><img src="img/graph-globe.png" style="float:left;width:15%;padding:10px;"> A <strong>graph</strong> is a structure composed of <strong>vertices</strong> and <strong>edges</strong>.
Both vertices and edges can have an arbitrary number of key/value-pairs called <strong>properties</strong>.
Vertices denote discrete objects such as a person, a place, or an event. Edges denote relationships between vertices. For instance, a person may know
another person, have been involved in an event, and/or was recently at a particular place. Properties express non-relational information about the
vertices and edges. Example properties include a vertex having a name, an age and an edge having a timestamp and/or a weight. Together, the aforementioned
graph is known as a <strong>property graph</strong> and it is the foundational data structure of Apache TinkerPop.
</p>
<br/>
<p><img src="img/graph-vs-table.png" style="float:right;width:22%;padding:10px;">If a user's domain is composed of a heterogenous set of objects (vertices) that can be related to one another in a multitude of ways (edges),
then a graph may be the right representation to use. In a graph, each vertex is seen as an atomic entity (not simply a "row in a table") that
can be linked to any other vertex or have properties added or removed at will. This empowers the data modeler to think in terms of actors within
a world of complex relations as opposed to, in relational databases, statically-typed tables joined in aggregate. Once a domain is modeled, that
model must then be exploited in order to yield novel, differentiating information. Graph computing has a rich history that includes not only query
languages devoid of table-join semantics, but also algorithms that support complex reasoning: path analysis, vertex clustering and ranking, subgraph
identification, and more. The world of applied graph computing offers a flexible, intuitive data structure along with a host of algorithms able to
effectively leverage that structure.
</p>
<br/>
<p><a href="#"><img src="img/apache-tinkerpop-logo.png" style="float:left;width:22%;padding:10px;"/></a>Apache TinkerPop&trade; is an open source, vendor-agnostic, graph computing framework distributed under the commercial friendly <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache2 license</a>.
When a data system is <a href="providers.html">TinkerPop-enabled</a>, its users are able to model their domain as a graph and analyze that graph using the <a href="gremlin.html">Gremlin graph traversal language</a>.
Furthermore, all TinkerPop-enabled systems integrate with one another allowing them to easily expand their offerings as well as allowing users to choose the appropriate graph
technology for their application. Sometimes an application is best served by an in-memory, transactional graph database. Sometimes a multi-machine distributed graph database will do the job.
Or perhaps the application requires both a distributed graph database for real-time queries and, in parallel, a Big(Graph)Data processor for batch analytics. Whatever the application's
requirements, there exists a TinkerPop-enabled graph system out there to meet its needs.
</p>
</div>
<h3>Contributing to Apache TinkerPop</h3>
<div class="row">
<div class="col-xs-12">
<div class="row">
<div class="col-xs-8">
TinkerPop is an open source project that <a href="http://tinkerpop.apache.org/docs/current/dev/developer#_contributing">welcomes contributions</a>. There are many ways to get involved:
<p/>
<ol>
<li>
Join the <a href="http://groups.google.com/group/gremlin-users">Gremlin-Users</a> public mailing list.
<ul>
<li>Help users by answering questions and demonstrating your expertise in TinkerPop and graphs.</li>
</ul>
<li>
Join the <a href="https://lists.apache.org/list.html?dev@tinkerpop.apache.org">TinkerPop Developer</a> public mailing list.
<ul>
<li>Contribute ideas on how to make the TinkerPop code- and documentation-base better.</li>
</ul>
<li>Submit bug and feature issues to TinkerPop <a href="https://issues.apache.org/jira/browse/TINKERPOP/">JIRA</a>.</li>
<ul>
<li>Provide easily reproducible bug reports and well articulated feature requests.</li>
</ul>
<li>
Clone the TinkerPop <a href="https://github.com/apache/tinkerpop">Git repository</a> and provide a <a href="https://help.github.com/articles/using-pull-requests/">pull-request</a>.
<ul>
<li>Focus on a particular area of the codebase and take responsibility for your contribution.</li>
</ul>
<li>Make significant, long lasting contributions over time.</li>
<ul>
<li>Become a TinkerPop Committer and help determine the evolution of The TinkerPop.</li>
</ul>
</ol>
<p>To build TinkerPop from source, please review the <a href="http://tinkerpop.apache.org/docs/current/dev/developer/#building-testing">developer documentation</a>.
</div>
<div class="col-xs-4">
<a href="http://tinkerpop.apache.org/docs/current/dev/developer/"><img src="img/gremlin-apache.png" width="250" class="img-responsive" /></a>
</div>
</div>
<h3>Community Contributions</h3>
TinkerPop is at the center of a larger development ecosystem that extends on its core interfaces, integration points, and ideas. The graph systems and libraries below represent both
TinkerPop-maintained reference implementations as well as third-party managed projects. The TinkerPop community is always interested in hearing about projects like these and aiding
in their support. Please read our <a href="policy.html">provider listing policy</a> and feel free to promote such projects on the user and developer mailing lists. Information on
how to build implementations of the various interfaces that TinkerPop exposes can be found in the <a href="http://tinkerpop.apache.org/docs/current/dev/provider/">Provider Documentation</a>.
<p/>
<a name="graph-systems"></a>
<h4 id="graph-systems">Graph Systems</h4>
<small>[<a href="providers.html#data-system-providers">learn more</a>]</small>
<ul>
<li><a href="https://cn.aliyun.com/product/gdb">Alibaba Graph Database</a> - A real-time, reliable, cloud-native graph database service that supports property graph model.</li>
<li><a href="https://aws.amazon.com/neptune/">Amazon Neptune</a> - Fully-managed graph database service.</li>
<li><a href="https://github.com/ArangoDB-Community/arangodb-tinkerpop-provider">ArangoDB</a> - OLTP Provider for ArangoDB.</li>
<li><a href="https://github.com/lambdazen/bitsy/wiki">Bitsy</a> - A small, fast, embeddable, durable in-memory graph database.</li>
<li><a href="https://github.com/blazegraph/tinkerpop3">Blazegraph</a> - RDF graph database with OLTP support.</li>
<li><a href="https://docs.microsoft.com/en-us/azure/cosmos-db/graph-introduction">CosmosDB</a> - Microsoft's distributed OLTP graph database.</li>
<li><a href="https://github.com/MartinHaeusler/chronos/tree/master/org.chronos.chronograph">ChronoGraph</a> - A versioned graph database.</li>
<li><a href="http://www.datastax.com/products/datastax-enterprise-graph">DSEGraph</a> - DataStax graph database with OLTP and OLAP support.</li>
<li><a href="https://grakn.ai/">GRAKN.AI</a> - Distributed OLTP/OLAP knowledge graph system.</li>
<li><a href="http://tinkerpop.apache.org/docs/current/reference/#sparkgraphcomputer">Hadoop (Spark)</a> - OLAP graph processor using Spark.</li>
<li><a href="https://github.com/rayokota/hgraphdb">HGraphDB</a> - OLTP graph database running on Apache HBase.</li>
<li><a href="https://www.huaweicloud.com/en-us/product/ges.html">Huawei Graph Engine Service</a> - Fully-managed, distributed, at-scale graph query and analysis service that provides a visualized interactive analytics platform.</li>
<li><a href="https://console.ng.bluemix.net/catalog/services/ibm-graph/">IBM Graph</a> - OLTP graph database as a service.</li>
<li><a href="http://janusgraph.org/">JanusGraph</a> - Distributed OLTP and OLAP graph database with BerkeleyDB, Apache Cassandra and Apache HBase support.</li>
<li><a href="https://github.com/awslabs/dynamodb-janusgraph-storage-backend//">JanusGraph (Amazon)</a> - The Amazon DynamoDB Storage Backend for JanusGraph.</li>
<li><a href="http://tinkerpop.apache.org/docs/current/reference/#neo4j-gremlin">Neo4j</a> - OLTP graph database (embedded and high availability).</li>
<li><a href="https://github.com/SteelBridgeLabs/neo4j-gremlin-bolt">neo4j-gremlin-bolt</a> - OLTP graph database (using Bolt Protocol).</li>
<li><a href="https://github.com/orientechnologies/orientdb-gremlin">OrientDB</a> - OLTP graph database</li>
<li><a href="http://s2graph.apache.org/">Apache S2Graph</a> - OLTP graph database running on Apache HBase.</li>
<li><a href="https://github.com/pietermartin/sqlg">Sqlg</a> - OLTP implementation on SQL databases.</li>
<li><a href="http://stardog.com/">Stardog</a> - RDF graph database with OLTP and OLAP support.</li>
<li><a href="http://tinkerpop.apache.org/docs/current/reference/#tinkergraph-gremlin">TinkerGraph</a> - In-memory OLTP and OLAP reference implementation.</li>
<li><a href="http://thinkaurelius.github.io/titan/">Titan</a> - Distributed OLTP and OLAP graph database with BerkeleyDB, Apache Cassandra and Apache HBase support.</li>
<li><a href="https://github.com/awslabs/dynamodb-titan-storage-backend">Titan (Amazon)</a> - The Amazon DynamoDB storage backend for Titan.</li>
<li><a href="https://github.com/classmethod/tupl-titan-storage-backend">Titan (Tupl)</a> - The Tupl storage backend for Titan.</li>
<li><a href="https://github.com/rmagen/unipop">Unipop</a> - OLTP Elasticsearch and JDBC backed graph.</li>
</ul>
<a name="language-variants-compilers"></a>
<h4 id="language-variants-compilers">Query Languages</h4>
<small>[<a href="providers.html#query-language-providers">learn more</a>]</small>
<ul>
<li><a href="https://github.com/opencypher/cypher-for-gremlin">cypher-for-gremlin</a> - A Cypher to Gremlin traversal transpiler.</li>
<li><a href="http://syncleus.com/Ferma/">Ferma</a> (java/dsl) - An ORM / OGM for Apache TinkerPop.</li>
<li><a href="https://github.com/davebshow/goblin">Goblin</a> (python/dsl) - Goblin OGM for the TinkerPop 3 Gremlin Server.</li>
<li><a href="http://tinkerpop.apache.org/docs/current/reference/#gremlin-DotNet">Gremlin.Net</a> (.NET - C#/variant) - Gremlin hosted in C# for use with any .NET-based VM.</li>
<li><a href="http://tinkerpop.apache.org/docs/current/reference/#gremlin-javascript">gremlin-javascript</a> (js) - Gremlin hosted in JavaScript for use with Node.js.</li>
<li><a href="https://github.com/gremlin-orm/gremlin-orm">gremlin-orm</a> (javascript) Gremlin ORM for Node.js.</li>
<li><a href="http://tinkerpop.apache.org/docs/current/reference/#gremlin-python">gremlin-python</a> (python/variant) - Gremlin hosted in Python for use with any Python-based VM.</li>
<li><a href="https://github.com/emehrkay/gremlinpy">gremlin-py</a> (python/variant) - Write pure Python Gremlin that can be sent to Gremlin Server.</li>
<li><a href="https://github.com/mpollmeier/gremlin-scala">gremlin-scala</a> (scala/variant) - A Scala-based Gremlin language variant for TinkerPop3.</li>
<li><a href="https://github.com/karthicks/gremlin-ogm">gremlin-objects</a> (java/dsl) - An Object Graph Mapping Library For Gremlin.</li>
<li><a href="https://github.com/jbmusso/gremlin-template-string">gremlin-template-string</a> (js/variant) - A Gremlin language builder.</li>
<li><a href="https://github.com/davebshow/ipython-gremlin">ipython-gremlin</a> (python/variant) - Gremlin in IPython and Jupyter.</li>
<li><a href="https://github.com/pm-dev/kotlin-gremlin-ogm">kotlin-gremlin-ogm</a> (kotlin/dsl) - An Object Graph Mapping Library for Kotlin and Gremlin.</li>
<li><a href="http://ogre.clojurewerkz.org/">ogre</a> (clojure/variant) - A Clojure language wrapper for TinkerPop3.</li>
<li><a href="http://bayofmany.github.io/">Peapod</a> (java/dsl) - An object-graph-wrapper.</li>
<li><a href="http://tinkerpop.apache.org/docs/current/reference/#sparql-gremlin">sparql-gremlin</a> (sparql/distinct) - A SPARQL to Gremlin traversal compiler.</li>
<li><a href="https://github.com/Microsoft/spring-data-gremlin">spring-data-gremlin</a> (java/dsl) - Spring Data support for TinkerPop-enabled graph systems.</li>
<li><a href="https://github.com/twilmes/sql-gremlin">sql-gremlin</a> (sql/distinct) - An SQL to Gremlin traversal compiler.</li>
</ul>
<a name="language-drivers"></a>
<h4 id="language-drivers">Language Drivers</h4>
<ul>
<li><a href="https://github.com/davebshow/gremlinclient">gremlinclient</a> (python) - An asynchronous Python 2/3 client for Gremlin Server that allows for flexible coroutine syntax - Trollius, Tornado, Asyncio.</li>
<li><a href="https://github.com/marcelocf/gremlin_client">gremlin_client</a> (ruby) - A Gremlin Server driver for Ruby.</li>
<li><a href="http://tinkerpop.apache.org/docs/current/reference/#connecting-via-java">gremlin-driver</a> (java) - A Gremlin Server driver for Java.</li>
<li><a href="https://github.com/qasaur/gremgo">gremgo</a> (go) - A Gremlin Server driver for Go.</li>
<li><a href="https://github.com/Revmaker/gremlex">gremlex</a> (elixir) - A Gremlin Server driver for Elixir.</li>
<li><a href="http://tinkerpop.apache.org/docs/current/reference/#gremlin-DotNet">Gremlin.Net</a> (.NET - C#) - Gremlin Server driver for .NET.</li>
<li><a href="https://github.com/PommeVerte/gremlin-php">gremlin-php</a> (php) - A Gremlin Server driver for PHP.</li>
<li><a href="http://tinkerpop.apache.org/docs/current/reference/#gremlin-python">gremlin-python</a> (python) - Gremlin Server driver for Python.</li>
<li><a href="http://gremlinrestclient.readthedocs.org/en/latest/">gremlinrestclient</a> (python) - Python 2/3 library that uses HTTP to communicate with the Gremlin Server over REST.</li>
<li><a href="https://github.com/ExRam/ExRam.Gremlinq">Gremlinq</a> (.NET) - A strongly typed server driver.</li>
<li><a href="https://github.com/windj007/python-gremlin-rest">python-gremlin-rest</a> (python) - A REST-based client for Gremlin Server.</li>
<li><a href="https://github.com/coreyauger/reactive-gremlin">reactive-gremlin</a> (scala) - An Akka HTTP Websocket Connector.</li>
<li><a href="https://github.com/viagraphs/scalajs-gremlin-client">scalajs-gremlin-client</a> (scala) - A Gremlin-Server client with ad-hoc extensible, reactive, typeclass based API.</li>
<li><a href="https://github.com/RedSeal-co/ts-tinkerpop">ts-tinkerpop</a> (typescript) - A helper library for Typescript applications via node-java.</li>
</ul>
<a name="poweredby"></a>
<h4 id="poweredby">Powered By</h4>
<ul>
<li><a href="https://www.exakat.io/">exakat.io</a> - Static analysis engine for PHP, powered by Gremlin.</li>
<li><a href="https://bricaud.github.io/graphexp/graphexp.html">Graphexp</a> - Interactive visualization of the Gremlin graph database with D3.js.</li>
<li><a href="https://github.com/bechbd/gremlin-ide">gremlin-ide</a> - An IDE for Apache TinkerPop-enabled databases using React and Electron.</li>
<li><a href="http://cambridge-intelligence.com/keylines/">KeyLines</a> - A JavaScript SDK for building powerful, custom and scalable graph visualization applications.</li>
<li><a href="https://github.com/meltwater/jugri">JUGRI</a> - A Jupyter Gremlin interface.</li>
<li><a href="http://linkurio.us/">Linkurious</a> - A browser-based graph visualization software to search, explore and visualize connected data.</li>
<li><a href="http://www.pitneybowes.com/us/customer-information-management/data-integration-management/spectrum-data-hub-module.html">Pitney Bowes Spectrum Data Hub Module</a> - Uses Gremlin OLTP to query Neo4j-powered master data management based graph database.</li>
<li><a href="https://www.stackstate.com/">StackState</a> - Monitoring and AIOps allowing users to utilize Gremlin for analytical functions.</li>
<li><a href="http://tomsawyer.com/products/perspectives/">Tom Sawyer Perspectives</a> - Advanced graphics-based software for building enterprise-class data relationship visualization and analysis applications.</li>
</ul>
<a name="committers"></a>
<a name="contributors"></a>
<h3 id="contributors">Apache TinkerPop Contributors</h3>
<img src="img/tinkerpop-logo-small.png" style="float:right" />TinkerPop seeks contributors dedicated to the art of graph computing. TinkerPop contributors bring solid theoretical,
development, testing, documentation, etc. skills to the group. These individuals contribute to TinkerPop beyond the ever-changing requirements of their day-to-day jobs and maintain
responsibility for their contributions through time.
<p/>
<!-- to be uncommented as necessary, just establishing the template -----------
<h4 id="contributors-active">Active</h4>
-->
<ul>
<li><a href="http://markorodriguez.com">Marko A. Rodriguez</a> (2009 - PMC): Gremlin language, Gremlin machine, documentation.</li>
<li><a href="http://ketrinadrawsalot.tumblr.com">Ketrina Yim</a> (2009 - Committer): Illustrator, creator of Gremlin and his merry band of robots.</li>
<li><a href="http://stephen.genoprime.com/">Stephen Mallette</a> (2011 - PMC Chair): Gremlin Console/Server/Driver, Language Variants and general core development.</li>
<li><a href="http://jamesthornton.com/">James Thornton</a> (2013 - PMC): Promotions, evangelism.</li>
<li><a href="http://gremlin.guru">Daniel Kuppitz</a> (2014 - PMC): Gremlin language design, benchmarking, testing, documentation, mailing list support.</li>
<li><a href="https://www.linkedin.com/in/hzbarcea">Hadrian Zbarcea</a> (2015 - PMC): Project mentor, provider liason.</li>
<li><a href="https://github.com/Humbedooh">Daniel Gruno</a> (2015 - PMC): Project mentor, infrastructure liason.</li>
<li><a href="https://github.com/mhfrantz">Matt Frantz</a> (2015 - Committer): Gremlin language design, ts-tinkerpop.</li>
<li><a href="https://github.com/pluradj">Jason Plurad</a> (2015 - PMC): Gremlin Console/Server, mailing list support.</li>
<li><a href="https://www.linkedin.com/in/dylan-millikin-32567934">Dylan Millikin</a> (2015 - PMC): Gremlin Server/Driver, gremlin-php, GremlinBin, mailing list support.</li>
<li><a href="https://github.com/twilmes">Ted Wilmes</a> (2015 - PMC): Promotions, mailing list support, benchmarking, sql-gremlin.</li>
<li><a href="https://github.com/pietermartin">Pieter Martin</a> (2016 - Committer): Gremlin language, Sqlg.</li>
<li><a href="https://github.com/jbmusso">Jean-Baptiste Musso</a> (2016 - Committer): Gremlin Server testing, Gremlin Driver (Node.js/JavaScript), mailing list support.</li>
<li><a href="http://www.michaelpollmeier.com/">Michael Pollmeier</a> (2016 - Committer): Gremlin language, Gremlin-Scala.</li>
<li><a href="https://github.com/davebshow">David Brown</a> (2016 - Committer): Python libraries, Gremlin Server testing.</li>
<li><a href="https://github.com/robertdale">Robert Dale</a> (2016 - PMC): Gremlin Console/Server, documentation, mailing list support.</li>
<li><a href="https://github.com/jorgebay">Jorge Bay</a> (2017 - PMC): GraphBinary serialization, JavaScript and .NET libraries, mailing list support.</li>
<li><a href="https://github.com/FlorianHockmann/">Florian Hockmann</a> (2017 - PMC): .NET libraries, mailing list support.</li>
<li><a href="http://www.kelvinlawrence.net/">Kelvin Lawrence</a> (2017 - Committer): Documentation and mailing list support.</li>
<li><a href="http://harshthakkar.in/">Harsh Thakkar</a> (2018 - Committer): Gremlin-SPARQL module.</li>
</ul>
<!-- to be uncommented as necessary, just establishing the template -----------
<h4 id="contributors-inactive">Inactive</h4>
<ul>
<li><a href="http://someone.com/">John Doe</a> (2015 - 2016): Committer/PMC, Module X, Module Y, mailing list support.</li>
</ul>
-->
</div>
</div>
</div>