Merge branch 'release-lessons-learned-3.5-dev' into 3.5-dev
diff --git a/docs/src/dev/developer/development-environment.asciidoc b/docs/src/dev/developer/development-environment.asciidoc
index 043010a..d1a3356 100644
--- a/docs/src/dev/developer/development-environment.asciidoc
+++ b/docs/src/dev/developer/development-environment.asciidoc
@@ -150,6 +150,11 @@
 Documentation is generated to the `target/docs` directory. It is also possible to generate documentation locally with
 Docker. `docker/build.sh -d`.
 
+NOTE: The installation of plugins sometimes fails in this step with the error: `Error grabbing grapes - download
+failed`. It often helps in this case to delete the directories for the dependencies that cannot be downloaded
+in the `.m2` (`~/.m2/`) and in the `grapes` (`~/.groovy/grapes/`) cache. E.g., if the error is about
+`asm#asm;3.2!asm.jar`, then remove the `asm/asm` sub directory in both directories.
+
 To generate the web site locally, there is no need for any of the above infrastructure. Site generation is a simple
 shell script:
 
@@ -260,11 +265,7 @@
 === Release Environment
 
 This section is only useful to TinkerPop release managers and describes prerequisites related to deploying an official
-release of TinkerPop. All Apache releases must be signed. Please see link:http://www.apache.org/dev/release-signing.html[this guide]
-in the Apache documentation for instructions on to set up gpg. Keys should be added to KEYS files in both the
-link:https://dist.apache.org/repos/dist/dev/tinkerpop/KEYS[development] and
-link:https://dist.apache.org/repos/dist/release/tinkerpop/KEYS[release] distribution directories and committed
-using Apache Subversion (SVN).
+release of TinkerPop.
 
 Maven needs to be configured to deploy maven artifacts. Apache LDAP credentials can be used for this. Release
 managers should encrypt their Apache LDAP password as described
@@ -289,7 +290,6 @@
 password =
 
 [pypi]
-repository = https://pypi.python.org/pypi
 username = <username>
 password =
 ----
@@ -314,10 +314,11 @@
 This should update `~/.config/NuGet/NuGet.Config` a file with an entry containing the encrypted API key. On
 `mvn deploy`, this file will be referenced on the automated `nuget push`.
 
-To deploy `gremlin-javascript` on the link:https://www.npmjs.com[npm registry], the release manager must set the
-authentication information on the ~/.npmrc file. The easiest way to do that is to use the `npm adduser` command. This
-must be done only once, as the auth token doesn't have an expiration date and it's stored on your file system. If
-this account is newly created then request that a PMC member add your account to the "gremlin" package on npm.
+To deploy JavaScript / TypeScript artifacts on the link:https://www.npmjs.com[npm registry], the release manager must
+set the authentication information on the ~/.npmrc file. The easiest way to do that is to use the `npm adduser`
+command. This must be done only once, as the auth token doesn't have an expiration date and it's stored on your file
+system. If this account is newly created then request that a PMC member add your account to the "gremlin" package on
+npm.
 
 Deploying Docker images to link:https://hub.docker.com/[Docker Hub] requires an account that is a member of the TinkerPop
 organization. So if you don't already have an account on Docker Hub then create one and request that
diff --git a/docs/src/dev/developer/release.asciidoc b/docs/src/dev/developer/release.asciidoc
index be18c39..186663c 100644
--- a/docs/src/dev/developer/release.asciidoc
+++ b/docs/src/dev/developer/release.asciidoc
@@ -79,23 +79,22 @@
 == Release Manager Requirements
 
 If this is your first time as release manager, you will need to setup keys for signing purposes per the Apache
-release process.  Generally speaking, this will mean that you will need to generate a key-pair and then upload your
-public key to a public keyserver.
+release process. Generally speaking, this will mean that you will need to generate a key-pair and then publish your
+public key.
 
-For a general overview of key basics, refer to link:https://www.apache.org/dev/release-signing.html#key-basics[this].  For detailed
-step-by-step instructions, please follow the instructions link:https://www.apache.org/dev/openpgp.html#generate-key[here].
+For a general overview of key basics, refer to link:https://www.apache.org/dev/release-signing.html#key-basics[this]. 
+For detailed step-by-step instructions, please follow the instructions
+link:https://www.apache.org/dev/openpgp.html#generate-key[here].
 
-After completing the key-pair setup instructions, be sure to add yourself to the `PGP signature` section of `bin/validate-distribution.sh`.
+After completing the key-pair setup instructions, be sure to upload your public key to `keys.openpgp.org` and add it into your
+link:https://id.apache.org[Apache LDAP] entry (under `OpenPGP Public Key Primary Fingerprint`). This ensures that the
+key will be added automatically to this link:https://people.apache.org/keys/committer/[list of committer keys] which
+will be used to validate the distribution.
 
