AW: [DISCUSS] Draft ASF Board Report - July 2023

2023-07-07 Thread Florian Hockmann
I already submitted the report as I will be out of office the next two weeks
and therefore not able to submit it then. I had to add another small section
about the "Project Status" which has been added as a mandatory section since
our last report. Here is the final report:

--
## Description:
Apache TinkerPop is a graph computing framework for both graph databases
(OLTP) and graph analytic systems (OLAP).

## Issues:
There are no issues requiring board attention.

## Project Status: Ongoing
Activity is relatively high, considering that we are actively working on
releases, have daily commits and discussions on the dev list and Discord, as
well as regular live events on Twitch.

## Membership Data:
Community changes, past quarter:
- No new PMC members. Last addition was Yang Xia on 2023-03-15.
- Cole Greer was added as committer on 2023-05-30

## Project Activity:
TinkerPop released versions 3.5.6, 3.6.3, and 3.6.4. in the last quarter.
These
releases were mostly maintenance releases. One noteworthy improvement in
3.5.6
and 3.6.3 is a new multi-architecture Docker image for Gremlin Server which
supports ARM64 in addition to AMD64.
3.6.4 was a patch release that fixed a critical bug in the Java driver and a
memory leak in the .NET driver.

We are closing in on releasing 3.7.0 shortly, a release that includes work
from
over a year. Major improvements in this release are support for JDK 17 and
Groovy 4. This release will also include usability improvements in areas
that
users often request like support for string manipulations directly in
Gremlin
and returning vertices and edges with their properties by default instead of
only as reference elements which often led to confusion, especially for new
users.
Together with 3.7.0, we plan to also publish maintenance releases 3.5.6 and
3.6.4.

In the wider TinkerPop ecosystem, we learned that Aerospike released the
first
version of their graph database which supports TinkerPop
New graph database.[1]

### Releases:
3.6.4 was released on 2023-05-12.
3.5.6 was released on 2023-05-01.
3.6.3 was released on 2023-05-01.

## Community Health:
We again had some live events on Twitch[2] where the recording are available
on
our YouTube channel[3]:

* TinkerPop Wide: ArcadeDB - a Multi-Model Database with Gremlin -
Presenter:
  Luca Garulli - founder of ArcadeDB

* Contributorcast: Apache TinkerPop 3.5.6/3.6.3 Post-Release Review -
  Presenter: Yang Xia, Valentyn Kahamlyk, Cole Greer, and Ken Hu

* TinkerPop Wide: Introducing Graph Notebook - Presenter: Kelving Lawrence
and
  Taylor Riggan from AWS, working on Amazon Neptune

## Links

[1]:
https://aerospike.com/news/press-release/aerospike-delivers-real-time-scalab
le-graph-database/
[2]: https://www.twitch.tv/apachetinkerpop
[3]: https://www.youtube.com/@apachetinkerpop


-Ursprüngliche Nachricht-
Von: Florian Hockmann  
Gesendet: Mittwoch, 5. Juli 2023 14:00
An: dev@tinkerpop.apache.org
Betreff: [DISCUSS] Draft ASF Board Report - July 2023

Here is the attached draft of our board report for this quarter - please let
me know if there is anything to add or edit.

 

--

 

## Description:

Apache TinkerPop is a graph computing framework for both graph databases

(OLTP) and graph analytic systems (OLAP).

 

## Issues:

There are no issues requiring board attention.

 

## Membership Data:

Community changes, past quarter:

- No new PMC members. Last addition was Yang Xia on 2023-03-15.

- Cole Greer was added as committer on 2023-05-30

 

## Project Activity:

TinkerPop released versions 3.5.6, 3.6.3, and 3.6.4. in the last quarter.
These

releases were mostly maintenance releases. One noteworthy improvement in
3.5.6

and 3.6.3 is a new multi-architecture Docker image for Gremlin Server which

supports ARM64 in addition to AMD64.

3.6.4 was a patch release that fixed a critical bug in the Java driver and a

memory leak in the .NET driver.

 

We are closing in on releasing 3.7.0 shortly, a release that includes work
from

over a year. Major improvements in this release are support for JDK 17 and

Groovy 4. This release will also include usability improvements in areas
that

users often request like support for string manipulations directly in
Gremlin

and returning vertices and edges with their properties by default instead of

only as reference elements which often led to confusion, especially for new

users.

Together with 3.7.0, we plan to also publish maintenance releases 3.5.6 and

3.6.4.

 

In the wider TinkerPop ecosystem, we learned that Aerospike released the
first

version of their graph database which supports TinkerPop

New graph database.[1]

 

### Releases:

3.6.4 was released on 2023-05-12.

3.5.6 was released on 2023-05-01.

3.6.3 was released on 2023-05-01.

 

## Community Health:

We again had some live events on Twitch[2] where the recording are available
o

Re: [DISCUSS] - Proposal for Removing the Need for Closure/Lambda with String/List/Date functions

2023-07-07 Thread Yang Xia
Hi all,

As per last email, I've implemented the string concat() function without
"scope" and updated the documentation accordingly. Please feel free to
review the PR here https://github.com/apache/tinkerpop/pull/2099. Thanks!

Cheers,

Yang

On Tue, Jun 27, 2023 at 5:43 PM Yang Xia  wrote:

> Hi all,
>
> As I'm starting to implement the string concat() function and looking
> at the step logic, I feel that the use of "scope" as outlined in the
> proposal (
> https://github.com/apache/tinkerpop/blob/master/docs/src/dev/future/proposal-3-remove-closures.asciidoc#concat)
> does not quite fit with the existing definition of scope in TinkerPop.
>
> As concat is a scalar map step, there is very little differentiation
> between local and global scopes (unlike number operations with sum, mean,
> etc). The only real difference is that the local concat will also accept a
> list of strings from incoming traversers, which I don't see as particularly
> useful. I believe the best way forward is to remove scopes from concat
> entirely and only have a single ScalarMapStep implementation of concat, for
> simplicity both in implementation and usage.
>
> Examples of how this single step would behave:
> g.inject(['this', 'is', 'a', 'test']).concat()
> ==>illegal argument
>
> g.inject('this', 'is', 'a', 'test').concat()
> ==>this
> ==>is
> ==>a
> ==>test
>
> g.inject('this', 'is', 'a', 'test').concat(" a", "b")
> ==>this ab
> ==>is ab
> ==>a ab
> ==>test ab
>
> We would also have the flexibility of adding the "scope" option if use
> cases or user requests surface in the future, as opposed to trying to
> deprecate something that turns out to be not useful.
>
> Also to note that, by extension, the concept of "scope" may not apply to
> string manipulation functions in general, but this may remain to be
> discussed as we implement the rest of the functions.
>
> Any thoughts or suggestions?
>
> Cheers,
>
> Yang
>
> On Thu, Mar 2, 2023 at 4:10 PM David Bechberger 
> wrote:
>
>> Thanks to everyone who provided feedback so far.  Are there any other
>> comments?  If not, then I'd like to get this merged in this week, so we
>> can
>> get started with implementation.
>>
>> Dave
>>
>> On Mon, Feb 27, 2023 at 8:31 PM Dave Bechberger 
>> wrote:
>>
>> > Thanks to everyone who gave feedback so far. Any other comments on this
>> > proposal?
>> >
>> > I’d like to get this merged in this week so we can get started with
>> > implementation.
>> >
>> > Dave Bechberger
>> >
>> >
>> > On Feb 17, 2023, at 7:18 AM, David Bechberger 
>> wrote:
>> >
>> > 
>> > I was two fast on my reply before as I did have a question for you
>> > Valentyn on this statement:
>> >
>> >
>> > *I would propose to consider adding `startWith`, `endWith` andmaybe
>> > `contains` string functions.*
>> >
>> > How would you see these steps being used differently than the current
>> > predicates?
>> >
>> > i.e. P.startingWith()/endingWith()/containing()
>> >
>> > Dave
>> >
>> > On Fri, Feb 17, 2023 at 7:12 AM David Bechberger 
>> > wrote:
>> >
>> >> Thank you for the fixes Valentyn, I've incorporated that PR.
>> >>
>> >> The list I proposed here was a minimum number of functions, so we can
>> >> definitely see what it would take to include something like a string
>> >> formatting function.
>> >>
>> >> Dave
>> >>
>> >> On Thu, Feb 16, 2023 at 8:36 AM Valentyn Kahamlyk
>> >>  wrote:
>> >>
>> >>> Hi,
>> >>>
>> >>> Dave, thank you for the detailed proposal!
>> >>>
>> >>> I made small PR with naming fixes:
>> >>> https://github.com/apache/tinkerpop/pull/1973, please take a look.
>> >>>
>> >>> Also I would propose to consider adding `startWith`, `endWith` and
>> >>> maybe `contains` string functions.
>> >>>
>> >>> Another interesting feature to keep in mind is string formatting.
>> >>> for example
>> >>> `g.V(1).values('first_name').concat('
>> ').concat(V(1).values('last_name')`
>> >>> can be simplified as
>> >>> `g.V(1).asString('%s %s', values('first_name'), values('last_name'))`
>> >>>
>> >>> Regards, Valentyn
>> >>>
>> >>>
>> >>> On Tue, Feb 14, 2023 at 8:47 AM David Bechberger > >
>> >>> wrote:
>> >>>
>> >>> > My apologies, I just saw that I didn't include a link in that email.
>> >>> The
>> >>> > proposal is here:
>> >>> >
>> >>> >
>> >>> >
>> >>>
>> https://github.com/apache/tinkerpop/blob/proposal_3/docs/src/dev/future/proposal-3-remove-closures.asciidoc
>> >>> >
>> >>> > Dave
>> >>> >
>> >>> > On Tue, Feb 14, 2023 at 7:09 AM David Bechberger <
>> d...@bechberger.com>
>> >>> > wrote:
>> >>> >
>> >>> > > Hi All,
>> >>> > >
>> >>> > > There are a number of useful operations that Gremlin users often
>> >>> wish to
>> >>> > > perform that are not provided today in the form of traversal
>> steps or
>> >>> > > predicates (P/TextP). For historical reasons these functions were
>> >>> omitted
>> >>> > > and users were able to accomplish these tasks by specifying
>> anonymous
>> >>> > code
>> >>> > > blocks or “closures” to perform these tasks. For example, below
>> is an
>> >>> > > exam

Re: [DISCUSS] mergev() and Cardinality

2023-07-07 Thread Stephen Mallette
About done with this change for 3.7.0:

https://github.com/apache/tinkerpop/pull/2127

I think we should consider deprecating:

property(Cardinality, String, Object, Object...)

in favor of the direct use of Cardinality.list(Object) as part of setting
the value. so, like:

property(list, 'color', 'red')

would become:

property('color', list(red))

in that way we would have consistency between the property() and mergeV().

Also, I'd also like to consider moving VertexProperty.Cardinality in java
to it's own file so that it can just be referenced as Cardinality.  If
there's no concerns brought up to either of these items here, I'll create
the necessary JIRAs for future versions.

On Mon, Jun 26, 2023 at 10:58 AM Stephen Mallette 
wrote:

> I pushed a branch here for this change:
>
> https://github.com/apache/tinkerpop/tree/TINKERPOP-2957
>
> it crossed over into property(Map) a bit so i tried to make that
> consistent too. i'd really like if the variants could have a syntax more
> like java, but java seems to be the only one that allows methods on enums
> to work in the fashion of the grammar syntax. anyway, if there are no other
> ideas on how to do that, i'll document the various differences for the
> variants and issue the PR.
>
>
>
> On Fri, Jun 16, 2023 at 2:00 PM Stephen Mallette 
> wrote:
>
>> Kelvin opened this one a while back:
>>
>> https://issues.apache.org/jira/browse/TINKERPOP-2957
>>
>> I'd like to suggest this syntax to resolve the issue of Cardinality
>> specification with mergeV():
>>
>> // current approach to set cardinality
>> g.mergeV([firstname:"john",lastname:"handcock"]).
>>option(Merge.onMatch,sideEffect(property(single,"firstname","james"),
>>
>>  property(single,"lastname","madison")).constant([:]))
>>
>> // current syntax will just use default cardinality for the underlying
>> graph
>> g.mergeV(["firstname":"firstname"]).
>>option(Merge.onMatch, [firstname:"james",lastname:"madison"])
>>
>> // revised syntax provide cardinality override per property where
>> firstname will be explicitly
>> // single but lastname will be the default for the underlying graph. the
>> `Cardinality.single()`
>> // a static method on Cardinality produces a CardinalityValue object
>> which will have
>> // special meaning to the MergeVStep
>> g.mergeV([firstname:"john",lastname:"handcock"]).
>>option(Merge.onMatch, [firstname:single("james"),lastname:"madison"])
>>
>> // revised syntax to provide cardinality for all properties onMatch where
>> both firstname
>> // and lastname will be set explicitly to single
>> g.mergeV(["firstname":"firstname"]).
>>option(Merge.onMatch, [firstname:"james",lastname:"madison"], single)
>>
>>
>> // the above translates to the following so the user won't have to add
>> single to each property
>> g.mergeV([firstname:"john",lastname:"handcock"]).
>>option(Merge.onMatch,
>> [firstname:single("james"),lastname:single("madison")])
>>
>>
>>


[jira] [Commented] (TINKERPOP-2957) mergeV with sideEffect not correctly updating properties

2023-07-07 Thread ASF GitHub Bot (Jira)


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

ASF GitHub Bot commented on TINKERPOP-2957:
---

spmallette opened a new pull request, #2127:
URL: https://github.com/apache/tinkerpop/pull/2127

   https://issues.apache.org/jira/browse/TINKERPOP-2957
   
   Provides a nicer way to allow users to control cardinality of property 
values when using mergeV() and property(Map). A bit tough to get this in 
without changes to the serializers but by treating the CardinalityValue as a 
special form of Bytecode it allowed this change to keep the serializers sacred.
   
   VOTE +1




> mergeV with sideEffect not correctly updating properties
> 
>
> Key: TINKERPOP-2957
> URL: https://issues.apache.org/jira/browse/TINKERPOP-2957
> Project: TinkerPop
>  Issue Type: Bug
>  Components: process
>Affects Versions: 3.6.4
>Reporter: Kelvin Lawrence
>Assignee: Stephen Mallette
>Priority: Blocker
>
> A Gremlin user let me know about the following issue. If the query below is 
> run twice, the name parameter on the 4567 vertex does not get updated. The 
> name on the 1234 vertex does get updated. The query is written this way as 
> not all databases support single cardinality as the default. The issue has 
> been reproduced using both TinkerGraph and Amazon Neptune.
> {code:java}
> g.mergeV([(T.id): 'test-test-1234']).
>   option(onCreate, [(T.label): 'someLabel', 'name': 'name1']).
>   option(onMatch, sideEffect(property(single,"name","name2")).constant([:])).
>  mergeV([(T.id): 'test-test-4567']).
>   option(onCreate, [(T.label): 'someLabel', 'name': 'name1']).
>   option(onMatch, 
> sideEffect(property(single,"name","name2")).constant([:])){code}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)


[jira] [Commented] (TINKERPOP-2920) SubgraphStrategy failure when property key not present on vertex in by()

2023-07-07 Thread ASF GitHub Bot (Jira)


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

ASF GitHub Bot commented on TINKERPOP-2920:
---

spmallette merged PR #2100:
URL: https://github.com/apache/tinkerpop/pull/2100




> SubgraphStrategy failure when property key not present on vertex in by()
> 
>
> Key: TINKERPOP-2920
> URL: https://issues.apache.org/jira/browse/TINKERPOP-2920
> Project: TinkerPop
>  Issue Type: Bug
>  Components: process
>Affects Versions: 3.5.5
>Reporter: Stephen Mallette
>Priority: Minor
>
> The following triggers the failure assuming "example" isn't present on a 
> vertex:
> {code}
> g.withStrategies(new SubgraphStrategy(vertexProperties: constant(true))).
>   V().project("example").by("example")
> {code}
> Note that {{values('example")}} will work on 3.6.2, but not 3.5.5 which 
> probably has something to do with differences in {{by()}} handling and 
> {{ProductiveByStrategy}}.
> {code}
> gremlin> g.withStrategies(new SubgraphStrategy(vertexProperties: 
> constant(true))).
> ..1>   withoutStrategies(ProductiveByStrategy).
> ..2>   V().project("example").by(values("example"))
> The provided traverser does not map to a value: 
> v[1][TinkerVertex]->[PropertiesStep([example],property), 
> OrStep([[ClassFilterStep(VertexProperty)], 
> [TraversalFilterStep([ConstantStep(true)])]]), 
> PropertyValueStep][DefaultGraphTraversal] parent[[TinkerGraphStep(vertex,[]), 
> ProjectStep([example],[[PropertiesStep([example],property), 
> OrStep([[ClassFilterStep(VertexProperty)], 
> [TraversalFilterStep([ConstantStep(true)])]]), PropertyValueStep]])]]
> Type ':help' or ':h' for help.
> Display stack trace? [yN]
> ..1>   V().project("example").by("example")
> The provided traverser does not map to a value: 
> v[1][TinkerVertex]->[PropertiesStep([example],property), 
> TraversalFilterStep([ConstantStep(true)]), 
> OrStep([[ClassFilterStep(VertexProperty)], 
> [TraversalFilterStep([ConstantStep(true)])]]), 
> PropertyValueStep][DefaultTraversal] 
> parent[[CoalesceStep([value([PropertiesStep([example],property), 
> TraversalFilterStep([ConstantStep(true)]), 
> OrStep([[ClassFilterStep(VertexProperty)], 
> [TraversalFilterStep([ConstantStep(true)])]]), PropertyValueStep]), (null)])]]
> Type ':help' or ':h' for help.
> Display stack trace? [yN]
> {code}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)


[jira] [Closed] (TINKERPOP-2920) SubgraphStrategy failure when property key not present on vertex in by()

2023-07-07 Thread Stephen Mallette (Jira)


 [ 
https://issues.apache.org/jira/browse/TINKERPOP-2920?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Stephen Mallette closed TINKERPOP-2920.
---
Fix Version/s: 3.7.0
   3.5.7
   3.6.5
 Assignee: Stephen Mallette
   Resolution: Fixed

> SubgraphStrategy failure when property key not present on vertex in by()
> 
>
> Key: TINKERPOP-2920
> URL: https://issues.apache.org/jira/browse/TINKERPOP-2920
> Project: TinkerPop
>  Issue Type: Bug
>  Components: process
>Affects Versions: 3.5.5
>Reporter: Stephen Mallette
>Assignee: Stephen Mallette
>Priority: Minor
> Fix For: 3.7.0, 3.5.7, 3.6.5
>
>
> The following triggers the failure assuming "example" isn't present on a 
> vertex:
> {code}
> g.withStrategies(new SubgraphStrategy(vertexProperties: constant(true))).
>   V().project("example").by("example")
> {code}
> Note that {{values('example")}} will work on 3.6.2, but not 3.5.5 which 
> probably has something to do with differences in {{by()}} handling and 
> {{ProductiveByStrategy}}.
> {code}
> gremlin> g.withStrategies(new SubgraphStrategy(vertexProperties: 
> constant(true))).
> ..1>   withoutStrategies(ProductiveByStrategy).
> ..2>   V().project("example").by(values("example"))
> The provided traverser does not map to a value: 
> v[1][TinkerVertex]->[PropertiesStep([example],property), 
> OrStep([[ClassFilterStep(VertexProperty)], 
> [TraversalFilterStep([ConstantStep(true)])]]), 
> PropertyValueStep][DefaultGraphTraversal] parent[[TinkerGraphStep(vertex,[]), 
> ProjectStep([example],[[PropertiesStep([example],property), 
> OrStep([[ClassFilterStep(VertexProperty)], 
> [TraversalFilterStep([ConstantStep(true)])]]), PropertyValueStep]])]]
> Type ':help' or ':h' for help.
> Display stack trace? [yN]
> ..1>   V().project("example").by("example")
> The provided traverser does not map to a value: 
> v[1][TinkerVertex]->[PropertiesStep([example],property), 
> TraversalFilterStep([ConstantStep(true)]), 
> OrStep([[ClassFilterStep(VertexProperty)], 
> [TraversalFilterStep([ConstantStep(true)])]]), 
> PropertyValueStep][DefaultTraversal] 
> parent[[CoalesceStep([value([PropertiesStep([example],property), 
> TraversalFilterStep([ConstantStep(true)]), 
> OrStep([[ClassFilterStep(VertexProperty)], 
> [TraversalFilterStep([ConstantStep(true)])]]), PropertyValueStep]), (null)])]]
> Type ':help' or ':h' for help.
> Display stack trace? [yN]
> {code}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)


Re: [DISCUSS] Draft ASF Board Report - July 2023

2023-07-07 Thread Yang Xia
Hi Florian,

Thank you for drafting and submitting the report.

I just have some small edits for Project Activity and added some
clarification to the Project Status sections, and wondering if you would
still be able to do a quick update?

Here are the sections with the edits added:

## Project Activity:
TinkerPop released versions 3.5.6, 3.6.3, and 3.6.4. in the last quarter.
These releases were mostly maintenance releases. One noteworthy improvement
in 3.5.6 and 3.6.3 is a new multi-architecture Docker image for Gremlin
Server which supports ARM64 in addition to AMD64. This release also
included important performance improvements for Gremlin Console and
TraversalStrategy applications for users and providers. 3.6.4 was a patch
release that fixed a critical bug in the Java driver and a memory leak in
the .NET driver.

We are closing in on releasing 3.7.0 shortly, a release that includes work
from over a year. Major improvements in this release are support for JDK 17
and Groovy 4. This release will also include usability improvements in
areas that users often request, such as support for string manipulations
directly in Gremlin, returning vertices and edges with their properties by
default instead of only as reference elements, which often led to
confusion, especially for new users. We have also been working on adding
transaction support to TinkerGraph, the TinkerPop reference graph
implementation.
Together with 3.7.0, we plan to also publish maintenance releases 3.5.7 and
3.6.5.

In the wider TinkerPop ecosystem, we learned that Aerospike released the
first version of their graph database which supports TinkerPop.
New graph database.[1]

## Project Status: Ongoing
Activity is relatively high, considering we are actively working on
releases, have daily commits and development discussions on the dev list.
We also have an active user community on Discord where developers and users
engage on questions, as well as regular live events on Twitch for
knowledge-sharing.

Hope you enjoy the time off!

Best,

Yang


On Fri, Jul 7, 2023 at 6:22 AM Florian Hockmann 
wrote:

> I already submitted the report as I will be out of office the next two
> weeks
> and therefore not able to submit it then. I had to add another small
> section
> about the "Project Status" which has been added as a mandatory section
> since
> our last report. Here is the final report:
>
> --
> ## Description:
> Apache TinkerPop is a graph computing framework for both graph databases
> (OLTP) and graph analytic systems (OLAP).
>
> ## Issues:
> There are no issues requiring board attention.
>
> ## Project Status: Ongoing
> Activity is relatively high, considering that we are actively working on
> releases, have daily commits and discussions on the dev list and Discord,
> as
> well as regular live events on Twitch.
>
> ## Membership Data:
> Community changes, past quarter:
> - No new PMC members. Last addition was Yang Xia on 2023-03-15.
> - Cole Greer was added as committer on 2023-05-30
>
> ## Project Activity:
> TinkerPop released versions 3.5.6, 3.6.3, and 3.6.4. in the last quarter.
> These
> releases were mostly maintenance releases. One noteworthy improvement in
> 3.5.6
> and 3.6.3 is a new multi-architecture Docker image for Gremlin Server which
> supports ARM64 in addition to AMD64.
> 3.6.4 was a patch release that fixed a critical bug in the Java driver and
> a
> memory leak in the .NET driver.
>
> We are closing in on releasing 3.7.0 shortly, a release that includes work
> from
> over a year. Major improvements in this release are support for JDK 17 and
> Groovy 4. This release will also include usability improvements in areas
> that
> users often request like support for string manipulations directly in
> Gremlin
> and returning vertices and edges with their properties by default instead
> of
> only as reference elements which often led to confusion, especially for new
> users.
> Together with 3.7.0, we plan to also publish maintenance releases 3.5.6 and
> 3.6.4.
>
> In the wider TinkerPop ecosystem, we learned that Aerospike released the
> first
> version of their graph database which supports TinkerPop
> New graph database.[1]
>
> ### Releases:
> 3.6.4 was released on 2023-05-12.
> 3.5.6 was released on 2023-05-01.
> 3.6.3 was released on 2023-05-01.
>
> ## Community Health:
> We again had some live events on Twitch[2] where the recording are
> available
> on
> our YouTube channel[3]:
>
> * TinkerPop Wide: ArcadeDB - a Multi-Model Database with Gremlin -
> Presenter:
>   Luca Garulli - founder of ArcadeDB
>
> * Contributorcast: Apache TinkerPop 3.5.6/3.6.3 Post-Release Review -
>   Presenter: Yang Xia, Valentyn Kahamlyk, Cole Greer, and Ken Hu
>
> * TinkerPop Wide: Introducing Graph Notebook - Presenter: Kelving Lawrence
> and
>   Taylor Riggan from AWS, working on Amazon Neptune
>
> ## Links
>
> [1]:
>
> https://aerospike.com/news/press-release/aerospike-delivers-re

Re: [DISCUSS] Draft ASF Board Report - July 2023

2023-07-07 Thread Yang Xia
Quick note, as Florian will be out of the office for the next two weeks, I
can update and submit the ASF report with the proposed edits if there are
no comments or concerns.

Cheers,

Yang

On Fri, Jul 7, 2023 at 12:30 PM Yang Xia  wrote:

> Hi Florian,
>
> Thank you for drafting and submitting the report.
>
> I just have some small edits for Project Activity and added some
> clarification to the Project Status sections, and wondering if you would
> still be able to do a quick update?
>
> Here are the sections with the edits added:
>
> ## Project Activity:
> TinkerPop released versions 3.5.6, 3.6.3, and 3.6.4. in the last quarter.
> These releases were mostly maintenance releases. One noteworthy
> improvement in 3.5.6 and 3.6.3 is a new multi-architecture Docker image for
> Gremlin Server which supports ARM64 in addition to AMD64. This release also
> included important performance improvements for Gremlin Console and
> TraversalStrategy applications for users and providers. 3.6.4 was a patch
> release that fixed a critical bug in the Java driver and a memory leak in
> the .NET driver.
>
> We are closing in on releasing 3.7.0 shortly, a release that includes work
> from over a year. Major improvements in this release are support for JDK 17
> and Groovy 4. This release will also include usability improvements in
> areas that users often request, such as support for string manipulations
> directly in Gremlin, returning vertices and edges with their properties by
> default instead of only as reference elements, which often led to
> confusion, especially for new users. We have also been working on adding
> transaction support to TinkerGraph, the TinkerPop reference graph
> implementation.
> Together with 3.7.0, we plan to also publish maintenance releases 3.5.7
> and 3.6.5.
>
> In the wider TinkerPop ecosystem, we learned that Aerospike released the
> first version of their graph database which supports TinkerPop.
> New graph database.[1]
>
> ## Project Status: Ongoing
> Activity is relatively high, considering we are actively working on
> releases, have daily commits and development discussions on the dev list.
> We also have an active user community on Discord where developers and users
> engage on questions, as well as regular live events on Twitch for
> knowledge-sharing.
>
> Hope you enjoy the time off!
>
> Best,
>
> Yang
>
>
> On Fri, Jul 7, 2023 at 6:22 AM Florian Hockmann 
> wrote:
>
>> I already submitted the report as I will be out of office the next two
>> weeks
>> and therefore not able to submit it then. I had to add another small
>> section
>> about the "Project Status" which has been added as a mandatory section
>> since
>> our last report. Here is the final report:
>>
>> --
>> ## Description:
>> Apache TinkerPop is a graph computing framework for both graph databases
>> (OLTP) and graph analytic systems (OLAP).
>>
>> ## Issues:
>> There are no issues requiring board attention.
>>
>> ## Project Status: Ongoing
>> Activity is relatively high, considering that we are actively working on
>> releases, have daily commits and discussions on the dev list and Discord,
>> as
>> well as regular live events on Twitch.
>>
>> ## Membership Data:
>> Community changes, past quarter:
>> - No new PMC members. Last addition was Yang Xia on 2023-03-15.
>> - Cole Greer was added as committer on 2023-05-30
>>
>> ## Project Activity:
>> TinkerPop released versions 3.5.6, 3.6.3, and 3.6.4. in the last quarter.
>> These
>> releases were mostly maintenance releases. One noteworthy improvement in
>> 3.5.6
>> and 3.6.3 is a new multi-architecture Docker image for Gremlin Server
>> which
>> supports ARM64 in addition to AMD64.
>> 3.6.4 was a patch release that fixed a critical bug in the Java driver
>> and a
>> memory leak in the .NET driver.
>>
>> We are closing in on releasing 3.7.0 shortly, a release that includes work
>> from
>> over a year. Major improvements in this release are support for JDK 17 and
>> Groovy 4. This release will also include usability improvements in areas
>> that
>> users often request like support for string manipulations directly in
>> Gremlin
>> and returning vertices and edges with their properties by default instead
>> of
>> only as reference elements which often led to confusion, especially for
>> new
>> users.
>> Together with 3.7.0, we plan to also publish maintenance releases 3.5.6
>> and
>> 3.6.4.
>>
>> In the wider TinkerPop ecosystem, we learned that Aerospike released the
>> first
>> version of their graph database which supports TinkerPop
>> New graph database.[1]
>>
>> ### Releases:
>> 3.6.4 was released on 2023-05-12.
>> 3.5.6 was released on 2023-05-01.
>> 3.6.3 was released on 2023-05-01.
>>
>> ## Community Health:
>> We again had some live events on Twitch[2] where the recording are
>> available
>> on
>> our YouTube channel[3]:
>>
>> * TinkerPop Wide: ArcadeDB - a Multi-Model Database with Gremlin -
>> Presen

[DISCUSS] Default Token Size Limits in Jackson

2023-07-07 Thread Cole Greer
Hi everyone,

I want to take another stab at TINKERPOP-2948 with the upgrade to Jackson 2.15. 
There are some breaking changes which must be noted here. Jackson 2.15 
introduces max token size limits for parsing string and numeric literals. There 
is also a new limit on JSON nesting depth in Jackson. The default values for 
these in Jackson are 20M chars for strings, 1000 chars for numbers, and a max 
nesting depth of 1000.

My proposal is that we set our own default limits in TinkerPop such that we do 
not reasonably expect any users to exceed the defaults. The only Jackson 
default that concerns me in this regard is the max number length as it is 
already exceeded by one of our tests 
(g_withSackXBigInteger_TEN_powX1000X_assignX_V_localXoutXknowsX_barrierXnormSackXX_inXknowsX_barrier_sack).
 My suggestion is to set the TinkerPop default limit as 10 000 chars for 
numbers and assume the other defaults from Jackson.

Further I would suggest we add config options such as “maxJsonStringLength”, 
“maxJsonNumberLength”, and “maxJsonNestingDepth” to both the Java driver and 
server so that it is possible for users to overcome these limits if needed.

Since this change is security motivated and the impact to users is minimal, I 
would suggest we proceed with implementing this change in 3.5-dev.

Regards,

Cole Greer


Re: [DISCUSS] Proposal to add transaction support to TinkerGraph.

2023-07-07 Thread Valentyn Kahamlyk
Hi all,

I'm happy to announce that the transactional PR is ready for review
https://github.com/apache/tinkerpop/pull/2087.
I'm still planning a couple of small changes, but nothing big.

Regards, Valentyn


On Thu, Jun 15, 2023 at 10:18 PM Valentyn Kahamlyk <
valent...@bitquilltech.com> wrote:

> Hi all,
>
> I'm working on transactions implementation and I would like to discuss 
> testing of this feature.
>
> Currently available options for tests in TinkerPop:
> 1. Unit tests.
> For development I wrote bunch of unit tests for the newly introduced 
> TinkerTransactionGraph because they are easier to make and much more 
> convenient to debug. However, these tests are very complicated to be reused 
> by other providers.
> 2. Gherkin tests.
> This is the best option for providers to test some features. However, the 
> current implementation does not support many of the abilities needed to test 
> transactions, for example multi-step tests and multi-threaded tests. The 
> ideal solution would be to add such features, but unfortunately it takes a 
> lot of time and effort.
> For basic checks of TinkerTransactionGraph existing Gherkin tests are already 
> used.
> 3. Integration tests.
> We have 2 kinds of integration tests in `gremlin-test`
> a) process tests are mirror of Gherkin tests with some small differences.
> b) structure tests are probably the best candidate to use for 
> TinkerTransactionGraph. There is already a set of tests for transactions in 
> TransactionTest and I can add more cases there. These tests will be used in a 
> similar way to TinkerGraphStructureStandardTest.
> 4. Gremlin Server tests.
> I think these tests have a different responsibility.
> 5. GLV tests.
> All GLV's already have transaction tests and we can extend them to use 
> TinkerTransactionGraph at server-side.
>
> To summarize I suggest using structure tests to verify transaction 
> implementation.
>
> Regards, Valentyn
>
>
> On Wed, May 10, 2023 at 2:59 PM Valentyn Kahamlyk <
> valent...@bitquilltech.com> wrote:
>
>> Hi all,
>>
>> I opened PR with a detailed proposal for transaction implementation:
>> https://github.com/apache/tinkerpop/pull/2054.
>>
>> Regards, Valentyn
>>
>> On Mon, Feb 27, 2023 at 1:22 PM Valentyn Kahamlyk <
>> valent...@bitquilltech.com> wrote:
>>
>>> Hi all,
>>>
>>> Now, if you need to use transactions in tinkerpop, the only solution is
>>> to use the Neo4J plugin. Unfortunately, this plugin has not been updated
>>> for a long time and is only compatible with Neo4J version 3.4, which
>>> reached end of life in March, 2020.
>>>
>>> I propose to implement native transaction support in TinkerGraph.
>>>
>>> The most interesting question to discuss is the level of isolation in
>>> SQL 92 terms. There are 5 options to choose from: `Read uncommitted`, `Read
>>> committed`, `Repeatable read`, `Snapshot` and `Serializable`.
>>>
>>> In terms of balancing complexity of implementation and functionality, I
>>> think the most optimal option is `Read committed` or `Repeatable read`.
>>>
>>> I hope to implement `Read committed`, it is enough to add versions to
>>> the Vertices and Edges, add list of updated Elements in Graph.
>>> Write lock can be Vertex-level and Edge-level.
>>>
>>> Regards, Valentyn
>>>
>>