[ 
https://issues.apache.org/jira/browse/TINKERPOP-1552?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16031155#comment-16031155
 ] 

Jorge Bay commented on TINKERPOP-1552:
--------------------------------------

I think most of the code base in the 3 projects are part of the GLV: The 
traversal and traversal strategy interfaces currently under 
{{Gremlin.Net.Process}}; The classes {{Vertex}}, {{Edge}}, {{Path}}, ... and 
the serialization implementation under {{Gremlin.Net.Structure}}; 
{{GraphTraversal}} and {{GraphTraversalSource}} implementations, along with the 
enums and predicates under {{Gremlin.CSharp.Process}}.
The only portion that is not reusable if someone ones to deliver a 
vendor-specific is the concrete implementation of the {{IRemoteConnection}} 
interface, {{DriverRemoteConnection}}.

>From the multi-language support within .NET, I think all the classes and enums 
>under {{Gremlin.CSharp}} are reusable across all languages. From the C# user 
>perspective, I find hard to understand the distinction between {{Gremlin.Net}} 
>and {{Gremlin.CSharp}} namespaces and 3 different assemblies.

I propose using a single C# root namespace, where {{Process}}, {{Structure}} 
and {{Driver}} are child namespaces. In the unlikely event of needing language 
specific extensions for another .NET language (GLV is functional so it should 
feel natural for F# and VisualBasic.NET can reuse the same members), we can 
nest the language identifier within the root namespace, like 
{{RootNamespace.Process.FSharp}}.
It can be just {{Gremlin}} or {{Gremlin.DotNet}} for example.

In the case of the nuget package, its mandatory that we include 
{{IRemoteConnection}} interface, along with the rest of the members inside 
process and structure in the GLV package. We could make a different nuget 
package for the driver implementation but that's optional. In the case of 
Python,the GLV and the reference driver implementation in the pypy package.

IMO it would be nice to have a single assembly per nuget package, but that's a 
personal preference for a project this size.

> C# Gremlin Language Variant
> ---------------------------
>
>                 Key: TINKERPOP-1552
>                 URL: https://issues.apache.org/jira/browse/TINKERPOP-1552
>             Project: TinkerPop
>          Issue Type: Improvement
>          Components: language-variant
>    Affects Versions: 3.2.3
>            Reporter: Jorge Bay
>            Assignee: stephen mallette
>
> It would be nice to have a C# GLV that runs under .NET Framework 4.5+ and 
> .NET Core.
> The maven build could use the Exec Maven Plugin to exec .NET Core's [dotnet 
> test|https://www.microsoft.com/net/core#macos] command.
> Some requirements, from the mailing list (edited):
> {quote}
> 1. The GLV should keep in line with class/method names of the java API
> where possible to ensure consistency of feel across languages.
> 2. There needs to be adequate tests (we're still discussing the approach to
> testing GLVs and i think that needs to be tackled sooner than later as more
> GLVs start to come in). Those tests should produce xunit style output
> unless there is some good reason not to.
> 3. There needs to be adequate documentation (e.g. Reference docs)
> 4. The build/deploy process needs to be bound to maven which might be one of 
> the trickier bits to deal with.
> {quote}



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

Reply via email to