-[source,text]
-----
-echo -n "  * PGP signature ... "
-[ `gpg ${ZIP_FILENAME}.asc 2>&1 | grep -c '^gpg: Good signature from "Stephen Mallette <spmallette@apache.org>"$'` -eq 1 ] || \
-[ `gpg ${ZIP_FILENAME}.asc 2>&1 | grep -c '^gpg: Good signature from "Marko Rodriguez <okram@apache.org>"$'` -eq 1 ] || \
-[ `gpg ${ZIP_FILENAME}.asc 2>&1 | grep -c '^gpg: Good signature from "Theodore Ratte Wilmes (CODE SIGNING KEY) <twilmes@apache.org>"'` -eq 1 ] || \
-{ echo "failed"; exit 1; }
-echo "OK"
-----
+Your public key also needs to be added to KEYS files in both the
+link:https://dist.apache.org/repos/dist/dev/tinkerpop/KEYS[development] and
+link:https://dist.apache.org/repos/dist/release/tinkerpop/KEYS[release] distribution directories and committed
+using Apache Subversion (SVN).
 
 == Pre-flight Check
 
@@ -146,7 +145,7 @@
 . `mvn versions:set -DnewVersion=xx.yy.zz -DgenerateBackupPoms=false` to update the project files to reference a non-SNAPSHOT version
 . `mvn clean install -DskipTests` to update GLV versions
 .. Review `Gremlin.Net.csproj`, `Gremlin.Net.Template.csproj` and `Gremlin.Net.Template.nuspec` in `gremlin-dotnet`
-.. Review `package.json` in `gremlin-javascript`
+.. Review `package.json` and `package-lock.json` in `gremlin-javascript` and in `gremlint`
 . `pushd gremlin-console/bin; ln -fs ../target/apache-tinkerpop-gremlin-console-xx.yy.zz-standalone/bin/gremlin.sh gremlin.sh; popd`
 . `git diff` and review the updated files
 . `git commit -a -m "TinkerPop xx.yy.zz release"` and `git push`
@@ -155,7 +154,7 @@
 . `mvn versions:set -DnewVersion=xx.yy.zz-SNAPSHOT -DgenerateBackupPoms=false` to go back to SNAPSHOT
 . `mvn clean install -DskipTests` to update GLV versions
 .. Review `Gremlin.Net.csproj`, `Gremlin.Net.Template.csproj` and `Gremlin.Net.Template.nuspec` in `gremlin-dotnet`
-.. Review `package.json` in `gremlin-javascript`
+.. Review `package.json` and `package-lock.json` in `gremlin-javascript` and in `gremlint`
 . `pushd gremlin-console/bin; ln -fs ../target/apache-tinkerpop-gremlin-console-xx.yy.zz-SNAPSHOT-standalone/bin/gremlin.sh gremlin.sh; popd`
 . `git commit -a -m "Returned to xx.yy.zz-SNAPSHOT"` and `git push`
 . Announce the release candidate to `dev` mailing list and await feedback
@@ -213,7 +212,7 @@
 . `mvn versions:set -DnewVersion=xx.yy.zz -DgenerateBackupPoms=false` to update project files to reference the non-SNAPSHOT version
 . `mvn clean install -DskipTests` to update GLV versions
 .. Review `Gremlin.Net.csproj`, `Gremlin.Net.Template.csproj` and `Gremlin.Net.Template.nuspec` in `gremlin-dotnet`
-.. Review `package.json` in `gremlin-javascript`
+.. Review `package.json` and `package-lock.json` in `gremlin-javascript` and in `gremlint`
 . `pushd gremlin-console/bin; ln -fs ../target/apache-tinkerpop-gremlin-console-xx.yy.zz-standalone/bin/gremlin.sh gremlin.sh; popd`
 . `git diff` and review the updated files
 . `mvn clean install` - need to build first so that the right version of the console is used with `bin/publish-docs.sh`
@@ -296,7 +295,7 @@
 `mvn versions:set -DnewVersion=xx.yy.zz-SNAPSHOT -DgenerateBackupPoms=false`.
 . `mvn clean install -DskipTests` to update GLV versions
 .. Review `Gremlin.Net.csproj`, `Gremlin.Net.Template.csproj` and `Gremlin.Net.Template.nuspec` in `gremlin-dotnet`
-.. Review `package.json` in `gremlin-javascript`
+.. Review `package.json` and `package-lock.json` in `gremlin-javascript` and in `gremlint`
 .. `pushd gremlin-console/bin; ln -fs ../target/apache-tinkerpop-gremlin-console-xx.yy.zz-SNAPSHOT-standalone/bin/gremlin.sh gremlin.sh; popd`
 .. Update CHANGELOG and upgrade docs to have the appropriate headers for the next version.
 .. `mvn clean install -DskipTests` - need to build first so that the right version of the console is used with `bin/publish-docs.sh`
@@ -430,6 +429,10 @@
 
 https://www.npmjs.com/package/gremlin/v/xx.yy.zz
 
+Gremlint is available in npm:
+
+https://www.npmjs.com/package/gremlint/v/xx.yy.zz
+
 Docker images for Gremlin Console and Gremlin Server can be found on Docker
 Hub: