<commit_before>////
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.
////
image::apache-tinkerpop-logo.png[width=500,link="http://tinkerpop.apache.org"]

*4.0.0*

:toc-position: left

= TinkerPop 4.x Design Ideas

Apache TinkerPop™ 4.x is not a version considered on the immediate horizon, but there are often points in the day to
day development of TinkerPop 3.x where there are changes of importance, novelty and usefulness that are so big that
they could only be implemented under a major new version. This document is meant to track these concepts as they
develop, so that at some point in the future they can be referenced in a single place.

There is no particular layout or style to this document. Simple bullet points, open questions posed as single
sentences, or fully structured document headers and content are all acceptable. The main point is to capture ideas
for future consideration when 4.x becomes the agenda of the day for The TinkerPop.

If adding comments sections, please "sign" comments with initials and reference those initials here:

* *spm* - <NAME>
* *as* - <NAME>
* *dk* - <NAME>

image:tp4-think.png[]

Development of 4.x occurs on the `tp4` branch. This branch was created as an orphan branch and therefore has no
history tied to any other branch in the repo including master. As such, there is no need to merge/rebase `tp4`. When
it comes time to promote `tp4` to `master` the procedure for doing so will be to:

1. Create a `tp3` branch from `master`
1. Delete all content from `master` in one commit
1. Rebase `tp4` on `master`
1. Merge `tp4` to `master` and push

From this point 3.x development will occur on `tp3` and 4.x development occurs on `master` (with the same version
branching as we have now, e.g `tp33`, `tp41`, etc.) The `tp3` branch changes will likely still merge to `master`, but
will all merge as no-op changes.

== The Main Features

TinkerPop 4.x should focus on the most successful aspects of TinkerPop 3.x and it should avoid the traps realized in
TinkerPop 3.x. These items include:

* The concept of Gremlin as both a virtual machine and language.
** A standard bytecode specification should be provided.
** A standard machine architecture should be provided.
* The concept of Gremlin language variants.
** It should be easy to create Gremlin variants in every major programming language.
** A standard template should be followed for all languages.
** Apache TinkerPop should provide variants in all major programming languges.
* The concept of `Traversal` as the sole means of interacting with the graph.
** The role of Blueprints should be significantly reduced.
** The role of Gremlin should be significantly increased.
* Provide better methods of versioning Gremlin itself - being bound to JVM releases and forcing local and remote
versions of Gremlin to be the same isn't ideal.
<commit_msg>Renamed dev branches to a more intuitive naming scheme CTR<commit_after>////
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.
////
image::apache-tinkerpop-logo.png[width=500,link="http://tinkerpop.apache.org"]

*4.0.0*

:toc-position: left

= TinkerPop 4.x Design Ideas

Apache TinkerPop™ 4.x is not a version considered on the immediate horizon, but there are often points in the day to
day development of TinkerPop 3.x where there are changes of importance, novelty and usefulness that are so big that
they could only be implemented under a major new version. This document is meant to track these concepts as they
develop, so that at some point in the future they can be referenced in a single place.

There is no particular layout or style to this document. Simple bullet points, open questions posed as single
sentences, or fully structured document headers and content are all acceptable. The main point is to capture ideas
for future consideration when 4.x becomes the agenda of the day for The TinkerPop.

If adding comments sections, please "sign" comments with initials and reference those initials here:

* *spm* - <NAME>
* *as* - <NAME>
* *dk* - <NAME>

image:tp4-think.png[]

Development of 4.x occurs on the `4.0-dev` branch. This branch was created as an orphan branch and therefore has no
history tied to any other branch in the repo including master. As such, there is no need to merge/rebase `4.0-dev`. When
it comes time to promote `4.0-dev` to `master` the procedure for doing so will be to:

1. Create a `3.x-master` branch from `master`
1. Delete all content from `master` in one commit
1. Rebase `4.0-dev` on `master`
1. Merge `4.0-dev` to `master` and push

From this point 3.x development will occur on `3.x-master` and 4.x development occurs on `master` (with the same version
branching as we have now, e.g `3.3-dev`, `4.1-dev`, etc.) The `3.x-master` branch changes will likely still merge to
`master`, but will all merge as no-op changes.

== The Main Features

TinkerPop 4.x should focus on the most successful aspects of TinkerPop 3.x and it should avoid the traps realized in
TinkerPop 3.x. These items include:

* The concept of Gremlin as both a virtual machine and language.
** A standard bytecode specification should be provided.
** A standard machine architecture should be provided.
* The concept of Gremlin language variants.
** It should be easy to create Gremlin variants in every major programming language.
** A standard template should be followed for all languages.
** Apache TinkerPop should provide variants in all major programming languges.
* The concept of `Traversal` as the sole means of interacting with the graph.
** The role of Blueprints should be significantly reduced.
** The role of Gremlin should be significantly increased.
* Provide better methods of versioning Gremlin itself - being bound to JVM releases and forcing local and remote
versions of Gremlin to be the same isn't ideal.

{'fraction_non_alphanumeric': 0.05910099889012209, 'fraction_numerical': 0.010960044395116537, 'mean_word_length': 4.316371681415929, 'pattern_counts': {'":': 0, '<': 9, '<?xml version=': 0, '>': 9, 'https://': 0, 'lorem ipsum': 0, 'www.': 2, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 2, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '4420800', 'n_tokens_mistral': 1941, 'n_tokens_neox': 1828, 'n_words': 1099}