You are viewing a plain text version of this content. The canonical link for it is here.
Posted to github@beam.apache.org by GitBox <gi...@apache.org> on 2021/11/04 03:33:25 UTC

[GitHub] [beam] lostluck opened a new pull request #15894: [Go SDK] Go SDK Exits Experimental

lostluck opened a new pull request #15894:
URL: https://github.com/apache/beam/pull/15894


   Add a release blog for the Go SDK exiting experimental.
   Update the roadmap pages.
   Update the validation blog post with Go SDK process.
   
   ------------------------
   
   Thank you for your contribution! Follow this checklist to help us incorporate your contribution quickly and easily:
   
    - [ ] [**Choose reviewer(s)**](https://beam.apache.org/contribute/#make-your-change) and mention them in a comment (`R: @username`).
    - [ ] Format the pull request title like `[BEAM-XXX] Fixes bug in ApproximateQuantiles`, where you replace `BEAM-XXX` with the appropriate JIRA issue, if applicable. This will automatically link the pull request to the issue.
    - [ ] Update `CHANGES.md` with noteworthy changes.
    - [ ] If this contribution is large, please file an Apache [Individual Contributor License Agreement](https://www.apache.org/licenses/icla.pdf).
   
   See the [Contributor Guide](https://beam.apache.org/contribute) for more tips on [how to make review process smoother](https://beam.apache.org/contribute/#make-reviewers-job-easier).
   
   `ValidatesRunner` compliance status (on master branch)
   --------------------------------------------------------
   
   <table>
     <thead>
       <tr>
         <th>Lang</th>
         <th>ULR</th>
         <th>Dataflow</th>
         <th>Flink</th>
         <th>Samza</th>
         <th>Spark</th>
         <th>Twister2</th>
       </tr>
     </thead>
     <tbody>
       <tr>
         <td>Go</td>
         <td>---</td>
         <td>
           <a href="https://ci-beam.apache.org/job/beam_PostCommit_Go/lastCompletedBuild/">
             <img alt="Build Status" src="https://ci-beam.apache.org/job/beam_PostCommit_Go/lastCompletedBuild/badge/icon">
           </a>
         <td>
           <a href="https://ci-beam.apache.org/job/beam_PostCommit_Go_VR_Flink/lastCompletedBuild/">
             <img alt="Build Status" src="https://ci-beam.apache.org/job/beam_PostCommit_Go_VR_Flink/lastCompletedBuild/badge/icon">
           </a>
         </td>
         <td>
           <a href="https://ci-beam.apache.org/job/beam_PostCommit_Go_VR_Samza/lastCompletedBuild/">
             <img alt="Build Status" src="https://ci-beam.apache.org/job/beam_PostCommit_Go_VR_Samza/lastCompletedBuild/badge/icon">
           </a>
         </td>
         <td>
           <a href="https://ci-beam.apache.org/job/beam_PostCommit_Go_VR_Spark/lastCompletedBuild/">
             <img alt="Build Status" src="https://ci-beam.apache.org/job/beam_PostCommit_Go_VR_Spark/lastCompletedBuild/badge/icon">
           </a>
         </td>
         <td>---</td>
       </tr>
       <tr>
         <td>Java</td>
         <td>
           <a href="https://ci-beam.apache.org/job/beam_PostCommit_Java_ValidatesRunner_ULR/lastCompletedBuild/">
             <img alt="Build Status" src="https://ci-beam.apache.org/job/beam_PostCommit_Java_ValidatesRunner_ULR/lastCompletedBuild/badge/icon">
           </a>
         </td>
         <td>
           <a href="https://ci-beam.apache.org/job/beam_PostCommit_Java_ValidatesRunner_Dataflow/lastCompletedBuild/">
             <img alt="Build Status" src="https://ci-beam.apache.org/job/beam_PostCommit_Java_ValidatesRunner_Dataflow/lastCompletedBuild/badge/icon?subject=V1">
           </a><br>
           <a href="https://ci-beam.apache.org/job/beam_PostCommit_Java_ValidatesRunner_Dataflow_Streaming/lastCompletedBuild/">
             <img alt="Build Status" src="https://ci-beam.apache.org/job/beam_PostCommit_Java_ValidatesRunner_Dataflow_Streaming/lastCompletedBuild/badge/icon?subject=V1+Streaming">
           </a><br>
           <a href="https://ci-beam.apache.org/job/beam_PostCommit_Java_ValidatesRunner_Dataflow_Java11/lastCompletedBuild/">
             <img alt="Build Status" src="https://ci-beam.apache.org/job/beam_PostCommit_Java_ValidatesRunner_Dataflow_Java11/lastCompletedBuild/badge/icon?subject=V1+Java+11">
           </a><br>
           <a href="https://ci-beam.apache.org/job/beam_PostCommit_Java_VR_Dataflow_V2/lastCompletedBuild/">
             <img alt="Build Status" src="https://ci-beam.apache.org/job/beam_PostCommit_Java_VR_Dataflow_V2/lastCompletedBuild/badge/icon?subject=V2">
           </a><br>
           <a href="https://ci-beam.apache.org/job/beam_PostCommit_Java_VR_Dataflow_V2_Streaming/lastCompletedBuild/">
             <img alt="Build Status" src="https://ci-beam.apache.org/job/beam_PostCommit_Java_VR_Dataflow_V2_Streaming/lastCompletedBuild/badge/icon?subject=V2+Streaming">
           </a><br>
         </td>
         <td>
           <a href="https://ci-beam.apache.org/job/beam_PostCommit_Java_ValidatesRunner_Flink/lastCompletedBuild/">
             <img alt="Build Status" src="https://ci-beam.apache.org/job/beam_PostCommit_Java_ValidatesRunner_Flink/lastCompletedBuild/badge/icon?subject=Java+8">
           </a><br>
           <a href="https://ci-beam.apache.org/job/beam_PostCommit_Java_ValidatesRunner_Flink_Java11/lastCompletedBuild/">
             <img alt="Build Status" src="https://ci-beam.apache.org/job/beam_PostCommit_Java_ValidatesRunner_Flink_Java11/lastCompletedBuild/badge/icon?subject=Java+11">
           </a><br>
           <a href="https://ci-beam.apache.org/job/beam_PostCommit_Java_PVR_Flink_Batch/lastCompletedBuild/">
             <img alt="Build Status" src="https://ci-beam.apache.org/job/beam_PostCommit_Java_PVR_Flink_Batch/lastCompletedBuild/badge/icon?subject=Portable">
           </a><br>
           <a href="https://ci-beam.apache.org/job/beam_PostCommit_Java_PVR_Flink_Streaming/lastCompletedBuild/">
             <img alt="Build Status" src="https://ci-beam.apache.org/job/beam_PostCommit_Java_PVR_Flink_Streaming/lastCompletedBuild/badge/icon?subject=Portable+Streaming">
           </a>
         </td>
         <td>
           <a href="https://ci-beam.apache.org/job/beam_PostCommit_Java_ValidatesRunner_Samza/lastCompletedBuild/">
             <img alt="Build Status" src="https://ci-beam.apache.org/job/beam_PostCommit_Java_ValidatesRunner_Samza/lastCompletedBuild/badge/icon">
           </a><br>
           <a href="https://ci-beam.apache.org/job/beam_PostCommit_Java_PVR_Samza/lastCompletedBuild/">
             <img alt="Build Status" src="https://ci-beam.apache.org/job/beam_PostCommit_Java_PVR_Samza/lastCompletedBuild/badge/icon?subject=Portable">
           </a>
         </td>
         <td>
           <a href="https://ci-beam.apache.org/job/beam_PostCommit_Java_ValidatesRunner_Spark/lastCompletedBuild/">
             <img alt="Build Status" src="https://ci-beam.apache.org/job/beam_PostCommit_Java_ValidatesRunner_Spark/lastCompletedBuild/badge/icon">
           </a><br>
           <a href="https://ci-beam.apache.org/job/beam_PostCommit_Java_PVR_Spark_Batch/lastCompletedBuild/">
             <img alt="Build Status" src="https://ci-beam.apache.org/job/beam_PostCommit_Java_PVR_Spark_Batch/lastCompletedBuild/badge/icon?subject=Portable">
           </a><br>
           <a href="https://ci-beam.apache.org/job/beam_PostCommit_Java_ValidatesRunner_SparkStructuredStreaming/lastCompletedBuild/">
             <img alt="Build Status" src="https://ci-beam.apache.org/job/beam_PostCommit_Java_ValidatesRunner_SparkStructuredStreaming/lastCompletedBuild/badge/icon?subject=Structured+Streaming">
           </a>
         </td>
         <td>
           <a href="https://ci-beam.apache.org/job/beam_PostCommit_Java_ValidatesRunner_Twister2/lastCompletedBuild/">
             <img alt="Build Status" src="https://ci-beam.apache.org/job/beam_PostCommit_Java_ValidatesRunner_Twister2/lastCompletedBuild/badge/icon">
           </a>
         </td>
       </tr>
       <tr>
         <td>Python</td>
         <td>---</td>
         <td>
           <a href="https://ci-beam.apache.org/job/beam_PostCommit_Py_VR_Dataflow/lastCompletedBuild/">
             <img alt="Build Status" src="https://ci-beam.apache.org/job/beam_PostCommit_Py_VR_Dataflow/lastCompletedBuild/badge/icon?subject=V1">
           </a><br>
           <a href="https://ci-beam.apache.org/job/beam_PostCommit_Py_VR_Dataflow_V2/lastCompletedBuild/">
             <img alt="Build Status" src="https://ci-beam.apache.org/job/beam_PostCommit_Py_VR_Dataflow_V2/lastCompletedBuild/badge/icon?subject=V2">
           </a><br>
           <a href="https://ci-beam.apache.org/job/beam_PostCommit_Py_ValCont/lastCompletedBuild/">
             <img alt="Build Status" src="https://ci-beam.apache.org/job/beam_PostCommit_Py_ValCont/lastCompletedBuild/badge/icon?subject=ValCont">
           </a>
         </td>
         <td>
           <a href="https://ci-beam.apache.org/job/beam_PreCommit_Python_PVR_Flink_Cron/lastCompletedBuild/">
             <img alt="Build Status" src="https://ci-beam.apache.org/job/beam_PreCommit_Python_PVR_Flink_Cron/lastCompletedBuild/badge/icon?subject=Portable">
           </a><br>
           <a href="https://ci-beam.apache.org/job/beam_PostCommit_Python_VR_Flink/lastCompletedBuild/">
             <img alt="Build Status" src="https://ci-beam.apache.org/job/beam_PostCommit_Python_VR_Flink/lastCompletedBuild/badge/icon">
           </a>
         </td>
         <td>
           <a href="https://ci-beam.apache.org/job/beam_PostCommit_Python_VR_Samza/lastCompletedBuild/">
             <img alt="Build Status" src="https://ci-beam.apache.org/job/beam_PostCommit_Python_VR_Samza/lastCompletedBuild/badge/icon">
           </a>
         </td>
         <td>
           <a href="https://ci-beam.apache.org/job/beam_PostCommit_Python_VR_Spark/lastCompletedBuild/">
             <img alt="Build Status" src="https://ci-beam.apache.org/job/beam_PostCommit_Python_VR_Spark/lastCompletedBuild/badge/icon">
           </a>
         </td>
         <td>---</td>
       </tr>
       <tr>
         <td>XLang</td>
         <td>
           <a href="https://ci-beam.apache.org/job/beam_PostCommit_XVR_Direct/lastCompletedBuild/">
             <img alt="Build Status" src="https://ci-beam.apache.org/job/beam_PostCommit_XVR_Direct/lastCompletedBuild/badge/icon">
           </a>
         </td>
         <td>
           <a href="https://ci-beam.apache.org/job/beam_PostCommit_XVR_Dataflow/lastCompletedBuild/">
             <img alt="Build Status" src="https://ci-beam.apache.org/job/beam_PostCommit_XVR_Dataflow/lastCompletedBuild/badge/icon">
           </a>
         </td>
         <td>
           <a href="https://ci-beam.apache.org/job/beam_PostCommit_XVR_Flink/lastCompletedBuild/">
             <img alt="Build Status" src="https://ci-beam.apache.org/job/beam_PostCommit_XVR_Flink/lastCompletedBuild/badge/icon">
           </a>
         </td>
         <td>
           <a href="https://ci-beam.apache.org/job/beam_PostCommit_XVR_Samza/lastCompletedBuild/">
             <img alt="Build Status" src="https://ci-beam.apache.org/job/beam_PostCommit_XVR_Samza/lastCompletedBuild/badge/icon">
           </a>
         </td>
         <td>
           <a href="https://ci-beam.apache.org/job/beam_PostCommit_XVR_Spark/lastCompletedBuild/">
             <img alt="Build Status" src="https://ci-beam.apache.org/job/beam_PostCommit_XVR_Spark/lastCompletedBuild/badge/icon">
           </a>
         </td>
         <td>---</td>
       </tr>
     </tbody>
   </table>
   
   Examples testing status on various runners
   --------------------------------------------------------
   
   <table>
     <thead>
       <tr>
         <th>Lang</th>
         <th>ULR</th>
         <th>Dataflow</th>
         <th>Flink</th>
         <th>Samza</th>
         <th>Spark</th>
         <th>Twister2</th>
       </tr>
     </thead>
     <tbody>
       <tr>
         <td>Go</td>
         <td>---</td>
         <td>---</td>
         <td>---</td>
         <td>---</td>
         <td>---</td>
         <td>---</td>
         <td>---</td>
       </tr>
       <tr>
         <td>Java</td>
         <td>---</td>
         <td>
           <a href="https://ci-beam.apache.org/job/beam_PreCommit_Java_Examples_Dataflow_Cron/lastCompletedBuild/">
             <img alt="Build Status" src="https://ci-beam.apache.org/job/beam_PreCommit_Java_Examples_Dataflow_Cron/lastCompletedBuild/badge/icon?subject=V1">
           </a><br>
           <a href="https://ci-beam.apache.org/job/beam_PreCommit_Java_Examples_Dataflow_Java11_Cron/lastCompletedBuild/">
             <img alt="Build Status" src="https://ci-beam.apache.org/job/beam_PreCommit_Java_Examples_Dataflow_Java11_Cron/lastCompletedBuild/badge/icon?subject=V1+Java11">
           </a><br>
           <a href="https://ci-beam.apache.org/job/beam_PostCommit_Java_Examples_Dataflow_V2/lastCompletedBuild/">
             <img alt="Build Status" src="https://ci-beam.apache.org/job/beam_PostCommit_Java_Examples_Dataflow_V2/lastCompletedBuild/badge/icon?subject=V2">
           </a><br>
         </td>
         <td>---</td>
         <td>---</td>
         <td>---</td>
         <td>---</td>
         <td>---</td>
       </tr>
       <tr>
         <td>Python</td>
         <td>---</td>
         <td>---</td>
         <td>---</td>
         <td>---</td>
         <td>---</td>
         <td>---</td>
         <td>---</td>
       </tr>
       <tr>
         <td>XLang</td>
         <td>---</td>
         <td>---</td>
         <td>---</td>
         <td>---</td>
         <td>---</td>
         <td>---</td>
         <td>---</td>
       </tr>
     </tbody>
   </table>
   
   Post-Commit SDK/Transform Integration Tests Status (on master branch)
   ------------------------------------------------------------------------------------------------
   
   <table>
     <thead>
       <tr>
         <th>Go</th>
         <th>Java</th>
         <th>Python</th>
       </tr>
     </thead>
     <tbody>
       <tr>
         <td>
           <a href="https://ci-beam.apache.org/job/beam_PostCommit_Go/lastCompletedBuild/">
             <img alt="Build Status" src="https://ci-beam.apache.org/job/beam_PostCommit_Go/lastCompletedBuild/badge/icon">
           </a>
         </td>
         <td>
           <a href="https://ci-beam.apache.org/job/beam_PostCommit_Java/lastCompletedBuild/">
             <img alt="Build Status" src="https://ci-beam.apache.org/job/beam_PostCommit_Java/lastCompletedBuild/badge/icon">
           </a>
         </td>
         <td>
           <a href="https://ci-beam.apache.org/job/beam_PostCommit_Python36/lastCompletedBuild/">
             <img alt="Build Status" src="https://ci-beam.apache.org/job/beam_PostCommit_Python36/lastCompletedBuild/badge/icon?subject=3.6">
           </a><br>
           <a href="https://ci-beam.apache.org/job/beam_PostCommit_Python37/lastCompletedBuild/">
             <img alt="Build Status" src="https://ci-beam.apache.org/job/beam_PostCommit_Python37/lastCompletedBuild/badge/icon?subject=3.7">
           </a><br>
           <a href="https://ci-beam.apache.org/job/beam_PostCommit_Python38/lastCompletedBuild/">
             <img alt="Build Status" src="https://ci-beam.apache.org/job/beam_PostCommit_Python38/lastCompletedBuild/badge/icon?subject=3.8">
           </a>
         </td>
       </tr>
     </tbody>
   </table>
   
   Pre-Commit Tests Status (on master branch)
   ------------------------------------------------------------------------------------------------
   
   <table>
     <thead>
       <tr>
         <th>---</th>
         <th>Java</th>
         <th>Python</th>
         <th>Go</th>
         <th>Website</th>
         <th>Whitespace</th>
         <th>Typescript</th>
       </tr>
     </thead>
     <tbody>
       <tr>
         <td>Non-portable</td>
         <td>
           <a href="https://ci-beam.apache.org/job/beam_PreCommit_Java_Cron/lastCompletedBuild/">
             <img alt="Build Status" src="https://ci-beam.apache.org/job/beam_PreCommit_Java_Cron/lastCompletedBuild/badge/icon">
           </a><br>
         </td>
         <td>
           <a href="https://ci-beam.apache.org/job/beam_PreCommit_Python_Cron/lastCompletedBuild/">
             <img alt="Build Status" src="https://ci-beam.apache.org/job/beam_PreCommit_Python_Cron/lastCompletedBuild/badge/icon?subject=Tests">
           </a><br>
           <a href="https://ci-beam.apache.org/job/beam_PreCommit_PythonLint_Cron/lastCompletedBuild/">
             <img alt="Build Status" src="https://ci-beam.apache.org/job/beam_PreCommit_PythonLint_Cron/lastCompletedBuild/badge/icon?subject=Lint">
           </a><br>
           <a href="https://ci-beam.apache.org/job/beam_PreCommit_PythonDocker_Cron/lastCompletedBuild/">
             <img alt="Build Status" src="https://ci-beam.apache.org/job/beam_PreCommit_PythonDocker_Cron/badge/icon?subject=Docker">
           </a><br>
           <a href="https://ci-beam.apache.org/job/beam_PreCommit_PythonDocs_Cron/lastCompletedBuild/">
             <img alt="Build Status" src="https://ci-beam.apache.org/job/beam_PreCommit_PythonDocs_Cron/badge/icon?subject=Docs">
           </a>
         </td>
         <td>
           <a href="https://ci-beam.apache.org/job/beam_PreCommit_Go_Cron/lastCompletedBuild/">
             <img alt="Build Status" src="https://ci-beam.apache.org/job/beam_PreCommit_Go_Cron/lastCompletedBuild/badge/icon">
           </a>
         </td>
         <td>
           <a href="https://ci-beam.apache.org/job/beam_PreCommit_Website_Cron/lastCompletedBuild/">
             <img alt="Build Status" src="https://ci-beam.apache.org/job/beam_PreCommit_Website_Cron/lastCompletedBuild/badge/icon">
           </a>
         </td>
         <td>
           <a href="https://ci-beam.apache.org/job/beam_PreCommit_Whitespace_Cron/lastCompletedBuild/">
             <img alt="Build Status" src="https://ci-beam.apache.org/job/beam_PreCommit_Whitespace_Cron/lastCompletedBuild/badge/icon">
           </a>
         </td>
         <td>
           <a href="https://ci-beam.apache.org/job/beam_PreCommit_Typescript_Cron/lastCompletedBuild/">
             <img alt="Build Status" src="https://ci-beam.apache.org/job/beam_PreCommit_Typescript_Cron/lastCompletedBuild/badge/icon">
           </a>
         </td>
       </tr>
       <tr>
         <td>Portable</td>
         <td>---</td>
         <td>
           <a href="https://ci-beam.apache.org/job/beam_PreCommit_Portable_Python_Cron/lastCompletedBuild/">
             <img alt="Build Status" src="https://ci-beam.apache.org/job/beam_PreCommit_Portable_Python_Cron/lastCompletedBuild/badge/icon">
           </a>
         </td>
         <td>
           <a href="https://ci-beam.apache.org/job/beam_PreCommit_GoPortable_Cron/lastCompletedBuild/">
             <img alt="Build Status" src="https://ci-beam.apache.org/job/beam_PreCommit_GoPortable_Cron/lastCompletedBuild/badge/icon">
           </a>
         </td>
         <td>---</td>
         <td>---</td>
         <td>---</td>
       </tr>
     </tbody>
   </table>
   
   See [.test-infra/jenkins/README](https://github.com/apache/beam/blob/master/.test-infra/jenkins/README.md) for trigger phrase, status and link of all Jenkins jobs.
   
   
   GitHub Actions Tests Status (on master branch)
   ------------------------------------------------------------------------------------------------
   [![Build python source distribution and wheels](https://github.com/apache/beam/workflows/Build%20python%20source%20distribution%20and%20wheels/badge.svg?branch=master&event=schedule)](https://github.com/apache/beam/actions?query=workflow%3A%22Build+python+source+distribution+and+wheels%22+branch%3Amaster+event%3Aschedule)
   [![Python tests](https://github.com/apache/beam/workflows/Python%20tests/badge.svg?branch=master&event=schedule)](https://github.com/apache/beam/actions?query=workflow%3A%22Python+Tests%22+branch%3Amaster+event%3Aschedule)
   [![Java tests](https://github.com/apache/beam/workflows/Java%20Tests/badge.svg?branch=master&event=schedule)](https://github.com/apache/beam/actions?query=workflow%3A%22Java+Tests%22+branch%3Amaster+event%3Aschedule)
   
   See [CI.md](https://github.com/apache/beam/blob/master/CI.md) for more information about GitHub Actions CI.
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: github-unsubscribe@beam.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



[GitHub] [beam] lostluck commented on a change in pull request #15894: [Go SDK] Go SDK Exits Experimental

Posted by GitBox <gi...@apache.org>.
lostluck commented on a change in pull request #15894:
URL: https://github.com/apache/beam/pull/15894#discussion_r743854409



##########
File path: website/www/site/content/en/blog/go-sdk-release.md
##########
@@ -0,0 +1,163 @@
+---
+title:  "Go SDK Exits Experimental in Apache Beam 2.33.0"
+date:   2021-11-04 00:00:01 -0800
+categories:
+  - blog
+authors:
+  - lostluck
+---
+<!--
+Licensed 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.
+-->
+
+Apache Beam’s latest release, version [2.33.0](/get-started/downloads/), is the first official release of the long experimental Go SDK.
+Built with the [Go Programming Language](https://golang.org/), the Go SDK joins the Java and Python SDKs as the third implementation of the Beam programming model.
+
+<!--more-->
+
+## Using the new Go SDK.
+
+New users of the Go SDK can start using it in their Go programs by importing the main beam package:
+
+```
+import "github.com/apache/beam/sdks/v2/go/pkg/beam"
+```
+
+The next run of `go mod tidy` will fetch the latest stable version of the module.
+Alternatively executing `go get github.com/apache/beam/sdks/v2/go/pkg/beam` will download it to the local module cache immeadiately, and add it to your `go.mod` file.
+
+Existing users of the experimental Go SDK need to update to new `v2` import paths to start using the latest versions of the SDK.
+This is can be done by adding `v2` to the import paths, changing `github.com/apache/beam/sdks/go/`... to `github.com/apache/beam/sdks/v2/go/`... where applicable, and then running `go mod tidy`.
+
+Further documentation on using the SDK is available in the [Beam Programming Guide](/documentation/programming-guide/), and in the package Go Doc at https://pkg.go.dev/github.com/apache/beam/sdks/v2/go/pkg/beam.
+
+## Feature Support
+
+At time of writing, the Go SDK is currently "Batteries Not Included".
+This means that there are gaps or edge cases in supported IOs and transforms.
+That said, the core of the SDK enables a great deal of the Beam Model for
+custom user use, supporting following features:
+
+* PTransforms
+  * Impulse
+  * Create
+  * ParDo w/User DoFns
+    * Iterable Side Inputs
+    * Multiple Output emitters
+    * Receive and Return Key Value pairs
+    * EventTime
+    * SplittableDoFns
+  * GroupByKey and CoGroupByKey
+  * CombineFns for use with Combine and CombinePerKey
+  * Windowing
+    * Global, Fixed intervals, Sliding windows, and Session
+    * Aggregating over windowed PCollections w/GBKs or Combines.
+  * Flatten
+  * Partition
+  * Composites
+  * Cross Language Transforms
+* Coders
+  * Primitive Go types (ints, string, []bytes, and more)
+  * Beam Schemas for Go Struct types (including struct, slice, and map fields)
+  * Registering custom coders
+* Metrics
+  * PCollection metrics (ElementCount, Size Estimates)
+  * Custom User Metrics
+  * Post job user metrics querying (coming in 2.34.0)
+  * DoFn profiling metrics (coming in 2.35.0)
+* Provided Built Transforms
+  * Sum, Count, Min, Max, Top, Filter
+  * Scalable TextIO Reading

Review comment:
       Ah that's a typo for sure. Thanks!




-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: github-unsubscribe@beam.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



[GitHub] [beam] lostluck merged pull request #15894: [Go SDK] Go SDK Exits Experimental

Posted by GitBox <gi...@apache.org>.
lostluck merged pull request #15894:
URL: https://github.com/apache/beam/pull/15894


   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: github-unsubscribe@beam.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



[GitHub] [beam] lostluck commented on pull request #15894: [Go SDK] Go SDK Exits Experimental

Posted by GitBox <gi...@apache.org>.
lostluck commented on pull request #15894:
URL: https://github.com/apache/beam/pull/15894#issuecomment-961312034






-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: github-unsubscribe@beam.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



[GitHub] [beam] apilloud commented on a change in pull request #15894: [Go SDK] Go SDK Exits Experimental

Posted by GitBox <gi...@apache.org>.
apilloud commented on a change in pull request #15894:
URL: https://github.com/apache/beam/pull/15894#discussion_r743098698



##########
File path: website/www/site/content/en/roadmap/go-sdk.md
##########
@@ -17,55 +17,14 @@ limitations under the License.
 
 # Go SDK Roadmap
 
-The Go SDK is currently experimental. As the first purely portable Beam SDK, the Go SDK is constrained
-by the status of the [Beam Portability Framework](https://beam.apache.org/roadmap/portability/) and the existence of
-portable runners.
+The Go SDK is [fully released as of v2.34.0](https://beam.apache.org/blog/go-sdk-release/).

Review comment:
       All your URLs should be relative. (Drop the 'https://beam.apache.org' prefix.)




-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: github-unsubscribe@beam.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



[GitHub] [beam] lukecwik commented on a change in pull request #15894: [Go SDK] Go SDK Exits Experimental

Posted by GitBox <gi...@apache.org>.
lukecwik commented on a change in pull request #15894:
URL: https://github.com/apache/beam/pull/15894#discussion_r743890775



##########
File path: website/www/site/content/en/blog/go-sdk-release.md
##########
@@ -0,0 +1,161 @@
+---
+title:  "Go SDK Exits Experimental in Apache Beam 2.33.0"
+date:   2021-11-04 00:00:01 -0800
+categories:
+  - blog
+authors:
+  - lostluck
+---
+<!--
+Licensed 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.
+-->
+
+Apache Beam’s latest release, version [2.33.0](/get-started/downloads/), is the first official release of the long experimental Go SDK.
+Built with the [Go Programming Language](https://golang.org/), the Go SDK joins the Java and Python SDKs as the third implementation of the Beam programming model.
+
+<!--more-->
+
+## Using the new Go SDK.
+
+New users of the Go SDK can start using it in their Go programs by importing the main beam package:
+
+```
+import "github.com/apache/beam/sdks/v2/go/pkg/beam"
+```
+
+The next run of `go mod tidy` will fetch the latest stable version of the module.
+Alternatively executing `go get github.com/apache/beam/sdks/v2/go/pkg/beam` will download it to the local module cache immeadiately, and add it to your `go.mod` file.
+
+Existing users of the experimental Go SDK need to update to new `v2` import paths to start using the latest versions of the SDK.
+This is can be done by adding `v2` to the import paths, changing `github.com/apache/beam/sdks/go/`... to `github.com/apache/beam/sdks/v2/go/`... where applicable, and then running `go mod tidy`.

Review comment:
       ```suggestion
   This can be done by adding `v2` to the import paths, changing `github.com/apache/beam/sdks/go/`... to `github.com/apache/beam/sdks/v2/go/`... where applicable, and then running `go mod tidy`.
   ```

##########
File path: website/www/site/content/en/blog/go-sdk-release.md
##########
@@ -0,0 +1,161 @@
+---
+title:  "Go SDK Exits Experimental in Apache Beam 2.33.0"
+date:   2021-11-04 00:00:01 -0800
+categories:
+  - blog
+authors:
+  - lostluck
+---
+<!--
+Licensed 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.
+-->
+
+Apache Beam’s latest release, version [2.33.0](/get-started/downloads/), is the first official release of the long experimental Go SDK.
+Built with the [Go Programming Language](https://golang.org/), the Go SDK joins the Java and Python SDKs as the third implementation of the Beam programming model.
+
+<!--more-->
+
+## Using the new Go SDK.
+
+New users of the Go SDK can start using it in their Go programs by importing the main beam package:
+
+```
+import "github.com/apache/beam/sdks/v2/go/pkg/beam"
+```
+
+The next run of `go mod tidy` will fetch the latest stable version of the module.
+Alternatively executing `go get github.com/apache/beam/sdks/v2/go/pkg/beam` will download it to the local module cache immeadiately, and add it to your `go.mod` file.
+
+Existing users of the experimental Go SDK need to update to new `v2` import paths to start using the latest versions of the SDK.
+This is can be done by adding `v2` to the import paths, changing `github.com/apache/beam/sdks/go/`... to `github.com/apache/beam/sdks/v2/go/`... where applicable, and then running `go mod tidy`.
+
+Further documentation on using the SDK is available in the [Beam Programming Guide](/documentation/programming-guide/), and in the package [Go Doc](https://pkg.go.dev/github.com/apache/beam/sdks/v2/go/pkg/beam).
+
+## Feature Support
+
+At time of writing, the Go SDK is currently "Batteries Not Included".
+This means that there are gaps or edge cases in supported IOs and transforms.
+That said, the core of the SDK enables a great deal of the Beam Model for
+custom user use, supporting following features:
+
+* PTransforms
+  * Impulse
+  * Create
+  * ParDo with user DoFns
+    * Iterable side inputs
+    * Multiple output emitters
+    * Receive and return key-value pairs
+    * SplittableDoFns
+  * GroupByKey and CoGroupByKey
+  * CombineFns for use with Combine and CombinePerKey
+  * Flatten
+  * Partition
+  * Composite transforms
+  * Cross language transforms
+* EventTime windowing
+  * Global, Fixed Interval, Sliding, and Session windows
+  * Aggregating over windowed PCollections with GroupByKeys or Combines.

Review comment:
       ```suggestion
     * Aggregating over windowed PCollections with GroupByKeys or Combines
   ```

##########
File path: website/www/site/content/en/roadmap/go-sdk.md
##########
@@ -17,55 +17,14 @@ limitations under the License.
 
 # Go SDK Roadmap
 
-The Go SDK is currently experimental. As the first purely portable Beam SDK, the Go SDK is constrained
-by the status of the [Beam Portability Framework](https://beam.apache.org/roadmap/portability/) and the existence of
-portable runners.
+The Go SDK is [fully released as of v2.33.0](/blog/go-sdk-release/).
 
-**April 2020 Update**
-This year we hope to move the SDK out of experimental at least for Batch usage.
+The Go SDK the first SDK purely on the [Beam Portability Framework](/roadmap/portability/)
+and can execute pipelines on portable runners, like Flink, Spark, Samza, and Google Cloud Dataflow.
 
-To do so, there are a few blocking changes:
-  * Support Interoperability with other SDKs
-  * Scalable IOs
-  * Portability Proto stability
-  * Go Ecosystem integration improvements
-
-Interoperability while not a blocking feature in itself, requires Beam Schema support, which
-the SDK could then use as it's default coder. Batch Splittable DoFns are nearly ready for
-playing with on Flink, and the Python Direct Runner, answering the scalable batch IO question.
-There's much work getting the portability protos to a stable baseline. This will allow runner
-and SDK independance, so they don't need to be updated in lockstep. Finally, the Go SDK should
-adopt Go Modules as it's versioning solution, and officially "catch up" with the current beam
-version.
-
-The Go SDK has the following goals for the next few months:
-
-## Usability
-
-* Beam Schema Support [BEAM-9615](https://issues.apache.org/jira/browse/BEAM-9615)
-* Improvements to starcgen [BEAM-9616](https://issues.apache.org/jira/browse/BEAM-9616)
-
-## Integrating with the Go ecosystem
-
-The authors of the Go SDK intended to keep the parts of the language we love, and intend for
-user pipelines to be as close to ordinary Go as possible, minimizing framework boiler plate code.
-
-* Migrate to a vanity URL path [BEAM-4115](https://issues.apache.org/jira/browse/BEAM-4115)
-* Package versioning support [BEAM-5379](https://issues.apache.org/jira/browse/BEAM-5379)
-
-## Implement Portability features
-
-The following are dependant on the features being implemented in the Portability Framework.
-
-* Splitable DoFns (SDFs) for Scalable IO [BEAM-3301](https://issues.apache.org/jira/browse/BEAM-3301)
-  * This is the primary blocker for the Go SDK to scale to ingest large numbers of elements in both batch and streaming.
-* Triggers and Timers [BEAM-3304](https://issues.apache.org/jira/browse/BEAM-3304)
-* Advanced WindowFns
-   * Session windows [BEAM-4152](https://issues.apache.org/jira/browse/BEAM-4152)
-   * Custom WindowFns (dependant on streaming Splitable DoFn support) [BEAM-2939](https://issues.apache.org/jira/browse/BEAM-2939)
-
-Without SDFs, IOs are always constrained to work on a single machine prior to a sharding operation (like CoGroupByKey),
-which makes scalable IOs difficult to impossible to write.
+Current roadmap:
+* continue building up Streaming facing features, as described on the [Beam Dev Wiki](https://cwiki.apache.org/confluence/display/BEAM/Supporting+Streaming+in+the+Go+SDK).
+* improve Connector support via Cross Language transforms, and improving scalable native transforms. [Go SDK Connector Roadmap](/roadmap/connectors-go-sdk/)

Review comment:
       ```suggestion
   * improve IO support via cross language transforms and improve scalable native transforms. [Go SDK Connector Roadmap](/roadmap/connectors-go-sdk/)
   ```

##########
File path: website/www/site/content/en/blog/go-sdk-release.md
##########
@@ -0,0 +1,161 @@
+---
+title:  "Go SDK Exits Experimental in Apache Beam 2.33.0"
+date:   2021-11-04 00:00:01 -0800
+categories:
+  - blog
+authors:
+  - lostluck
+---
+<!--
+Licensed 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.
+-->
+
+Apache Beam’s latest release, version [2.33.0](/get-started/downloads/), is the first official release of the long experimental Go SDK.
+Built with the [Go Programming Language](https://golang.org/), the Go SDK joins the Java and Python SDKs as the third implementation of the Beam programming model.
+
+<!--more-->
+
+## Using the new Go SDK.
+
+New users of the Go SDK can start using it in their Go programs by importing the main beam package:
+
+```
+import "github.com/apache/beam/sdks/v2/go/pkg/beam"
+```
+
+The next run of `go mod tidy` will fetch the latest stable version of the module.
+Alternatively executing `go get github.com/apache/beam/sdks/v2/go/pkg/beam` will download it to the local module cache immeadiately, and add it to your `go.mod` file.
+
+Existing users of the experimental Go SDK need to update to new `v2` import paths to start using the latest versions of the SDK.
+This is can be done by adding `v2` to the import paths, changing `github.com/apache/beam/sdks/go/`... to `github.com/apache/beam/sdks/v2/go/`... where applicable, and then running `go mod tidy`.
+
+Further documentation on using the SDK is available in the [Beam Programming Guide](/documentation/programming-guide/), and in the package [Go Doc](https://pkg.go.dev/github.com/apache/beam/sdks/v2/go/pkg/beam).
+
+## Feature Support
+
+At time of writing, the Go SDK is currently "Batteries Not Included".
+This means that there are gaps or edge cases in supported IOs and transforms.
+That said, the core of the SDK enables a great deal of the Beam Model for
+custom user use, supporting following features:
+
+* PTransforms
+  * Impulse
+  * Create
+  * ParDo with user DoFns
+    * Iterable side inputs
+    * Multiple output emitters
+    * Receive and return key-value pairs
+    * SplittableDoFns
+  * GroupByKey and CoGroupByKey
+  * CombineFns for use with Combine and CombinePerKey
+  * Flatten
+  * Partition
+  * Composite transforms
+  * Cross language transforms
+* EventTime windowing
+  * Global, Fixed Interval, Sliding, and Session windows
+  * Aggregating over windowed PCollections with GroupByKeys or Combines.
+* Coders
+  * Primitive Go types (ints, string, []bytes, and more)
+  * Beam Schemas for Go Struct types (including struct, slice, and map fields)
+  * Registering custom coders
+* Metrics
+  * PCollection metrics (element counts, size estimates)
+  * Custom user metrics
+  * Post job user metrics querying (coming in 2.34.0)
+  * DoFn profiling metrics (coming in 2.35.0)
+* Built-in transforms
+  * Sum, count, min, max, top, filter
+  * Scalable TextIO reading
+
+Upcoming features support roadmap, and known issues are discussed below.
+In particular, we plan to support a much richer set of IO connectors via Beam's cross-language capabilities.
+
+## Releases
+
+With this release, the Go SDK now uses [Go Modules](https://golang.org/ref/mod) for dependency management.
+This makes it so users, SDK authors, and the testing infrastructure can all rely on the same versions of dependencies, making builds reproducible.
+This also makes [validating Go SDK Release Candidates simple](/blog/validate-beam-release/#configuring-a-go-build-to-validate-a-beam-release-candidate).
+
+Versioned SDK worker containers are now built and [published](https://hub.docker.com/r/apache/beam_go_sdk/tags?page=1&ordering=last_updated), with the SDK using matched tagged versions.
+User jobs no longer need to specify a container to use for released versions, except when using custom containers.
+
+## Compatibility
+
+The Go SDK will largely follow suit with the Go notion of compatibility.
+Some concessions are made to keep all SDKs together on the same release cycle.
+
+### Language Compatibility
+
+The SDK will be tested at a minimum [Go Programming Language version of 1.16](https://golang.org/doc/devel/release), and use available language features and standard library packages accordingly.
+To maintain a broad compatibility, the Go SDK will not require the latest major version of Go.
+We expect to follow the 2nd newest supported release of the language, with a possible exception when Go 1.18 is released, in order to begin experimenting with [Go Generics](https://go.dev/blog/generics-proposal) in the SDK.
+Release notes will call out when the minimum version of the language changes.
+
+### Package Compatibility
+
+The primary user packages will avoid changing in backwards incompatible ways for core features.
+This is to be inline with Go's notion of the [`import compatibility rule`](https://research.swtch.com/vgo-import).
+
+> If an old package and a new package have the same import path,
+> the new package must be backwards compatible with the old package.
+
+Exceptions to this policy are around newer, experimental, or in development features and are subject to change.
+Such features will have a doc comment noting the experimental status.
+Major changes will be mentioned in the release notes.
+For example, using `beam.WindowInto` with Triggers is currently experimental and may have the API changed in a future release.
+
+Primary user packages include:
+* The main beam package `github.com/apache/beam/sdks/v2/go/pkg/beam`
+* Sub packages under `.../transforms`, `.../io`, `.../runners`, and `.../testing`.
+
+Generally, packages in the module other than the primary user packages are for framework use and are at risk of changing.
+
+### Known Issues
+
+#### Batteries not included.
+* Current native transforms are undertested.
+* IOs may not be written to scale.
+* Go Direct Runner is incomplete and is not portable, prefer using the Python Portable runner, or Flink.
+  * Doesn't support side input windowing. [BEAM-13075](https://issues.apache.org/jira/browse/BEAM-13075)
+  * Doesn't serialize data, making it unlikely to catch coder issues [BEAM-6372](https://issues.apache.org/jira/browse/BEAM-6372)
+  * Can use other general improvements, and become portable [BEAM-11076](https://issues.apache.org/jira/browse/BEAM-11076)
+* Current Trigger API is under iteration and subject to change [BEAM-3304](https://issues.apache.org/jira/browse/BEAM-3304).
+  * API has a possible breaking change between 2.33.0 and 2.34.0, and may change again.
+* Support of the SDK on services, like Google Cloud Dataflow, remains at the service owner's discretion.
+* Need something?
+  * File a ticket in the [Beam JIRA](https://issues.apache.org/jira/issues/?jql=project%20%3D%20BEAM%20AND%20component%20%3D%20sdk-go) and,
+  * Email the [dev@beam.apache.org](mailto:dev@beam.apache.org?subject=%5BGo%20SDK%20Feature%5D) list!
+
+#### Fixed in 2.34.0
+  * `top.SmallestPerKey` was broken [BEAM-12946](https://issues.apache.org/jira/browse/BEAM-12946)
+  * `beam.TryCrossLanguage` API didn't match non-Try version [BEAM-9918](https://issues.apache.org/jira/browse/BEAM-9918)
+    * This is a breaking change if one was calling `beam.TryCrossLanguage`
+
+#### Fixed in 2.35.0
+  * Non-global window Side Inputs don't match (correctness bug) [BEAM-11087](https://issues.apache.org/jira/browse/BEAM-11087)
+    * Until 2.35.0 it's not recommended to use Side Inputs that are not using the global window.
+  * DoFns using Side Inputs accumulate memory over bundles, causing OOMs [BEAM-13130](https://issues.apache.org/jira/browse/BEAM-13130)
+
+## Roadmap
+
+The [SDK roadmap](/roadmap/go-sdk/) has been updated.
+Ongoing focus is to bolster streaming focused features, improve existing connectors, and make connectors easier to implement.
+
+In the nearer term this comes in the form of improvements to Side Inputs, and providing wrappers and improving ease-of-use for Cross Language Transforms from Java.

Review comment:
       ```suggestion
   In the nearer term this comes in the form of improvements to side inputs, and providing wrappers and improving ease-of-use for cross language transforms from Java.
   ```

##########
File path: website/www/site/content/en/blog/go-sdk-release.md
##########
@@ -0,0 +1,161 @@
+---
+title:  "Go SDK Exits Experimental in Apache Beam 2.33.0"
+date:   2021-11-04 00:00:01 -0800
+categories:
+  - blog
+authors:
+  - lostluck
+---
+<!--
+Licensed 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.
+-->
+
+Apache Beam’s latest release, version [2.33.0](/get-started/downloads/), is the first official release of the long experimental Go SDK.
+Built with the [Go Programming Language](https://golang.org/), the Go SDK joins the Java and Python SDKs as the third implementation of the Beam programming model.
+
+<!--more-->
+
+## Using the new Go SDK.
+
+New users of the Go SDK can start using it in their Go programs by importing the main beam package:
+
+```
+import "github.com/apache/beam/sdks/v2/go/pkg/beam"
+```
+
+The next run of `go mod tidy` will fetch the latest stable version of the module.
+Alternatively executing `go get github.com/apache/beam/sdks/v2/go/pkg/beam` will download it to the local module cache immeadiately, and add it to your `go.mod` file.
+
+Existing users of the experimental Go SDK need to update to new `v2` import paths to start using the latest versions of the SDK.
+This is can be done by adding `v2` to the import paths, changing `github.com/apache/beam/sdks/go/`... to `github.com/apache/beam/sdks/v2/go/`... where applicable, and then running `go mod tidy`.
+
+Further documentation on using the SDK is available in the [Beam Programming Guide](/documentation/programming-guide/), and in the package [Go Doc](https://pkg.go.dev/github.com/apache/beam/sdks/v2/go/pkg/beam).
+
+## Feature Support
+
+At time of writing, the Go SDK is currently "Batteries Not Included".
+This means that there are gaps or edge cases in supported IOs and transforms.
+That said, the core of the SDK enables a great deal of the Beam Model for
+custom user use, supporting following features:
+
+* PTransforms
+  * Impulse
+  * Create
+  * ParDo with user DoFns
+    * Iterable side inputs
+    * Multiple output emitters
+    * Receive and return key-value pairs
+    * SplittableDoFns
+  * GroupByKey and CoGroupByKey
+  * CombineFns for use with Combine and CombinePerKey
+  * Flatten
+  * Partition
+  * Composite transforms
+  * Cross language transforms
+* EventTime windowing
+  * Global, Fixed Interval, Sliding, and Session windows
+  * Aggregating over windowed PCollections with GroupByKeys or Combines.
+* Coders
+  * Primitive Go types (ints, string, []bytes, and more)
+  * Beam Schemas for Go Struct types (including struct, slice, and map fields)
+  * Registering custom coders
+* Metrics
+  * PCollection metrics (element counts, size estimates)
+  * Custom user metrics
+  * Post job user metrics querying (coming in 2.34.0)
+  * DoFn profiling metrics (coming in 2.35.0)
+* Built-in transforms
+  * Sum, count, min, max, top, filter
+  * Scalable TextIO reading
+
+Upcoming features support roadmap, and known issues are discussed below.
+In particular, we plan to support a much richer set of IO connectors via Beam's cross-language capabilities.
+
+## Releases
+
+With this release, the Go SDK now uses [Go Modules](https://golang.org/ref/mod) for dependency management.
+This makes it so users, SDK authors, and the testing infrastructure can all rely on the same versions of dependencies, making builds reproducible.
+This also makes [validating Go SDK Release Candidates simple](/blog/validate-beam-release/#configuring-a-go-build-to-validate-a-beam-release-candidate).
+
+Versioned SDK worker containers are now built and [published](https://hub.docker.com/r/apache/beam_go_sdk/tags?page=1&ordering=last_updated), with the SDK using matched tagged versions.

Review comment:
       ```suggestion
   Versioned SDK worker containers are now built and [published](https://hub.docker.com/r/apache/beam_go_sdk/tags?page=1&ordering=last_updated), with the SDK using matching tagged versions.
   ```

##########
File path: website/www/site/content/en/blog/go-sdk-release.md
##########
@@ -0,0 +1,161 @@
+---
+title:  "Go SDK Exits Experimental in Apache Beam 2.33.0"
+date:   2021-11-04 00:00:01 -0800
+categories:
+  - blog
+authors:
+  - lostluck
+---
+<!--
+Licensed 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.
+-->
+
+Apache Beam’s latest release, version [2.33.0](/get-started/downloads/), is the first official release of the long experimental Go SDK.
+Built with the [Go Programming Language](https://golang.org/), the Go SDK joins the Java and Python SDKs as the third implementation of the Beam programming model.
+
+<!--more-->
+
+## Using the new Go SDK.
+
+New users of the Go SDK can start using it in their Go programs by importing the main beam package:
+
+```
+import "github.com/apache/beam/sdks/v2/go/pkg/beam"
+```
+
+The next run of `go mod tidy` will fetch the latest stable version of the module.
+Alternatively executing `go get github.com/apache/beam/sdks/v2/go/pkg/beam` will download it to the local module cache immeadiately, and add it to your `go.mod` file.
+
+Existing users of the experimental Go SDK need to update to new `v2` import paths to start using the latest versions of the SDK.
+This is can be done by adding `v2` to the import paths, changing `github.com/apache/beam/sdks/go/`... to `github.com/apache/beam/sdks/v2/go/`... where applicable, and then running `go mod tidy`.
+
+Further documentation on using the SDK is available in the [Beam Programming Guide](/documentation/programming-guide/), and in the package [Go Doc](https://pkg.go.dev/github.com/apache/beam/sdks/v2/go/pkg/beam).
+
+## Feature Support
+
+At time of writing, the Go SDK is currently "Batteries Not Included".
+This means that there are gaps or edge cases in supported IOs and transforms.
+That said, the core of the SDK enables a great deal of the Beam Model for
+custom user use, supporting following features:
+
+* PTransforms
+  * Impulse
+  * Create
+  * ParDo with user DoFns
+    * Iterable side inputs
+    * Multiple output emitters
+    * Receive and return key-value pairs
+    * SplittableDoFns
+  * GroupByKey and CoGroupByKey
+  * CombineFns for use with Combine and CombinePerKey
+  * Flatten
+  * Partition
+  * Composite transforms
+  * Cross language transforms
+* EventTime windowing
+  * Global, Fixed Interval, Sliding, and Session windows

Review comment:
       ```suggestion
     * Global, Interval, Sliding, and Session windows
   ```

##########
File path: website/www/site/content/en/blog/go-sdk-release.md
##########
@@ -0,0 +1,161 @@
+---
+title:  "Go SDK Exits Experimental in Apache Beam 2.33.0"
+date:   2021-11-04 00:00:01 -0800
+categories:
+  - blog
+authors:
+  - lostluck
+---
+<!--
+Licensed 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.
+-->
+
+Apache Beam’s latest release, version [2.33.0](/get-started/downloads/), is the first official release of the long experimental Go SDK.
+Built with the [Go Programming Language](https://golang.org/), the Go SDK joins the Java and Python SDKs as the third implementation of the Beam programming model.
+
+<!--more-->
+
+## Using the new Go SDK.
+
+New users of the Go SDK can start using it in their Go programs by importing the main beam package:
+
+```
+import "github.com/apache/beam/sdks/v2/go/pkg/beam"
+```
+
+The next run of `go mod tidy` will fetch the latest stable version of the module.
+Alternatively executing `go get github.com/apache/beam/sdks/v2/go/pkg/beam` will download it to the local module cache immeadiately, and add it to your `go.mod` file.
+
+Existing users of the experimental Go SDK need to update to new `v2` import paths to start using the latest versions of the SDK.
+This is can be done by adding `v2` to the import paths, changing `github.com/apache/beam/sdks/go/`... to `github.com/apache/beam/sdks/v2/go/`... where applicable, and then running `go mod tidy`.
+
+Further documentation on using the SDK is available in the [Beam Programming Guide](/documentation/programming-guide/), and in the package [Go Doc](https://pkg.go.dev/github.com/apache/beam/sdks/v2/go/pkg/beam).
+
+## Feature Support
+
+At time of writing, the Go SDK is currently "Batteries Not Included".
+This means that there are gaps or edge cases in supported IOs and transforms.
+That said, the core of the SDK enables a great deal of the Beam Model for
+custom user use, supporting following features:
+
+* PTransforms
+  * Impulse
+  * Create
+  * ParDo with user DoFns
+    * Iterable side inputs
+    * Multiple output emitters
+    * Receive and return key-value pairs
+    * SplittableDoFns
+  * GroupByKey and CoGroupByKey
+  * CombineFns for use with Combine and CombinePerKey
+  * Flatten
+  * Partition
+  * Composite transforms
+  * Cross language transforms
+* EventTime windowing
+  * Global, Fixed Interval, Sliding, and Session windows
+  * Aggregating over windowed PCollections with GroupByKeys or Combines.
+* Coders
+  * Primitive Go types (ints, string, []bytes, and more)
+  * Beam Schemas for Go Struct types (including struct, slice, and map fields)
+  * Registering custom coders
+* Metrics
+  * PCollection metrics (element counts, size estimates)
+  * Custom user metrics
+  * Post job user metrics querying (coming in 2.34.0)
+  * DoFn profiling metrics (coming in 2.35.0)
+* Built-in transforms
+  * Sum, count, min, max, top, filter
+  * Scalable TextIO reading
+
+Upcoming features support roadmap, and known issues are discussed below.
+In particular, we plan to support a much richer set of IO connectors via Beam's cross-language capabilities.
+
+## Releases
+
+With this release, the Go SDK now uses [Go Modules](https://golang.org/ref/mod) for dependency management.
+This makes it so users, SDK authors, and the testing infrastructure can all rely on the same versions of dependencies, making builds reproducible.
+This also makes [validating Go SDK Release Candidates simple](/blog/validate-beam-release/#configuring-a-go-build-to-validate-a-beam-release-candidate).
+
+Versioned SDK worker containers are now built and [published](https://hub.docker.com/r/apache/beam_go_sdk/tags?page=1&ordering=last_updated), with the SDK using matched tagged versions.
+User jobs no longer need to specify a container to use for released versions, except when using custom containers.
+
+## Compatibility
+
+The Go SDK will largely follow suit with the Go notion of compatibility.
+Some concessions are made to keep all SDKs together on the same release cycle.
+
+### Language Compatibility
+
+The SDK will be tested at a minimum [Go Programming Language version of 1.16](https://golang.org/doc/devel/release), and use available language features and standard library packages accordingly.
+To maintain a broad compatibility, the Go SDK will not require the latest major version of Go.
+We expect to follow the 2nd newest supported release of the language, with a possible exception when Go 1.18 is released, in order to begin experimenting with [Go Generics](https://go.dev/blog/generics-proposal) in the SDK.
+Release notes will call out when the minimum version of the language changes.
+
+### Package Compatibility
+
+The primary user packages will avoid changing in backwards incompatible ways for core features.
+This is to be inline with Go's notion of the [`import compatibility rule`](https://research.swtch.com/vgo-import).
+
+> If an old package and a new package have the same import path,
+> the new package must be backwards compatible with the old package.
+
+Exceptions to this policy are around newer, experimental, or in development features and are subject to change.
+Such features will have a doc comment noting the experimental status.
+Major changes will be mentioned in the release notes.
+For example, using `beam.WindowInto` with Triggers is currently experimental and may have the API changed in a future release.
+
+Primary user packages include:
+* The main beam package `github.com/apache/beam/sdks/v2/go/pkg/beam`
+* Sub packages under `.../transforms`, `.../io`, `.../runners`, and `.../testing`.
+
+Generally, packages in the module other than the primary user packages are for framework use and are at risk of changing.
+
+### Known Issues
+
+#### Batteries not included.
+* Current native transforms are undertested.
+* IOs may not be written to scale.
+* Go Direct Runner is incomplete and is not portable, prefer using the Python Portable runner, or Flink.
+  * Doesn't support side input windowing. [BEAM-13075](https://issues.apache.org/jira/browse/BEAM-13075)
+  * Doesn't serialize data, making it unlikely to catch coder issues [BEAM-6372](https://issues.apache.org/jira/browse/BEAM-6372)
+  * Can use other general improvements, and become portable [BEAM-11076](https://issues.apache.org/jira/browse/BEAM-11076)
+* Current Trigger API is under iteration and subject to change [BEAM-3304](https://issues.apache.org/jira/browse/BEAM-3304).
+  * API has a possible breaking change between 2.33.0 and 2.34.0, and may change again.
+* Support of the SDK on services, like Google Cloud Dataflow, remains at the service owner's discretion.
+* Need something?
+  * File a ticket in the [Beam JIRA](https://issues.apache.org/jira/issues/?jql=project%20%3D%20BEAM%20AND%20component%20%3D%20sdk-go) and,
+  * Email the [dev@beam.apache.org](mailto:dev@beam.apache.org?subject=%5BGo%20SDK%20Feature%5D) list!
+
+#### Fixed in 2.34.0
+  * `top.SmallestPerKey` was broken [BEAM-12946](https://issues.apache.org/jira/browse/BEAM-12946)
+  * `beam.TryCrossLanguage` API didn't match non-Try version [BEAM-9918](https://issues.apache.org/jira/browse/BEAM-9918)
+    * This is a breaking change if one was calling `beam.TryCrossLanguage`
+
+#### Fixed in 2.35.0
+  * Non-global window Side Inputs don't match (correctness bug) [BEAM-11087](https://issues.apache.org/jira/browse/BEAM-11087)
+    * Until 2.35.0 it's not recommended to use Side Inputs that are not using the global window.
+  * DoFns using Side Inputs accumulate memory over bundles, causing OOMs [BEAM-13130](https://issues.apache.org/jira/browse/BEAM-13130)

Review comment:
       ```suggestion
     * Non-global window side inputs don't match (correctness bug) [BEAM-11087](https://issues.apache.org/jira/browse/BEAM-11087)
       * Until 2.35.0 it's not recommended to use side inputs that are not using the global window.
     * DoFns using side inputs accumulate memory over bundles, causing out of memory issues [BEAM-13130](https://issues.apache.org/jira/browse/BEAM-13130)
   ```

##########
File path: website/www/site/content/en/blog/go-sdk-release.md
##########
@@ -0,0 +1,161 @@
+---
+title:  "Go SDK Exits Experimental in Apache Beam 2.33.0"
+date:   2021-11-04 00:00:01 -0800
+categories:
+  - blog
+authors:
+  - lostluck
+---
+<!--
+Licensed 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.
+-->
+
+Apache Beam’s latest release, version [2.33.0](/get-started/downloads/), is the first official release of the long experimental Go SDK.
+Built with the [Go Programming Language](https://golang.org/), the Go SDK joins the Java and Python SDKs as the third implementation of the Beam programming model.
+
+<!--more-->
+
+## Using the new Go SDK.
+
+New users of the Go SDK can start using it in their Go programs by importing the main beam package:
+
+```
+import "github.com/apache/beam/sdks/v2/go/pkg/beam"
+```
+
+The next run of `go mod tidy` will fetch the latest stable version of the module.
+Alternatively executing `go get github.com/apache/beam/sdks/v2/go/pkg/beam` will download it to the local module cache immeadiately, and add it to your `go.mod` file.
+
+Existing users of the experimental Go SDK need to update to new `v2` import paths to start using the latest versions of the SDK.
+This is can be done by adding `v2` to the import paths, changing `github.com/apache/beam/sdks/go/`... to `github.com/apache/beam/sdks/v2/go/`... where applicable, and then running `go mod tidy`.
+
+Further documentation on using the SDK is available in the [Beam Programming Guide](/documentation/programming-guide/), and in the package [Go Doc](https://pkg.go.dev/github.com/apache/beam/sdks/v2/go/pkg/beam).
+
+## Feature Support
+
+At time of writing, the Go SDK is currently "Batteries Not Included".
+This means that there are gaps or edge cases in supported IOs and transforms.
+That said, the core of the SDK enables a great deal of the Beam Model for
+custom user use, supporting following features:
+
+* PTransforms
+  * Impulse
+  * Create
+  * ParDo with user DoFns
+    * Iterable side inputs
+    * Multiple output emitters
+    * Receive and return key-value pairs
+    * SplittableDoFns
+  * GroupByKey and CoGroupByKey
+  * CombineFns for use with Combine and CombinePerKey
+  * Flatten
+  * Partition
+  * Composite transforms
+  * Cross language transforms
+* EventTime windowing

Review comment:
       Is EventTime a special class in the Beam Go SDK, it not then lets go with:
   ```suggestion
   * Event time windowing
   ```

##########
File path: website/www/site/content/en/blog/go-sdk-release.md
##########
@@ -0,0 +1,161 @@
+---
+title:  "Go SDK Exits Experimental in Apache Beam 2.33.0"
+date:   2021-11-04 00:00:01 -0800
+categories:
+  - blog
+authors:
+  - lostluck
+---
+<!--
+Licensed 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.
+-->
+
+Apache Beam’s latest release, version [2.33.0](/get-started/downloads/), is the first official release of the long experimental Go SDK.
+Built with the [Go Programming Language](https://golang.org/), the Go SDK joins the Java and Python SDKs as the third implementation of the Beam programming model.
+
+<!--more-->
+
+## Using the new Go SDK.
+
+New users of the Go SDK can start using it in their Go programs by importing the main beam package:
+
+```
+import "github.com/apache/beam/sdks/v2/go/pkg/beam"
+```
+
+The next run of `go mod tidy` will fetch the latest stable version of the module.
+Alternatively executing `go get github.com/apache/beam/sdks/v2/go/pkg/beam` will download it to the local module cache immeadiately, and add it to your `go.mod` file.
+
+Existing users of the experimental Go SDK need to update to new `v2` import paths to start using the latest versions of the SDK.
+This is can be done by adding `v2` to the import paths, changing `github.com/apache/beam/sdks/go/`... to `github.com/apache/beam/sdks/v2/go/`... where applicable, and then running `go mod tidy`.
+
+Further documentation on using the SDK is available in the [Beam Programming Guide](/documentation/programming-guide/), and in the package [Go Doc](https://pkg.go.dev/github.com/apache/beam/sdks/v2/go/pkg/beam).
+
+## Feature Support
+
+At time of writing, the Go SDK is currently "Batteries Not Included".
+This means that there are gaps or edge cases in supported IOs and transforms.
+That said, the core of the SDK enables a great deal of the Beam Model for
+custom user use, supporting following features:
+
+* PTransforms
+  * Impulse
+  * Create
+  * ParDo with user DoFns
+    * Iterable side inputs
+    * Multiple output emitters
+    * Receive and return key-value pairs
+    * SplittableDoFns
+  * GroupByKey and CoGroupByKey
+  * CombineFns for use with Combine and CombinePerKey
+  * Flatten
+  * Partition
+  * Composite transforms
+  * Cross language transforms
+* EventTime windowing
+  * Global, Fixed Interval, Sliding, and Session windows
+  * Aggregating over windowed PCollections with GroupByKeys or Combines.
+* Coders
+  * Primitive Go types (ints, string, []bytes, and more)
+  * Beam Schemas for Go Struct types (including struct, slice, and map fields)
+  * Registering custom coders
+* Metrics
+  * PCollection metrics (element counts, size estimates)
+  * Custom user metrics
+  * Post job user metrics querying (coming in 2.34.0)
+  * DoFn profiling metrics (coming in 2.35.0)
+* Built-in transforms
+  * Sum, count, min, max, top, filter
+  * Scalable TextIO reading
+
+Upcoming features support roadmap, and known issues are discussed below.
+In particular, we plan to support a much richer set of IO connectors via Beam's cross-language capabilities.
+
+## Releases
+
+With this release, the Go SDK now uses [Go Modules](https://golang.org/ref/mod) for dependency management.
+This makes it so users, SDK authors, and the testing infrastructure can all rely on the same versions of dependencies, making builds reproducible.
+This also makes [validating Go SDK Release Candidates simple](/blog/validate-beam-release/#configuring-a-go-build-to-validate-a-beam-release-candidate).
+
+Versioned SDK worker containers are now built and [published](https://hub.docker.com/r/apache/beam_go_sdk/tags?page=1&ordering=last_updated), with the SDK using matched tagged versions.
+User jobs no longer need to specify a container to use for released versions, except when using custom containers.
+
+## Compatibility
+
+The Go SDK will largely follow suit with the Go notion of compatibility.
+Some concessions are made to keep all SDKs together on the same release cycle.
+
+### Language Compatibility
+
+The SDK will be tested at a minimum [Go Programming Language version of 1.16](https://golang.org/doc/devel/release), and use available language features and standard library packages accordingly.
+To maintain a broad compatibility, the Go SDK will not require the latest major version of Go.
+We expect to follow the 2nd newest supported release of the language, with a possible exception when Go 1.18 is released, in order to begin experimenting with [Go Generics](https://go.dev/blog/generics-proposal) in the SDK.
+Release notes will call out when the minimum version of the language changes.
+
+### Package Compatibility
+
+The primary user packages will avoid changing in backwards incompatible ways for core features.
+This is to be inline with Go's notion of the [`import compatibility rule`](https://research.swtch.com/vgo-import).
+
+> If an old package and a new package have the same import path,
+> the new package must be backwards compatible with the old package.
+
+Exceptions to this policy are around newer, experimental, or in development features and are subject to change.
+Such features will have a doc comment noting the experimental status.
+Major changes will be mentioned in the release notes.
+For example, using `beam.WindowInto` with Triggers is currently experimental and may have the API changed in a future release.
+
+Primary user packages include:
+* The main beam package `github.com/apache/beam/sdks/v2/go/pkg/beam`
+* Sub packages under `.../transforms`, `.../io`, `.../runners`, and `.../testing`.
+
+Generally, packages in the module other than the primary user packages are for framework use and are at risk of changing.
+
+### Known Issues
+
+#### Batteries not included.
+* Current native transforms are undertested.
+* IOs may not be written to scale.
+* Go Direct Runner is incomplete and is not portable, prefer using the Python Portable runner, or Flink.
+  * Doesn't support side input windowing. [BEAM-13075](https://issues.apache.org/jira/browse/BEAM-13075)
+  * Doesn't serialize data, making it unlikely to catch coder issues [BEAM-6372](https://issues.apache.org/jira/browse/BEAM-6372)
+  * Can use other general improvements, and become portable [BEAM-11076](https://issues.apache.org/jira/browse/BEAM-11076)
+* Current Trigger API is under iteration and subject to change [BEAM-3304](https://issues.apache.org/jira/browse/BEAM-3304).
+  * API has a possible breaking change between 2.33.0 and 2.34.0, and may change again.
+* Support of the SDK on services, like Google Cloud Dataflow, remains at the service owner's discretion.
+* Need something?
+  * File a ticket in the [Beam JIRA](https://issues.apache.org/jira/issues/?jql=project%20%3D%20BEAM%20AND%20component%20%3D%20sdk-go) and,
+  * Email the [dev@beam.apache.org](mailto:dev@beam.apache.org?subject=%5BGo%20SDK%20Feature%5D) list!

Review comment:
       Consider having consistent `.` usage.
   
   Not sure how best to insert it when there is a JIRA tag, might be simplest to not have any as I have suggested below:
   ```suggestion
   * Current native transforms are undertested
   * IOs may not be written to scale
   * Go Direct Runner is incomplete and is not portable, prefer using the Python Portable runner, or Flink
     * Doesn't support side input windowing [BEAM-13075](https://issues.apache.org/jira/browse/BEAM-13075)
     * Doesn't serialize data, making it unlikely to catch coder issues [BEAM-6372](https://issues.apache.org/jira/browse/BEAM-6372)
     * Can use other general improvements, and become portable [BEAM-11076](https://issues.apache.org/jira/browse/BEAM-11076)
   * Current Trigger API is under iteration and subject to change [BEAM-3304](https://issues.apache.org/jira/browse/BEAM-3304).
     * API has a possible breaking change between 2.33.0 and 2.34.0, and may change again
   * Support of the SDK on services, like Google Cloud Dataflow, remains at the service owner's discretion
   * Need something?
     * File a ticket in the [Beam JIRA](https://issues.apache.org/jira/issues/?jql=project%20%3D%20BEAM%20AND%20component%20%3D%20sdk-go) and,
     * Email the [dev@beam.apache.org](mailto:dev@beam.apache.org?subject=%5BGo%20SDK%20Feature%5D) list!
   ```

##########
File path: website/www/site/content/en/roadmap/connectors-go-sdk.md
##########
@@ -17,9 +17,11 @@ limitations under the License.
 
 Roadmap for connectors developed using Go SDK.
 
-* We hope to add a Splittable DoFn implementation to Go SDK to support developing new sources. In the
-meantime bounded sources can be developed in the form of ParDos. See
-[Authoring I/O Transforms](https://beam.apache.org/documentation/io/authoring-overview/) for more details.
-
 * Go SDK plans to utilize currently available Java and Python connectors
 through cross-language transforms feature.
+  * KafkaIO via Java - DONE
+  * BigQuery via Java - In Progress
+  * Beam SQL via Java
+* The Go SDK supports SplittableDoFns for Batch, so scalable batch transforms are possible.

Review comment:
       ```suggestion
   * The Go SDK supports SplittableDoFns for bounded pipelines, so scalable bounded pipelines are possible.
   ```

##########
File path: website/www/site/content/en/roadmap/go-sdk.md
##########
@@ -17,55 +17,14 @@ limitations under the License.
 
 # Go SDK Roadmap
 
-The Go SDK is currently experimental. As the first purely portable Beam SDK, the Go SDK is constrained
-by the status of the [Beam Portability Framework](https://beam.apache.org/roadmap/portability/) and the existence of
-portable runners.
+The Go SDK is [fully released as of v2.33.0](/blog/go-sdk-release/).
 
-**April 2020 Update**
-This year we hope to move the SDK out of experimental at least for Batch usage.
+The Go SDK the first SDK purely on the [Beam Portability Framework](/roadmap/portability/)
+and can execute pipelines on portable runners, like Flink, Spark, Samza, and Google Cloud Dataflow.
 
-To do so, there are a few blocking changes:
-  * Support Interoperability with other SDKs
-  * Scalable IOs
-  * Portability Proto stability
-  * Go Ecosystem integration improvements
-
-Interoperability while not a blocking feature in itself, requires Beam Schema support, which
-the SDK could then use as it's default coder. Batch Splittable DoFns are nearly ready for
-playing with on Flink, and the Python Direct Runner, answering the scalable batch IO question.
-There's much work getting the portability protos to a stable baseline. This will allow runner
-and SDK independance, so they don't need to be updated in lockstep. Finally, the Go SDK should
-adopt Go Modules as it's versioning solution, and officially "catch up" with the current beam
-version.
-
-The Go SDK has the following goals for the next few months:
-
-## Usability
-
-* Beam Schema Support [BEAM-9615](https://issues.apache.org/jira/browse/BEAM-9615)
-* Improvements to starcgen [BEAM-9616](https://issues.apache.org/jira/browse/BEAM-9616)
-
-## Integrating with the Go ecosystem
-
-The authors of the Go SDK intended to keep the parts of the language we love, and intend for
-user pipelines to be as close to ordinary Go as possible, minimizing framework boiler plate code.
-
-* Migrate to a vanity URL path [BEAM-4115](https://issues.apache.org/jira/browse/BEAM-4115)
-* Package versioning support [BEAM-5379](https://issues.apache.org/jira/browse/BEAM-5379)
-
-## Implement Portability features
-
-The following are dependant on the features being implemented in the Portability Framework.
-
-* Splitable DoFns (SDFs) for Scalable IO [BEAM-3301](https://issues.apache.org/jira/browse/BEAM-3301)
-  * This is the primary blocker for the Go SDK to scale to ingest large numbers of elements in both batch and streaming.
-* Triggers and Timers [BEAM-3304](https://issues.apache.org/jira/browse/BEAM-3304)
-* Advanced WindowFns
-   * Session windows [BEAM-4152](https://issues.apache.org/jira/browse/BEAM-4152)
-   * Custom WindowFns (dependant on streaming Splitable DoFn support) [BEAM-2939](https://issues.apache.org/jira/browse/BEAM-2939)
-
-Without SDFs, IOs are always constrained to work on a single machine prior to a sharding operation (like CoGroupByKey),
-which makes scalable IOs difficult to impossible to write.
+Current roadmap:
+* continue building up Streaming facing features, as described on the [Beam Dev Wiki](https://cwiki.apache.org/confluence/display/BEAM/Supporting+Streaming+in+the+Go+SDK).

Review comment:
       ```suggestion
   * continue building up unbounded pipeline facing features, as described on the [Beam Dev Wiki](https://cwiki.apache.org/confluence/display/BEAM/Supporting+Streaming+in+the+Go+SDK).
   ```




-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: github-unsubscribe@beam.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



[GitHub] [beam] lostluck commented on pull request #15894: [Go SDK] Go SDK Exits Experimental

Posted by GitBox <gi...@apache.org>.
lostluck commented on pull request #15894:
URL: https://github.com/apache/beam/pull/15894#issuecomment-962049908


   R: @lukecwik @robertwb 


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: github-unsubscribe@beam.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



[GitHub] [beam] lukecwik commented on a change in pull request #15894: [Go SDK] Go SDK Exits Experimental

Posted by GitBox <gi...@apache.org>.
lukecwik commented on a change in pull request #15894:
URL: https://github.com/apache/beam/pull/15894#discussion_r743825565



##########
File path: website/www/site/content/en/blog/go-sdk-release.md
##########
@@ -0,0 +1,163 @@
+---
+title:  "Go SDK Exits Experimental in Apache Beam 2.33.0"
+date:   2021-11-04 00:00:01 -0800
+categories:
+  - blog
+authors:
+  - lostluck
+---
+<!--
+Licensed 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.
+-->
+
+Apache Beam’s latest release, version [2.33.0](/get-started/downloads/), is the first official release of the long experimental Go SDK.
+Built with the [Go Programming Language](https://golang.org/), the Go SDK joins the Java and Python SDKs as the third implementation of the Beam programming model.
+
+<!--more-->
+
+## Using the new Go SDK.
+
+New users of the Go SDK can start using it in their Go programs by importing the main beam package:
+
+```
+import "github.com/apache/beam/sdks/v2/go/pkg/beam"
+```
+
+The next run of `go mod tidy` will fetch the latest stable version of the module.
+Alternatively executing `go get github.com/apache/beam/sdks/v2/go/pkg/beam` will download it to the local module cache immeadiately, and add it to your `go.mod` file.
+
+Existing users of the experimental Go SDK need to update to new `v2` import paths to start using the latest versions of the SDK.
+This is can be done by adding `v2` to the import paths, changing `github.com/apache/beam/sdks/go/`... to `github.com/apache/beam/sdks/v2/go/`... where applicable, and then running `go mod tidy`.
+
+Further documentation on using the SDK is available in the [Beam Programming Guide](/documentation/programming-guide/), and in the package Go Doc at https://pkg.go.dev/github.com/apache/beam/sdks/v2/go/pkg/beam.

Review comment:
       ```suggestion
   Further documentation on using the SDK is available in the [Beam Programming Guide](/documentation/programming-guide/), and in the package [Go Doc](https://pkg.go.dev/github.com/apache/beam/sdks/v2/go/pkg/beam).
   ```

##########
File path: website/www/site/content/en/blog/go-sdk-release.md
##########
@@ -0,0 +1,163 @@
+---
+title:  "Go SDK Exits Experimental in Apache Beam 2.33.0"
+date:   2021-11-04 00:00:01 -0800
+categories:
+  - blog
+authors:
+  - lostluck
+---
+<!--
+Licensed 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.
+-->
+
+Apache Beam’s latest release, version [2.33.0](/get-started/downloads/), is the first official release of the long experimental Go SDK.
+Built with the [Go Programming Language](https://golang.org/), the Go SDK joins the Java and Python SDKs as the third implementation of the Beam programming model.
+
+<!--more-->
+
+## Using the new Go SDK.
+
+New users of the Go SDK can start using it in their Go programs by importing the main beam package:
+
+```
+import "github.com/apache/beam/sdks/v2/go/pkg/beam"
+```
+
+The next run of `go mod tidy` will fetch the latest stable version of the module.
+Alternatively executing `go get github.com/apache/beam/sdks/v2/go/pkg/beam` will download it to the local module cache immeadiately, and add it to your `go.mod` file.
+
+Existing users of the experimental Go SDK need to update to new `v2` import paths to start using the latest versions of the SDK.
+This is can be done by adding `v2` to the import paths, changing `github.com/apache/beam/sdks/go/`... to `github.com/apache/beam/sdks/v2/go/`... where applicable, and then running `go mod tidy`.
+
+Further documentation on using the SDK is available in the [Beam Programming Guide](/documentation/programming-guide/), and in the package Go Doc at https://pkg.go.dev/github.com/apache/beam/sdks/v2/go/pkg/beam.
+
+## Feature Support
+
+At time of writing, the Go SDK is currently "Batteries Not Included".
+This means that there are gaps or edge cases in supported IOs and transforms.
+That said, the core of the SDK enables a great deal of the Beam Model for
+custom user use, supporting following features:
+
+* PTransforms
+  * Impulse
+  * Create
+  * ParDo w/User DoFns
+    * Iterable Side Inputs
+    * Multiple Output emitters
+    * Receive and Return Key Value pairs
+    * EventTime
+    * SplittableDoFns
+  * GroupByKey and CoGroupByKey
+  * CombineFns for use with Combine and CombinePerKey
+  * Windowing
+    * Global, Fixed intervals, Sliding windows, and Session

Review comment:
       ```suggestion
       * Global, Fixed Intervals, Sliding, and Session windows
   ```

##########
File path: website/www/site/content/en/blog/go-sdk-release.md
##########
@@ -0,0 +1,163 @@
+---
+title:  "Go SDK Exits Experimental in Apache Beam 2.33.0"
+date:   2021-11-04 00:00:01 -0800
+categories:
+  - blog
+authors:
+  - lostluck
+---
+<!--
+Licensed 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.
+-->
+
+Apache Beam’s latest release, version [2.33.0](/get-started/downloads/), is the first official release of the long experimental Go SDK.
+Built with the [Go Programming Language](https://golang.org/), the Go SDK joins the Java and Python SDKs as the third implementation of the Beam programming model.
+
+<!--more-->
+
+## Using the new Go SDK.
+
+New users of the Go SDK can start using it in their Go programs by importing the main beam package:
+
+```
+import "github.com/apache/beam/sdks/v2/go/pkg/beam"
+```
+
+The next run of `go mod tidy` will fetch the latest stable version of the module.
+Alternatively executing `go get github.com/apache/beam/sdks/v2/go/pkg/beam` will download it to the local module cache immeadiately, and add it to your `go.mod` file.
+
+Existing users of the experimental Go SDK need to update to new `v2` import paths to start using the latest versions of the SDK.
+This is can be done by adding `v2` to the import paths, changing `github.com/apache/beam/sdks/go/`... to `github.com/apache/beam/sdks/v2/go/`... where applicable, and then running `go mod tidy`.
+
+Further documentation on using the SDK is available in the [Beam Programming Guide](/documentation/programming-guide/), and in the package Go Doc at https://pkg.go.dev/github.com/apache/beam/sdks/v2/go/pkg/beam.
+
+## Feature Support
+
+At time of writing, the Go SDK is currently "Batteries Not Included".
+This means that there are gaps or edge cases in supported IOs and transforms.
+That said, the core of the SDK enables a great deal of the Beam Model for
+custom user use, supporting following features:
+
+* PTransforms
+  * Impulse
+  * Create
+  * ParDo w/User DoFns
+    * Iterable Side Inputs
+    * Multiple Output emitters
+    * Receive and Return Key Value pairs
+    * EventTime
+    * SplittableDoFns
+  * GroupByKey and CoGroupByKey
+  * CombineFns for use with Combine and CombinePerKey
+  * Windowing
+    * Global, Fixed intervals, Sliding windows, and Session
+    * Aggregating over windowed PCollections w/GBKs or Combines.
+  * Flatten
+  * Partition
+  * Composites
+  * Cross Language Transforms
+* Coders
+  * Primitive Go types (ints, string, []bytes, and more)
+  * Beam Schemas for Go Struct types (including struct, slice, and map fields)
+  * Registering custom coders
+* Metrics
+  * PCollection metrics (ElementCount, Size Estimates)
+  * Custom User Metrics
+  * Post job user metrics querying (coming in 2.34.0)
+  * DoFn profiling metrics (coming in 2.35.0)
+* Provided Built Transforms
+  * Sum, Count, Min, Max, Top, Filter
+  * Scalable TextIO Reading
+
+Upcoming features support roadmap, and known issues are discussed below.
+In particular, we plan to support a much richer set of IO connectors via Beam's cross-language capabilities.
+
+## Releases
+
+With this release, the Go SDK now uses [Go Modules](https://golang.org/ref/mod) for dependency management.
+This makes it so users, SDK Devs, and the testing infrastructure can all rely on the same versions of dependencies, making builds reproducible.
+This also makes [validating Go SDK Release Candidates simple](/blog/validate-beam-release/#configuring-a-go-build-to-validate-a-beam-release-candidate).
+
+Versioned SDK worker containers are now built and [published](https://hub.docker.com/r/apache/beam_go_sdk/tags?page=1&ordering=last_updated), with the SDK using matched tagged versions.
+For released versions, user jobs no longer need to specify a container to use, except when using custom containers.
+
+## Compatibility
+
+The Go SDK will largely follow suit with the Go notion of compatibility.
+Some concessions are made to keep all SDKs together on the same release cycle.
+
+### Language Compatibility
+
+The SDK will be tested at a minimum [Go Programming Language version of 1.16](https://golang.org/doc/devel/release), and use available language features and standard library packages accordingly.
+To maintain a broad compatibility, the Go SDK will not require the latest major version of Go.
+We expect to follow the 2nd newest supported release of the language, with a possible exception when Go 1.18 is released, in order to begin experimenting with [Go Generics](https://go.dev/blog/generics-proposal) in the SDK.
+Release notes will call out when the minimum version of the language changes.
+
+### Package Compatibility
+
+The primary user packages will avoid changing in backwards incompatible ways for core features.
+This is to be inline with Go's notion of the [`import compatibility rule`](https://research.swtch.com/vgo-import).
+
+> If an old package and a new package have the same import path,
+> the new package must be backwards compatible with the old package.
+
+Exceptions to this policy are around newer, experimental, or in development features.
+These are subject to change.
+Such features will have a doc comment noting the experimental status, or be mentioned the change notes for a release.
+For example, using `beam.WindowInto` with Triggers is currently experimental and may have the api changed in a future release.
+
+Primary user packages include:
+* The main beam package `github.com/apache/beam/sdks/v2/go/pkg/beam`
+* Sub packages under `.../transforms`, `.../io`, `.../runners`, and `.../testing`.
+
+Generally, packages in the module other than the primary user packages are for framework use.
+They are at risk of changing, though at this point, large breaking changes are unlikely.
+
+### Known Issues
+
+#### Batteries not included.
+* Current native transforms are undertested.
+* IOs may not be written to scale.
+* Go Direct Runner is incomplete and is not portable, prefer using the Python Portable runner, or Flink.
+  * Doesn't support side input windowing. [BEAM-13075](https://issues.apache.org/jira/browse/BEAM-13075)
+  * Doesn't serialize data, making it unlikely to catch coder issues [BEAM-6372](https://issues.apache.org/jira/browse/BEAM-6372)
+  * Can use other general improvements, and become portable [BEAM-11076](https://issues.apache.org/jira/browse/BEAM-11076)
+* Current Trigger API is under iteration and subject to change [BEAM-3304](https://issues.apache.org/jira/browse/BEAM-3304).
+  * API has a possible breaking change between 2.33.0 and 2.34.0, and may change again.
+* Support of the SDK on services, like Google Cloud Dataflow, remains at the service owner's discretion.
+* Need something?
+  * File a ticket in the [Beam JIRA](https://issues.apache.org/jira/issues/?jql=project%20%3D%20BEAM%20AND%20component%20%3D%20sdk-go) and,
+  * Email the dev@beam.apache.org list!

Review comment:
       Can you make the e-mail address a mail link?

##########
File path: website/www/site/content/en/blog/go-sdk-release.md
##########
@@ -0,0 +1,163 @@
+---
+title:  "Go SDK Exits Experimental in Apache Beam 2.33.0"
+date:   2021-11-04 00:00:01 -0800
+categories:
+  - blog
+authors:
+  - lostluck
+---
+<!--
+Licensed 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.
+-->
+
+Apache Beam’s latest release, version [2.33.0](/get-started/downloads/), is the first official release of the long experimental Go SDK.
+Built with the [Go Programming Language](https://golang.org/), the Go SDK joins the Java and Python SDKs as the third implementation of the Beam programming model.
+
+<!--more-->
+
+## Using the new Go SDK.
+
+New users of the Go SDK can start using it in their Go programs by importing the main beam package:
+
+```
+import "github.com/apache/beam/sdks/v2/go/pkg/beam"
+```
+
+The next run of `go mod tidy` will fetch the latest stable version of the module.
+Alternatively executing `go get github.com/apache/beam/sdks/v2/go/pkg/beam` will download it to the local module cache immeadiately, and add it to your `go.mod` file.
+
+Existing users of the experimental Go SDK need to update to new `v2` import paths to start using the latest versions of the SDK.
+This is can be done by adding `v2` to the import paths, changing `github.com/apache/beam/sdks/go/`... to `github.com/apache/beam/sdks/v2/go/`... where applicable, and then running `go mod tidy`.
+
+Further documentation on using the SDK is available in the [Beam Programming Guide](/documentation/programming-guide/), and in the package Go Doc at https://pkg.go.dev/github.com/apache/beam/sdks/v2/go/pkg/beam.
+
+## Feature Support
+
+At time of writing, the Go SDK is currently "Batteries Not Included".
+This means that there are gaps or edge cases in supported IOs and transforms.
+That said, the core of the SDK enables a great deal of the Beam Model for
+custom user use, supporting following features:
+
+* PTransforms
+  * Impulse
+  * Create
+  * ParDo w/User DoFns
+    * Iterable Side Inputs
+    * Multiple Output emitters
+    * Receive and Return Key Value pairs
+    * EventTime

Review comment:
       Is there something special about event time being listed under ParDo or would this make more sense under Windowing?

##########
File path: website/www/site/content/en/blog/go-sdk-release.md
##########
@@ -0,0 +1,163 @@
+---
+title:  "Go SDK Exits Experimental in Apache Beam 2.33.0"
+date:   2021-11-04 00:00:01 -0800
+categories:
+  - blog
+authors:
+  - lostluck
+---
+<!--
+Licensed 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.
+-->
+
+Apache Beam’s latest release, version [2.33.0](/get-started/downloads/), is the first official release of the long experimental Go SDK.
+Built with the [Go Programming Language](https://golang.org/), the Go SDK joins the Java and Python SDKs as the third implementation of the Beam programming model.
+
+<!--more-->
+
+## Using the new Go SDK.
+
+New users of the Go SDK can start using it in their Go programs by importing the main beam package:
+
+```
+import "github.com/apache/beam/sdks/v2/go/pkg/beam"
+```
+
+The next run of `go mod tidy` will fetch the latest stable version of the module.
+Alternatively executing `go get github.com/apache/beam/sdks/v2/go/pkg/beam` will download it to the local module cache immeadiately, and add it to your `go.mod` file.
+
+Existing users of the experimental Go SDK need to update to new `v2` import paths to start using the latest versions of the SDK.
+This is can be done by adding `v2` to the import paths, changing `github.com/apache/beam/sdks/go/`... to `github.com/apache/beam/sdks/v2/go/`... where applicable, and then running `go mod tidy`.
+
+Further documentation on using the SDK is available in the [Beam Programming Guide](/documentation/programming-guide/), and in the package Go Doc at https://pkg.go.dev/github.com/apache/beam/sdks/v2/go/pkg/beam.
+
+## Feature Support
+
+At time of writing, the Go SDK is currently "Batteries Not Included".
+This means that there are gaps or edge cases in supported IOs and transforms.
+That said, the core of the SDK enables a great deal of the Beam Model for
+custom user use, supporting following features:
+
+* PTransforms
+  * Impulse
+  * Create
+  * ParDo w/User DoFns
+    * Iterable Side Inputs
+    * Multiple Output emitters
+    * Receive and Return Key Value pairs
+    * EventTime
+    * SplittableDoFns
+  * GroupByKey and CoGroupByKey
+  * CombineFns for use with Combine and CombinePerKey
+  * Windowing
+    * Global, Fixed intervals, Sliding windows, and Session
+    * Aggregating over windowed PCollections w/GBKs or Combines.
+  * Flatten
+  * Partition
+  * Composites
+  * Cross Language Transforms
+* Coders
+  * Primitive Go types (ints, string, []bytes, and more)
+  * Beam Schemas for Go Struct types (including struct, slice, and map fields)
+  * Registering custom coders
+* Metrics
+  * PCollection metrics (ElementCount, Size Estimates)
+  * Custom User Metrics
+  * Post job user metrics querying (coming in 2.34.0)
+  * DoFn profiling metrics (coming in 2.35.0)
+* Provided Built Transforms
+  * Sum, Count, Min, Max, Top, Filter
+  * Scalable TextIO Reading
+
+Upcoming features support roadmap, and known issues are discussed below.
+In particular, we plan to support a much richer set of IO connectors via Beam's cross-language capabilities.
+
+## Releases
+
+With this release, the Go SDK now uses [Go Modules](https://golang.org/ref/mod) for dependency management.
+This makes it so users, SDK Devs, and the testing infrastructure can all rely on the same versions of dependencies, making builds reproducible.
+This also makes [validating Go SDK Release Candidates simple](/blog/validate-beam-release/#configuring-a-go-build-to-validate-a-beam-release-candidate).
+
+Versioned SDK worker containers are now built and [published](https://hub.docker.com/r/apache/beam_go_sdk/tags?page=1&ordering=last_updated), with the SDK using matched tagged versions.
+For released versions, user jobs no longer need to specify a container to use, except when using custom containers.
+
+## Compatibility
+
+The Go SDK will largely follow suit with the Go notion of compatibility.
+Some concessions are made to keep all SDKs together on the same release cycle.
+
+### Language Compatibility
+
+The SDK will be tested at a minimum [Go Programming Language version of 1.16](https://golang.org/doc/devel/release), and use available language features and standard library packages accordingly.
+To maintain a broad compatibility, the Go SDK will not require the latest major version of Go.
+We expect to follow the 2nd newest supported release of the language, with a possible exception when Go 1.18 is released, in order to begin experimenting with [Go Generics](https://go.dev/blog/generics-proposal) in the SDK.
+Release notes will call out when the minimum version of the language changes.
+
+### Package Compatibility
+
+The primary user packages will avoid changing in backwards incompatible ways for core features.
+This is to be inline with Go's notion of the [`import compatibility rule`](https://research.swtch.com/vgo-import).
+
+> If an old package and a new package have the same import path,
+> the new package must be backwards compatible with the old package.
+
+Exceptions to this policy are around newer, experimental, or in development features.
+These are subject to change.
+Such features will have a doc comment noting the experimental status, or be mentioned the change notes for a release.
+For example, using `beam.WindowInto` with Triggers is currently experimental and may have the api changed in a future release.
+
+Primary user packages include:
+* The main beam package `github.com/apache/beam/sdks/v2/go/pkg/beam`
+* Sub packages under `.../transforms`, `.../io`, `.../runners`, and `.../testing`.
+
+Generally, packages in the module other than the primary user packages are for framework use.
+They are at risk of changing, though at this point, large breaking changes are unlikely.
+
+### Known Issues
+
+#### Batteries not included.
+* Current native transforms are undertested.
+* IOs may not be written to scale.
+* Go Direct Runner is incomplete and is not portable, prefer using the Python Portable runner, or Flink.
+  * Doesn't support side input windowing. [BEAM-13075](https://issues.apache.org/jira/browse/BEAM-13075)
+  * Doesn't serialize data, making it unlikely to catch coder issues [BEAM-6372](https://issues.apache.org/jira/browse/BEAM-6372)
+  * Can use other general improvements, and become portable [BEAM-11076](https://issues.apache.org/jira/browse/BEAM-11076)
+* Current Trigger API is under iteration and subject to change [BEAM-3304](https://issues.apache.org/jira/browse/BEAM-3304).
+  * API has a possible breaking change between 2.33.0 and 2.34.0, and may change again.
+* Support of the SDK on services, like Google Cloud Dataflow, remains at the service owner's discretion.
+* Need something?
+  * File a ticket in the [Beam JIRA](https://issues.apache.org/jira/issues/?jql=project%20%3D%20BEAM%20AND%20component%20%3D%20sdk-go) and,
+  * Email the dev@beam.apache.org list!
+
+#### Fixed in 2.34.0
+  * `top.SmallestPerKey` was broken [BEAM-12946](https://issues.apache.org/jira/browse/BEAM-12946)
+  * `beam.TryCrossLanguage` API didn't match non-Try version [BEAM-9918](https://issues.apache.org/jira/browse/BEAM-9918)
+    * This is a breaking change if one was calling `beam.TryCrossLanguage`
+
+#### Fixed in 2.35.0
+  * Non-Global Window Side Inputs don't match (correctness bug) [BEAM-11087](https://issues.apache.org/jira/browse/BEAM-11087)
+    * Until 2.35.0 it's not recommended to use SideInputs that are not using the Global Window.

Review comment:
       ```suggestion
       * Until 2.35.0 it's not recommended to use Side Inputs that are not using the Global Window.
   ```

##########
File path: website/www/site/content/en/blog/go-sdk-release.md
##########
@@ -0,0 +1,163 @@
+---
+title:  "Go SDK Exits Experimental in Apache Beam 2.33.0"
+date:   2021-11-04 00:00:01 -0800
+categories:
+  - blog
+authors:
+  - lostluck
+---
+<!--
+Licensed 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.
+-->
+
+Apache Beam’s latest release, version [2.33.0](/get-started/downloads/), is the first official release of the long experimental Go SDK.
+Built with the [Go Programming Language](https://golang.org/), the Go SDK joins the Java and Python SDKs as the third implementation of the Beam programming model.
+
+<!--more-->
+
+## Using the new Go SDK.
+
+New users of the Go SDK can start using it in their Go programs by importing the main beam package:
+
+```
+import "github.com/apache/beam/sdks/v2/go/pkg/beam"
+```
+
+The next run of `go mod tidy` will fetch the latest stable version of the module.
+Alternatively executing `go get github.com/apache/beam/sdks/v2/go/pkg/beam` will download it to the local module cache immeadiately, and add it to your `go.mod` file.
+
+Existing users of the experimental Go SDK need to update to new `v2` import paths to start using the latest versions of the SDK.
+This is can be done by adding `v2` to the import paths, changing `github.com/apache/beam/sdks/go/`... to `github.com/apache/beam/sdks/v2/go/`... where applicable, and then running `go mod tidy`.
+
+Further documentation on using the SDK is available in the [Beam Programming Guide](/documentation/programming-guide/), and in the package Go Doc at https://pkg.go.dev/github.com/apache/beam/sdks/v2/go/pkg/beam.
+
+## Feature Support
+
+At time of writing, the Go SDK is currently "Batteries Not Included".
+This means that there are gaps or edge cases in supported IOs and transforms.
+That said, the core of the SDK enables a great deal of the Beam Model for
+custom user use, supporting following features:
+
+* PTransforms
+  * Impulse
+  * Create
+  * ParDo w/User DoFns
+    * Iterable Side Inputs
+    * Multiple Output emitters
+    * Receive and Return Key Value pairs
+    * EventTime
+    * SplittableDoFns
+  * GroupByKey and CoGroupByKey
+  * CombineFns for use with Combine and CombinePerKey
+  * Windowing

Review comment:
       Should windowing be at the same level as PTransforms (unindent Windowing)?

##########
File path: website/www/site/content/en/blog/go-sdk-release.md
##########
@@ -0,0 +1,163 @@
+---
+title:  "Go SDK Exits Experimental in Apache Beam 2.33.0"
+date:   2021-11-04 00:00:01 -0800
+categories:
+  - blog
+authors:
+  - lostluck
+---
+<!--
+Licensed 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.
+-->
+
+Apache Beam’s latest release, version [2.33.0](/get-started/downloads/), is the first official release of the long experimental Go SDK.
+Built with the [Go Programming Language](https://golang.org/), the Go SDK joins the Java and Python SDKs as the third implementation of the Beam programming model.
+
+<!--more-->
+
+## Using the new Go SDK.
+
+New users of the Go SDK can start using it in their Go programs by importing the main beam package:
+
+```
+import "github.com/apache/beam/sdks/v2/go/pkg/beam"
+```
+
+The next run of `go mod tidy` will fetch the latest stable version of the module.
+Alternatively executing `go get github.com/apache/beam/sdks/v2/go/pkg/beam` will download it to the local module cache immeadiately, and add it to your `go.mod` file.
+
+Existing users of the experimental Go SDK need to update to new `v2` import paths to start using the latest versions of the SDK.
+This is can be done by adding `v2` to the import paths, changing `github.com/apache/beam/sdks/go/`... to `github.com/apache/beam/sdks/v2/go/`... where applicable, and then running `go mod tidy`.
+
+Further documentation on using the SDK is available in the [Beam Programming Guide](/documentation/programming-guide/), and in the package Go Doc at https://pkg.go.dev/github.com/apache/beam/sdks/v2/go/pkg/beam.
+
+## Feature Support
+
+At time of writing, the Go SDK is currently "Batteries Not Included".
+This means that there are gaps or edge cases in supported IOs and transforms.
+That said, the core of the SDK enables a great deal of the Beam Model for
+custom user use, supporting following features:
+
+* PTransforms
+  * Impulse
+  * Create
+  * ParDo w/User DoFns
+    * Iterable Side Inputs
+    * Multiple Output emitters
+    * Receive and Return Key Value pairs
+    * EventTime
+    * SplittableDoFns
+  * GroupByKey and CoGroupByKey
+  * CombineFns for use with Combine and CombinePerKey
+  * Windowing
+    * Global, Fixed intervals, Sliding windows, and Session
+    * Aggregating over windowed PCollections w/GBKs or Combines.
+  * Flatten
+  * Partition
+  * Composites
+  * Cross Language Transforms
+* Coders
+  * Primitive Go types (ints, string, []bytes, and more)
+  * Beam Schemas for Go Struct types (including struct, slice, and map fields)
+  * Registering custom coders
+* Metrics
+  * PCollection metrics (ElementCount, Size Estimates)
+  * Custom User Metrics
+  * Post job user metrics querying (coming in 2.34.0)
+  * DoFn profiling metrics (coming in 2.35.0)
+* Provided Built Transforms
+  * Sum, Count, Min, Max, Top, Filter
+  * Scalable TextIO Reading

Review comment:
       ```suggestion
   * Provided Transforms
     * Sum, Count, Min, Max, Top, Filter
     * Scalable TextIO Reading
   ```
   
   Or we could go with `Built-in transforms`

##########
File path: website/www/site/content/en/blog/go-sdk-release.md
##########
@@ -0,0 +1,163 @@
+---
+title:  "Go SDK Exits Experimental in Apache Beam 2.33.0"
+date:   2021-11-04 00:00:01 -0800
+categories:
+  - blog
+authors:
+  - lostluck
+---
+<!--
+Licensed 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.
+-->
+
+Apache Beam’s latest release, version [2.33.0](/get-started/downloads/), is the first official release of the long experimental Go SDK.
+Built with the [Go Programming Language](https://golang.org/), the Go SDK joins the Java and Python SDKs as the third implementation of the Beam programming model.
+
+<!--more-->
+
+## Using the new Go SDK.
+
+New users of the Go SDK can start using it in their Go programs by importing the main beam package:
+
+```
+import "github.com/apache/beam/sdks/v2/go/pkg/beam"
+```
+
+The next run of `go mod tidy` will fetch the latest stable version of the module.
+Alternatively executing `go get github.com/apache/beam/sdks/v2/go/pkg/beam` will download it to the local module cache immeadiately, and add it to your `go.mod` file.
+
+Existing users of the experimental Go SDK need to update to new `v2` import paths to start using the latest versions of the SDK.
+This is can be done by adding `v2` to the import paths, changing `github.com/apache/beam/sdks/go/`... to `github.com/apache/beam/sdks/v2/go/`... where applicable, and then running `go mod tidy`.
+
+Further documentation on using the SDK is available in the [Beam Programming Guide](/documentation/programming-guide/), and in the package Go Doc at https://pkg.go.dev/github.com/apache/beam/sdks/v2/go/pkg/beam.
+
+## Feature Support
+
+At time of writing, the Go SDK is currently "Batteries Not Included".
+This means that there are gaps or edge cases in supported IOs and transforms.
+That said, the core of the SDK enables a great deal of the Beam Model for
+custom user use, supporting following features:
+
+* PTransforms
+  * Impulse
+  * Create
+  * ParDo w/User DoFns
+    * Iterable Side Inputs
+    * Multiple Output emitters
+    * Receive and Return Key Value pairs
+    * EventTime
+    * SplittableDoFns
+  * GroupByKey and CoGroupByKey
+  * CombineFns for use with Combine and CombinePerKey
+  * Windowing
+    * Global, Fixed intervals, Sliding windows, and Session
+    * Aggregating over windowed PCollections w/GBKs or Combines.
+  * Flatten
+  * Partition
+  * Composites
+  * Cross Language Transforms
+* Coders
+  * Primitive Go types (ints, string, []bytes, and more)
+  * Beam Schemas for Go Struct types (including struct, slice, and map fields)
+  * Registering custom coders
+* Metrics
+  * PCollection metrics (ElementCount, Size Estimates)
+  * Custom User Metrics
+  * Post job user metrics querying (coming in 2.34.0)
+  * DoFn profiling metrics (coming in 2.35.0)
+* Provided Built Transforms
+  * Sum, Count, Min, Max, Top, Filter
+  * Scalable TextIO Reading
+
+Upcoming features support roadmap, and known issues are discussed below.
+In particular, we plan to support a much richer set of IO connectors via Beam's cross-language capabilities.
+
+## Releases
+
+With this release, the Go SDK now uses [Go Modules](https://golang.org/ref/mod) for dependency management.
+This makes it so users, SDK Devs, and the testing infrastructure can all rely on the same versions of dependencies, making builds reproducible.
+This also makes [validating Go SDK Release Candidates simple](/blog/validate-beam-release/#configuring-a-go-build-to-validate-a-beam-release-candidate).
+
+Versioned SDK worker containers are now built and [published](https://hub.docker.com/r/apache/beam_go_sdk/tags?page=1&ordering=last_updated), with the SDK using matched tagged versions.
+For released versions, user jobs no longer need to specify a container to use, except when using custom containers.
+
+## Compatibility
+
+The Go SDK will largely follow suit with the Go notion of compatibility.
+Some concessions are made to keep all SDKs together on the same release cycle.
+
+### Language Compatibility
+
+The SDK will be tested at a minimum [Go Programming Language version of 1.16](https://golang.org/doc/devel/release), and use available language features and standard library packages accordingly.
+To maintain a broad compatibility, the Go SDK will not require the latest major version of Go.
+We expect to follow the 2nd newest supported release of the language, with a possible exception when Go 1.18 is released, in order to begin experimenting with [Go Generics](https://go.dev/blog/generics-proposal) in the SDK.
+Release notes will call out when the minimum version of the language changes.
+
+### Package Compatibility
+
+The primary user packages will avoid changing in backwards incompatible ways for core features.
+This is to be inline with Go's notion of the [`import compatibility rule`](https://research.swtch.com/vgo-import).
+
+> If an old package and a new package have the same import path,
+> the new package must be backwards compatible with the old package.
+
+Exceptions to this policy are around newer, experimental, or in development features.
+These are subject to change.
+Such features will have a doc comment noting the experimental status, or be mentioned the change notes for a release.
+For example, using `beam.WindowInto` with Triggers is currently experimental and may have the api changed in a future release.
+
+Primary user packages include:
+* The main beam package `github.com/apache/beam/sdks/v2/go/pkg/beam`
+* Sub packages under `.../transforms`, `.../io`, `.../runners`, and `.../testing`.
+
+Generally, packages in the module other than the primary user packages are for framework use.
+They are at risk of changing, though at this point, large breaking changes are unlikely.
+
+### Known Issues
+
+#### Batteries not included.
+* Current native transforms are undertested.
+* IOs may not be written to scale.
+* Go Direct Runner is incomplete and is not portable, prefer using the Python Portable runner, or Flink.
+  * Doesn't support side input windowing. [BEAM-13075](https://issues.apache.org/jira/browse/BEAM-13075)
+  * Doesn't serialize data, making it unlikely to catch coder issues [BEAM-6372](https://issues.apache.org/jira/browse/BEAM-6372)
+  * Can use other general improvements, and become portable [BEAM-11076](https://issues.apache.org/jira/browse/BEAM-11076)
+* Current Trigger API is under iteration and subject to change [BEAM-3304](https://issues.apache.org/jira/browse/BEAM-3304).
+  * API has a possible breaking change between 2.33.0 and 2.34.0, and may change again.
+* Support of the SDK on services, like Google Cloud Dataflow, remains at the service owner's discretion.
+* Need something?
+  * File a ticket in the [Beam JIRA](https://issues.apache.org/jira/issues/?jql=project%20%3D%20BEAM%20AND%20component%20%3D%20sdk-go) and,
+  * Email the dev@beam.apache.org list!
+
+#### Fixed in 2.34.0
+  * `top.SmallestPerKey` was broken [BEAM-12946](https://issues.apache.org/jira/browse/BEAM-12946)
+  * `beam.TryCrossLanguage` API didn't match non-Try version [BEAM-9918](https://issues.apache.org/jira/browse/BEAM-9918)
+    * This is a breaking change if one was calling `beam.TryCrossLanguage`
+
+#### Fixed in 2.35.0
+  * Non-Global Window Side Inputs don't match (correctness bug) [BEAM-11087](https://issues.apache.org/jira/browse/BEAM-11087)
+    * Until 2.35.0 it's not recommended to use SideInputs that are not using the Global Window.
+  * Side Inputs using DoFns accumulate memory over bundles, causing OOMs [BEAM-13130](https://issues.apache.org/jira/browse/BEAM-13130)
+
+## Roadmap
+
+The [SDK roadmap](/roadmap/go-sdk/) has been updated.
+Ongoing focus is to bolster more streaming focused features, and improve existing connectors, and make connectors easier to implement.
+
+In the nearer term this comes in the form of improvements to Side Inputs, and providing wrappers and improving ease-of-use for Cross Language Transforms from Java.
+
+## Conclusion
+
+We hope you find the SDK useful, and it's still early days.
+If you make something using it, consider [sharing it with us](/community/contact-us/).

Review comment:
       awkward?
   ```suggestion
   If you make something useful, consider [sharing it with us](/community/contact-us/).
   ```

##########
File path: website/www/site/content/en/blog/go-sdk-release.md
##########
@@ -0,0 +1,163 @@
+---
+title:  "Go SDK Exits Experimental in Apache Beam 2.33.0"
+date:   2021-11-04 00:00:01 -0800
+categories:
+  - blog
+authors:
+  - lostluck
+---
+<!--
+Licensed 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.
+-->
+
+Apache Beam’s latest release, version [2.33.0](/get-started/downloads/), is the first official release of the long experimental Go SDK.
+Built with the [Go Programming Language](https://golang.org/), the Go SDK joins the Java and Python SDKs as the third implementation of the Beam programming model.
+
+<!--more-->
+
+## Using the new Go SDK.
+
+New users of the Go SDK can start using it in their Go programs by importing the main beam package:
+
+```
+import "github.com/apache/beam/sdks/v2/go/pkg/beam"
+```
+
+The next run of `go mod tidy` will fetch the latest stable version of the module.
+Alternatively executing `go get github.com/apache/beam/sdks/v2/go/pkg/beam` will download it to the local module cache immeadiately, and add it to your `go.mod` file.
+
+Existing users of the experimental Go SDK need to update to new `v2` import paths to start using the latest versions of the SDK.
+This is can be done by adding `v2` to the import paths, changing `github.com/apache/beam/sdks/go/`... to `github.com/apache/beam/sdks/v2/go/`... where applicable, and then running `go mod tidy`.
+
+Further documentation on using the SDK is available in the [Beam Programming Guide](/documentation/programming-guide/), and in the package Go Doc at https://pkg.go.dev/github.com/apache/beam/sdks/v2/go/pkg/beam.
+
+## Feature Support
+
+At time of writing, the Go SDK is currently "Batteries Not Included".
+This means that there are gaps or edge cases in supported IOs and transforms.
+That said, the core of the SDK enables a great deal of the Beam Model for
+custom user use, supporting following features:
+
+* PTransforms
+  * Impulse
+  * Create
+  * ParDo w/User DoFns
+    * Iterable Side Inputs
+    * Multiple Output emitters
+    * Receive and Return Key Value pairs
+    * EventTime
+    * SplittableDoFns
+  * GroupByKey and CoGroupByKey
+  * CombineFns for use with Combine and CombinePerKey
+  * Windowing
+    * Global, Fixed intervals, Sliding windows, and Session
+    * Aggregating over windowed PCollections w/GBKs or Combines.
+  * Flatten
+  * Partition
+  * Composites
+  * Cross Language Transforms
+* Coders
+  * Primitive Go types (ints, string, []bytes, and more)
+  * Beam Schemas for Go Struct types (including struct, slice, and map fields)
+  * Registering custom coders
+* Metrics
+  * PCollection metrics (ElementCount, Size Estimates)
+  * Custom User Metrics
+  * Post job user metrics querying (coming in 2.34.0)
+  * DoFn profiling metrics (coming in 2.35.0)
+* Provided Built Transforms
+  * Sum, Count, Min, Max, Top, Filter
+  * Scalable TextIO Reading
+
+Upcoming features support roadmap, and known issues are discussed below.
+In particular, we plan to support a much richer set of IO connectors via Beam's cross-language capabilities.
+
+## Releases
+
+With this release, the Go SDK now uses [Go Modules](https://golang.org/ref/mod) for dependency management.
+This makes it so users, SDK Devs, and the testing infrastructure can all rely on the same versions of dependencies, making builds reproducible.
+This also makes [validating Go SDK Release Candidates simple](/blog/validate-beam-release/#configuring-a-go-build-to-validate-a-beam-release-candidate).
+
+Versioned SDK worker containers are now built and [published](https://hub.docker.com/r/apache/beam_go_sdk/tags?page=1&ordering=last_updated), with the SDK using matched tagged versions.
+For released versions, user jobs no longer need to specify a container to use, except when using custom containers.
+
+## Compatibility
+
+The Go SDK will largely follow suit with the Go notion of compatibility.
+Some concessions are made to keep all SDKs together on the same release cycle.
+
+### Language Compatibility
+
+The SDK will be tested at a minimum [Go Programming Language version of 1.16](https://golang.org/doc/devel/release), and use available language features and standard library packages accordingly.
+To maintain a broad compatibility, the Go SDK will not require the latest major version of Go.
+We expect to follow the 2nd newest supported release of the language, with a possible exception when Go 1.18 is released, in order to begin experimenting with [Go Generics](https://go.dev/blog/generics-proposal) in the SDK.
+Release notes will call out when the minimum version of the language changes.
+
+### Package Compatibility
+
+The primary user packages will avoid changing in backwards incompatible ways for core features.
+This is to be inline with Go's notion of the [`import compatibility rule`](https://research.swtch.com/vgo-import).
+
+> If an old package and a new package have the same import path,
+> the new package must be backwards compatible with the old package.
+
+Exceptions to this policy are around newer, experimental, or in development features.
+These are subject to change.
+Such features will have a doc comment noting the experimental status, or be mentioned the change notes for a release.
+For example, using `beam.WindowInto` with Triggers is currently experimental and may have the api changed in a future release.
+
+Primary user packages include:
+* The main beam package `github.com/apache/beam/sdks/v2/go/pkg/beam`
+* Sub packages under `.../transforms`, `.../io`, `.../runners`, and `.../testing`.
+
+Generally, packages in the module other than the primary user packages are for framework use.
+They are at risk of changing, though at this point, large breaking changes are unlikely.
+
+### Known Issues
+
+#### Batteries not included.
+* Current native transforms are undertested.
+* IOs may not be written to scale.
+* Go Direct Runner is incomplete and is not portable, prefer using the Python Portable runner, or Flink.
+  * Doesn't support side input windowing. [BEAM-13075](https://issues.apache.org/jira/browse/BEAM-13075)
+  * Doesn't serialize data, making it unlikely to catch coder issues [BEAM-6372](https://issues.apache.org/jira/browse/BEAM-6372)
+  * Can use other general improvements, and become portable [BEAM-11076](https://issues.apache.org/jira/browse/BEAM-11076)
+* Current Trigger API is under iteration and subject to change [BEAM-3304](https://issues.apache.org/jira/browse/BEAM-3304).
+  * API has a possible breaking change between 2.33.0 and 2.34.0, and may change again.
+* Support of the SDK on services, like Google Cloud Dataflow, remains at the service owner's discretion.
+* Need something?
+  * File a ticket in the [Beam JIRA](https://issues.apache.org/jira/issues/?jql=project%20%3D%20BEAM%20AND%20component%20%3D%20sdk-go) and,
+  * Email the dev@beam.apache.org list!
+
+#### Fixed in 2.34.0
+  * `top.SmallestPerKey` was broken [BEAM-12946](https://issues.apache.org/jira/browse/BEAM-12946)
+  * `beam.TryCrossLanguage` API didn't match non-Try version [BEAM-9918](https://issues.apache.org/jira/browse/BEAM-9918)
+    * This is a breaking change if one was calling `beam.TryCrossLanguage`
+
+#### Fixed in 2.35.0
+  * Non-Global Window Side Inputs don't match (correctness bug) [BEAM-11087](https://issues.apache.org/jira/browse/BEAM-11087)
+    * Until 2.35.0 it's not recommended to use SideInputs that are not using the Global Window.
+  * Side Inputs using DoFns accumulate memory over bundles, causing OOMs [BEAM-13130](https://issues.apache.org/jira/browse/BEAM-13130)
+
+## Roadmap
+
+The [SDK roadmap](/roadmap/go-sdk/) has been updated.
+Ongoing focus is to bolster more streaming focused features, and improve existing connectors, and make connectors easier to implement.

Review comment:
       ```suggestion
   Ongoing focus is to bolster streaming focused features, improve existing connectors, and make connectors easier to implement.
   ```

##########
File path: website/www/site/content/en/blog/go-sdk-release.md
##########
@@ -0,0 +1,163 @@
+---
+title:  "Go SDK Exits Experimental in Apache Beam 2.33.0"
+date:   2021-11-04 00:00:01 -0800
+categories:
+  - blog
+authors:
+  - lostluck
+---
+<!--
+Licensed 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.
+-->
+
+Apache Beam’s latest release, version [2.33.0](/get-started/downloads/), is the first official release of the long experimental Go SDK.
+Built with the [Go Programming Language](https://golang.org/), the Go SDK joins the Java and Python SDKs as the third implementation of the Beam programming model.
+
+<!--more-->
+
+## Using the new Go SDK.
+
+New users of the Go SDK can start using it in their Go programs by importing the main beam package:
+
+```
+import "github.com/apache/beam/sdks/v2/go/pkg/beam"
+```
+
+The next run of `go mod tidy` will fetch the latest stable version of the module.
+Alternatively executing `go get github.com/apache/beam/sdks/v2/go/pkg/beam` will download it to the local module cache immeadiately, and add it to your `go.mod` file.
+
+Existing users of the experimental Go SDK need to update to new `v2` import paths to start using the latest versions of the SDK.
+This is can be done by adding `v2` to the import paths, changing `github.com/apache/beam/sdks/go/`... to `github.com/apache/beam/sdks/v2/go/`... where applicable, and then running `go mod tidy`.
+
+Further documentation on using the SDK is available in the [Beam Programming Guide](/documentation/programming-guide/), and in the package Go Doc at https://pkg.go.dev/github.com/apache/beam/sdks/v2/go/pkg/beam.
+
+## Feature Support
+
+At time of writing, the Go SDK is currently "Batteries Not Included".
+This means that there are gaps or edge cases in supported IOs and transforms.
+That said, the core of the SDK enables a great deal of the Beam Model for
+custom user use, supporting following features:
+
+* PTransforms
+  * Impulse
+  * Create
+  * ParDo w/User DoFns
+    * Iterable Side Inputs
+    * Multiple Output emitters
+    * Receive and Return Key Value pairs
+    * EventTime
+    * SplittableDoFns
+  * GroupByKey and CoGroupByKey
+  * CombineFns for use with Combine and CombinePerKey
+  * Windowing
+    * Global, Fixed intervals, Sliding windows, and Session
+    * Aggregating over windowed PCollections w/GBKs or Combines.
+  * Flatten
+  * Partition
+  * Composites

Review comment:
       ```suggestion
     * Composite Transforms
   ```

##########
File path: website/www/site/content/en/blog/go-sdk-release.md
##########
@@ -0,0 +1,163 @@
+---
+title:  "Go SDK Exits Experimental in Apache Beam 2.33.0"
+date:   2021-11-04 00:00:01 -0800
+categories:
+  - blog
+authors:
+  - lostluck
+---
+<!--
+Licensed 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.
+-->
+
+Apache Beam’s latest release, version [2.33.0](/get-started/downloads/), is the first official release of the long experimental Go SDK.
+Built with the [Go Programming Language](https://golang.org/), the Go SDK joins the Java and Python SDKs as the third implementation of the Beam programming model.
+
+<!--more-->
+
+## Using the new Go SDK.
+
+New users of the Go SDK can start using it in their Go programs by importing the main beam package:
+
+```
+import "github.com/apache/beam/sdks/v2/go/pkg/beam"
+```
+
+The next run of `go mod tidy` will fetch the latest stable version of the module.
+Alternatively executing `go get github.com/apache/beam/sdks/v2/go/pkg/beam` will download it to the local module cache immeadiately, and add it to your `go.mod` file.
+
+Existing users of the experimental Go SDK need to update to new `v2` import paths to start using the latest versions of the SDK.
+This is can be done by adding `v2` to the import paths, changing `github.com/apache/beam/sdks/go/`... to `github.com/apache/beam/sdks/v2/go/`... where applicable, and then running `go mod tidy`.
+
+Further documentation on using the SDK is available in the [Beam Programming Guide](/documentation/programming-guide/), and in the package Go Doc at https://pkg.go.dev/github.com/apache/beam/sdks/v2/go/pkg/beam.
+
+## Feature Support
+
+At time of writing, the Go SDK is currently "Batteries Not Included".
+This means that there are gaps or edge cases in supported IOs and transforms.
+That said, the core of the SDK enables a great deal of the Beam Model for
+custom user use, supporting following features:
+
+* PTransforms
+  * Impulse
+  * Create
+  * ParDo w/User DoFns
+    * Iterable Side Inputs
+    * Multiple Output emitters
+    * Receive and Return Key Value pairs
+    * EventTime
+    * SplittableDoFns
+  * GroupByKey and CoGroupByKey
+  * CombineFns for use with Combine and CombinePerKey
+  * Windowing
+    * Global, Fixed intervals, Sliding windows, and Session
+    * Aggregating over windowed PCollections w/GBKs or Combines.
+  * Flatten
+  * Partition
+  * Composites
+  * Cross Language Transforms
+* Coders
+  * Primitive Go types (ints, string, []bytes, and more)
+  * Beam Schemas for Go Struct types (including struct, slice, and map fields)
+  * Registering custom coders
+* Metrics
+  * PCollection metrics (ElementCount, Size Estimates)
+  * Custom User Metrics
+  * Post job user metrics querying (coming in 2.34.0)
+  * DoFn profiling metrics (coming in 2.35.0)
+* Provided Built Transforms
+  * Sum, Count, Min, Max, Top, Filter
+  * Scalable TextIO Reading
+
+Upcoming features support roadmap, and known issues are discussed below.
+In particular, we plan to support a much richer set of IO connectors via Beam's cross-language capabilities.
+
+## Releases
+
+With this release, the Go SDK now uses [Go Modules](https://golang.org/ref/mod) for dependency management.
+This makes it so users, SDK Devs, and the testing infrastructure can all rely on the same versions of dependencies, making builds reproducible.
+This also makes [validating Go SDK Release Candidates simple](/blog/validate-beam-release/#configuring-a-go-build-to-validate-a-beam-release-candidate).
+
+Versioned SDK worker containers are now built and [published](https://hub.docker.com/r/apache/beam_go_sdk/tags?page=1&ordering=last_updated), with the SDK using matched tagged versions.
+For released versions, user jobs no longer need to specify a container to use, except when using custom containers.
+
+## Compatibility
+
+The Go SDK will largely follow suit with the Go notion of compatibility.
+Some concessions are made to keep all SDKs together on the same release cycle.
+
+### Language Compatibility
+
+The SDK will be tested at a minimum [Go Programming Language version of 1.16](https://golang.org/doc/devel/release), and use available language features and standard library packages accordingly.
+To maintain a broad compatibility, the Go SDK will not require the latest major version of Go.
+We expect to follow the 2nd newest supported release of the language, with a possible exception when Go 1.18 is released, in order to begin experimenting with [Go Generics](https://go.dev/blog/generics-proposal) in the SDK.
+Release notes will call out when the minimum version of the language changes.
+
+### Package Compatibility
+
+The primary user packages will avoid changing in backwards incompatible ways for core features.
+This is to be inline with Go's notion of the [`import compatibility rule`](https://research.swtch.com/vgo-import).
+
+> If an old package and a new package have the same import path,
+> the new package must be backwards compatible with the old package.
+
+Exceptions to this policy are around newer, experimental, or in development features.
+These are subject to change.
+Such features will have a doc comment noting the experimental status, or be mentioned the change notes for a release.
+For example, using `beam.WindowInto` with Triggers is currently experimental and may have the api changed in a future release.

Review comment:
       ```suggestion
   Such features will have a doc comment noting the experimental status. Major changes will be mentioned in the release notes.
   For example, using `beam.WindowInto` with Triggers is currently experimental and may have the API changed in a future release.
   ```

##########
File path: website/www/site/content/en/blog/go-sdk-release.md
##########
@@ -0,0 +1,163 @@
+---
+title:  "Go SDK Exits Experimental in Apache Beam 2.33.0"
+date:   2021-11-04 00:00:01 -0800
+categories:
+  - blog
+authors:
+  - lostluck
+---
+<!--
+Licensed 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.
+-->
+
+Apache Beam’s latest release, version [2.33.0](/get-started/downloads/), is the first official release of the long experimental Go SDK.
+Built with the [Go Programming Language](https://golang.org/), the Go SDK joins the Java and Python SDKs as the third implementation of the Beam programming model.
+
+<!--more-->
+
+## Using the new Go SDK.
+
+New users of the Go SDK can start using it in their Go programs by importing the main beam package:
+
+```
+import "github.com/apache/beam/sdks/v2/go/pkg/beam"
+```
+
+The next run of `go mod tidy` will fetch the latest stable version of the module.
+Alternatively executing `go get github.com/apache/beam/sdks/v2/go/pkg/beam` will download it to the local module cache immeadiately, and add it to your `go.mod` file.
+
+Existing users of the experimental Go SDK need to update to new `v2` import paths to start using the latest versions of the SDK.
+This is can be done by adding `v2` to the import paths, changing `github.com/apache/beam/sdks/go/`... to `github.com/apache/beam/sdks/v2/go/`... where applicable, and then running `go mod tidy`.
+
+Further documentation on using the SDK is available in the [Beam Programming Guide](/documentation/programming-guide/), and in the package Go Doc at https://pkg.go.dev/github.com/apache/beam/sdks/v2/go/pkg/beam.
+
+## Feature Support
+
+At time of writing, the Go SDK is currently "Batteries Not Included".
+This means that there are gaps or edge cases in supported IOs and transforms.
+That said, the core of the SDK enables a great deal of the Beam Model for
+custom user use, supporting following features:
+
+* PTransforms

Review comment:
       I would consider only capitalizing the first word in this list except where we are using DoFns, ParDo, GroupByKey, CoGroupByKey, SplittableDoFn, PCollection, 

##########
File path: website/www/site/content/en/blog/go-sdk-release.md
##########
@@ -0,0 +1,163 @@
+---
+title:  "Go SDK Exits Experimental in Apache Beam 2.33.0"
+date:   2021-11-04 00:00:01 -0800
+categories:
+  - blog
+authors:
+  - lostluck
+---
+<!--
+Licensed 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.
+-->
+
+Apache Beam’s latest release, version [2.33.0](/get-started/downloads/), is the first official release of the long experimental Go SDK.
+Built with the [Go Programming Language](https://golang.org/), the Go SDK joins the Java and Python SDKs as the third implementation of the Beam programming model.
+
+<!--more-->
+
+## Using the new Go SDK.
+
+New users of the Go SDK can start using it in their Go programs by importing the main beam package:
+
+```
+import "github.com/apache/beam/sdks/v2/go/pkg/beam"
+```
+
+The next run of `go mod tidy` will fetch the latest stable version of the module.
+Alternatively executing `go get github.com/apache/beam/sdks/v2/go/pkg/beam` will download it to the local module cache immeadiately, and add it to your `go.mod` file.
+
+Existing users of the experimental Go SDK need to update to new `v2` import paths to start using the latest versions of the SDK.
+This is can be done by adding `v2` to the import paths, changing `github.com/apache/beam/sdks/go/`... to `github.com/apache/beam/sdks/v2/go/`... where applicable, and then running `go mod tidy`.
+
+Further documentation on using the SDK is available in the [Beam Programming Guide](/documentation/programming-guide/), and in the package Go Doc at https://pkg.go.dev/github.com/apache/beam/sdks/v2/go/pkg/beam.
+
+## Feature Support
+
+At time of writing, the Go SDK is currently "Batteries Not Included".
+This means that there are gaps or edge cases in supported IOs and transforms.
+That said, the core of the SDK enables a great deal of the Beam Model for
+custom user use, supporting following features:
+
+* PTransforms
+  * Impulse
+  * Create
+  * ParDo w/User DoFns
+    * Iterable Side Inputs
+    * Multiple Output emitters
+    * Receive and Return Key Value pairs
+    * EventTime
+    * SplittableDoFns
+  * GroupByKey and CoGroupByKey
+  * CombineFns for use with Combine and CombinePerKey
+  * Windowing
+    * Global, Fixed intervals, Sliding windows, and Session
+    * Aggregating over windowed PCollections w/GBKs or Combines.
+  * Flatten
+  * Partition
+  * Composites
+  * Cross Language Transforms
+* Coders
+  * Primitive Go types (ints, string, []bytes, and more)
+  * Beam Schemas for Go Struct types (including struct, slice, and map fields)
+  * Registering custom coders
+* Metrics
+  * PCollection metrics (ElementCount, Size Estimates)
+  * Custom User Metrics
+  * Post job user metrics querying (coming in 2.34.0)
+  * DoFn profiling metrics (coming in 2.35.0)
+* Provided Built Transforms
+  * Sum, Count, Min, Max, Top, Filter
+  * Scalable TextIO Reading
+
+Upcoming features support roadmap, and known issues are discussed below.
+In particular, we plan to support a much richer set of IO connectors via Beam's cross-language capabilities.
+
+## Releases
+
+With this release, the Go SDK now uses [Go Modules](https://golang.org/ref/mod) for dependency management.
+This makes it so users, SDK Devs, and the testing infrastructure can all rely on the same versions of dependencies, making builds reproducible.
+This also makes [validating Go SDK Release Candidates simple](/blog/validate-beam-release/#configuring-a-go-build-to-validate-a-beam-release-candidate).
+
+Versioned SDK worker containers are now built and [published](https://hub.docker.com/r/apache/beam_go_sdk/tags?page=1&ordering=last_updated), with the SDK using matched tagged versions.
+For released versions, user jobs no longer need to specify a container to use, except when using custom containers.
+
+## Compatibility
+
+The Go SDK will largely follow suit with the Go notion of compatibility.
+Some concessions are made to keep all SDKs together on the same release cycle.
+
+### Language Compatibility
+
+The SDK will be tested at a minimum [Go Programming Language version of 1.16](https://golang.org/doc/devel/release), and use available language features and standard library packages accordingly.
+To maintain a broad compatibility, the Go SDK will not require the latest major version of Go.
+We expect to follow the 2nd newest supported release of the language, with a possible exception when Go 1.18 is released, in order to begin experimenting with [Go Generics](https://go.dev/blog/generics-proposal) in the SDK.
+Release notes will call out when the minimum version of the language changes.
+
+### Package Compatibility
+
+The primary user packages will avoid changing in backwards incompatible ways for core features.
+This is to be inline with Go's notion of the [`import compatibility rule`](https://research.swtch.com/vgo-import).
+
+> If an old package and a new package have the same import path,
+> the new package must be backwards compatible with the old package.
+
+Exceptions to this policy are around newer, experimental, or in development features.
+These are subject to change.

Review comment:
       ```suggestion
   Exceptions to this policy are around newer, experimental, or in development features and are subject to change.
   ```

##########
File path: website/www/site/content/en/blog/go-sdk-release.md
##########
@@ -0,0 +1,163 @@
+---
+title:  "Go SDK Exits Experimental in Apache Beam 2.33.0"
+date:   2021-11-04 00:00:01 -0800
+categories:
+  - blog
+authors:
+  - lostluck
+---
+<!--
+Licensed 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.
+-->
+
+Apache Beam’s latest release, version [2.33.0](/get-started/downloads/), is the first official release of the long experimental Go SDK.
+Built with the [Go Programming Language](https://golang.org/), the Go SDK joins the Java and Python SDKs as the third implementation of the Beam programming model.
+
+<!--more-->
+
+## Using the new Go SDK.
+
+New users of the Go SDK can start using it in their Go programs by importing the main beam package:
+
+```
+import "github.com/apache/beam/sdks/v2/go/pkg/beam"
+```
+
+The next run of `go mod tidy` will fetch the latest stable version of the module.
+Alternatively executing `go get github.com/apache/beam/sdks/v2/go/pkg/beam` will download it to the local module cache immeadiately, and add it to your `go.mod` file.
+
+Existing users of the experimental Go SDK need to update to new `v2` import paths to start using the latest versions of the SDK.
+This is can be done by adding `v2` to the import paths, changing `github.com/apache/beam/sdks/go/`... to `github.com/apache/beam/sdks/v2/go/`... where applicable, and then running `go mod tidy`.
+
+Further documentation on using the SDK is available in the [Beam Programming Guide](/documentation/programming-guide/), and in the package Go Doc at https://pkg.go.dev/github.com/apache/beam/sdks/v2/go/pkg/beam.
+
+## Feature Support
+
+At time of writing, the Go SDK is currently "Batteries Not Included".
+This means that there are gaps or edge cases in supported IOs and transforms.
+That said, the core of the SDK enables a great deal of the Beam Model for
+custom user use, supporting following features:
+
+* PTransforms
+  * Impulse
+  * Create
+  * ParDo w/User DoFns
+    * Iterable Side Inputs
+    * Multiple Output emitters
+    * Receive and Return Key Value pairs
+    * EventTime
+    * SplittableDoFns
+  * GroupByKey and CoGroupByKey
+  * CombineFns for use with Combine and CombinePerKey
+  * Windowing
+    * Global, Fixed intervals, Sliding windows, and Session
+    * Aggregating over windowed PCollections w/GBKs or Combines.
+  * Flatten
+  * Partition
+  * Composites
+  * Cross Language Transforms
+* Coders
+  * Primitive Go types (ints, string, []bytes, and more)
+  * Beam Schemas for Go Struct types (including struct, slice, and map fields)
+  * Registering custom coders
+* Metrics
+  * PCollection metrics (ElementCount, Size Estimates)
+  * Custom User Metrics
+  * Post job user metrics querying (coming in 2.34.0)
+  * DoFn profiling metrics (coming in 2.35.0)
+* Provided Built Transforms
+  * Sum, Count, Min, Max, Top, Filter
+  * Scalable TextIO Reading
+
+Upcoming features support roadmap, and known issues are discussed below.
+In particular, we plan to support a much richer set of IO connectors via Beam's cross-language capabilities.
+
+## Releases
+
+With this release, the Go SDK now uses [Go Modules](https://golang.org/ref/mod) for dependency management.
+This makes it so users, SDK Devs, and the testing infrastructure can all rely on the same versions of dependencies, making builds reproducible.
+This also makes [validating Go SDK Release Candidates simple](/blog/validate-beam-release/#configuring-a-go-build-to-validate-a-beam-release-candidate).
+
+Versioned SDK worker containers are now built and [published](https://hub.docker.com/r/apache/beam_go_sdk/tags?page=1&ordering=last_updated), with the SDK using matched tagged versions.
+For released versions, user jobs no longer need to specify a container to use, except when using custom containers.
+
+## Compatibility
+
+The Go SDK will largely follow suit with the Go notion of compatibility.
+Some concessions are made to keep all SDKs together on the same release cycle.
+
+### Language Compatibility
+
+The SDK will be tested at a minimum [Go Programming Language version of 1.16](https://golang.org/doc/devel/release), and use available language features and standard library packages accordingly.
+To maintain a broad compatibility, the Go SDK will not require the latest major version of Go.
+We expect to follow the 2nd newest supported release of the language, with a possible exception when Go 1.18 is released, in order to begin experimenting with [Go Generics](https://go.dev/blog/generics-proposal) in the SDK.
+Release notes will call out when the minimum version of the language changes.
+
+### Package Compatibility
+
+The primary user packages will avoid changing in backwards incompatible ways for core features.
+This is to be inline with Go's notion of the [`import compatibility rule`](https://research.swtch.com/vgo-import).
+
+> If an old package and a new package have the same import path,
+> the new package must be backwards compatible with the old package.
+
+Exceptions to this policy are around newer, experimental, or in development features.
+These are subject to change.
+Such features will have a doc comment noting the experimental status, or be mentioned the change notes for a release.
+For example, using `beam.WindowInto` with Triggers is currently experimental and may have the api changed in a future release.
+
+Primary user packages include:
+* The main beam package `github.com/apache/beam/sdks/v2/go/pkg/beam`
+* Sub packages under `.../transforms`, `.../io`, `.../runners`, and `.../testing`.
+
+Generally, packages in the module other than the primary user packages are for framework use.
+They are at risk of changing, though at this point, large breaking changes are unlikely.
+
+### Known Issues
+
+#### Batteries not included.
+* Current native transforms are undertested.
+* IOs may not be written to scale.
+* Go Direct Runner is incomplete and is not portable, prefer using the Python Portable runner, or Flink.
+  * Doesn't support side input windowing. [BEAM-13075](https://issues.apache.org/jira/browse/BEAM-13075)
+  * Doesn't serialize data, making it unlikely to catch coder issues [BEAM-6372](https://issues.apache.org/jira/browse/BEAM-6372)
+  * Can use other general improvements, and become portable [BEAM-11076](https://issues.apache.org/jira/browse/BEAM-11076)
+* Current Trigger API is under iteration and subject to change [BEAM-3304](https://issues.apache.org/jira/browse/BEAM-3304).
+  * API has a possible breaking change between 2.33.0 and 2.34.0, and may change again.
+* Support of the SDK on services, like Google Cloud Dataflow, remains at the service owner's discretion.
+* Need something?
+  * File a ticket in the [Beam JIRA](https://issues.apache.org/jira/issues/?jql=project%20%3D%20BEAM%20AND%20component%20%3D%20sdk-go) and,
+  * Email the dev@beam.apache.org list!
+
+#### Fixed in 2.34.0
+  * `top.SmallestPerKey` was broken [BEAM-12946](https://issues.apache.org/jira/browse/BEAM-12946)
+  * `beam.TryCrossLanguage` API didn't match non-Try version [BEAM-9918](https://issues.apache.org/jira/browse/BEAM-9918)
+    * This is a breaking change if one was calling `beam.TryCrossLanguage`
+
+#### Fixed in 2.35.0
+  * Non-Global Window Side Inputs don't match (correctness bug) [BEAM-11087](https://issues.apache.org/jira/browse/BEAM-11087)
+    * Until 2.35.0 it's not recommended to use SideInputs that are not using the Global Window.
+  * Side Inputs using DoFns accumulate memory over bundles, causing OOMs [BEAM-13130](https://issues.apache.org/jira/browse/BEAM-13130)

Review comment:
       ```suggestion
     * DoFns using Side Inputs accumulate memory over bundles, causing OOMs [BEAM-13130](https://issues.apache.org/jira/browse/BEAM-13130)
   ```

##########
File path: website/www/site/content/en/blog/go-sdk-release.md
##########
@@ -0,0 +1,163 @@
+---
+title:  "Go SDK Exits Experimental in Apache Beam 2.33.0"
+date:   2021-11-04 00:00:01 -0800
+categories:
+  - blog
+authors:
+  - lostluck
+---
+<!--
+Licensed 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.
+-->
+
+Apache Beam’s latest release, version [2.33.0](/get-started/downloads/), is the first official release of the long experimental Go SDK.
+Built with the [Go Programming Language](https://golang.org/), the Go SDK joins the Java and Python SDKs as the third implementation of the Beam programming model.
+
+<!--more-->
+
+## Using the new Go SDK.
+
+New users of the Go SDK can start using it in their Go programs by importing the main beam package:
+
+```
+import "github.com/apache/beam/sdks/v2/go/pkg/beam"
+```
+
+The next run of `go mod tidy` will fetch the latest stable version of the module.
+Alternatively executing `go get github.com/apache/beam/sdks/v2/go/pkg/beam` will download it to the local module cache immeadiately, and add it to your `go.mod` file.
+
+Existing users of the experimental Go SDK need to update to new `v2` import paths to start using the latest versions of the SDK.
+This is can be done by adding `v2` to the import paths, changing `github.com/apache/beam/sdks/go/`... to `github.com/apache/beam/sdks/v2/go/`... where applicable, and then running `go mod tidy`.
+
+Further documentation on using the SDK is available in the [Beam Programming Guide](/documentation/programming-guide/), and in the package Go Doc at https://pkg.go.dev/github.com/apache/beam/sdks/v2/go/pkg/beam.
+
+## Feature Support
+
+At time of writing, the Go SDK is currently "Batteries Not Included".
+This means that there are gaps or edge cases in supported IOs and transforms.
+That said, the core of the SDK enables a great deal of the Beam Model for
+custom user use, supporting following features:
+
+* PTransforms
+  * Impulse
+  * Create
+  * ParDo w/User DoFns
+    * Iterable Side Inputs
+    * Multiple Output emitters
+    * Receive and Return Key Value pairs
+    * EventTime
+    * SplittableDoFns
+  * GroupByKey and CoGroupByKey
+  * CombineFns for use with Combine and CombinePerKey
+  * Windowing
+    * Global, Fixed intervals, Sliding windows, and Session
+    * Aggregating over windowed PCollections w/GBKs or Combines.

Review comment:
       ```suggestion
       * Aggregating over windowed PCollections with GroupByKeys or Combines.
   ```

##########
File path: website/www/site/content/en/blog/go-sdk-release.md
##########
@@ -0,0 +1,163 @@
+---
+title:  "Go SDK Exits Experimental in Apache Beam 2.33.0"
+date:   2021-11-04 00:00:01 -0800
+categories:
+  - blog
+authors:
+  - lostluck
+---
+<!--
+Licensed 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.
+-->
+
+Apache Beam’s latest release, version [2.33.0](/get-started/downloads/), is the first official release of the long experimental Go SDK.
+Built with the [Go Programming Language](https://golang.org/), the Go SDK joins the Java and Python SDKs as the third implementation of the Beam programming model.
+
+<!--more-->
+
+## Using the new Go SDK.
+
+New users of the Go SDK can start using it in their Go programs by importing the main beam package:
+
+```
+import "github.com/apache/beam/sdks/v2/go/pkg/beam"
+```
+
+The next run of `go mod tidy` will fetch the latest stable version of the module.
+Alternatively executing `go get github.com/apache/beam/sdks/v2/go/pkg/beam` will download it to the local module cache immeadiately, and add it to your `go.mod` file.
+
+Existing users of the experimental Go SDK need to update to new `v2` import paths to start using the latest versions of the SDK.
+This is can be done by adding `v2` to the import paths, changing `github.com/apache/beam/sdks/go/`... to `github.com/apache/beam/sdks/v2/go/`... where applicable, and then running `go mod tidy`.
+
+Further documentation on using the SDK is available in the [Beam Programming Guide](/documentation/programming-guide/), and in the package Go Doc at https://pkg.go.dev/github.com/apache/beam/sdks/v2/go/pkg/beam.
+
+## Feature Support
+
+At time of writing, the Go SDK is currently "Batteries Not Included".
+This means that there are gaps or edge cases in supported IOs and transforms.
+That said, the core of the SDK enables a great deal of the Beam Model for
+custom user use, supporting following features:
+
+* PTransforms
+  * Impulse
+  * Create
+  * ParDo w/User DoFns
+    * Iterable Side Inputs
+    * Multiple Output emitters
+    * Receive and Return Key Value pairs
+    * EventTime
+    * SplittableDoFns
+  * GroupByKey and CoGroupByKey
+  * CombineFns for use with Combine and CombinePerKey
+  * Windowing
+    * Global, Fixed intervals, Sliding windows, and Session
+    * Aggregating over windowed PCollections w/GBKs or Combines.
+  * Flatten
+  * Partition
+  * Composites
+  * Cross Language Transforms
+* Coders
+  * Primitive Go types (ints, string, []bytes, and more)
+  * Beam Schemas for Go Struct types (including struct, slice, and map fields)
+  * Registering custom coders
+* Metrics
+  * PCollection metrics (ElementCount, Size Estimates)
+  * Custom User Metrics
+  * Post job user metrics querying (coming in 2.34.0)
+  * DoFn profiling metrics (coming in 2.35.0)
+* Provided Built Transforms
+  * Sum, Count, Min, Max, Top, Filter
+  * Scalable TextIO Reading
+
+Upcoming features support roadmap, and known issues are discussed below.
+In particular, we plan to support a much richer set of IO connectors via Beam's cross-language capabilities.
+
+## Releases
+
+With this release, the Go SDK now uses [Go Modules](https://golang.org/ref/mod) for dependency management.
+This makes it so users, SDK Devs, and the testing infrastructure can all rely on the same versions of dependencies, making builds reproducible.

Review comment:
       ```suggestion
   This makes it so users, SDK authors, and the testing infrastructure can all rely on the same versions of dependencies, making builds reproducible.
   ```

##########
File path: website/www/site/content/en/blog/go-sdk-release.md
##########
@@ -0,0 +1,163 @@
+---
+title:  "Go SDK Exits Experimental in Apache Beam 2.33.0"
+date:   2021-11-04 00:00:01 -0800
+categories:
+  - blog
+authors:
+  - lostluck
+---
+<!--
+Licensed 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.
+-->
+
+Apache Beam’s latest release, version [2.33.0](/get-started/downloads/), is the first official release of the long experimental Go SDK.
+Built with the [Go Programming Language](https://golang.org/), the Go SDK joins the Java and Python SDKs as the third implementation of the Beam programming model.
+
+<!--more-->
+
+## Using the new Go SDK.
+
+New users of the Go SDK can start using it in their Go programs by importing the main beam package:
+
+```
+import "github.com/apache/beam/sdks/v2/go/pkg/beam"
+```
+
+The next run of `go mod tidy` will fetch the latest stable version of the module.
+Alternatively executing `go get github.com/apache/beam/sdks/v2/go/pkg/beam` will download it to the local module cache immeadiately, and add it to your `go.mod` file.
+
+Existing users of the experimental Go SDK need to update to new `v2` import paths to start using the latest versions of the SDK.
+This is can be done by adding `v2` to the import paths, changing `github.com/apache/beam/sdks/go/`... to `github.com/apache/beam/sdks/v2/go/`... where applicable, and then running `go mod tidy`.
+
+Further documentation on using the SDK is available in the [Beam Programming Guide](/documentation/programming-guide/), and in the package Go Doc at https://pkg.go.dev/github.com/apache/beam/sdks/v2/go/pkg/beam.
+
+## Feature Support
+
+At time of writing, the Go SDK is currently "Batteries Not Included".
+This means that there are gaps or edge cases in supported IOs and transforms.
+That said, the core of the SDK enables a great deal of the Beam Model for
+custom user use, supporting following features:
+
+* PTransforms
+  * Impulse
+  * Create
+  * ParDo w/User DoFns
+    * Iterable Side Inputs
+    * Multiple Output emitters
+    * Receive and Return Key Value pairs
+    * EventTime
+    * SplittableDoFns
+  * GroupByKey and CoGroupByKey
+  * CombineFns for use with Combine and CombinePerKey
+  * Windowing
+    * Global, Fixed intervals, Sliding windows, and Session
+    * Aggregating over windowed PCollections w/GBKs or Combines.
+  * Flatten
+  * Partition
+  * Composites
+  * Cross Language Transforms
+* Coders
+  * Primitive Go types (ints, string, []bytes, and more)
+  * Beam Schemas for Go Struct types (including struct, slice, and map fields)
+  * Registering custom coders
+* Metrics
+  * PCollection metrics (ElementCount, Size Estimates)
+  * Custom User Metrics
+  * Post job user metrics querying (coming in 2.34.0)
+  * DoFn profiling metrics (coming in 2.35.0)
+* Provided Built Transforms
+  * Sum, Count, Min, Max, Top, Filter
+  * Scalable TextIO Reading
+
+Upcoming features support roadmap, and known issues are discussed below.
+In particular, we plan to support a much richer set of IO connectors via Beam's cross-language capabilities.
+
+## Releases
+
+With this release, the Go SDK now uses [Go Modules](https://golang.org/ref/mod) for dependency management.
+This makes it so users, SDK Devs, and the testing infrastructure can all rely on the same versions of dependencies, making builds reproducible.
+This also makes [validating Go SDK Release Candidates simple](/blog/validate-beam-release/#configuring-a-go-build-to-validate-a-beam-release-candidate).
+
+Versioned SDK worker containers are now built and [published](https://hub.docker.com/r/apache/beam_go_sdk/tags?page=1&ordering=last_updated), with the SDK using matched tagged versions.
+For released versions, user jobs no longer need to specify a container to use, except when using custom containers.

Review comment:
       ```suggestion
   User jobs no longer need to specify a container to use for released versions, except when using custom containers.
   ```

##########
File path: website/www/site/content/en/blog/go-sdk-release.md
##########
@@ -0,0 +1,163 @@
+---
+title:  "Go SDK Exits Experimental in Apache Beam 2.33.0"
+date:   2021-11-04 00:00:01 -0800
+categories:
+  - blog
+authors:
+  - lostluck
+---
+<!--
+Licensed 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.
+-->
+
+Apache Beam’s latest release, version [2.33.0](/get-started/downloads/), is the first official release of the long experimental Go SDK.
+Built with the [Go Programming Language](https://golang.org/), the Go SDK joins the Java and Python SDKs as the third implementation of the Beam programming model.
+
+<!--more-->
+
+## Using the new Go SDK.
+
+New users of the Go SDK can start using it in their Go programs by importing the main beam package:
+
+```
+import "github.com/apache/beam/sdks/v2/go/pkg/beam"
+```
+
+The next run of `go mod tidy` will fetch the latest stable version of the module.
+Alternatively executing `go get github.com/apache/beam/sdks/v2/go/pkg/beam` will download it to the local module cache immeadiately, and add it to your `go.mod` file.
+
+Existing users of the experimental Go SDK need to update to new `v2` import paths to start using the latest versions of the SDK.
+This is can be done by adding `v2` to the import paths, changing `github.com/apache/beam/sdks/go/`... to `github.com/apache/beam/sdks/v2/go/`... where applicable, and then running `go mod tidy`.
+
+Further documentation on using the SDK is available in the [Beam Programming Guide](/documentation/programming-guide/), and in the package Go Doc at https://pkg.go.dev/github.com/apache/beam/sdks/v2/go/pkg/beam.
+
+## Feature Support
+
+At time of writing, the Go SDK is currently "Batteries Not Included".
+This means that there are gaps or edge cases in supported IOs and transforms.
+That said, the core of the SDK enables a great deal of the Beam Model for
+custom user use, supporting following features:
+
+* PTransforms
+  * Impulse
+  * Create
+  * ParDo w/User DoFns
+    * Iterable Side Inputs
+    * Multiple Output emitters
+    * Receive and Return Key Value pairs
+    * EventTime
+    * SplittableDoFns
+  * GroupByKey and CoGroupByKey
+  * CombineFns for use with Combine and CombinePerKey
+  * Windowing
+    * Global, Fixed intervals, Sliding windows, and Session
+    * Aggregating over windowed PCollections w/GBKs or Combines.
+  * Flatten
+  * Partition
+  * Composites
+  * Cross Language Transforms
+* Coders
+  * Primitive Go types (ints, string, []bytes, and more)
+  * Beam Schemas for Go Struct types (including struct, slice, and map fields)
+  * Registering custom coders
+* Metrics
+  * PCollection metrics (ElementCount, Size Estimates)
+  * Custom User Metrics
+  * Post job user metrics querying (coming in 2.34.0)
+  * DoFn profiling metrics (coming in 2.35.0)
+* Provided Built Transforms
+  * Sum, Count, Min, Max, Top, Filter
+  * Scalable TextIO Reading
+
+Upcoming features support roadmap, and known issues are discussed below.
+In particular, we plan to support a much richer set of IO connectors via Beam's cross-language capabilities.
+
+## Releases
+
+With this release, the Go SDK now uses [Go Modules](https://golang.org/ref/mod) for dependency management.
+This makes it so users, SDK Devs, and the testing infrastructure can all rely on the same versions of dependencies, making builds reproducible.
+This also makes [validating Go SDK Release Candidates simple](/blog/validate-beam-release/#configuring-a-go-build-to-validate-a-beam-release-candidate).
+
+Versioned SDK worker containers are now built and [published](https://hub.docker.com/r/apache/beam_go_sdk/tags?page=1&ordering=last_updated), with the SDK using matched tagged versions.
+For released versions, user jobs no longer need to specify a container to use, except when using custom containers.
+
+## Compatibility
+
+The Go SDK will largely follow suit with the Go notion of compatibility.
+Some concessions are made to keep all SDKs together on the same release cycle.
+
+### Language Compatibility
+
+The SDK will be tested at a minimum [Go Programming Language version of 1.16](https://golang.org/doc/devel/release), and use available language features and standard library packages accordingly.
+To maintain a broad compatibility, the Go SDK will not require the latest major version of Go.
+We expect to follow the 2nd newest supported release of the language, with a possible exception when Go 1.18 is released, in order to begin experimenting with [Go Generics](https://go.dev/blog/generics-proposal) in the SDK.
+Release notes will call out when the minimum version of the language changes.
+
+### Package Compatibility
+
+The primary user packages will avoid changing in backwards incompatible ways for core features.
+This is to be inline with Go's notion of the [`import compatibility rule`](https://research.swtch.com/vgo-import).
+
+> If an old package and a new package have the same import path,
+> the new package must be backwards compatible with the old package.
+
+Exceptions to this policy are around newer, experimental, or in development features.
+These are subject to change.
+Such features will have a doc comment noting the experimental status, or be mentioned the change notes for a release.
+For example, using `beam.WindowInto` with Triggers is currently experimental and may have the api changed in a future release.
+
+Primary user packages include:
+* The main beam package `github.com/apache/beam/sdks/v2/go/pkg/beam`
+* Sub packages under `.../transforms`, `.../io`, `.../runners`, and `.../testing`.
+
+Generally, packages in the module other than the primary user packages are for framework use.
+They are at risk of changing, though at this point, large breaking changes are unlikely.

Review comment:
       ```suggestion
   Generally, packages in the module other than the primary user packages are for framework use and are at risk of changing.
   ```

##########
File path: website/www/site/content/en/blog/go-sdk-release.md
##########
@@ -0,0 +1,161 @@
+---
+title:  "Go SDK Exits Experimental in Apache Beam 2.33.0"
+date:   2021-11-04 00:00:01 -0800
+categories:
+  - blog
+authors:
+  - lostluck
+---
+<!--
+Licensed 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.
+-->
+
+Apache Beam’s latest release, version [2.33.0](/get-started/downloads/), is the first official release of the long experimental Go SDK.
+Built with the [Go Programming Language](https://golang.org/), the Go SDK joins the Java and Python SDKs as the third implementation of the Beam programming model.
+
+<!--more-->
+
+## Using the new Go SDK.
+
+New users of the Go SDK can start using it in their Go programs by importing the main beam package:
+
+```
+import "github.com/apache/beam/sdks/v2/go/pkg/beam"
+```
+
+The next run of `go mod tidy` will fetch the latest stable version of the module.
+Alternatively executing `go get github.com/apache/beam/sdks/v2/go/pkg/beam` will download it to the local module cache immeadiately, and add it to your `go.mod` file.
+
+Existing users of the experimental Go SDK need to update to new `v2` import paths to start using the latest versions of the SDK.
+This is can be done by adding `v2` to the import paths, changing `github.com/apache/beam/sdks/go/`... to `github.com/apache/beam/sdks/v2/go/`... where applicable, and then running `go mod tidy`.

Review comment:
       ```suggestion
   This can be done by adding `v2` to the import paths, changing `github.com/apache/beam/sdks/go/`... to `github.com/apache/beam/sdks/v2/go/`... where applicable, and then running `go mod tidy`.
   ```

##########
File path: website/www/site/content/en/blog/go-sdk-release.md
##########
@@ -0,0 +1,161 @@
+---
+title:  "Go SDK Exits Experimental in Apache Beam 2.33.0"
+date:   2021-11-04 00:00:01 -0800
+categories:
+  - blog
+authors:
+  - lostluck
+---
+<!--
+Licensed 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.
+-->
+
+Apache Beam’s latest release, version [2.33.0](/get-started/downloads/), is the first official release of the long experimental Go SDK.
+Built with the [Go Programming Language](https://golang.org/), the Go SDK joins the Java and Python SDKs as the third implementation of the Beam programming model.
+
+<!--more-->
+
+## Using the new Go SDK.
+
+New users of the Go SDK can start using it in their Go programs by importing the main beam package:
+
+```
+import "github.com/apache/beam/sdks/v2/go/pkg/beam"
+```
+
+The next run of `go mod tidy` will fetch the latest stable version of the module.
+Alternatively executing `go get github.com/apache/beam/sdks/v2/go/pkg/beam` will download it to the local module cache immeadiately, and add it to your `go.mod` file.
+
+Existing users of the experimental Go SDK need to update to new `v2` import paths to start using the latest versions of the SDK.
+This is can be done by adding `v2` to the import paths, changing `github.com/apache/beam/sdks/go/`... to `github.com/apache/beam/sdks/v2/go/`... where applicable, and then running `go mod tidy`.
+
+Further documentation on using the SDK is available in the [Beam Programming Guide](/documentation/programming-guide/), and in the package [Go Doc](https://pkg.go.dev/github.com/apache/beam/sdks/v2/go/pkg/beam).
+
+## Feature Support
+
+At time of writing, the Go SDK is currently "Batteries Not Included".
+This means that there are gaps or edge cases in supported IOs and transforms.
+That said, the core of the SDK enables a great deal of the Beam Model for
+custom user use, supporting following features:
+
+* PTransforms
+  * Impulse
+  * Create
+  * ParDo with user DoFns
+    * Iterable side inputs
+    * Multiple output emitters
+    * Receive and return key-value pairs
+    * SplittableDoFns
+  * GroupByKey and CoGroupByKey
+  * CombineFns for use with Combine and CombinePerKey
+  * Flatten
+  * Partition
+  * Composite transforms
+  * Cross language transforms
+* EventTime windowing
+  * Global, Fixed Interval, Sliding, and Session windows
+  * Aggregating over windowed PCollections with GroupByKeys or Combines.

Review comment:
       ```suggestion
     * Aggregating over windowed PCollections with GroupByKeys or Combines
   ```

##########
File path: website/www/site/content/en/roadmap/go-sdk.md
##########
@@ -17,55 +17,14 @@ limitations under the License.
 
 # Go SDK Roadmap
 
-The Go SDK is currently experimental. As the first purely portable Beam SDK, the Go SDK is constrained
-by the status of the [Beam Portability Framework](https://beam.apache.org/roadmap/portability/) and the existence of
-portable runners.
+The Go SDK is [fully released as of v2.33.0](/blog/go-sdk-release/).
 
-**April 2020 Update**
-This year we hope to move the SDK out of experimental at least for Batch usage.
+The Go SDK the first SDK purely on the [Beam Portability Framework](/roadmap/portability/)
+and can execute pipelines on portable runners, like Flink, Spark, Samza, and Google Cloud Dataflow.
 
-To do so, there are a few blocking changes:
-  * Support Interoperability with other SDKs
-  * Scalable IOs
-  * Portability Proto stability
-  * Go Ecosystem integration improvements
-
-Interoperability while not a blocking feature in itself, requires Beam Schema support, which
-the SDK could then use as it's default coder. Batch Splittable DoFns are nearly ready for
-playing with on Flink, and the Python Direct Runner, answering the scalable batch IO question.
-There's much work getting the portability protos to a stable baseline. This will allow runner
-and SDK independance, so they don't need to be updated in lockstep. Finally, the Go SDK should
-adopt Go Modules as it's versioning solution, and officially "catch up" with the current beam
-version.
-
-The Go SDK has the following goals for the next few months:
-
-## Usability
-
-* Beam Schema Support [BEAM-9615](https://issues.apache.org/jira/browse/BEAM-9615)
-* Improvements to starcgen [BEAM-9616](https://issues.apache.org/jira/browse/BEAM-9616)
-
-## Integrating with the Go ecosystem
-
-The authors of the Go SDK intended to keep the parts of the language we love, and intend for
-user pipelines to be as close to ordinary Go as possible, minimizing framework boiler plate code.
-
-* Migrate to a vanity URL path [BEAM-4115](https://issues.apache.org/jira/browse/BEAM-4115)
-* Package versioning support [BEAM-5379](https://issues.apache.org/jira/browse/BEAM-5379)
-
-## Implement Portability features
-
-The following are dependant on the features being implemented in the Portability Framework.
-
-* Splitable DoFns (SDFs) for Scalable IO [BEAM-3301](https://issues.apache.org/jira/browse/BEAM-3301)
-  * This is the primary blocker for the Go SDK to scale to ingest large numbers of elements in both batch and streaming.
-* Triggers and Timers [BEAM-3304](https://issues.apache.org/jira/browse/BEAM-3304)
-* Advanced WindowFns
-   * Session windows [BEAM-4152](https://issues.apache.org/jira/browse/BEAM-4152)
-   * Custom WindowFns (dependant on streaming Splitable DoFn support) [BEAM-2939](https://issues.apache.org/jira/browse/BEAM-2939)
-
-Without SDFs, IOs are always constrained to work on a single machine prior to a sharding operation (like CoGroupByKey),
-which makes scalable IOs difficult to impossible to write.
+Current roadmap:
+* continue building up Streaming facing features, as described on the [Beam Dev Wiki](https://cwiki.apache.org/confluence/display/BEAM/Supporting+Streaming+in+the+Go+SDK).
+* improve Connector support via Cross Language transforms, and improving scalable native transforms. [Go SDK Connector Roadmap](/roadmap/connectors-go-sdk/)

Review comment:
       ```suggestion
   * improve IO support via cross language transforms and improve scalable native transforms. [Go SDK Connector Roadmap](/roadmap/connectors-go-sdk/)
   ```

##########
File path: website/www/site/content/en/blog/go-sdk-release.md
##########
@@ -0,0 +1,161 @@
+---
+title:  "Go SDK Exits Experimental in Apache Beam 2.33.0"
+date:   2021-11-04 00:00:01 -0800
+categories:
+  - blog
+authors:
+  - lostluck
+---
+<!--
+Licensed 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.
+-->
+
+Apache Beam’s latest release, version [2.33.0](/get-started/downloads/), is the first official release of the long experimental Go SDK.
+Built with the [Go Programming Language](https://golang.org/), the Go SDK joins the Java and Python SDKs as the third implementation of the Beam programming model.
+
+<!--more-->
+
+## Using the new Go SDK.
+
+New users of the Go SDK can start using it in their Go programs by importing the main beam package:
+
+```
+import "github.com/apache/beam/sdks/v2/go/pkg/beam"
+```
+
+The next run of `go mod tidy` will fetch the latest stable version of the module.
+Alternatively executing `go get github.com/apache/beam/sdks/v2/go/pkg/beam` will download it to the local module cache immeadiately, and add it to your `go.mod` file.
+
+Existing users of the experimental Go SDK need to update to new `v2` import paths to start using the latest versions of the SDK.
+This is can be done by adding `v2` to the import paths, changing `github.com/apache/beam/sdks/go/`... to `github.com/apache/beam/sdks/v2/go/`... where applicable, and then running `go mod tidy`.
+
+Further documentation on using the SDK is available in the [Beam Programming Guide](/documentation/programming-guide/), and in the package [Go Doc](https://pkg.go.dev/github.com/apache/beam/sdks/v2/go/pkg/beam).
+
+## Feature Support
+
+At time of writing, the Go SDK is currently "Batteries Not Included".
+This means that there are gaps or edge cases in supported IOs and transforms.
+That said, the core of the SDK enables a great deal of the Beam Model for
+custom user use, supporting following features:
+
+* PTransforms
+  * Impulse
+  * Create
+  * ParDo with user DoFns
+    * Iterable side inputs
+    * Multiple output emitters
+    * Receive and return key-value pairs
+    * SplittableDoFns
+  * GroupByKey and CoGroupByKey
+  * CombineFns for use with Combine and CombinePerKey
+  * Flatten
+  * Partition
+  * Composite transforms
+  * Cross language transforms
+* EventTime windowing
+  * Global, Fixed Interval, Sliding, and Session windows
+  * Aggregating over windowed PCollections with GroupByKeys or Combines.
+* Coders
+  * Primitive Go types (ints, string, []bytes, and more)
+  * Beam Schemas for Go Struct types (including struct, slice, and map fields)
+  * Registering custom coders
+* Metrics
+  * PCollection metrics (element counts, size estimates)
+  * Custom user metrics
+  * Post job user metrics querying (coming in 2.34.0)
+  * DoFn profiling metrics (coming in 2.35.0)
+* Built-in transforms
+  * Sum, count, min, max, top, filter
+  * Scalable TextIO reading
+
+Upcoming features support roadmap, and known issues are discussed below.
+In particular, we plan to support a much richer set of IO connectors via Beam's cross-language capabilities.
+
+## Releases
+
+With this release, the Go SDK now uses [Go Modules](https://golang.org/ref/mod) for dependency management.
+This makes it so users, SDK authors, and the testing infrastructure can all rely on the same versions of dependencies, making builds reproducible.
+This also makes [validating Go SDK Release Candidates simple](/blog/validate-beam-release/#configuring-a-go-build-to-validate-a-beam-release-candidate).
+
+Versioned SDK worker containers are now built and [published](https://hub.docker.com/r/apache/beam_go_sdk/tags?page=1&ordering=last_updated), with the SDK using matched tagged versions.
+User jobs no longer need to specify a container to use for released versions, except when using custom containers.
+
+## Compatibility
+
+The Go SDK will largely follow suit with the Go notion of compatibility.
+Some concessions are made to keep all SDKs together on the same release cycle.
+
+### Language Compatibility
+
+The SDK will be tested at a minimum [Go Programming Language version of 1.16](https://golang.org/doc/devel/release), and use available language features and standard library packages accordingly.
+To maintain a broad compatibility, the Go SDK will not require the latest major version of Go.
+We expect to follow the 2nd newest supported release of the language, with a possible exception when Go 1.18 is released, in order to begin experimenting with [Go Generics](https://go.dev/blog/generics-proposal) in the SDK.
+Release notes will call out when the minimum version of the language changes.
+
+### Package Compatibility
+
+The primary user packages will avoid changing in backwards incompatible ways for core features.
+This is to be inline with Go's notion of the [`import compatibility rule`](https://research.swtch.com/vgo-import).
+
+> If an old package and a new package have the same import path,
+> the new package must be backwards compatible with the old package.
+
+Exceptions to this policy are around newer, experimental, or in development features and are subject to change.
+Such features will have a doc comment noting the experimental status.
+Major changes will be mentioned in the release notes.
+For example, using `beam.WindowInto` with Triggers is currently experimental and may have the API changed in a future release.
+
+Primary user packages include:
+* The main beam package `github.com/apache/beam/sdks/v2/go/pkg/beam`
+* Sub packages under `.../transforms`, `.../io`, `.../runners`, and `.../testing`.
+
+Generally, packages in the module other than the primary user packages are for framework use and are at risk of changing.
+
+### Known Issues
+
+#### Batteries not included.
+* Current native transforms are undertested.
+* IOs may not be written to scale.
+* Go Direct Runner is incomplete and is not portable, prefer using the Python Portable runner, or Flink.
+  * Doesn't support side input windowing. [BEAM-13075](https://issues.apache.org/jira/browse/BEAM-13075)
+  * Doesn't serialize data, making it unlikely to catch coder issues [BEAM-6372](https://issues.apache.org/jira/browse/BEAM-6372)
+  * Can use other general improvements, and become portable [BEAM-11076](https://issues.apache.org/jira/browse/BEAM-11076)
+* Current Trigger API is under iteration and subject to change [BEAM-3304](https://issues.apache.org/jira/browse/BEAM-3304).
+  * API has a possible breaking change between 2.33.0 and 2.34.0, and may change again.
+* Support of the SDK on services, like Google Cloud Dataflow, remains at the service owner's discretion.
+* Need something?
+  * File a ticket in the [Beam JIRA](https://issues.apache.org/jira/issues/?jql=project%20%3D%20BEAM%20AND%20component%20%3D%20sdk-go) and,
+  * Email the [dev@beam.apache.org](mailto:dev@beam.apache.org?subject=%5BGo%20SDK%20Feature%5D) list!
+
+#### Fixed in 2.34.0
+  * `top.SmallestPerKey` was broken [BEAM-12946](https://issues.apache.org/jira/browse/BEAM-12946)
+  * `beam.TryCrossLanguage` API didn't match non-Try version [BEAM-9918](https://issues.apache.org/jira/browse/BEAM-9918)
+    * This is a breaking change if one was calling `beam.TryCrossLanguage`
+
+#### Fixed in 2.35.0
+  * Non-global window Side Inputs don't match (correctness bug) [BEAM-11087](https://issues.apache.org/jira/browse/BEAM-11087)
+    * Until 2.35.0 it's not recommended to use Side Inputs that are not using the global window.
+  * DoFns using Side Inputs accumulate memory over bundles, causing OOMs [BEAM-13130](https://issues.apache.org/jira/browse/BEAM-13130)
+
+## Roadmap
+
+The [SDK roadmap](/roadmap/go-sdk/) has been updated.
+Ongoing focus is to bolster streaming focused features, improve existing connectors, and make connectors easier to implement.
+
+In the nearer term this comes in the form of improvements to Side Inputs, and providing wrappers and improving ease-of-use for Cross Language Transforms from Java.

Review comment:
       ```suggestion
   In the nearer term this comes in the form of improvements to side inputs, and providing wrappers and improving ease-of-use for cross language transforms from Java.
   ```

##########
File path: website/www/site/content/en/blog/go-sdk-release.md
##########
@@ -0,0 +1,161 @@
+---
+title:  "Go SDK Exits Experimental in Apache Beam 2.33.0"
+date:   2021-11-04 00:00:01 -0800
+categories:
+  - blog
+authors:
+  - lostluck
+---
+<!--
+Licensed 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.
+-->
+
+Apache Beam’s latest release, version [2.33.0](/get-started/downloads/), is the first official release of the long experimental Go SDK.
+Built with the [Go Programming Language](https://golang.org/), the Go SDK joins the Java and Python SDKs as the third implementation of the Beam programming model.
+
+<!--more-->
+
+## Using the new Go SDK.
+
+New users of the Go SDK can start using it in their Go programs by importing the main beam package:
+
+```
+import "github.com/apache/beam/sdks/v2/go/pkg/beam"
+```
+
+The next run of `go mod tidy` will fetch the latest stable version of the module.
+Alternatively executing `go get github.com/apache/beam/sdks/v2/go/pkg/beam` will download it to the local module cache immeadiately, and add it to your `go.mod` file.
+
+Existing users of the experimental Go SDK need to update to new `v2` import paths to start using the latest versions of the SDK.
+This is can be done by adding `v2` to the import paths, changing `github.com/apache/beam/sdks/go/`... to `github.com/apache/beam/sdks/v2/go/`... where applicable, and then running `go mod tidy`.
+
+Further documentation on using the SDK is available in the [Beam Programming Guide](/documentation/programming-guide/), and in the package [Go Doc](https://pkg.go.dev/github.com/apache/beam/sdks/v2/go/pkg/beam).
+
+## Feature Support
+
+At time of writing, the Go SDK is currently "Batteries Not Included".
+This means that there are gaps or edge cases in supported IOs and transforms.
+That said, the core of the SDK enables a great deal of the Beam Model for
+custom user use, supporting following features:
+
+* PTransforms
+  * Impulse
+  * Create
+  * ParDo with user DoFns
+    * Iterable side inputs
+    * Multiple output emitters
+    * Receive and return key-value pairs
+    * SplittableDoFns
+  * GroupByKey and CoGroupByKey
+  * CombineFns for use with Combine and CombinePerKey
+  * Flatten
+  * Partition
+  * Composite transforms
+  * Cross language transforms
+* EventTime windowing
+  * Global, Fixed Interval, Sliding, and Session windows
+  * Aggregating over windowed PCollections with GroupByKeys or Combines.
+* Coders
+  * Primitive Go types (ints, string, []bytes, and more)
+  * Beam Schemas for Go Struct types (including struct, slice, and map fields)
+  * Registering custom coders
+* Metrics
+  * PCollection metrics (element counts, size estimates)
+  * Custom user metrics
+  * Post job user metrics querying (coming in 2.34.0)
+  * DoFn profiling metrics (coming in 2.35.0)
+* Built-in transforms
+  * Sum, count, min, max, top, filter
+  * Scalable TextIO reading
+
+Upcoming features support roadmap, and known issues are discussed below.
+In particular, we plan to support a much richer set of IO connectors via Beam's cross-language capabilities.
+
+## Releases
+
+With this release, the Go SDK now uses [Go Modules](https://golang.org/ref/mod) for dependency management.
+This makes it so users, SDK authors, and the testing infrastructure can all rely on the same versions of dependencies, making builds reproducible.
+This also makes [validating Go SDK Release Candidates simple](/blog/validate-beam-release/#configuring-a-go-build-to-validate-a-beam-release-candidate).
+
+Versioned SDK worker containers are now built and [published](https://hub.docker.com/r/apache/beam_go_sdk/tags?page=1&ordering=last_updated), with the SDK using matched tagged versions.

Review comment:
       ```suggestion
   Versioned SDK worker containers are now built and [published](https://hub.docker.com/r/apache/beam_go_sdk/tags?page=1&ordering=last_updated), with the SDK using matching tagged versions.
   ```

##########
File path: website/www/site/content/en/blog/go-sdk-release.md
##########
@@ -0,0 +1,161 @@
+---
+title:  "Go SDK Exits Experimental in Apache Beam 2.33.0"
+date:   2021-11-04 00:00:01 -0800
+categories:
+  - blog
+authors:
+  - lostluck
+---
+<!--
+Licensed 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.
+-->
+
+Apache Beam’s latest release, version [2.33.0](/get-started/downloads/), is the first official release of the long experimental Go SDK.
+Built with the [Go Programming Language](https://golang.org/), the Go SDK joins the Java and Python SDKs as the third implementation of the Beam programming model.
+
+<!--more-->
+
+## Using the new Go SDK.
+
+New users of the Go SDK can start using it in their Go programs by importing the main beam package:
+
+```
+import "github.com/apache/beam/sdks/v2/go/pkg/beam"
+```
+
+The next run of `go mod tidy` will fetch the latest stable version of the module.
+Alternatively executing `go get github.com/apache/beam/sdks/v2/go/pkg/beam` will download it to the local module cache immeadiately, and add it to your `go.mod` file.
+
+Existing users of the experimental Go SDK need to update to new `v2` import paths to start using the latest versions of the SDK.
+This is can be done by adding `v2` to the import paths, changing `github.com/apache/beam/sdks/go/`... to `github.com/apache/beam/sdks/v2/go/`... where applicable, and then running `go mod tidy`.
+
+Further documentation on using the SDK is available in the [Beam Programming Guide](/documentation/programming-guide/), and in the package [Go Doc](https://pkg.go.dev/github.com/apache/beam/sdks/v2/go/pkg/beam).
+
+## Feature Support
+
+At time of writing, the Go SDK is currently "Batteries Not Included".
+This means that there are gaps or edge cases in supported IOs and transforms.
+That said, the core of the SDK enables a great deal of the Beam Model for
+custom user use, supporting following features:
+
+* PTransforms
+  * Impulse
+  * Create
+  * ParDo with user DoFns
+    * Iterable side inputs
+    * Multiple output emitters
+    * Receive and return key-value pairs
+    * SplittableDoFns
+  * GroupByKey and CoGroupByKey
+  * CombineFns for use with Combine and CombinePerKey
+  * Flatten
+  * Partition
+  * Composite transforms
+  * Cross language transforms
+* EventTime windowing
+  * Global, Fixed Interval, Sliding, and Session windows

Review comment:
       ```suggestion
     * Global, Interval, Sliding, and Session windows
   ```

##########
File path: website/www/site/content/en/blog/go-sdk-release.md
##########
@@ -0,0 +1,161 @@
+---
+title:  "Go SDK Exits Experimental in Apache Beam 2.33.0"
+date:   2021-11-04 00:00:01 -0800
+categories:
+  - blog
+authors:
+  - lostluck
+---
+<!--
+Licensed 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.
+-->
+
+Apache Beam’s latest release, version [2.33.0](/get-started/downloads/), is the first official release of the long experimental Go SDK.
+Built with the [Go Programming Language](https://golang.org/), the Go SDK joins the Java and Python SDKs as the third implementation of the Beam programming model.
+
+<!--more-->
+
+## Using the new Go SDK.
+
+New users of the Go SDK can start using it in their Go programs by importing the main beam package:
+
+```
+import "github.com/apache/beam/sdks/v2/go/pkg/beam"
+```
+
+The next run of `go mod tidy` will fetch the latest stable version of the module.
+Alternatively executing `go get github.com/apache/beam/sdks/v2/go/pkg/beam` will download it to the local module cache immeadiately, and add it to your `go.mod` file.
+
+Existing users of the experimental Go SDK need to update to new `v2` import paths to start using the latest versions of the SDK.
+This is can be done by adding `v2` to the import paths, changing `github.com/apache/beam/sdks/go/`... to `github.com/apache/beam/sdks/v2/go/`... where applicable, and then running `go mod tidy`.
+
+Further documentation on using the SDK is available in the [Beam Programming Guide](/documentation/programming-guide/), and in the package [Go Doc](https://pkg.go.dev/github.com/apache/beam/sdks/v2/go/pkg/beam).
+
+## Feature Support
+
+At time of writing, the Go SDK is currently "Batteries Not Included".
+This means that there are gaps or edge cases in supported IOs and transforms.
+That said, the core of the SDK enables a great deal of the Beam Model for
+custom user use, supporting following features:
+
+* PTransforms
+  * Impulse
+  * Create
+  * ParDo with user DoFns
+    * Iterable side inputs
+    * Multiple output emitters
+    * Receive and return key-value pairs
+    * SplittableDoFns
+  * GroupByKey and CoGroupByKey
+  * CombineFns for use with Combine and CombinePerKey
+  * Flatten
+  * Partition
+  * Composite transforms
+  * Cross language transforms
+* EventTime windowing
+  * Global, Fixed Interval, Sliding, and Session windows
+  * Aggregating over windowed PCollections with GroupByKeys or Combines.
+* Coders
+  * Primitive Go types (ints, string, []bytes, and more)
+  * Beam Schemas for Go Struct types (including struct, slice, and map fields)
+  * Registering custom coders
+* Metrics
+  * PCollection metrics (element counts, size estimates)
+  * Custom user metrics
+  * Post job user metrics querying (coming in 2.34.0)
+  * DoFn profiling metrics (coming in 2.35.0)
+* Built-in transforms
+  * Sum, count, min, max, top, filter
+  * Scalable TextIO reading
+
+Upcoming features support roadmap, and known issues are discussed below.
+In particular, we plan to support a much richer set of IO connectors via Beam's cross-language capabilities.
+
+## Releases
+
+With this release, the Go SDK now uses [Go Modules](https://golang.org/ref/mod) for dependency management.
+This makes it so users, SDK authors, and the testing infrastructure can all rely on the same versions of dependencies, making builds reproducible.
+This also makes [validating Go SDK Release Candidates simple](/blog/validate-beam-release/#configuring-a-go-build-to-validate-a-beam-release-candidate).
+
+Versioned SDK worker containers are now built and [published](https://hub.docker.com/r/apache/beam_go_sdk/tags?page=1&ordering=last_updated), with the SDK using matched tagged versions.
+User jobs no longer need to specify a container to use for released versions, except when using custom containers.
+
+## Compatibility
+
+The Go SDK will largely follow suit with the Go notion of compatibility.
+Some concessions are made to keep all SDKs together on the same release cycle.
+
+### Language Compatibility
+
+The SDK will be tested at a minimum [Go Programming Language version of 1.16](https://golang.org/doc/devel/release), and use available language features and standard library packages accordingly.
+To maintain a broad compatibility, the Go SDK will not require the latest major version of Go.
+We expect to follow the 2nd newest supported release of the language, with a possible exception when Go 1.18 is released, in order to begin experimenting with [Go Generics](https://go.dev/blog/generics-proposal) in the SDK.
+Release notes will call out when the minimum version of the language changes.
+
+### Package Compatibility
+
+The primary user packages will avoid changing in backwards incompatible ways for core features.
+This is to be inline with Go's notion of the [`import compatibility rule`](https://research.swtch.com/vgo-import).
+
+> If an old package and a new package have the same import path,
+> the new package must be backwards compatible with the old package.
+
+Exceptions to this policy are around newer, experimental, or in development features and are subject to change.
+Such features will have a doc comment noting the experimental status.
+Major changes will be mentioned in the release notes.
+For example, using `beam.WindowInto` with Triggers is currently experimental and may have the API changed in a future release.
+
+Primary user packages include:
+* The main beam package `github.com/apache/beam/sdks/v2/go/pkg/beam`
+* Sub packages under `.../transforms`, `.../io`, `.../runners`, and `.../testing`.
+
+Generally, packages in the module other than the primary user packages are for framework use and are at risk of changing.
+
+### Known Issues
+
+#### Batteries not included.
+* Current native transforms are undertested.
+* IOs may not be written to scale.
+* Go Direct Runner is incomplete and is not portable, prefer using the Python Portable runner, or Flink.
+  * Doesn't support side input windowing. [BEAM-13075](https://issues.apache.org/jira/browse/BEAM-13075)
+  * Doesn't serialize data, making it unlikely to catch coder issues [BEAM-6372](https://issues.apache.org/jira/browse/BEAM-6372)
+  * Can use other general improvements, and become portable [BEAM-11076](https://issues.apache.org/jira/browse/BEAM-11076)
+* Current Trigger API is under iteration and subject to change [BEAM-3304](https://issues.apache.org/jira/browse/BEAM-3304).
+  * API has a possible breaking change between 2.33.0 and 2.34.0, and may change again.
+* Support of the SDK on services, like Google Cloud Dataflow, remains at the service owner's discretion.
+* Need something?
+  * File a ticket in the [Beam JIRA](https://issues.apache.org/jira/issues/?jql=project%20%3D%20BEAM%20AND%20component%20%3D%20sdk-go) and,
+  * Email the [dev@beam.apache.org](mailto:dev@beam.apache.org?subject=%5BGo%20SDK%20Feature%5D) list!
+
+#### Fixed in 2.34.0
+  * `top.SmallestPerKey` was broken [BEAM-12946](https://issues.apache.org/jira/browse/BEAM-12946)
+  * `beam.TryCrossLanguage` API didn't match non-Try version [BEAM-9918](https://issues.apache.org/jira/browse/BEAM-9918)
+    * This is a breaking change if one was calling `beam.TryCrossLanguage`
+
+#### Fixed in 2.35.0
+  * Non-global window Side Inputs don't match (correctness bug) [BEAM-11087](https://issues.apache.org/jira/browse/BEAM-11087)
+    * Until 2.35.0 it's not recommended to use Side Inputs that are not using the global window.
+  * DoFns using Side Inputs accumulate memory over bundles, causing OOMs [BEAM-13130](https://issues.apache.org/jira/browse/BEAM-13130)

Review comment:
       ```suggestion
     * Non-global window side inputs don't match (correctness bug) [BEAM-11087](https://issues.apache.org/jira/browse/BEAM-11087)
       * Until 2.35.0 it's not recommended to use side inputs that are not using the global window.
     * DoFns using side inputs accumulate memory over bundles, causing out of memory issues [BEAM-13130](https://issues.apache.org/jira/browse/BEAM-13130)
   ```

##########
File path: website/www/site/content/en/blog/go-sdk-release.md
##########
@@ -0,0 +1,161 @@
+---
+title:  "Go SDK Exits Experimental in Apache Beam 2.33.0"
+date:   2021-11-04 00:00:01 -0800
+categories:
+  - blog
+authors:
+  - lostluck
+---
+<!--
+Licensed 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.
+-->
+
+Apache Beam’s latest release, version [2.33.0](/get-started/downloads/), is the first official release of the long experimental Go SDK.
+Built with the [Go Programming Language](https://golang.org/), the Go SDK joins the Java and Python SDKs as the third implementation of the Beam programming model.
+
+<!--more-->
+
+## Using the new Go SDK.
+
+New users of the Go SDK can start using it in their Go programs by importing the main beam package:
+
+```
+import "github.com/apache/beam/sdks/v2/go/pkg/beam"
+```
+
+The next run of `go mod tidy` will fetch the latest stable version of the module.
+Alternatively executing `go get github.com/apache/beam/sdks/v2/go/pkg/beam` will download it to the local module cache immeadiately, and add it to your `go.mod` file.
+
+Existing users of the experimental Go SDK need to update to new `v2` import paths to start using the latest versions of the SDK.
+This is can be done by adding `v2` to the import paths, changing `github.com/apache/beam/sdks/go/`... to `github.com/apache/beam/sdks/v2/go/`... where applicable, and then running `go mod tidy`.
+
+Further documentation on using the SDK is available in the [Beam Programming Guide](/documentation/programming-guide/), and in the package [Go Doc](https://pkg.go.dev/github.com/apache/beam/sdks/v2/go/pkg/beam).
+
+## Feature Support
+
+At time of writing, the Go SDK is currently "Batteries Not Included".
+This means that there are gaps or edge cases in supported IOs and transforms.
+That said, the core of the SDK enables a great deal of the Beam Model for
+custom user use, supporting following features:
+
+* PTransforms
+  * Impulse
+  * Create
+  * ParDo with user DoFns
+    * Iterable side inputs
+    * Multiple output emitters
+    * Receive and return key-value pairs
+    * SplittableDoFns
+  * GroupByKey and CoGroupByKey
+  * CombineFns for use with Combine and CombinePerKey
+  * Flatten
+  * Partition
+  * Composite transforms
+  * Cross language transforms
+* EventTime windowing

Review comment:
       Is EventTime a special class in the Beam Go SDK, it not then lets go with:
   ```suggestion
   * Event time windowing
   ```

##########
File path: website/www/site/content/en/blog/go-sdk-release.md
##########
@@ -0,0 +1,161 @@
+---
+title:  "Go SDK Exits Experimental in Apache Beam 2.33.0"
+date:   2021-11-04 00:00:01 -0800
+categories:
+  - blog
+authors:
+  - lostluck
+---
+<!--
+Licensed 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.
+-->
+
+Apache Beam’s latest release, version [2.33.0](/get-started/downloads/), is the first official release of the long experimental Go SDK.
+Built with the [Go Programming Language](https://golang.org/), the Go SDK joins the Java and Python SDKs as the third implementation of the Beam programming model.
+
+<!--more-->
+
+## Using the new Go SDK.
+
+New users of the Go SDK can start using it in their Go programs by importing the main beam package:
+
+```
+import "github.com/apache/beam/sdks/v2/go/pkg/beam"
+```
+
+The next run of `go mod tidy` will fetch the latest stable version of the module.
+Alternatively executing `go get github.com/apache/beam/sdks/v2/go/pkg/beam` will download it to the local module cache immeadiately, and add it to your `go.mod` file.
+
+Existing users of the experimental Go SDK need to update to new `v2` import paths to start using the latest versions of the SDK.
+This is can be done by adding `v2` to the import paths, changing `github.com/apache/beam/sdks/go/`... to `github.com/apache/beam/sdks/v2/go/`... where applicable, and then running `go mod tidy`.
+
+Further documentation on using the SDK is available in the [Beam Programming Guide](/documentation/programming-guide/), and in the package [Go Doc](https://pkg.go.dev/github.com/apache/beam/sdks/v2/go/pkg/beam).
+
+## Feature Support
+
+At time of writing, the Go SDK is currently "Batteries Not Included".
+This means that there are gaps or edge cases in supported IOs and transforms.
+That said, the core of the SDK enables a great deal of the Beam Model for
+custom user use, supporting following features:
+
+* PTransforms
+  * Impulse
+  * Create
+  * ParDo with user DoFns
+    * Iterable side inputs
+    * Multiple output emitters
+    * Receive and return key-value pairs
+    * SplittableDoFns
+  * GroupByKey and CoGroupByKey
+  * CombineFns for use with Combine and CombinePerKey
+  * Flatten
+  * Partition
+  * Composite transforms
+  * Cross language transforms
+* EventTime windowing
+  * Global, Fixed Interval, Sliding, and Session windows
+  * Aggregating over windowed PCollections with GroupByKeys or Combines.
+* Coders
+  * Primitive Go types (ints, string, []bytes, and more)
+  * Beam Schemas for Go Struct types (including struct, slice, and map fields)
+  * Registering custom coders
+* Metrics
+  * PCollection metrics (element counts, size estimates)
+  * Custom user metrics
+  * Post job user metrics querying (coming in 2.34.0)
+  * DoFn profiling metrics (coming in 2.35.0)
+* Built-in transforms
+  * Sum, count, min, max, top, filter
+  * Scalable TextIO reading
+
+Upcoming features support roadmap, and known issues are discussed below.
+In particular, we plan to support a much richer set of IO connectors via Beam's cross-language capabilities.
+
+## Releases
+
+With this release, the Go SDK now uses [Go Modules](https://golang.org/ref/mod) for dependency management.
+This makes it so users, SDK authors, and the testing infrastructure can all rely on the same versions of dependencies, making builds reproducible.
+This also makes [validating Go SDK Release Candidates simple](/blog/validate-beam-release/#configuring-a-go-build-to-validate-a-beam-release-candidate).
+
+Versioned SDK worker containers are now built and [published](https://hub.docker.com/r/apache/beam_go_sdk/tags?page=1&ordering=last_updated), with the SDK using matched tagged versions.
+User jobs no longer need to specify a container to use for released versions, except when using custom containers.
+
+## Compatibility
+
+The Go SDK will largely follow suit with the Go notion of compatibility.
+Some concessions are made to keep all SDKs together on the same release cycle.
+
+### Language Compatibility
+
+The SDK will be tested at a minimum [Go Programming Language version of 1.16](https://golang.org/doc/devel/release), and use available language features and standard library packages accordingly.
+To maintain a broad compatibility, the Go SDK will not require the latest major version of Go.
+We expect to follow the 2nd newest supported release of the language, with a possible exception when Go 1.18 is released, in order to begin experimenting with [Go Generics](https://go.dev/blog/generics-proposal) in the SDK.
+Release notes will call out when the minimum version of the language changes.
+
+### Package Compatibility
+
+The primary user packages will avoid changing in backwards incompatible ways for core features.
+This is to be inline with Go's notion of the [`import compatibility rule`](https://research.swtch.com/vgo-import).
+
+> If an old package and a new package have the same import path,
+> the new package must be backwards compatible with the old package.
+
+Exceptions to this policy are around newer, experimental, or in development features and are subject to change.
+Such features will have a doc comment noting the experimental status.
+Major changes will be mentioned in the release notes.
+For example, using `beam.WindowInto` with Triggers is currently experimental and may have the API changed in a future release.
+
+Primary user packages include:
+* The main beam package `github.com/apache/beam/sdks/v2/go/pkg/beam`
+* Sub packages under `.../transforms`, `.../io`, `.../runners`, and `.../testing`.
+
+Generally, packages in the module other than the primary user packages are for framework use and are at risk of changing.
+
+### Known Issues
+
+#### Batteries not included.
+* Current native transforms are undertested.
+* IOs may not be written to scale.
+* Go Direct Runner is incomplete and is not portable, prefer using the Python Portable runner, or Flink.
+  * Doesn't support side input windowing. [BEAM-13075](https://issues.apache.org/jira/browse/BEAM-13075)
+  * Doesn't serialize data, making it unlikely to catch coder issues [BEAM-6372](https://issues.apache.org/jira/browse/BEAM-6372)
+  * Can use other general improvements, and become portable [BEAM-11076](https://issues.apache.org/jira/browse/BEAM-11076)
+* Current Trigger API is under iteration and subject to change [BEAM-3304](https://issues.apache.org/jira/browse/BEAM-3304).
+  * API has a possible breaking change between 2.33.0 and 2.34.0, and may change again.
+* Support of the SDK on services, like Google Cloud Dataflow, remains at the service owner's discretion.
+* Need something?
+  * File a ticket in the [Beam JIRA](https://issues.apache.org/jira/issues/?jql=project%20%3D%20BEAM%20AND%20component%20%3D%20sdk-go) and,
+  * Email the [dev@beam.apache.org](mailto:dev@beam.apache.org?subject=%5BGo%20SDK%20Feature%5D) list!

Review comment:
       Consider having consistent `.` usage.
   
   Not sure how best to insert it when there is a JIRA tag, might be simplest to not have any as I have suggested below:
   ```suggestion
   * Current native transforms are undertested
   * IOs may not be written to scale
   * Go Direct Runner is incomplete and is not portable, prefer using the Python Portable runner, or Flink
     * Doesn't support side input windowing [BEAM-13075](https://issues.apache.org/jira/browse/BEAM-13075)
     * Doesn't serialize data, making it unlikely to catch coder issues [BEAM-6372](https://issues.apache.org/jira/browse/BEAM-6372)
     * Can use other general improvements, and become portable [BEAM-11076](https://issues.apache.org/jira/browse/BEAM-11076)
   * Current Trigger API is under iteration and subject to change [BEAM-3304](https://issues.apache.org/jira/browse/BEAM-3304).
     * API has a possible breaking change between 2.33.0 and 2.34.0, and may change again
   * Support of the SDK on services, like Google Cloud Dataflow, remains at the service owner's discretion
   * Need something?
     * File a ticket in the [Beam JIRA](https://issues.apache.org/jira/issues/?jql=project%20%3D%20BEAM%20AND%20component%20%3D%20sdk-go) and,
     * Email the [dev@beam.apache.org](mailto:dev@beam.apache.org?subject=%5BGo%20SDK%20Feature%5D) list!
   ```

##########
File path: website/www/site/content/en/roadmap/connectors-go-sdk.md
##########
@@ -17,9 +17,11 @@ limitations under the License.
 
 Roadmap for connectors developed using Go SDK.
 
-* We hope to add a Splittable DoFn implementation to Go SDK to support developing new sources. In the
-meantime bounded sources can be developed in the form of ParDos. See
-[Authoring I/O Transforms](https://beam.apache.org/documentation/io/authoring-overview/) for more details.
-
 * Go SDK plans to utilize currently available Java and Python connectors
 through cross-language transforms feature.
+  * KafkaIO via Java - DONE
+  * BigQuery via Java - In Progress
+  * Beam SQL via Java
+* The Go SDK supports SplittableDoFns for Batch, so scalable batch transforms are possible.

Review comment:
       ```suggestion
   * The Go SDK supports SplittableDoFns for bounded pipelines, so scalable bounded pipelines are possible.
   ```

##########
File path: website/www/site/content/en/roadmap/go-sdk.md
##########
@@ -17,55 +17,14 @@ limitations under the License.
 
 # Go SDK Roadmap
 
-The Go SDK is currently experimental. As the first purely portable Beam SDK, the Go SDK is constrained
-by the status of the [Beam Portability Framework](https://beam.apache.org/roadmap/portability/) and the existence of
-portable runners.
+The Go SDK is [fully released as of v2.33.0](/blog/go-sdk-release/).
 
-**April 2020 Update**
-This year we hope to move the SDK out of experimental at least for Batch usage.
+The Go SDK the first SDK purely on the [Beam Portability Framework](/roadmap/portability/)
+and can execute pipelines on portable runners, like Flink, Spark, Samza, and Google Cloud Dataflow.
 
-To do so, there are a few blocking changes:
-  * Support Interoperability with other SDKs
-  * Scalable IOs
-  * Portability Proto stability
-  * Go Ecosystem integration improvements
-
-Interoperability while not a blocking feature in itself, requires Beam Schema support, which
-the SDK could then use as it's default coder. Batch Splittable DoFns are nearly ready for
-playing with on Flink, and the Python Direct Runner, answering the scalable batch IO question.
-There's much work getting the portability protos to a stable baseline. This will allow runner
-and SDK independance, so they don't need to be updated in lockstep. Finally, the Go SDK should
-adopt Go Modules as it's versioning solution, and officially "catch up" with the current beam
-version.
-
-The Go SDK has the following goals for the next few months:
-
-## Usability
-
-* Beam Schema Support [BEAM-9615](https://issues.apache.org/jira/browse/BEAM-9615)
-* Improvements to starcgen [BEAM-9616](https://issues.apache.org/jira/browse/BEAM-9616)
-
-## Integrating with the Go ecosystem
-
-The authors of the Go SDK intended to keep the parts of the language we love, and intend for
-user pipelines to be as close to ordinary Go as possible, minimizing framework boiler plate code.
-
-* Migrate to a vanity URL path [BEAM-4115](https://issues.apache.org/jira/browse/BEAM-4115)
-* Package versioning support [BEAM-5379](https://issues.apache.org/jira/browse/BEAM-5379)
-
-## Implement Portability features
-
-The following are dependant on the features being implemented in the Portability Framework.
-
-* Splitable DoFns (SDFs) for Scalable IO [BEAM-3301](https://issues.apache.org/jira/browse/BEAM-3301)
-  * This is the primary blocker for the Go SDK to scale to ingest large numbers of elements in both batch and streaming.
-* Triggers and Timers [BEAM-3304](https://issues.apache.org/jira/browse/BEAM-3304)
-* Advanced WindowFns
-   * Session windows [BEAM-4152](https://issues.apache.org/jira/browse/BEAM-4152)
-   * Custom WindowFns (dependant on streaming Splitable DoFn support) [BEAM-2939](https://issues.apache.org/jira/browse/BEAM-2939)
-
-Without SDFs, IOs are always constrained to work on a single machine prior to a sharding operation (like CoGroupByKey),
-which makes scalable IOs difficult to impossible to write.
+Current roadmap:
+* continue building up Streaming facing features, as described on the [Beam Dev Wiki](https://cwiki.apache.org/confluence/display/BEAM/Supporting+Streaming+in+the+Go+SDK).

Review comment:
       ```suggestion
   * continue building up unbounded pipeline facing features, as described on the [Beam Dev Wiki](https://cwiki.apache.org/confluence/display/BEAM/Supporting+Streaming+in+the+Go+SDK).
   ```




-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: github-unsubscribe@beam.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



[GitHub] [beam] lostluck commented on a change in pull request #15894: [Go SDK] Go SDK Exits Experimental

Posted by GitBox <gi...@apache.org>.
lostluck commented on a change in pull request #15894:
URL: https://github.com/apache/beam/pull/15894#discussion_r743057307



##########
File path: website/www/site/content/en/blog/go-sdk-release.md
##########
@@ -0,0 +1,156 @@
+---
+title:  "Go SDK Exits Experimental in Apache Beam 2.34.0"
+date:   2021-11-05 00:00:01 -0800
+categories:
+  - blog
+authors:
+  - lostluck
+---
+<!--
+Licensed 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.
+-->
+
+Apache Beam’s latest release, version [2.34.0](/get-started/downloads/), is the first official release of the long experimental Go SDK.
+Built with the [Go Programming Language](https://golang.org/), the Go SDK joins the Java and Python SDKs as the third implementation of the Beam programming model.
+
+<!--more-->
+
+## Using the new Go SDK.
+
+New users of the Go SDK can start using it in their Go programs:
+
+```
+import "github.com/apache/beam/sdks/v2/go/pkg/beam"
+```
+
+The next run of `go mod tidy` will fetch the latest stable version.
+Alternatively executing `go get github.com/apache/beam/sdks/v2/go/pkg/beam` will download it to the local module cache immeadiately, and add it to your `go.mod` file.
+
+Existing users of the experimental Go SDK need to update to new `v2` import paths to start using the latest versions of the SDK. 
+This is can be done by adding `v2` to the import paths, changing `github.com/apache/beam/sdks/go/`... to `github.com/apache/beam/sdks/v2/go/`... where applicable, and then running `go mod tidy`.
+
+Further documentation on using the SDK is available in the [Beam Programming Guide](https://beam.apache.org/documentation/programming-guide/), and in the package Go Doc at https://pkg.go.dev/github.com/apache/beam/sdks/v2/go/pkg/beam.
+
+## Feature Support
+
+At time of writing, the Go SDK is currently "Batteries Not Included".
+This means that there are gaps or edge cases in supported IOs and transforms.
+That said, the core of the SDK enables a great deal of the Beam Model for
+custom user use, supporting following features:
+
+* PTransforms
+  * Impulse
+  * Create
+  * ParDo w/User DoFns
+    * Iterable Side Inputs
+    * Multiple Output emitters
+    * Receive and Return Key Value pairs
+    * EventTime
+    * SplittableDoFns
+  * GroupByKey and CoGroupByKey
+  * CombineFns for use with Combine and CombinePerKey
+  * Windowing
+    * Global, Fixed intervals, Sliding windows, and Session
+    * Aggregating over windowed PCollections w/GBKs or Combines.
+  * Flatten
+  * Partition
+  * Composites
+  * Cross Language Transforms
+* Coders
+  * Primitive Go types (ints, string, []bytes, and more)
+  * Beam Schemas for Go Struct types (including struct, slice, and map fields)
+  * Registering custom coders
+* Metrics
+  * PCollection metrics (ElementCount, Size Estimates)
+  * Custom User Metrics
+  * DoFn profiling metrics (coming in 2.35.0)
+* Provided Built Transforms
+  * Sum, Count, Min, Max, Top, Filter
+  * Scalable TextIO Reading
+  * Test Stream (for runners that support it.)
+
+Upcoming features support roadmap, and known issues are discussed below.
+
+## Releases
+
+With this release, the Go SDK now uses [Go Modules](https://golang.org/ref/mod) for dependency management.
+This makes it so users, SDK Devs, and the testing infrastructure can all rely on the same versions of dependencies, making builds reproducible.
+
+Versioned SDK worker containers are now built and [published](https://hub.docker.com/r/apache/beam_go_sdk/tags?page=1&ordering=last_updated), with the SDK using matched tagged versions.
+For released versions, user jobs no longer need to specify a container to use, except when using custom containers.
+  
+## Compatibility
+
+The Go SDK will largely follow suite with the Go notion of compatibility. 
+Some concessions are made to keep all SDKs together on the same release cycle.
+
+### Language Compatibility
+
+The SDK will be tested at a minimum [Go Programming Language version of 1.16](https://golang.org/doc/devel/release), and use available language features and standard library packages accordingly.
+To maintain a broad compatibility, the Go SDK will not require the latest major version of Go.
+We expect to follow the 2nd newest supported release of the language, with a possible exception when Go 1.18 is released, in order to begin experimenting with [Go Generics](https://go.dev/blog/generics-proposal) in the SDK.
+Release notes will call out when the minimum version of the language changes.
+
+### Package Compatibility
+
+The primary user packages will avoid changing in backwards incompatible ways for core features.
+This is to be inline with Go's notion of the [`import compatibility rule`](https://research.swtch.com/vgo-import).
+
+> If an old package and a new package have the same import path,
+> the new package must be backwards compatible with the old package.
+
+Exceptions to this policy are around newer, experimental, or in development features.
+These are subject to change.
+Such features will have a doc comment noting the experimental status, or be mentioned the change notes for a release.
+For example, using `beam.WindowInto` with Triggers is currently experimental and may have the api changed in a future release. 
+
+Primary user packages include:
+* The main beam package `github.com/apache/beam/sdks/v2/go/pkg/beam`
+* Sub packages under `.../transforms`, `.../io`, `.../runners`, and `.../testing`.
+
+Generally, packages in the module other than the primary user packages are for framework use.
+They are at risk of changing, though at this point, large breaking changes are unlikely.
+
+### Known Issues
+
+DO NOT SUBMIT: include Known Issues w/ 2.33.0, and known features making 2.34.0 and 2.35.0  (side inputs, metrics queyrying, IOs, Direct Runner, Triggers, Test Stream,  Cross Language Transforms caveats)

Review comment:
       This is still being drafted, but at a certain point, it's necessary to get other eyes on it to make sure the right content is being covered. 
   Per the email to the exit thread I'm gathering up the known issues today, and the DO NOT SUBMITs are to remind me to actually populate certain things.

##########
File path: website/www/site/content/en/blog/go-sdk-release.md
##########
@@ -0,0 +1,156 @@
+---
+title:  "Go SDK Exits Experimental in Apache Beam 2.34.0"
+date:   2021-11-05 00:00:01 -0800
+categories:
+  - blog
+authors:
+  - lostluck
+---
+<!--
+Licensed 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.
+-->
+
+Apache Beam’s latest release, version [2.34.0](/get-started/downloads/), is the first official release of the long experimental Go SDK.
+Built with the [Go Programming Language](https://golang.org/), the Go SDK joins the Java and Python SDKs as the third implementation of the Beam programming model.
+
+<!--more-->
+
+## Using the new Go SDK.
+
+New users of the Go SDK can start using it in their Go programs:
+
+```
+import "github.com/apache/beam/sdks/v2/go/pkg/beam"
+```
+
+The next run of `go mod tidy` will fetch the latest stable version.
+Alternatively executing `go get github.com/apache/beam/sdks/v2/go/pkg/beam` will download it to the local module cache immeadiately, and add it to your `go.mod` file.
+
+Existing users of the experimental Go SDK need to update to new `v2` import paths to start using the latest versions of the SDK. 
+This is can be done by adding `v2` to the import paths, changing `github.com/apache/beam/sdks/go/`... to `github.com/apache/beam/sdks/v2/go/`... where applicable, and then running `go mod tidy`.
+
+Further documentation on using the SDK is available in the [Beam Programming Guide](https://beam.apache.org/documentation/programming-guide/), and in the package Go Doc at https://pkg.go.dev/github.com/apache/beam/sdks/v2/go/pkg/beam.
+
+## Feature Support
+
+At time of writing, the Go SDK is currently "Batteries Not Included".
+This means that there are gaps or edge cases in supported IOs and transforms.
+That said, the core of the SDK enables a great deal of the Beam Model for
+custom user use, supporting following features:
+
+* PTransforms
+  * Impulse
+  * Create
+  * ParDo w/User DoFns
+    * Iterable Side Inputs
+    * Multiple Output emitters
+    * Receive and Return Key Value pairs
+    * EventTime
+    * SplittableDoFns
+  * GroupByKey and CoGroupByKey
+  * CombineFns for use with Combine and CombinePerKey
+  * Windowing
+    * Global, Fixed intervals, Sliding windows, and Session
+    * Aggregating over windowed PCollections w/GBKs or Combines.
+  * Flatten
+  * Partition
+  * Composites
+  * Cross Language Transforms
+* Coders
+  * Primitive Go types (ints, string, []bytes, and more)
+  * Beam Schemas for Go Struct types (including struct, slice, and map fields)
+  * Registering custom coders
+* Metrics
+  * PCollection metrics (ElementCount, Size Estimates)
+  * Custom User Metrics
+  * DoFn profiling metrics (coming in 2.35.0)
+* Provided Built Transforms
+  * Sum, Count, Min, Max, Top, Filter
+  * Scalable TextIO Reading
+  * Test Stream (for runners that support it.)

Review comment:
       Good point, I'll remove it from this list.

##########
File path: website/www/site/content/en/roadmap/go-sdk.md
##########
@@ -17,55 +17,14 @@ limitations under the License.
 
 # Go SDK Roadmap
 
-The Go SDK is currently experimental. As the first purely portable Beam SDK, the Go SDK is constrained
-by the status of the [Beam Portability Framework](https://beam.apache.org/roadmap/portability/) and the existence of
-portable runners.
+The Go SDK is [fully released as of v2.34.0](https://beam.apache.org/blog/go-sdk-release/).

Review comment:
       Thanks for the confirmation! I was wondering about that.

##########
File path: website/www/site/content/en/blog/go-sdk-release.md
##########
@@ -0,0 +1,151 @@
+---
+title:  "Go SDK Exits Experimental in Apache Beam 2.34.0"
+date:   2021-11-05 00:00:01 -0800
+categories:
+  - blog
+authors:
+  - lostluck
+---
+<!--
+Licensed 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.
+-->
+
+Apache Beam’s latest release, version [2.34.0](/get-started/downloads/), is the first official release of the long experimental Go SDK.
+Built with the [Go Programming Language](https://golang.org/), the Go SDK joins the Java and Python SDKs as the third implementation of the Beam programming model.
+
+<!--more-->
+
+## Using the new Go SDK.
+
+New users of the Go SDK can start using it in their Go programs by importing the main beam package:
+
+```
+import "github.com/apache/beam/sdks/v2/go/pkg/beam"
+```
+
+The next run of `go mod tidy` will fetch the latest stable version of the module.
+Alternatively executing `go get github.com/apache/beam/sdks/v2/go/pkg/beam` will download it to the local module cache immeadiately, and add it to your `go.mod` file.
+
+Existing users of the experimental Go SDK need to update to new `v2` import paths to start using the latest versions of the SDK.
+This is can be done by adding `v2` to the import paths, changing `github.com/apache/beam/sdks/go/`... to `github.com/apache/beam/sdks/v2/go/`... where applicable, and then running `go mod tidy`.
+
+Further documentation on using the SDK is available in the [Beam Programming Guide](/documentation/programming-guide/), and in the package Go Doc at https://pkg.go.dev/github.com/apache/beam/sdks/v2/go/pkg/beam.
+
+## Feature Support
+
+At time of writing, the Go SDK is currently "Batteries Not Included".
+This means that there are gaps or edge cases in supported IOs and transforms.
+That said, the core of the SDK enables a great deal of the Beam Model for
+custom user use, supporting following features:
+
+* PTransforms
+  * Impulse
+  * Create
+  * ParDo w/User DoFns
+    * Iterable Side Inputs
+    * Multiple Output emitters
+    * Receive and Return Key Value pairs
+    * EventTime
+    * SplittableDoFns
+  * GroupByKey and CoGroupByKey
+  * CombineFns for use with Combine and CombinePerKey
+  * Windowing
+    * Global, Fixed intervals, Sliding windows, and Session
+    * Aggregating over windowed PCollections w/GBKs or Combines.
+  * Flatten
+  * Partition
+  * Composites
+  * Cross Language Transforms
+* Coders
+  * Primitive Go types (ints, string, []bytes, and more)
+  * Beam Schemas for Go Struct types (including struct, slice, and map fields)
+  * Registering custom coders
+* Metrics
+  * PCollection metrics (ElementCount, Size Estimates)
+  * Custom User Metrics
+  * DoFn profiling metrics (coming in 2.35.0)
+* Provided Built Transforms
+  * Sum, Count, Min, Max, Top, Filter
+  * Scalable TextIO Reading
+
+Upcoming features support roadmap, and known issues are discussed below.

Review comment:
       I like it. Done.

##########
File path: website/www/site/content/en/blog/go-sdk-release.md
##########
@@ -0,0 +1,163 @@
+---
+title:  "Go SDK Exits Experimental in Apache Beam 2.33.0"
+date:   2021-11-04 00:00:01 -0800
+categories:
+  - blog
+authors:
+  - lostluck
+---
+<!--
+Licensed 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.
+-->
+
+Apache Beam’s latest release, version [2.33.0](/get-started/downloads/), is the first official release of the long experimental Go SDK.
+Built with the [Go Programming Language](https://golang.org/), the Go SDK joins the Java and Python SDKs as the third implementation of the Beam programming model.
+
+<!--more-->
+
+## Using the new Go SDK.
+
+New users of the Go SDK can start using it in their Go programs by importing the main beam package:
+
+```
+import "github.com/apache/beam/sdks/v2/go/pkg/beam"
+```
+
+The next run of `go mod tidy` will fetch the latest stable version of the module.
+Alternatively executing `go get github.com/apache/beam/sdks/v2/go/pkg/beam` will download it to the local module cache immeadiately, and add it to your `go.mod` file.
+
+Existing users of the experimental Go SDK need to update to new `v2` import paths to start using the latest versions of the SDK.
+This is can be done by adding `v2` to the import paths, changing `github.com/apache/beam/sdks/go/`... to `github.com/apache/beam/sdks/v2/go/`... where applicable, and then running `go mod tidy`.
+
+Further documentation on using the SDK is available in the [Beam Programming Guide](/documentation/programming-guide/), and in the package Go Doc at https://pkg.go.dev/github.com/apache/beam/sdks/v2/go/pkg/beam.
+
+## Feature Support
+
+At time of writing, the Go SDK is currently "Batteries Not Included".
+This means that there are gaps or edge cases in supported IOs and transforms.
+That said, the core of the SDK enables a great deal of the Beam Model for
+custom user use, supporting following features:
+
+* PTransforms
+  * Impulse
+  * Create
+  * ParDo w/User DoFns
+    * Iterable Side Inputs
+    * Multiple Output emitters
+    * Receive and Return Key Value pairs
+    * EventTime
+    * SplittableDoFns
+  * GroupByKey and CoGroupByKey
+  * CombineFns for use with Combine and CombinePerKey
+  * Windowing
+    * Global, Fixed intervals, Sliding windows, and Session
+    * Aggregating over windowed PCollections w/GBKs or Combines.
+  * Flatten
+  * Partition
+  * Composites
+  * Cross Language Transforms
+* Coders
+  * Primitive Go types (ints, string, []bytes, and more)
+  * Beam Schemas for Go Struct types (including struct, slice, and map fields)
+  * Registering custom coders
+* Metrics
+  * PCollection metrics (ElementCount, Size Estimates)
+  * Custom User Metrics
+  * Post job user metrics querying (coming in 2.34.0)
+  * DoFn profiling metrics (coming in 2.35.0)
+* Provided Built Transforms
+  * Sum, Count, Min, Max, Top, Filter
+  * Scalable TextIO Reading

Review comment:
       Ah that's a typo for sure. Thanks!

##########
File path: website/www/site/content/en/blog/go-sdk-release.md
##########
@@ -0,0 +1,163 @@
+---
+title:  "Go SDK Exits Experimental in Apache Beam 2.33.0"
+date:   2021-11-04 00:00:01 -0800
+categories:
+  - blog
+authors:
+  - lostluck
+---
+<!--
+Licensed 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.
+-->
+
+Apache Beam’s latest release, version [2.33.0](/get-started/downloads/), is the first official release of the long experimental Go SDK.
+Built with the [Go Programming Language](https://golang.org/), the Go SDK joins the Java and Python SDKs as the third implementation of the Beam programming model.
+
+<!--more-->
+
+## Using the new Go SDK.
+
+New users of the Go SDK can start using it in their Go programs by importing the main beam package:
+
+```
+import "github.com/apache/beam/sdks/v2/go/pkg/beam"
+```
+
+The next run of `go mod tidy` will fetch the latest stable version of the module.
+Alternatively executing `go get github.com/apache/beam/sdks/v2/go/pkg/beam` will download it to the local module cache immeadiately, and add it to your `go.mod` file.
+
+Existing users of the experimental Go SDK need to update to new `v2` import paths to start using the latest versions of the SDK.
+This is can be done by adding `v2` to the import paths, changing `github.com/apache/beam/sdks/go/`... to `github.com/apache/beam/sdks/v2/go/`... where applicable, and then running `go mod tidy`.
+
+Further documentation on using the SDK is available in the [Beam Programming Guide](/documentation/programming-guide/), and in the package Go Doc at https://pkg.go.dev/github.com/apache/beam/sdks/v2/go/pkg/beam.
+
+## Feature Support
+
+At time of writing, the Go SDK is currently "Batteries Not Included".
+This means that there are gaps or edge cases in supported IOs and transforms.
+That said, the core of the SDK enables a great deal of the Beam Model for
+custom user use, supporting following features:
+
+* PTransforms
+  * Impulse
+  * Create
+  * ParDo w/User DoFns
+    * Iterable Side Inputs
+    * Multiple Output emitters
+    * Receive and Return Key Value pairs
+    * EventTime

Review comment:
       Not particularly, I renamed the windowing section to "EventTime windowing" instead.
   
   Likely the origin was while the framework is dealing with event time via windowing, the user deals with event time in DoFns.

##########
File path: website/www/site/content/en/blog/go-sdk-release.md
##########
@@ -0,0 +1,161 @@
+---
+title:  "Go SDK Exits Experimental in Apache Beam 2.33.0"
+date:   2021-11-04 00:00:01 -0800
+categories:
+  - blog
+authors:
+  - lostluck
+---
+<!--
+Licensed 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.
+-->
+
+Apache Beam’s latest release, version [2.33.0](/get-started/downloads/), is the first official release of the long experimental Go SDK.
+Built with the [Go Programming Language](https://golang.org/), the Go SDK joins the Java and Python SDKs as the third implementation of the Beam programming model.
+
+<!--more-->
+
+## Using the new Go SDK.
+
+New users of the Go SDK can start using it in their Go programs by importing the main beam package:
+
+```
+import "github.com/apache/beam/sdks/v2/go/pkg/beam"
+```
+
+The next run of `go mod tidy` will fetch the latest stable version of the module.
+Alternatively executing `go get github.com/apache/beam/sdks/v2/go/pkg/beam` will download it to the local module cache immeadiately, and add it to your `go.mod` file.
+
+Existing users of the experimental Go SDK need to update to new `v2` import paths to start using the latest versions of the SDK.
+This is can be done by adding `v2` to the import paths, changing `github.com/apache/beam/sdks/go/`... to `github.com/apache/beam/sdks/v2/go/`... where applicable, and then running `go mod tidy`.
+
+Further documentation on using the SDK is available in the [Beam Programming Guide](/documentation/programming-guide/), and in the package [Go Doc](https://pkg.go.dev/github.com/apache/beam/sdks/v2/go/pkg/beam).
+
+## Feature Support
+
+At time of writing, the Go SDK is currently "Batteries Not Included".
+This means that there are gaps or edge cases in supported IOs and transforms.
+That said, the core of the SDK enables a great deal of the Beam Model for
+custom user use, supporting following features:
+
+* PTransforms
+  * Impulse
+  * Create
+  * ParDo with user DoFns
+    * Iterable side inputs
+    * Multiple output emitters
+    * Receive and return key-value pairs
+    * SplittableDoFns
+  * GroupByKey and CoGroupByKey
+  * CombineFns for use with Combine and CombinePerKey
+  * Flatten
+  * Partition
+  * Composite transforms
+  * Cross language transforms
+* EventTime windowing

Review comment:
       `beam.EventTime` is a special type value for beam event times. https://pkg.go.dev/github.com/apache/beam/sdks/v2/go/pkg/beam#EventTime




-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: github-unsubscribe@beam.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



[GitHub] [beam] lukecwik commented on a change in pull request #15894: [Go SDK] Go SDK Exits Experimental

Posted by GitBox <gi...@apache.org>.
lukecwik commented on a change in pull request #15894:
URL: https://github.com/apache/beam/pull/15894#discussion_r743825565



##########
File path: website/www/site/content/en/blog/go-sdk-release.md
##########
@@ -0,0 +1,163 @@
+---
+title:  "Go SDK Exits Experimental in Apache Beam 2.33.0"
+date:   2021-11-04 00:00:01 -0800
+categories:
+  - blog
+authors:
+  - lostluck
+---
+<!--
+Licensed 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.
+-->
+
+Apache Beam’s latest release, version [2.33.0](/get-started/downloads/), is the first official release of the long experimental Go SDK.
+Built with the [Go Programming Language](https://golang.org/), the Go SDK joins the Java and Python SDKs as the third implementation of the Beam programming model.
+
+<!--more-->
+
+## Using the new Go SDK.
+
+New users of the Go SDK can start using it in their Go programs by importing the main beam package:
+
+```
+import "github.com/apache/beam/sdks/v2/go/pkg/beam"
+```
+
+The next run of `go mod tidy` will fetch the latest stable version of the module.
+Alternatively executing `go get github.com/apache/beam/sdks/v2/go/pkg/beam` will download it to the local module cache immeadiately, and add it to your `go.mod` file.
+
+Existing users of the experimental Go SDK need to update to new `v2` import paths to start using the latest versions of the SDK.
+This is can be done by adding `v2` to the import paths, changing `github.com/apache/beam/sdks/go/`... to `github.com/apache/beam/sdks/v2/go/`... where applicable, and then running `go mod tidy`.
+
+Further documentation on using the SDK is available in the [Beam Programming Guide](/documentation/programming-guide/), and in the package Go Doc at https://pkg.go.dev/github.com/apache/beam/sdks/v2/go/pkg/beam.

Review comment:
       ```suggestion
   Further documentation on using the SDK is available in the [Beam Programming Guide](/documentation/programming-guide/), and in the package [Go Doc](https://pkg.go.dev/github.com/apache/beam/sdks/v2/go/pkg/beam).
   ```

##########
File path: website/www/site/content/en/blog/go-sdk-release.md
##########
@@ -0,0 +1,163 @@
+---
+title:  "Go SDK Exits Experimental in Apache Beam 2.33.0"
+date:   2021-11-04 00:00:01 -0800
+categories:
+  - blog
+authors:
+  - lostluck
+---
+<!--
+Licensed 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.
+-->
+
+Apache Beam’s latest release, version [2.33.0](/get-started/downloads/), is the first official release of the long experimental Go SDK.
+Built with the [Go Programming Language](https://golang.org/), the Go SDK joins the Java and Python SDKs as the third implementation of the Beam programming model.
+
+<!--more-->
+
+## Using the new Go SDK.
+
+New users of the Go SDK can start using it in their Go programs by importing the main beam package:
+
+```
+import "github.com/apache/beam/sdks/v2/go/pkg/beam"
+```
+
+The next run of `go mod tidy` will fetch the latest stable version of the module.
+Alternatively executing `go get github.com/apache/beam/sdks/v2/go/pkg/beam` will download it to the local module cache immeadiately, and add it to your `go.mod` file.
+
+Existing users of the experimental Go SDK need to update to new `v2` import paths to start using the latest versions of the SDK.
+This is can be done by adding `v2` to the import paths, changing `github.com/apache/beam/sdks/go/`... to `github.com/apache/beam/sdks/v2/go/`... where applicable, and then running `go mod tidy`.
+
+Further documentation on using the SDK is available in the [Beam Programming Guide](/documentation/programming-guide/), and in the package Go Doc at https://pkg.go.dev/github.com/apache/beam/sdks/v2/go/pkg/beam.
+
+## Feature Support
+
+At time of writing, the Go SDK is currently "Batteries Not Included".
+This means that there are gaps or edge cases in supported IOs and transforms.
+That said, the core of the SDK enables a great deal of the Beam Model for
+custom user use, supporting following features:
+
+* PTransforms
+  * Impulse
+  * Create
+  * ParDo w/User DoFns
+    * Iterable Side Inputs
+    * Multiple Output emitters
+    * Receive and Return Key Value pairs
+    * EventTime
+    * SplittableDoFns
+  * GroupByKey and CoGroupByKey
+  * CombineFns for use with Combine and CombinePerKey
+  * Windowing
+    * Global, Fixed intervals, Sliding windows, and Session

Review comment:
       ```suggestion
       * Global, Fixed Intervals, Sliding, and Session windows
   ```

##########
File path: website/www/site/content/en/blog/go-sdk-release.md
##########
@@ -0,0 +1,163 @@
+---
+title:  "Go SDK Exits Experimental in Apache Beam 2.33.0"
+date:   2021-11-04 00:00:01 -0800
+categories:
+  - blog
+authors:
+  - lostluck
+---
+<!--
+Licensed 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.
+-->
+
+Apache Beam’s latest release, version [2.33.0](/get-started/downloads/), is the first official release of the long experimental Go SDK.
+Built with the [Go Programming Language](https://golang.org/), the Go SDK joins the Java and Python SDKs as the third implementation of the Beam programming model.
+
+<!--more-->
+
+## Using the new Go SDK.
+
+New users of the Go SDK can start using it in their Go programs by importing the main beam package:
+
+```
+import "github.com/apache/beam/sdks/v2/go/pkg/beam"
+```
+
+The next run of `go mod tidy` will fetch the latest stable version of the module.
+Alternatively executing `go get github.com/apache/beam/sdks/v2/go/pkg/beam` will download it to the local module cache immeadiately, and add it to your `go.mod` file.
+
+Existing users of the experimental Go SDK need to update to new `v2` import paths to start using the latest versions of the SDK.
+This is can be done by adding `v2` to the import paths, changing `github.com/apache/beam/sdks/go/`... to `github.com/apache/beam/sdks/v2/go/`... where applicable, and then running `go mod tidy`.
+
+Further documentation on using the SDK is available in the [Beam Programming Guide](/documentation/programming-guide/), and in the package Go Doc at https://pkg.go.dev/github.com/apache/beam/sdks/v2/go/pkg/beam.
+
+## Feature Support
+
+At time of writing, the Go SDK is currently "Batteries Not Included".
+This means that there are gaps or edge cases in supported IOs and transforms.
+That said, the core of the SDK enables a great deal of the Beam Model for
+custom user use, supporting following features:
+
+* PTransforms
+  * Impulse
+  * Create
+  * ParDo w/User DoFns
+    * Iterable Side Inputs
+    * Multiple Output emitters
+    * Receive and Return Key Value pairs
+    * EventTime
+    * SplittableDoFns
+  * GroupByKey and CoGroupByKey
+  * CombineFns for use with Combine and CombinePerKey
+  * Windowing
+    * Global, Fixed intervals, Sliding windows, and Session
+    * Aggregating over windowed PCollections w/GBKs or Combines.
+  * Flatten
+  * Partition
+  * Composites
+  * Cross Language Transforms
+* Coders
+  * Primitive Go types (ints, string, []bytes, and more)
+  * Beam Schemas for Go Struct types (including struct, slice, and map fields)
+  * Registering custom coders
+* Metrics
+  * PCollection metrics (ElementCount, Size Estimates)
+  * Custom User Metrics
+  * Post job user metrics querying (coming in 2.34.0)
+  * DoFn profiling metrics (coming in 2.35.0)
+* Provided Built Transforms
+  * Sum, Count, Min, Max, Top, Filter
+  * Scalable TextIO Reading
+
+Upcoming features support roadmap, and known issues are discussed below.
+In particular, we plan to support a much richer set of IO connectors via Beam's cross-language capabilities.
+
+## Releases
+
+With this release, the Go SDK now uses [Go Modules](https://golang.org/ref/mod) for dependency management.
+This makes it so users, SDK Devs, and the testing infrastructure can all rely on the same versions of dependencies, making builds reproducible.
+This also makes [validating Go SDK Release Candidates simple](/blog/validate-beam-release/#configuring-a-go-build-to-validate-a-beam-release-candidate).
+
+Versioned SDK worker containers are now built and [published](https://hub.docker.com/r/apache/beam_go_sdk/tags?page=1&ordering=last_updated), with the SDK using matched tagged versions.
+For released versions, user jobs no longer need to specify a container to use, except when using custom containers.
+
+## Compatibility
+
+The Go SDK will largely follow suit with the Go notion of compatibility.
+Some concessions are made to keep all SDKs together on the same release cycle.
+
+### Language Compatibility
+
+The SDK will be tested at a minimum [Go Programming Language version of 1.16](https://golang.org/doc/devel/release), and use available language features and standard library packages accordingly.
+To maintain a broad compatibility, the Go SDK will not require the latest major version of Go.
+We expect to follow the 2nd newest supported release of the language, with a possible exception when Go 1.18 is released, in order to begin experimenting with [Go Generics](https://go.dev/blog/generics-proposal) in the SDK.
+Release notes will call out when the minimum version of the language changes.
+
+### Package Compatibility
+
+The primary user packages will avoid changing in backwards incompatible ways for core features.
+This is to be inline with Go's notion of the [`import compatibility rule`](https://research.swtch.com/vgo-import).
+
+> If an old package and a new package have the same import path,
+> the new package must be backwards compatible with the old package.
+
+Exceptions to this policy are around newer, experimental, or in development features.
+These are subject to change.
+Such features will have a doc comment noting the experimental status, or be mentioned the change notes for a release.
+For example, using `beam.WindowInto` with Triggers is currently experimental and may have the api changed in a future release.
+
+Primary user packages include:
+* The main beam package `github.com/apache/beam/sdks/v2/go/pkg/beam`
+* Sub packages under `.../transforms`, `.../io`, `.../runners`, and `.../testing`.
+
+Generally, packages in the module other than the primary user packages are for framework use.
+They are at risk of changing, though at this point, large breaking changes are unlikely.
+
+### Known Issues
+
+#### Batteries not included.
+* Current native transforms are undertested.
+* IOs may not be written to scale.
+* Go Direct Runner is incomplete and is not portable, prefer using the Python Portable runner, or Flink.
+  * Doesn't support side input windowing. [BEAM-13075](https://issues.apache.org/jira/browse/BEAM-13075)
+  * Doesn't serialize data, making it unlikely to catch coder issues [BEAM-6372](https://issues.apache.org/jira/browse/BEAM-6372)
+  * Can use other general improvements, and become portable [BEAM-11076](https://issues.apache.org/jira/browse/BEAM-11076)
+* Current Trigger API is under iteration and subject to change [BEAM-3304](https://issues.apache.org/jira/browse/BEAM-3304).
+  * API has a possible breaking change between 2.33.0 and 2.34.0, and may change again.
+* Support of the SDK on services, like Google Cloud Dataflow, remains at the service owner's discretion.
+* Need something?
+  * File a ticket in the [Beam JIRA](https://issues.apache.org/jira/issues/?jql=project%20%3D%20BEAM%20AND%20component%20%3D%20sdk-go) and,
+  * Email the dev@beam.apache.org list!

Review comment:
       Can you make the e-mail address a mail link?

##########
File path: website/www/site/content/en/blog/go-sdk-release.md
##########
@@ -0,0 +1,163 @@
+---
+title:  "Go SDK Exits Experimental in Apache Beam 2.33.0"
+date:   2021-11-04 00:00:01 -0800
+categories:
+  - blog
+authors:
+  - lostluck
+---
+<!--
+Licensed 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.
+-->
+
+Apache Beam’s latest release, version [2.33.0](/get-started/downloads/), is the first official release of the long experimental Go SDK.
+Built with the [Go Programming Language](https://golang.org/), the Go SDK joins the Java and Python SDKs as the third implementation of the Beam programming model.
+
+<!--more-->
+
+## Using the new Go SDK.
+
+New users of the Go SDK can start using it in their Go programs by importing the main beam package:
+
+```
+import "github.com/apache/beam/sdks/v2/go/pkg/beam"
+```
+
+The next run of `go mod tidy` will fetch the latest stable version of the module.
+Alternatively executing `go get github.com/apache/beam/sdks/v2/go/pkg/beam` will download it to the local module cache immeadiately, and add it to your `go.mod` file.
+
+Existing users of the experimental Go SDK need to update to new `v2` import paths to start using the latest versions of the SDK.
+This is can be done by adding `v2` to the import paths, changing `github.com/apache/beam/sdks/go/`... to `github.com/apache/beam/sdks/v2/go/`... where applicable, and then running `go mod tidy`.
+
+Further documentation on using the SDK is available in the [Beam Programming Guide](/documentation/programming-guide/), and in the package Go Doc at https://pkg.go.dev/github.com/apache/beam/sdks/v2/go/pkg/beam.
+
+## Feature Support
+
+At time of writing, the Go SDK is currently "Batteries Not Included".
+This means that there are gaps or edge cases in supported IOs and transforms.
+That said, the core of the SDK enables a great deal of the Beam Model for
+custom user use, supporting following features:
+
+* PTransforms
+  * Impulse
+  * Create
+  * ParDo w/User DoFns
+    * Iterable Side Inputs
+    * Multiple Output emitters
+    * Receive and Return Key Value pairs
+    * EventTime

Review comment:
       Is there something special about event time being listed under ParDo or would this make more sense under Windowing?

##########
File path: website/www/site/content/en/blog/go-sdk-release.md
##########
@@ -0,0 +1,163 @@
+---
+title:  "Go SDK Exits Experimental in Apache Beam 2.33.0"
+date:   2021-11-04 00:00:01 -0800
+categories:
+  - blog
+authors:
+  - lostluck
+---
+<!--
+Licensed 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.
+-->
+
+Apache Beam’s latest release, version [2.33.0](/get-started/downloads/), is the first official release of the long experimental Go SDK.
+Built with the [Go Programming Language](https://golang.org/), the Go SDK joins the Java and Python SDKs as the third implementation of the Beam programming model.
+
+<!--more-->
+
+## Using the new Go SDK.
+
+New users of the Go SDK can start using it in their Go programs by importing the main beam package:
+
+```
+import "github.com/apache/beam/sdks/v2/go/pkg/beam"
+```
+
+The next run of `go mod tidy` will fetch the latest stable version of the module.
+Alternatively executing `go get github.com/apache/beam/sdks/v2/go/pkg/beam` will download it to the local module cache immeadiately, and add it to your `go.mod` file.
+
+Existing users of the experimental Go SDK need to update to new `v2` import paths to start using the latest versions of the SDK.
+This is can be done by adding `v2` to the import paths, changing `github.com/apache/beam/sdks/go/`... to `github.com/apache/beam/sdks/v2/go/`... where applicable, and then running `go mod tidy`.
+
+Further documentation on using the SDK is available in the [Beam Programming Guide](/documentation/programming-guide/), and in the package Go Doc at https://pkg.go.dev/github.com/apache/beam/sdks/v2/go/pkg/beam.
+
+## Feature Support
+
+At time of writing, the Go SDK is currently "Batteries Not Included".
+This means that there are gaps or edge cases in supported IOs and transforms.
+That said, the core of the SDK enables a great deal of the Beam Model for
+custom user use, supporting following features:
+
+* PTransforms
+  * Impulse
+  * Create
+  * ParDo w/User DoFns
+    * Iterable Side Inputs
+    * Multiple Output emitters
+    * Receive and Return Key Value pairs
+    * EventTime
+    * SplittableDoFns
+  * GroupByKey and CoGroupByKey
+  * CombineFns for use with Combine and CombinePerKey
+  * Windowing
+    * Global, Fixed intervals, Sliding windows, and Session
+    * Aggregating over windowed PCollections w/GBKs or Combines.
+  * Flatten
+  * Partition
+  * Composites
+  * Cross Language Transforms
+* Coders
+  * Primitive Go types (ints, string, []bytes, and more)
+  * Beam Schemas for Go Struct types (including struct, slice, and map fields)
+  * Registering custom coders
+* Metrics
+  * PCollection metrics (ElementCount, Size Estimates)
+  * Custom User Metrics
+  * Post job user metrics querying (coming in 2.34.0)
+  * DoFn profiling metrics (coming in 2.35.0)
+* Provided Built Transforms
+  * Sum, Count, Min, Max, Top, Filter
+  * Scalable TextIO Reading
+
+Upcoming features support roadmap, and known issues are discussed below.
+In particular, we plan to support a much richer set of IO connectors via Beam's cross-language capabilities.
+
+## Releases
+
+With this release, the Go SDK now uses [Go Modules](https://golang.org/ref/mod) for dependency management.
+This makes it so users, SDK Devs, and the testing infrastructure can all rely on the same versions of dependencies, making builds reproducible.
+This also makes [validating Go SDK Release Candidates simple](/blog/validate-beam-release/#configuring-a-go-build-to-validate-a-beam-release-candidate).
+
+Versioned SDK worker containers are now built and [published](https://hub.docker.com/r/apache/beam_go_sdk/tags?page=1&ordering=last_updated), with the SDK using matched tagged versions.
+For released versions, user jobs no longer need to specify a container to use, except when using custom containers.
+
+## Compatibility
+
+The Go SDK will largely follow suit with the Go notion of compatibility.
+Some concessions are made to keep all SDKs together on the same release cycle.
+
+### Language Compatibility
+
+The SDK will be tested at a minimum [Go Programming Language version of 1.16](https://golang.org/doc/devel/release), and use available language features and standard library packages accordingly.
+To maintain a broad compatibility, the Go SDK will not require the latest major version of Go.
+We expect to follow the 2nd newest supported release of the language, with a possible exception when Go 1.18 is released, in order to begin experimenting with [Go Generics](https://go.dev/blog/generics-proposal) in the SDK.
+Release notes will call out when the minimum version of the language changes.
+
+### Package Compatibility
+
+The primary user packages will avoid changing in backwards incompatible ways for core features.
+This is to be inline with Go's notion of the [`import compatibility rule`](https://research.swtch.com/vgo-import).
+
+> If an old package and a new package have the same import path,
+> the new package must be backwards compatible with the old package.
+
+Exceptions to this policy are around newer, experimental, or in development features.
+These are subject to change.
+Such features will have a doc comment noting the experimental status, or be mentioned the change notes for a release.
+For example, using `beam.WindowInto` with Triggers is currently experimental and may have the api changed in a future release.
+
+Primary user packages include:
+* The main beam package `github.com/apache/beam/sdks/v2/go/pkg/beam`
+* Sub packages under `.../transforms`, `.../io`, `.../runners`, and `.../testing`.
+
+Generally, packages in the module other than the primary user packages are for framework use.
+They are at risk of changing, though at this point, large breaking changes are unlikely.
+
+### Known Issues
+
+#### Batteries not included.
+* Current native transforms are undertested.
+* IOs may not be written to scale.
+* Go Direct Runner is incomplete and is not portable, prefer using the Python Portable runner, or Flink.
+  * Doesn't support side input windowing. [BEAM-13075](https://issues.apache.org/jira/browse/BEAM-13075)
+  * Doesn't serialize data, making it unlikely to catch coder issues [BEAM-6372](https://issues.apache.org/jira/browse/BEAM-6372)
+  * Can use other general improvements, and become portable [BEAM-11076](https://issues.apache.org/jira/browse/BEAM-11076)
+* Current Trigger API is under iteration and subject to change [BEAM-3304](https://issues.apache.org/jira/browse/BEAM-3304).
+  * API has a possible breaking change between 2.33.0 and 2.34.0, and may change again.
+* Support of the SDK on services, like Google Cloud Dataflow, remains at the service owner's discretion.
+* Need something?
+  * File a ticket in the [Beam JIRA](https://issues.apache.org/jira/issues/?jql=project%20%3D%20BEAM%20AND%20component%20%3D%20sdk-go) and,
+  * Email the dev@beam.apache.org list!
+
+#### Fixed in 2.34.0
+  * `top.SmallestPerKey` was broken [BEAM-12946](https://issues.apache.org/jira/browse/BEAM-12946)
+  * `beam.TryCrossLanguage` API didn't match non-Try version [BEAM-9918](https://issues.apache.org/jira/browse/BEAM-9918)
+    * This is a breaking change if one was calling `beam.TryCrossLanguage`
+
+#### Fixed in 2.35.0
+  * Non-Global Window Side Inputs don't match (correctness bug) [BEAM-11087](https://issues.apache.org/jira/browse/BEAM-11087)
+    * Until 2.35.0 it's not recommended to use SideInputs that are not using the Global Window.

Review comment:
       ```suggestion
       * Until 2.35.0 it's not recommended to use Side Inputs that are not using the Global Window.
   ```

##########
File path: website/www/site/content/en/blog/go-sdk-release.md
##########
@@ -0,0 +1,163 @@
+---
+title:  "Go SDK Exits Experimental in Apache Beam 2.33.0"
+date:   2021-11-04 00:00:01 -0800
+categories:
+  - blog
+authors:
+  - lostluck
+---
+<!--
+Licensed 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.
+-->
+
+Apache Beam’s latest release, version [2.33.0](/get-started/downloads/), is the first official release of the long experimental Go SDK.
+Built with the [Go Programming Language](https://golang.org/), the Go SDK joins the Java and Python SDKs as the third implementation of the Beam programming model.
+
+<!--more-->
+
+## Using the new Go SDK.
+
+New users of the Go SDK can start using it in their Go programs by importing the main beam package:
+
+```
+import "github.com/apache/beam/sdks/v2/go/pkg/beam"
+```
+
+The next run of `go mod tidy` will fetch the latest stable version of the module.
+Alternatively executing `go get github.com/apache/beam/sdks/v2/go/pkg/beam` will download it to the local module cache immeadiately, and add it to your `go.mod` file.
+
+Existing users of the experimental Go SDK need to update to new `v2` import paths to start using the latest versions of the SDK.
+This is can be done by adding `v2` to the import paths, changing `github.com/apache/beam/sdks/go/`... to `github.com/apache/beam/sdks/v2/go/`... where applicable, and then running `go mod tidy`.
+
+Further documentation on using the SDK is available in the [Beam Programming Guide](/documentation/programming-guide/), and in the package Go Doc at https://pkg.go.dev/github.com/apache/beam/sdks/v2/go/pkg/beam.
+
+## Feature Support
+
+At time of writing, the Go SDK is currently "Batteries Not Included".
+This means that there are gaps or edge cases in supported IOs and transforms.
+That said, the core of the SDK enables a great deal of the Beam Model for
+custom user use, supporting following features:
+
+* PTransforms
+  * Impulse
+  * Create
+  * ParDo w/User DoFns
+    * Iterable Side Inputs
+    * Multiple Output emitters
+    * Receive and Return Key Value pairs
+    * EventTime
+    * SplittableDoFns
+  * GroupByKey and CoGroupByKey
+  * CombineFns for use with Combine and CombinePerKey
+  * Windowing

Review comment:
       Should windowing be at the same level as PTransforms (unindent Windowing)?

##########
File path: website/www/site/content/en/blog/go-sdk-release.md
##########
@@ -0,0 +1,163 @@
+---
+title:  "Go SDK Exits Experimental in Apache Beam 2.33.0"
+date:   2021-11-04 00:00:01 -0800
+categories:
+  - blog
+authors:
+  - lostluck
+---
+<!--
+Licensed 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.
+-->
+
+Apache Beam’s latest release, version [2.33.0](/get-started/downloads/), is the first official release of the long experimental Go SDK.
+Built with the [Go Programming Language](https://golang.org/), the Go SDK joins the Java and Python SDKs as the third implementation of the Beam programming model.
+
+<!--more-->
+
+## Using the new Go SDK.
+
+New users of the Go SDK can start using it in their Go programs by importing the main beam package:
+
+```
+import "github.com/apache/beam/sdks/v2/go/pkg/beam"
+```
+
+The next run of `go mod tidy` will fetch the latest stable version of the module.
+Alternatively executing `go get github.com/apache/beam/sdks/v2/go/pkg/beam` will download it to the local module cache immeadiately, and add it to your `go.mod` file.
+
+Existing users of the experimental Go SDK need to update to new `v2` import paths to start using the latest versions of the SDK.
+This is can be done by adding `v2` to the import paths, changing `github.com/apache/beam/sdks/go/`... to `github.com/apache/beam/sdks/v2/go/`... where applicable, and then running `go mod tidy`.
+
+Further documentation on using the SDK is available in the [Beam Programming Guide](/documentation/programming-guide/), and in the package Go Doc at https://pkg.go.dev/github.com/apache/beam/sdks/v2/go/pkg/beam.
+
+## Feature Support
+
+At time of writing, the Go SDK is currently "Batteries Not Included".
+This means that there are gaps or edge cases in supported IOs and transforms.
+That said, the core of the SDK enables a great deal of the Beam Model for
+custom user use, supporting following features:
+
+* PTransforms
+  * Impulse
+  * Create
+  * ParDo w/User DoFns
+    * Iterable Side Inputs
+    * Multiple Output emitters
+    * Receive and Return Key Value pairs
+    * EventTime
+    * SplittableDoFns
+  * GroupByKey and CoGroupByKey
+  * CombineFns for use with Combine and CombinePerKey
+  * Windowing
+    * Global, Fixed intervals, Sliding windows, and Session
+    * Aggregating over windowed PCollections w/GBKs or Combines.
+  * Flatten
+  * Partition
+  * Composites
+  * Cross Language Transforms
+* Coders
+  * Primitive Go types (ints, string, []bytes, and more)
+  * Beam Schemas for Go Struct types (including struct, slice, and map fields)
+  * Registering custom coders
+* Metrics
+  * PCollection metrics (ElementCount, Size Estimates)
+  * Custom User Metrics
+  * Post job user metrics querying (coming in 2.34.0)
+  * DoFn profiling metrics (coming in 2.35.0)
+* Provided Built Transforms
+  * Sum, Count, Min, Max, Top, Filter
+  * Scalable TextIO Reading

Review comment:
       ```suggestion
   * Provided Transforms
     * Sum, Count, Min, Max, Top, Filter
     * Scalable TextIO Reading
   ```
   
   Or we could go with `Built-in transforms`

##########
File path: website/www/site/content/en/blog/go-sdk-release.md
##########
@@ -0,0 +1,163 @@
+---
+title:  "Go SDK Exits Experimental in Apache Beam 2.33.0"
+date:   2021-11-04 00:00:01 -0800
+categories:
+  - blog
+authors:
+  - lostluck
+---
+<!--
+Licensed 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.
+-->
+
+Apache Beam’s latest release, version [2.33.0](/get-started/downloads/), is the first official release of the long experimental Go SDK.
+Built with the [Go Programming Language](https://golang.org/), the Go SDK joins the Java and Python SDKs as the third implementation of the Beam programming model.
+
+<!--more-->
+
+## Using the new Go SDK.
+
+New users of the Go SDK can start using it in their Go programs by importing the main beam package:
+
+```
+import "github.com/apache/beam/sdks/v2/go/pkg/beam"
+```
+
+The next run of `go mod tidy` will fetch the latest stable version of the module.
+Alternatively executing `go get github.com/apache/beam/sdks/v2/go/pkg/beam` will download it to the local module cache immeadiately, and add it to your `go.mod` file.
+
+Existing users of the experimental Go SDK need to update to new `v2` import paths to start using the latest versions of the SDK.
+This is can be done by adding `v2` to the import paths, changing `github.com/apache/beam/sdks/go/`... to `github.com/apache/beam/sdks/v2/go/`... where applicable, and then running `go mod tidy`.
+
+Further documentation on using the SDK is available in the [Beam Programming Guide](/documentation/programming-guide/), and in the package Go Doc at https://pkg.go.dev/github.com/apache/beam/sdks/v2/go/pkg/beam.
+
+## Feature Support
+
+At time of writing, the Go SDK is currently "Batteries Not Included".
+This means that there are gaps or edge cases in supported IOs and transforms.
+That said, the core of the SDK enables a great deal of the Beam Model for
+custom user use, supporting following features:
+
+* PTransforms
+  * Impulse
+  * Create
+  * ParDo w/User DoFns
+    * Iterable Side Inputs
+    * Multiple Output emitters
+    * Receive and Return Key Value pairs
+    * EventTime
+    * SplittableDoFns
+  * GroupByKey and CoGroupByKey
+  * CombineFns for use with Combine and CombinePerKey
+  * Windowing
+    * Global, Fixed intervals, Sliding windows, and Session
+    * Aggregating over windowed PCollections w/GBKs or Combines.
+  * Flatten
+  * Partition
+  * Composites
+  * Cross Language Transforms
+* Coders
+  * Primitive Go types (ints, string, []bytes, and more)
+  * Beam Schemas for Go Struct types (including struct, slice, and map fields)
+  * Registering custom coders
+* Metrics
+  * PCollection metrics (ElementCount, Size Estimates)
+  * Custom User Metrics
+  * Post job user metrics querying (coming in 2.34.0)
+  * DoFn profiling metrics (coming in 2.35.0)
+* Provided Built Transforms
+  * Sum, Count, Min, Max, Top, Filter
+  * Scalable TextIO Reading
+
+Upcoming features support roadmap, and known issues are discussed below.
+In particular, we plan to support a much richer set of IO connectors via Beam's cross-language capabilities.
+
+## Releases
+
+With this release, the Go SDK now uses [Go Modules](https://golang.org/ref/mod) for dependency management.
+This makes it so users, SDK Devs, and the testing infrastructure can all rely on the same versions of dependencies, making builds reproducible.
+This also makes [validating Go SDK Release Candidates simple](/blog/validate-beam-release/#configuring-a-go-build-to-validate-a-beam-release-candidate).
+
+Versioned SDK worker containers are now built and [published](https://hub.docker.com/r/apache/beam_go_sdk/tags?page=1&ordering=last_updated), with the SDK using matched tagged versions.
+For released versions, user jobs no longer need to specify a container to use, except when using custom containers.
+
+## Compatibility
+
+The Go SDK will largely follow suit with the Go notion of compatibility.
+Some concessions are made to keep all SDKs together on the same release cycle.
+
+### Language Compatibility
+
+The SDK will be tested at a minimum [Go Programming Language version of 1.16](https://golang.org/doc/devel/release), and use available language features and standard library packages accordingly.
+To maintain a broad compatibility, the Go SDK will not require the latest major version of Go.
+We expect to follow the 2nd newest supported release of the language, with a possible exception when Go 1.18 is released, in order to begin experimenting with [Go Generics](https://go.dev/blog/generics-proposal) in the SDK.
+Release notes will call out when the minimum version of the language changes.
+
+### Package Compatibility
+
+The primary user packages will avoid changing in backwards incompatible ways for core features.
+This is to be inline with Go's notion of the [`import compatibility rule`](https://research.swtch.com/vgo-import).
+
+> If an old package and a new package have the same import path,
+> the new package must be backwards compatible with the old package.
+
+Exceptions to this policy are around newer, experimental, or in development features.
+These are subject to change.
+Such features will have a doc comment noting the experimental status, or be mentioned the change notes for a release.
+For example, using `beam.WindowInto` with Triggers is currently experimental and may have the api changed in a future release.
+
+Primary user packages include:
+* The main beam package `github.com/apache/beam/sdks/v2/go/pkg/beam`
+* Sub packages under `.../transforms`, `.../io`, `.../runners`, and `.../testing`.
+
+Generally, packages in the module other than the primary user packages are for framework use.
+They are at risk of changing, though at this point, large breaking changes are unlikely.
+
+### Known Issues
+
+#### Batteries not included.
+* Current native transforms are undertested.
+* IOs may not be written to scale.
+* Go Direct Runner is incomplete and is not portable, prefer using the Python Portable runner, or Flink.
+  * Doesn't support side input windowing. [BEAM-13075](https://issues.apache.org/jira/browse/BEAM-13075)
+  * Doesn't serialize data, making it unlikely to catch coder issues [BEAM-6372](https://issues.apache.org/jira/browse/BEAM-6372)
+  * Can use other general improvements, and become portable [BEAM-11076](https://issues.apache.org/jira/browse/BEAM-11076)
+* Current Trigger API is under iteration and subject to change [BEAM-3304](https://issues.apache.org/jira/browse/BEAM-3304).
+  * API has a possible breaking change between 2.33.0 and 2.34.0, and may change again.
+* Support of the SDK on services, like Google Cloud Dataflow, remains at the service owner's discretion.
+* Need something?
+  * File a ticket in the [Beam JIRA](https://issues.apache.org/jira/issues/?jql=project%20%3D%20BEAM%20AND%20component%20%3D%20sdk-go) and,
+  * Email the dev@beam.apache.org list!
+
+#### Fixed in 2.34.0
+  * `top.SmallestPerKey` was broken [BEAM-12946](https://issues.apache.org/jira/browse/BEAM-12946)
+  * `beam.TryCrossLanguage` API didn't match non-Try version [BEAM-9918](https://issues.apache.org/jira/browse/BEAM-9918)
+    * This is a breaking change if one was calling `beam.TryCrossLanguage`
+
+#### Fixed in 2.35.0
+  * Non-Global Window Side Inputs don't match (correctness bug) [BEAM-11087](https://issues.apache.org/jira/browse/BEAM-11087)
+    * Until 2.35.0 it's not recommended to use SideInputs that are not using the Global Window.
+  * Side Inputs using DoFns accumulate memory over bundles, causing OOMs [BEAM-13130](https://issues.apache.org/jira/browse/BEAM-13130)
+
+## Roadmap
+
+The [SDK roadmap](/roadmap/go-sdk/) has been updated.
+Ongoing focus is to bolster more streaming focused features, and improve existing connectors, and make connectors easier to implement.
+
+In the nearer term this comes in the form of improvements to Side Inputs, and providing wrappers and improving ease-of-use for Cross Language Transforms from Java.
+
+## Conclusion
+
+We hope you find the SDK useful, and it's still early days.
+If you make something using it, consider [sharing it with us](/community/contact-us/).

Review comment:
       awkward?
   ```suggestion
   If you make something useful, consider [sharing it with us](/community/contact-us/).
   ```

##########
File path: website/www/site/content/en/blog/go-sdk-release.md
##########
@@ -0,0 +1,163 @@
+---
+title:  "Go SDK Exits Experimental in Apache Beam 2.33.0"
+date:   2021-11-04 00:00:01 -0800
+categories:
+  - blog
+authors:
+  - lostluck
+---
+<!--
+Licensed 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.
+-->
+
+Apache Beam’s latest release, version [2.33.0](/get-started/downloads/), is the first official release of the long experimental Go SDK.
+Built with the [Go Programming Language](https://golang.org/), the Go SDK joins the Java and Python SDKs as the third implementation of the Beam programming model.
+
+<!--more-->
+
+## Using the new Go SDK.
+
+New users of the Go SDK can start using it in their Go programs by importing the main beam package:
+
+```
+import "github.com/apache/beam/sdks/v2/go/pkg/beam"
+```
+
+The next run of `go mod tidy` will fetch the latest stable version of the module.
+Alternatively executing `go get github.com/apache/beam/sdks/v2/go/pkg/beam` will download it to the local module cache immeadiately, and add it to your `go.mod` file.
+
+Existing users of the experimental Go SDK need to update to new `v2` import paths to start using the latest versions of the SDK.
+This is can be done by adding `v2` to the import paths, changing `github.com/apache/beam/sdks/go/`... to `github.com/apache/beam/sdks/v2/go/`... where applicable, and then running `go mod tidy`.
+
+Further documentation on using the SDK is available in the [Beam Programming Guide](/documentation/programming-guide/), and in the package Go Doc at https://pkg.go.dev/github.com/apache/beam/sdks/v2/go/pkg/beam.
+
+## Feature Support
+
+At time of writing, the Go SDK is currently "Batteries Not Included".
+This means that there are gaps or edge cases in supported IOs and transforms.
+That said, the core of the SDK enables a great deal of the Beam Model for
+custom user use, supporting following features:
+
+* PTransforms
+  * Impulse
+  * Create
+  * ParDo w/User DoFns
+    * Iterable Side Inputs
+    * Multiple Output emitters
+    * Receive and Return Key Value pairs
+    * EventTime
+    * SplittableDoFns
+  * GroupByKey and CoGroupByKey
+  * CombineFns for use with Combine and CombinePerKey
+  * Windowing
+    * Global, Fixed intervals, Sliding windows, and Session
+    * Aggregating over windowed PCollections w/GBKs or Combines.
+  * Flatten
+  * Partition
+  * Composites
+  * Cross Language Transforms
+* Coders
+  * Primitive Go types (ints, string, []bytes, and more)
+  * Beam Schemas for Go Struct types (including struct, slice, and map fields)
+  * Registering custom coders
+* Metrics
+  * PCollection metrics (ElementCount, Size Estimates)
+  * Custom User Metrics
+  * Post job user metrics querying (coming in 2.34.0)
+  * DoFn profiling metrics (coming in 2.35.0)
+* Provided Built Transforms
+  * Sum, Count, Min, Max, Top, Filter
+  * Scalable TextIO Reading
+
+Upcoming features support roadmap, and known issues are discussed below.
+In particular, we plan to support a much richer set of IO connectors via Beam's cross-language capabilities.
+
+## Releases
+
+With this release, the Go SDK now uses [Go Modules](https://golang.org/ref/mod) for dependency management.
+This makes it so users, SDK Devs, and the testing infrastructure can all rely on the same versions of dependencies, making builds reproducible.
+This also makes [validating Go SDK Release Candidates simple](/blog/validate-beam-release/#configuring-a-go-build-to-validate-a-beam-release-candidate).
+
+Versioned SDK worker containers are now built and [published](https://hub.docker.com/r/apache/beam_go_sdk/tags?page=1&ordering=last_updated), with the SDK using matched tagged versions.
+For released versions, user jobs no longer need to specify a container to use, except when using custom containers.
+
+## Compatibility
+
+The Go SDK will largely follow suit with the Go notion of compatibility.
+Some concessions are made to keep all SDKs together on the same release cycle.
+
+### Language Compatibility
+
+The SDK will be tested at a minimum [Go Programming Language version of 1.16](https://golang.org/doc/devel/release), and use available language features and standard library packages accordingly.
+To maintain a broad compatibility, the Go SDK will not require the latest major version of Go.
+We expect to follow the 2nd newest supported release of the language, with a possible exception when Go 1.18 is released, in order to begin experimenting with [Go Generics](https://go.dev/blog/generics-proposal) in the SDK.
+Release notes will call out when the minimum version of the language changes.
+
+### Package Compatibility
+
+The primary user packages will avoid changing in backwards incompatible ways for core features.
+This is to be inline with Go's notion of the [`import compatibility rule`](https://research.swtch.com/vgo-import).
+
+> If an old package and a new package have the same import path,
+> the new package must be backwards compatible with the old package.
+
+Exceptions to this policy are around newer, experimental, or in development features.
+These are subject to change.
+Such features will have a doc comment noting the experimental status, or be mentioned the change notes for a release.
+For example, using `beam.WindowInto` with Triggers is currently experimental and may have the api changed in a future release.
+
+Primary user packages include:
+* The main beam package `github.com/apache/beam/sdks/v2/go/pkg/beam`
+* Sub packages under `.../transforms`, `.../io`, `.../runners`, and `.../testing`.
+
+Generally, packages in the module other than the primary user packages are for framework use.
+They are at risk of changing, though at this point, large breaking changes are unlikely.
+
+### Known Issues
+
+#### Batteries not included.
+* Current native transforms are undertested.
+* IOs may not be written to scale.
+* Go Direct Runner is incomplete and is not portable, prefer using the Python Portable runner, or Flink.
+  * Doesn't support side input windowing. [BEAM-13075](https://issues.apache.org/jira/browse/BEAM-13075)
+  * Doesn't serialize data, making it unlikely to catch coder issues [BEAM-6372](https://issues.apache.org/jira/browse/BEAM-6372)
+  * Can use other general improvements, and become portable [BEAM-11076](https://issues.apache.org/jira/browse/BEAM-11076)
+* Current Trigger API is under iteration and subject to change [BEAM-3304](https://issues.apache.org/jira/browse/BEAM-3304).
+  * API has a possible breaking change between 2.33.0 and 2.34.0, and may change again.
+* Support of the SDK on services, like Google Cloud Dataflow, remains at the service owner's discretion.
+* Need something?
+  * File a ticket in the [Beam JIRA](https://issues.apache.org/jira/issues/?jql=project%20%3D%20BEAM%20AND%20component%20%3D%20sdk-go) and,
+  * Email the dev@beam.apache.org list!
+
+#### Fixed in 2.34.0
+  * `top.SmallestPerKey` was broken [BEAM-12946](https://issues.apache.org/jira/browse/BEAM-12946)
+  * `beam.TryCrossLanguage` API didn't match non-Try version [BEAM-9918](https://issues.apache.org/jira/browse/BEAM-9918)
+    * This is a breaking change if one was calling `beam.TryCrossLanguage`
+
+#### Fixed in 2.35.0
+  * Non-Global Window Side Inputs don't match (correctness bug) [BEAM-11087](https://issues.apache.org/jira/browse/BEAM-11087)
+    * Until 2.35.0 it's not recommended to use SideInputs that are not using the Global Window.
+  * Side Inputs using DoFns accumulate memory over bundles, causing OOMs [BEAM-13130](https://issues.apache.org/jira/browse/BEAM-13130)
+
+## Roadmap
+
+The [SDK roadmap](/roadmap/go-sdk/) has been updated.
+Ongoing focus is to bolster more streaming focused features, and improve existing connectors, and make connectors easier to implement.

Review comment:
       ```suggestion
   Ongoing focus is to bolster streaming focused features, improve existing connectors, and make connectors easier to implement.
   ```

##########
File path: website/www/site/content/en/blog/go-sdk-release.md
##########
@@ -0,0 +1,163 @@
+---
+title:  "Go SDK Exits Experimental in Apache Beam 2.33.0"
+date:   2021-11-04 00:00:01 -0800
+categories:
+  - blog
+authors:
+  - lostluck
+---
+<!--
+Licensed 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.
+-->
+
+Apache Beam’s latest release, version [2.33.0](/get-started/downloads/), is the first official release of the long experimental Go SDK.
+Built with the [Go Programming Language](https://golang.org/), the Go SDK joins the Java and Python SDKs as the third implementation of the Beam programming model.
+
+<!--more-->
+
+## Using the new Go SDK.
+
+New users of the Go SDK can start using it in their Go programs by importing the main beam package:
+
+```
+import "github.com/apache/beam/sdks/v2/go/pkg/beam"
+```
+
+The next run of `go mod tidy` will fetch the latest stable version of the module.
+Alternatively executing `go get github.com/apache/beam/sdks/v2/go/pkg/beam` will download it to the local module cache immeadiately, and add it to your `go.mod` file.
+
+Existing users of the experimental Go SDK need to update to new `v2` import paths to start using the latest versions of the SDK.
+This is can be done by adding `v2` to the import paths, changing `github.com/apache/beam/sdks/go/`... to `github.com/apache/beam/sdks/v2/go/`... where applicable, and then running `go mod tidy`.
+
+Further documentation on using the SDK is available in the [Beam Programming Guide](/documentation/programming-guide/), and in the package Go Doc at https://pkg.go.dev/github.com/apache/beam/sdks/v2/go/pkg/beam.
+
+## Feature Support
+
+At time of writing, the Go SDK is currently "Batteries Not Included".
+This means that there are gaps or edge cases in supported IOs and transforms.
+That said, the core of the SDK enables a great deal of the Beam Model for
+custom user use, supporting following features:
+
+* PTransforms
+  * Impulse
+  * Create
+  * ParDo w/User DoFns
+    * Iterable Side Inputs
+    * Multiple Output emitters
+    * Receive and Return Key Value pairs
+    * EventTime
+    * SplittableDoFns
+  * GroupByKey and CoGroupByKey
+  * CombineFns for use with Combine and CombinePerKey
+  * Windowing
+    * Global, Fixed intervals, Sliding windows, and Session
+    * Aggregating over windowed PCollections w/GBKs or Combines.
+  * Flatten
+  * Partition
+  * Composites

Review comment:
       ```suggestion
     * Composite Transforms
   ```

##########
File path: website/www/site/content/en/blog/go-sdk-release.md
##########
@@ -0,0 +1,163 @@
+---
+title:  "Go SDK Exits Experimental in Apache Beam 2.33.0"
+date:   2021-11-04 00:00:01 -0800
+categories:
+  - blog
+authors:
+  - lostluck
+---
+<!--
+Licensed 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.
+-->
+
+Apache Beam’s latest release, version [2.33.0](/get-started/downloads/), is the first official release of the long experimental Go SDK.
+Built with the [Go Programming Language](https://golang.org/), the Go SDK joins the Java and Python SDKs as the third implementation of the Beam programming model.
+
+<!--more-->
+
+## Using the new Go SDK.
+
+New users of the Go SDK can start using it in their Go programs by importing the main beam package:
+
+```
+import "github.com/apache/beam/sdks/v2/go/pkg/beam"
+```
+
+The next run of `go mod tidy` will fetch the latest stable version of the module.
+Alternatively executing `go get github.com/apache/beam/sdks/v2/go/pkg/beam` will download it to the local module cache immeadiately, and add it to your `go.mod` file.
+
+Existing users of the experimental Go SDK need to update to new `v2` import paths to start using the latest versions of the SDK.
+This is can be done by adding `v2` to the import paths, changing `github.com/apache/beam/sdks/go/`... to `github.com/apache/beam/sdks/v2/go/`... where applicable, and then running `go mod tidy`.
+
+Further documentation on using the SDK is available in the [Beam Programming Guide](/documentation/programming-guide/), and in the package Go Doc at https://pkg.go.dev/github.com/apache/beam/sdks/v2/go/pkg/beam.
+
+## Feature Support
+
+At time of writing, the Go SDK is currently "Batteries Not Included".
+This means that there are gaps or edge cases in supported IOs and transforms.
+That said, the core of the SDK enables a great deal of the Beam Model for
+custom user use, supporting following features:
+
+* PTransforms
+  * Impulse
+  * Create
+  * ParDo w/User DoFns
+    * Iterable Side Inputs
+    * Multiple Output emitters
+    * Receive and Return Key Value pairs
+    * EventTime
+    * SplittableDoFns
+  * GroupByKey and CoGroupByKey
+  * CombineFns for use with Combine and CombinePerKey
+  * Windowing
+    * Global, Fixed intervals, Sliding windows, and Session
+    * Aggregating over windowed PCollections w/GBKs or Combines.
+  * Flatten
+  * Partition
+  * Composites
+  * Cross Language Transforms
+* Coders
+  * Primitive Go types (ints, string, []bytes, and more)
+  * Beam Schemas for Go Struct types (including struct, slice, and map fields)
+  * Registering custom coders
+* Metrics
+  * PCollection metrics (ElementCount, Size Estimates)
+  * Custom User Metrics
+  * Post job user metrics querying (coming in 2.34.0)
+  * DoFn profiling metrics (coming in 2.35.0)
+* Provided Built Transforms
+  * Sum, Count, Min, Max, Top, Filter
+  * Scalable TextIO Reading
+
+Upcoming features support roadmap, and known issues are discussed below.
+In particular, we plan to support a much richer set of IO connectors via Beam's cross-language capabilities.
+
+## Releases
+
+With this release, the Go SDK now uses [Go Modules](https://golang.org/ref/mod) for dependency management.
+This makes it so users, SDK Devs, and the testing infrastructure can all rely on the same versions of dependencies, making builds reproducible.
+This also makes [validating Go SDK Release Candidates simple](/blog/validate-beam-release/#configuring-a-go-build-to-validate-a-beam-release-candidate).
+
+Versioned SDK worker containers are now built and [published](https://hub.docker.com/r/apache/beam_go_sdk/tags?page=1&ordering=last_updated), with the SDK using matched tagged versions.
+For released versions, user jobs no longer need to specify a container to use, except when using custom containers.
+
+## Compatibility
+
+The Go SDK will largely follow suit with the Go notion of compatibility.
+Some concessions are made to keep all SDKs together on the same release cycle.
+
+### Language Compatibility
+
+The SDK will be tested at a minimum [Go Programming Language version of 1.16](https://golang.org/doc/devel/release), and use available language features and standard library packages accordingly.
+To maintain a broad compatibility, the Go SDK will not require the latest major version of Go.
+We expect to follow the 2nd newest supported release of the language, with a possible exception when Go 1.18 is released, in order to begin experimenting with [Go Generics](https://go.dev/blog/generics-proposal) in the SDK.
+Release notes will call out when the minimum version of the language changes.
+
+### Package Compatibility
+
+The primary user packages will avoid changing in backwards incompatible ways for core features.
+This is to be inline with Go's notion of the [`import compatibility rule`](https://research.swtch.com/vgo-import).
+
+> If an old package and a new package have the same import path,
+> the new package must be backwards compatible with the old package.
+
+Exceptions to this policy are around newer, experimental, or in development features.
+These are subject to change.
+Such features will have a doc comment noting the experimental status, or be mentioned the change notes for a release.
+For example, using `beam.WindowInto` with Triggers is currently experimental and may have the api changed in a future release.

Review comment:
       ```suggestion
   Such features will have a doc comment noting the experimental status. Major changes will be mentioned in the release notes.
   For example, using `beam.WindowInto` with Triggers is currently experimental and may have the API changed in a future release.
   ```

##########
File path: website/www/site/content/en/blog/go-sdk-release.md
##########
@@ -0,0 +1,163 @@
+---
+title:  "Go SDK Exits Experimental in Apache Beam 2.33.0"
+date:   2021-11-04 00:00:01 -0800
+categories:
+  - blog
+authors:
+  - lostluck
+---
+<!--
+Licensed 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.
+-->
+
+Apache Beam’s latest release, version [2.33.0](/get-started/downloads/), is the first official release of the long experimental Go SDK.
+Built with the [Go Programming Language](https://golang.org/), the Go SDK joins the Java and Python SDKs as the third implementation of the Beam programming model.
+
+<!--more-->
+
+## Using the new Go SDK.
+
+New users of the Go SDK can start using it in their Go programs by importing the main beam package:
+
+```
+import "github.com/apache/beam/sdks/v2/go/pkg/beam"
+```
+
+The next run of `go mod tidy` will fetch the latest stable version of the module.
+Alternatively executing `go get github.com/apache/beam/sdks/v2/go/pkg/beam` will download it to the local module cache immeadiately, and add it to your `go.mod` file.
+
+Existing users of the experimental Go SDK need to update to new `v2` import paths to start using the latest versions of the SDK.
+This is can be done by adding `v2` to the import paths, changing `github.com/apache/beam/sdks/go/`... to `github.com/apache/beam/sdks/v2/go/`... where applicable, and then running `go mod tidy`.
+
+Further documentation on using the SDK is available in the [Beam Programming Guide](/documentation/programming-guide/), and in the package Go Doc at https://pkg.go.dev/github.com/apache/beam/sdks/v2/go/pkg/beam.
+
+## Feature Support
+
+At time of writing, the Go SDK is currently "Batteries Not Included".
+This means that there are gaps or edge cases in supported IOs and transforms.
+That said, the core of the SDK enables a great deal of the Beam Model for
+custom user use, supporting following features:
+
+* PTransforms

Review comment:
       I would consider only capitalizing the first word in this list except where we are using DoFns, ParDo, GroupByKey, CoGroupByKey, SplittableDoFn, PCollection, 

##########
File path: website/www/site/content/en/blog/go-sdk-release.md
##########
@@ -0,0 +1,163 @@
+---
+title:  "Go SDK Exits Experimental in Apache Beam 2.33.0"
+date:   2021-11-04 00:00:01 -0800
+categories:
+  - blog
+authors:
+  - lostluck
+---
+<!--
+Licensed 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.
+-->
+
+Apache Beam’s latest release, version [2.33.0](/get-started/downloads/), is the first official release of the long experimental Go SDK.
+Built with the [Go Programming Language](https://golang.org/), the Go SDK joins the Java and Python SDKs as the third implementation of the Beam programming model.
+
+<!--more-->
+
+## Using the new Go SDK.
+
+New users of the Go SDK can start using it in their Go programs by importing the main beam package:
+
+```
+import "github.com/apache/beam/sdks/v2/go/pkg/beam"
+```
+
+The next run of `go mod tidy` will fetch the latest stable version of the module.
+Alternatively executing `go get github.com/apache/beam/sdks/v2/go/pkg/beam` will download it to the local module cache immeadiately, and add it to your `go.mod` file.
+
+Existing users of the experimental Go SDK need to update to new `v2` import paths to start using the latest versions of the SDK.
+This is can be done by adding `v2` to the import paths, changing `github.com/apache/beam/sdks/go/`... to `github.com/apache/beam/sdks/v2/go/`... where applicable, and then running `go mod tidy`.
+
+Further documentation on using the SDK is available in the [Beam Programming Guide](/documentation/programming-guide/), and in the package Go Doc at https://pkg.go.dev/github.com/apache/beam/sdks/v2/go/pkg/beam.
+
+## Feature Support
+
+At time of writing, the Go SDK is currently "Batteries Not Included".
+This means that there are gaps or edge cases in supported IOs and transforms.
+That said, the core of the SDK enables a great deal of the Beam Model for
+custom user use, supporting following features:
+
+* PTransforms
+  * Impulse
+  * Create
+  * ParDo w/User DoFns
+    * Iterable Side Inputs
+    * Multiple Output emitters
+    * Receive and Return Key Value pairs
+    * EventTime
+    * SplittableDoFns
+  * GroupByKey and CoGroupByKey
+  * CombineFns for use with Combine and CombinePerKey
+  * Windowing
+    * Global, Fixed intervals, Sliding windows, and Session
+    * Aggregating over windowed PCollections w/GBKs or Combines.
+  * Flatten
+  * Partition
+  * Composites
+  * Cross Language Transforms
+* Coders
+  * Primitive Go types (ints, string, []bytes, and more)
+  * Beam Schemas for Go Struct types (including struct, slice, and map fields)
+  * Registering custom coders
+* Metrics
+  * PCollection metrics (ElementCount, Size Estimates)
+  * Custom User Metrics
+  * Post job user metrics querying (coming in 2.34.0)
+  * DoFn profiling metrics (coming in 2.35.0)
+* Provided Built Transforms
+  * Sum, Count, Min, Max, Top, Filter
+  * Scalable TextIO Reading
+
+Upcoming features support roadmap, and known issues are discussed below.
+In particular, we plan to support a much richer set of IO connectors via Beam's cross-language capabilities.
+
+## Releases
+
+With this release, the Go SDK now uses [Go Modules](https://golang.org/ref/mod) for dependency management.
+This makes it so users, SDK Devs, and the testing infrastructure can all rely on the same versions of dependencies, making builds reproducible.
+This also makes [validating Go SDK Release Candidates simple](/blog/validate-beam-release/#configuring-a-go-build-to-validate-a-beam-release-candidate).
+
+Versioned SDK worker containers are now built and [published](https://hub.docker.com/r/apache/beam_go_sdk/tags?page=1&ordering=last_updated), with the SDK using matched tagged versions.
+For released versions, user jobs no longer need to specify a container to use, except when using custom containers.
+
+## Compatibility
+
+The Go SDK will largely follow suit with the Go notion of compatibility.
+Some concessions are made to keep all SDKs together on the same release cycle.
+
+### Language Compatibility
+
+The SDK will be tested at a minimum [Go Programming Language version of 1.16](https://golang.org/doc/devel/release), and use available language features and standard library packages accordingly.
+To maintain a broad compatibility, the Go SDK will not require the latest major version of Go.
+We expect to follow the 2nd newest supported release of the language, with a possible exception when Go 1.18 is released, in order to begin experimenting with [Go Generics](https://go.dev/blog/generics-proposal) in the SDK.
+Release notes will call out when the minimum version of the language changes.
+
+### Package Compatibility
+
+The primary user packages will avoid changing in backwards incompatible ways for core features.
+This is to be inline with Go's notion of the [`import compatibility rule`](https://research.swtch.com/vgo-import).
+
+> If an old package and a new package have the same import path,
+> the new package must be backwards compatible with the old package.
+
+Exceptions to this policy are around newer, experimental, or in development features.
+These are subject to change.

Review comment:
       ```suggestion
   Exceptions to this policy are around newer, experimental, or in development features and are subject to change.
   ```

##########
File path: website/www/site/content/en/blog/go-sdk-release.md
##########
@@ -0,0 +1,163 @@
+---
+title:  "Go SDK Exits Experimental in Apache Beam 2.33.0"
+date:   2021-11-04 00:00:01 -0800
+categories:
+  - blog
+authors:
+  - lostluck
+---
+<!--
+Licensed 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.
+-->
+
+Apache Beam’s latest release, version [2.33.0](/get-started/downloads/), is the first official release of the long experimental Go SDK.
+Built with the [Go Programming Language](https://golang.org/), the Go SDK joins the Java and Python SDKs as the third implementation of the Beam programming model.
+
+<!--more-->
+
+## Using the new Go SDK.
+
+New users of the Go SDK can start using it in their Go programs by importing the main beam package:
+
+```
+import "github.com/apache/beam/sdks/v2/go/pkg/beam"
+```
+
+The next run of `go mod tidy` will fetch the latest stable version of the module.
+Alternatively executing `go get github.com/apache/beam/sdks/v2/go/pkg/beam` will download it to the local module cache immeadiately, and add it to your `go.mod` file.
+
+Existing users of the experimental Go SDK need to update to new `v2` import paths to start using the latest versions of the SDK.
+This is can be done by adding `v2` to the import paths, changing `github.com/apache/beam/sdks/go/`... to `github.com/apache/beam/sdks/v2/go/`... where applicable, and then running `go mod tidy`.
+
+Further documentation on using the SDK is available in the [Beam Programming Guide](/documentation/programming-guide/), and in the package Go Doc at https://pkg.go.dev/github.com/apache/beam/sdks/v2/go/pkg/beam.
+
+## Feature Support
+
+At time of writing, the Go SDK is currently "Batteries Not Included".
+This means that there are gaps or edge cases in supported IOs and transforms.
+That said, the core of the SDK enables a great deal of the Beam Model for
+custom user use, supporting following features:
+
+* PTransforms
+  * Impulse
+  * Create
+  * ParDo w/User DoFns
+    * Iterable Side Inputs
+    * Multiple Output emitters
+    * Receive and Return Key Value pairs
+    * EventTime
+    * SplittableDoFns
+  * GroupByKey and CoGroupByKey
+  * CombineFns for use with Combine and CombinePerKey
+  * Windowing
+    * Global, Fixed intervals, Sliding windows, and Session
+    * Aggregating over windowed PCollections w/GBKs or Combines.
+  * Flatten
+  * Partition
+  * Composites
+  * Cross Language Transforms
+* Coders
+  * Primitive Go types (ints, string, []bytes, and more)
+  * Beam Schemas for Go Struct types (including struct, slice, and map fields)
+  * Registering custom coders
+* Metrics
+  * PCollection metrics (ElementCount, Size Estimates)
+  * Custom User Metrics
+  * Post job user metrics querying (coming in 2.34.0)
+  * DoFn profiling metrics (coming in 2.35.0)
+* Provided Built Transforms
+  * Sum, Count, Min, Max, Top, Filter
+  * Scalable TextIO Reading
+
+Upcoming features support roadmap, and known issues are discussed below.
+In particular, we plan to support a much richer set of IO connectors via Beam's cross-language capabilities.
+
+## Releases
+
+With this release, the Go SDK now uses [Go Modules](https://golang.org/ref/mod) for dependency management.
+This makes it so users, SDK Devs, and the testing infrastructure can all rely on the same versions of dependencies, making builds reproducible.
+This also makes [validating Go SDK Release Candidates simple](/blog/validate-beam-release/#configuring-a-go-build-to-validate-a-beam-release-candidate).
+
+Versioned SDK worker containers are now built and [published](https://hub.docker.com/r/apache/beam_go_sdk/tags?page=1&ordering=last_updated), with the SDK using matched tagged versions.
+For released versions, user jobs no longer need to specify a container to use, except when using custom containers.
+
+## Compatibility
+
+The Go SDK will largely follow suit with the Go notion of compatibility.
+Some concessions are made to keep all SDKs together on the same release cycle.
+
+### Language Compatibility
+
+The SDK will be tested at a minimum [Go Programming Language version of 1.16](https://golang.org/doc/devel/release), and use available language features and standard library packages accordingly.
+To maintain a broad compatibility, the Go SDK will not require the latest major version of Go.
+We expect to follow the 2nd newest supported release of the language, with a possible exception when Go 1.18 is released, in order to begin experimenting with [Go Generics](https://go.dev/blog/generics-proposal) in the SDK.
+Release notes will call out when the minimum version of the language changes.
+
+### Package Compatibility
+
+The primary user packages will avoid changing in backwards incompatible ways for core features.
+This is to be inline with Go's notion of the [`import compatibility rule`](https://research.swtch.com/vgo-import).
+
+> If an old package and a new package have the same import path,
+> the new package must be backwards compatible with the old package.
+
+Exceptions to this policy are around newer, experimental, or in development features.
+These are subject to change.
+Such features will have a doc comment noting the experimental status, or be mentioned the change notes for a release.
+For example, using `beam.WindowInto` with Triggers is currently experimental and may have the api changed in a future release.
+
+Primary user packages include:
+* The main beam package `github.com/apache/beam/sdks/v2/go/pkg/beam`
+* Sub packages under `.../transforms`, `.../io`, `.../runners`, and `.../testing`.
+
+Generally, packages in the module other than the primary user packages are for framework use.
+They are at risk of changing, though at this point, large breaking changes are unlikely.
+
+### Known Issues
+
+#### Batteries not included.
+* Current native transforms are undertested.
+* IOs may not be written to scale.
+* Go Direct Runner is incomplete and is not portable, prefer using the Python Portable runner, or Flink.
+  * Doesn't support side input windowing. [BEAM-13075](https://issues.apache.org/jira/browse/BEAM-13075)
+  * Doesn't serialize data, making it unlikely to catch coder issues [BEAM-6372](https://issues.apache.org/jira/browse/BEAM-6372)
+  * Can use other general improvements, and become portable [BEAM-11076](https://issues.apache.org/jira/browse/BEAM-11076)
+* Current Trigger API is under iteration and subject to change [BEAM-3304](https://issues.apache.org/jira/browse/BEAM-3304).
+  * API has a possible breaking change between 2.33.0 and 2.34.0, and may change again.
+* Support of the SDK on services, like Google Cloud Dataflow, remains at the service owner's discretion.
+* Need something?
+  * File a ticket in the [Beam JIRA](https://issues.apache.org/jira/issues/?jql=project%20%3D%20BEAM%20AND%20component%20%3D%20sdk-go) and,
+  * Email the dev@beam.apache.org list!
+
+#### Fixed in 2.34.0
+  * `top.SmallestPerKey` was broken [BEAM-12946](https://issues.apache.org/jira/browse/BEAM-12946)
+  * `beam.TryCrossLanguage` API didn't match non-Try version [BEAM-9918](https://issues.apache.org/jira/browse/BEAM-9918)
+    * This is a breaking change if one was calling `beam.TryCrossLanguage`
+
+#### Fixed in 2.35.0
+  * Non-Global Window Side Inputs don't match (correctness bug) [BEAM-11087](https://issues.apache.org/jira/browse/BEAM-11087)
+    * Until 2.35.0 it's not recommended to use SideInputs that are not using the Global Window.
+  * Side Inputs using DoFns accumulate memory over bundles, causing OOMs [BEAM-13130](https://issues.apache.org/jira/browse/BEAM-13130)

Review comment:
       ```suggestion
     * DoFns using Side Inputs accumulate memory over bundles, causing OOMs [BEAM-13130](https://issues.apache.org/jira/browse/BEAM-13130)
   ```

##########
File path: website/www/site/content/en/blog/go-sdk-release.md
##########
@@ -0,0 +1,163 @@
+---
+title:  "Go SDK Exits Experimental in Apache Beam 2.33.0"
+date:   2021-11-04 00:00:01 -0800
+categories:
+  - blog
+authors:
+  - lostluck
+---
+<!--
+Licensed 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.
+-->
+
+Apache Beam’s latest release, version [2.33.0](/get-started/downloads/), is the first official release of the long experimental Go SDK.
+Built with the [Go Programming Language](https://golang.org/), the Go SDK joins the Java and Python SDKs as the third implementation of the Beam programming model.
+
+<!--more-->
+
+## Using the new Go SDK.
+
+New users of the Go SDK can start using it in their Go programs by importing the main beam package:
+
+```
+import "github.com/apache/beam/sdks/v2/go/pkg/beam"
+```
+
+The next run of `go mod tidy` will fetch the latest stable version of the module.
+Alternatively executing `go get github.com/apache/beam/sdks/v2/go/pkg/beam` will download it to the local module cache immeadiately, and add it to your `go.mod` file.
+
+Existing users of the experimental Go SDK need to update to new `v2` import paths to start using the latest versions of the SDK.
+This is can be done by adding `v2` to the import paths, changing `github.com/apache/beam/sdks/go/`... to `github.com/apache/beam/sdks/v2/go/`... where applicable, and then running `go mod tidy`.
+
+Further documentation on using the SDK is available in the [Beam Programming Guide](/documentation/programming-guide/), and in the package Go Doc at https://pkg.go.dev/github.com/apache/beam/sdks/v2/go/pkg/beam.
+
+## Feature Support
+
+At time of writing, the Go SDK is currently "Batteries Not Included".
+This means that there are gaps or edge cases in supported IOs and transforms.
+That said, the core of the SDK enables a great deal of the Beam Model for
+custom user use, supporting following features:
+
+* PTransforms
+  * Impulse
+  * Create
+  * ParDo w/User DoFns
+    * Iterable Side Inputs
+    * Multiple Output emitters
+    * Receive and Return Key Value pairs
+    * EventTime
+    * SplittableDoFns
+  * GroupByKey and CoGroupByKey
+  * CombineFns for use with Combine and CombinePerKey
+  * Windowing
+    * Global, Fixed intervals, Sliding windows, and Session
+    * Aggregating over windowed PCollections w/GBKs or Combines.

Review comment:
       ```suggestion
       * Aggregating over windowed PCollections with GroupByKeys or Combines.
   ```

##########
File path: website/www/site/content/en/blog/go-sdk-release.md
##########
@@ -0,0 +1,163 @@
+---
+title:  "Go SDK Exits Experimental in Apache Beam 2.33.0"
+date:   2021-11-04 00:00:01 -0800
+categories:
+  - blog
+authors:
+  - lostluck
+---
+<!--
+Licensed 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.
+-->
+
+Apache Beam’s latest release, version [2.33.0](/get-started/downloads/), is the first official release of the long experimental Go SDK.
+Built with the [Go Programming Language](https://golang.org/), the Go SDK joins the Java and Python SDKs as the third implementation of the Beam programming model.
+
+<!--more-->
+
+## Using the new Go SDK.
+
+New users of the Go SDK can start using it in their Go programs by importing the main beam package:
+
+```
+import "github.com/apache/beam/sdks/v2/go/pkg/beam"
+```
+
+The next run of `go mod tidy` will fetch the latest stable version of the module.
+Alternatively executing `go get github.com/apache/beam/sdks/v2/go/pkg/beam` will download it to the local module cache immeadiately, and add it to your `go.mod` file.
+
+Existing users of the experimental Go SDK need to update to new `v2` import paths to start using the latest versions of the SDK.
+This is can be done by adding `v2` to the import paths, changing `github.com/apache/beam/sdks/go/`... to `github.com/apache/beam/sdks/v2/go/`... where applicable, and then running `go mod tidy`.
+
+Further documentation on using the SDK is available in the [Beam Programming Guide](/documentation/programming-guide/), and in the package Go Doc at https://pkg.go.dev/github.com/apache/beam/sdks/v2/go/pkg/beam.
+
+## Feature Support
+
+At time of writing, the Go SDK is currently "Batteries Not Included".
+This means that there are gaps or edge cases in supported IOs and transforms.
+That said, the core of the SDK enables a great deal of the Beam Model for
+custom user use, supporting following features:
+
+* PTransforms
+  * Impulse
+  * Create
+  * ParDo w/User DoFns
+    * Iterable Side Inputs
+    * Multiple Output emitters
+    * Receive and Return Key Value pairs
+    * EventTime
+    * SplittableDoFns
+  * GroupByKey and CoGroupByKey
+  * CombineFns for use with Combine and CombinePerKey
+  * Windowing
+    * Global, Fixed intervals, Sliding windows, and Session
+    * Aggregating over windowed PCollections w/GBKs or Combines.
+  * Flatten
+  * Partition
+  * Composites
+  * Cross Language Transforms
+* Coders
+  * Primitive Go types (ints, string, []bytes, and more)
+  * Beam Schemas for Go Struct types (including struct, slice, and map fields)
+  * Registering custom coders
+* Metrics
+  * PCollection metrics (ElementCount, Size Estimates)
+  * Custom User Metrics
+  * Post job user metrics querying (coming in 2.34.0)
+  * DoFn profiling metrics (coming in 2.35.0)
+* Provided Built Transforms
+  * Sum, Count, Min, Max, Top, Filter
+  * Scalable TextIO Reading
+
+Upcoming features support roadmap, and known issues are discussed below.
+In particular, we plan to support a much richer set of IO connectors via Beam's cross-language capabilities.
+
+## Releases
+
+With this release, the Go SDK now uses [Go Modules](https://golang.org/ref/mod) for dependency management.
+This makes it so users, SDK Devs, and the testing infrastructure can all rely on the same versions of dependencies, making builds reproducible.

Review comment:
       ```suggestion
   This makes it so users, SDK authors, and the testing infrastructure can all rely on the same versions of dependencies, making builds reproducible.
   ```

##########
File path: website/www/site/content/en/blog/go-sdk-release.md
##########
@@ -0,0 +1,163 @@
+---
+title:  "Go SDK Exits Experimental in Apache Beam 2.33.0"
+date:   2021-11-04 00:00:01 -0800
+categories:
+  - blog
+authors:
+  - lostluck
+---
+<!--
+Licensed 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.
+-->
+
+Apache Beam’s latest release, version [2.33.0](/get-started/downloads/), is the first official release of the long experimental Go SDK.
+Built with the [Go Programming Language](https://golang.org/), the Go SDK joins the Java and Python SDKs as the third implementation of the Beam programming model.
+
+<!--more-->
+
+## Using the new Go SDK.
+
+New users of the Go SDK can start using it in their Go programs by importing the main beam package:
+
+```
+import "github.com/apache/beam/sdks/v2/go/pkg/beam"
+```
+
+The next run of `go mod tidy` will fetch the latest stable version of the module.
+Alternatively executing `go get github.com/apache/beam/sdks/v2/go/pkg/beam` will download it to the local module cache immeadiately, and add it to your `go.mod` file.
+
+Existing users of the experimental Go SDK need to update to new `v2` import paths to start using the latest versions of the SDK.
+This is can be done by adding `v2` to the import paths, changing `github.com/apache/beam/sdks/go/`... to `github.com/apache/beam/sdks/v2/go/`... where applicable, and then running `go mod tidy`.
+
+Further documentation on using the SDK is available in the [Beam Programming Guide](/documentation/programming-guide/), and in the package Go Doc at https://pkg.go.dev/github.com/apache/beam/sdks/v2/go/pkg/beam.
+
+## Feature Support
+
+At time of writing, the Go SDK is currently "Batteries Not Included".
+This means that there are gaps or edge cases in supported IOs and transforms.
+That said, the core of the SDK enables a great deal of the Beam Model for
+custom user use, supporting following features:
+
+* PTransforms
+  * Impulse
+  * Create
+  * ParDo w/User DoFns
+    * Iterable Side Inputs
+    * Multiple Output emitters
+    * Receive and Return Key Value pairs
+    * EventTime
+    * SplittableDoFns
+  * GroupByKey and CoGroupByKey
+  * CombineFns for use with Combine and CombinePerKey
+  * Windowing
+    * Global, Fixed intervals, Sliding windows, and Session
+    * Aggregating over windowed PCollections w/GBKs or Combines.
+  * Flatten
+  * Partition
+  * Composites
+  * Cross Language Transforms
+* Coders
+  * Primitive Go types (ints, string, []bytes, and more)
+  * Beam Schemas for Go Struct types (including struct, slice, and map fields)
+  * Registering custom coders
+* Metrics
+  * PCollection metrics (ElementCount, Size Estimates)
+  * Custom User Metrics
+  * Post job user metrics querying (coming in 2.34.0)
+  * DoFn profiling metrics (coming in 2.35.0)
+* Provided Built Transforms
+  * Sum, Count, Min, Max, Top, Filter
+  * Scalable TextIO Reading
+
+Upcoming features support roadmap, and known issues are discussed below.
+In particular, we plan to support a much richer set of IO connectors via Beam's cross-language capabilities.
+
+## Releases
+
+With this release, the Go SDK now uses [Go Modules](https://golang.org/ref/mod) for dependency management.
+This makes it so users, SDK Devs, and the testing infrastructure can all rely on the same versions of dependencies, making builds reproducible.
+This also makes [validating Go SDK Release Candidates simple](/blog/validate-beam-release/#configuring-a-go-build-to-validate-a-beam-release-candidate).
+
+Versioned SDK worker containers are now built and [published](https://hub.docker.com/r/apache/beam_go_sdk/tags?page=1&ordering=last_updated), with the SDK using matched tagged versions.
+For released versions, user jobs no longer need to specify a container to use, except when using custom containers.

Review comment:
       ```suggestion
   User jobs no longer need to specify a container to use for released versions, except when using custom containers.
   ```

##########
File path: website/www/site/content/en/blog/go-sdk-release.md
##########
@@ -0,0 +1,163 @@
+---
+title:  "Go SDK Exits Experimental in Apache Beam 2.33.0"
+date:   2021-11-04 00:00:01 -0800
+categories:
+  - blog
+authors:
+  - lostluck
+---
+<!--
+Licensed 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.
+-->
+
+Apache Beam’s latest release, version [2.33.0](/get-started/downloads/), is the first official release of the long experimental Go SDK.
+Built with the [Go Programming Language](https://golang.org/), the Go SDK joins the Java and Python SDKs as the third implementation of the Beam programming model.
+
+<!--more-->
+
+## Using the new Go SDK.
+
+New users of the Go SDK can start using it in their Go programs by importing the main beam package:
+
+```
+import "github.com/apache/beam/sdks/v2/go/pkg/beam"
+```
+
+The next run of `go mod tidy` will fetch the latest stable version of the module.
+Alternatively executing `go get github.com/apache/beam/sdks/v2/go/pkg/beam` will download it to the local module cache immeadiately, and add it to your `go.mod` file.
+
+Existing users of the experimental Go SDK need to update to new `v2` import paths to start using the latest versions of the SDK.
+This is can be done by adding `v2` to the import paths, changing `github.com/apache/beam/sdks/go/`... to `github.com/apache/beam/sdks/v2/go/`... where applicable, and then running `go mod tidy`.
+
+Further documentation on using the SDK is available in the [Beam Programming Guide](/documentation/programming-guide/), and in the package Go Doc at https://pkg.go.dev/github.com/apache/beam/sdks/v2/go/pkg/beam.
+
+## Feature Support
+
+At time of writing, the Go SDK is currently "Batteries Not Included".
+This means that there are gaps or edge cases in supported IOs and transforms.
+That said, the core of the SDK enables a great deal of the Beam Model for
+custom user use, supporting following features:
+
+* PTransforms
+  * Impulse
+  * Create
+  * ParDo w/User DoFns
+    * Iterable Side Inputs
+    * Multiple Output emitters
+    * Receive and Return Key Value pairs
+    * EventTime
+    * SplittableDoFns
+  * GroupByKey and CoGroupByKey
+  * CombineFns for use with Combine and CombinePerKey
+  * Windowing
+    * Global, Fixed intervals, Sliding windows, and Session
+    * Aggregating over windowed PCollections w/GBKs or Combines.
+  * Flatten
+  * Partition
+  * Composites
+  * Cross Language Transforms
+* Coders
+  * Primitive Go types (ints, string, []bytes, and more)
+  * Beam Schemas for Go Struct types (including struct, slice, and map fields)
+  * Registering custom coders
+* Metrics
+  * PCollection metrics (ElementCount, Size Estimates)
+  * Custom User Metrics
+  * Post job user metrics querying (coming in 2.34.0)
+  * DoFn profiling metrics (coming in 2.35.0)
+* Provided Built Transforms
+  * Sum, Count, Min, Max, Top, Filter
+  * Scalable TextIO Reading
+
+Upcoming features support roadmap, and known issues are discussed below.
+In particular, we plan to support a much richer set of IO connectors via Beam's cross-language capabilities.
+
+## Releases
+
+With this release, the Go SDK now uses [Go Modules](https://golang.org/ref/mod) for dependency management.
+This makes it so users, SDK Devs, and the testing infrastructure can all rely on the same versions of dependencies, making builds reproducible.
+This also makes [validating Go SDK Release Candidates simple](/blog/validate-beam-release/#configuring-a-go-build-to-validate-a-beam-release-candidate).
+
+Versioned SDK worker containers are now built and [published](https://hub.docker.com/r/apache/beam_go_sdk/tags?page=1&ordering=last_updated), with the SDK using matched tagged versions.
+For released versions, user jobs no longer need to specify a container to use, except when using custom containers.
+
+## Compatibility
+
+The Go SDK will largely follow suit with the Go notion of compatibility.
+Some concessions are made to keep all SDKs together on the same release cycle.
+
+### Language Compatibility
+
+The SDK will be tested at a minimum [Go Programming Language version of 1.16](https://golang.org/doc/devel/release), and use available language features and standard library packages accordingly.
+To maintain a broad compatibility, the Go SDK will not require the latest major version of Go.
+We expect to follow the 2nd newest supported release of the language, with a possible exception when Go 1.18 is released, in order to begin experimenting with [Go Generics](https://go.dev/blog/generics-proposal) in the SDK.
+Release notes will call out when the minimum version of the language changes.
+
+### Package Compatibility
+
+The primary user packages will avoid changing in backwards incompatible ways for core features.
+This is to be inline with Go's notion of the [`import compatibility rule`](https://research.swtch.com/vgo-import).
+
+> If an old package and a new package have the same import path,
+> the new package must be backwards compatible with the old package.
+
+Exceptions to this policy are around newer, experimental, or in development features.
+These are subject to change.
+Such features will have a doc comment noting the experimental status, or be mentioned the change notes for a release.
+For example, using `beam.WindowInto` with Triggers is currently experimental and may have the api changed in a future release.
+
+Primary user packages include:
+* The main beam package `github.com/apache/beam/sdks/v2/go/pkg/beam`
+* Sub packages under `.../transforms`, `.../io`, `.../runners`, and `.../testing`.
+
+Generally, packages in the module other than the primary user packages are for framework use.
+They are at risk of changing, though at this point, large breaking changes are unlikely.

Review comment:
       ```suggestion
   Generally, packages in the module other than the primary user packages are for framework use and are at risk of changing.
   ```




-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: github-unsubscribe@beam.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



[GitHub] [beam] lukecwik commented on a change in pull request #15894: [Go SDK] Go SDK Exits Experimental

Posted by GitBox <gi...@apache.org>.
lukecwik commented on a change in pull request #15894:
URL: https://github.com/apache/beam/pull/15894#discussion_r743825565



##########
File path: website/www/site/content/en/blog/go-sdk-release.md
##########
@@ -0,0 +1,163 @@
+---
+title:  "Go SDK Exits Experimental in Apache Beam 2.33.0"
+date:   2021-11-04 00:00:01 -0800
+categories:
+  - blog
+authors:
+  - lostluck
+---
+<!--
+Licensed 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.
+-->
+
+Apache Beam’s latest release, version [2.33.0](/get-started/downloads/), is the first official release of the long experimental Go SDK.
+Built with the [Go Programming Language](https://golang.org/), the Go SDK joins the Java and Python SDKs as the third implementation of the Beam programming model.
+
+<!--more-->
+
+## Using the new Go SDK.
+
+New users of the Go SDK can start using it in their Go programs by importing the main beam package:
+
+```
+import "github.com/apache/beam/sdks/v2/go/pkg/beam"
+```
+
+The next run of `go mod tidy` will fetch the latest stable version of the module.
+Alternatively executing `go get github.com/apache/beam/sdks/v2/go/pkg/beam` will download it to the local module cache immeadiately, and add it to your `go.mod` file.
+
+Existing users of the experimental Go SDK need to update to new `v2` import paths to start using the latest versions of the SDK.
+This is can be done by adding `v2` to the import paths, changing `github.com/apache/beam/sdks/go/`... to `github.com/apache/beam/sdks/v2/go/`... where applicable, and then running `go mod tidy`.
+
+Further documentation on using the SDK is available in the [Beam Programming Guide](/documentation/programming-guide/), and in the package Go Doc at https://pkg.go.dev/github.com/apache/beam/sdks/v2/go/pkg/beam.

Review comment:
       ```suggestion
   Further documentation on using the SDK is available in the [Beam Programming Guide](/documentation/programming-guide/), and in the package [Go Doc](https://pkg.go.dev/github.com/apache/beam/sdks/v2/go/pkg/beam).
   ```

##########
File path: website/www/site/content/en/blog/go-sdk-release.md
##########
@@ -0,0 +1,163 @@
+---
+title:  "Go SDK Exits Experimental in Apache Beam 2.33.0"
+date:   2021-11-04 00:00:01 -0800
+categories:
+  - blog
+authors:
+  - lostluck
+---
+<!--
+Licensed 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.
+-->
+
+Apache Beam’s latest release, version [2.33.0](/get-started/downloads/), is the first official release of the long experimental Go SDK.
+Built with the [Go Programming Language](https://golang.org/), the Go SDK joins the Java and Python SDKs as the third implementation of the Beam programming model.
+
+<!--more-->
+
+## Using the new Go SDK.
+
+New users of the Go SDK can start using it in their Go programs by importing the main beam package:
+
+```
+import "github.com/apache/beam/sdks/v2/go/pkg/beam"
+```
+
+The next run of `go mod tidy` will fetch the latest stable version of the module.
+Alternatively executing `go get github.com/apache/beam/sdks/v2/go/pkg/beam` will download it to the local module cache immeadiately, and add it to your `go.mod` file.
+
+Existing users of the experimental Go SDK need to update to new `v2` import paths to start using the latest versions of the SDK.
+This is can be done by adding `v2` to the import paths, changing `github.com/apache/beam/sdks/go/`... to `github.com/apache/beam/sdks/v2/go/`... where applicable, and then running `go mod tidy`.
+
+Further documentation on using the SDK is available in the [Beam Programming Guide](/documentation/programming-guide/), and in the package Go Doc at https://pkg.go.dev/github.com/apache/beam/sdks/v2/go/pkg/beam.
+
+## Feature Support
+
+At time of writing, the Go SDK is currently "Batteries Not Included".
+This means that there are gaps or edge cases in supported IOs and transforms.
+That said, the core of the SDK enables a great deal of the Beam Model for
+custom user use, supporting following features:
+
+* PTransforms
+  * Impulse
+  * Create
+  * ParDo w/User DoFns
+    * Iterable Side Inputs
+    * Multiple Output emitters
+    * Receive and Return Key Value pairs
+    * EventTime
+    * SplittableDoFns
+  * GroupByKey and CoGroupByKey
+  * CombineFns for use with Combine and CombinePerKey
+  * Windowing
+    * Global, Fixed intervals, Sliding windows, and Session

Review comment:
       ```suggestion
       * Global, Fixed Intervals, Sliding, and Session windows
   ```

##########
File path: website/www/site/content/en/blog/go-sdk-release.md
##########
@@ -0,0 +1,163 @@
+---
+title:  "Go SDK Exits Experimental in Apache Beam 2.33.0"
+date:   2021-11-04 00:00:01 -0800
+categories:
+  - blog
+authors:
+  - lostluck
+---
+<!--
+Licensed 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.
+-->
+
+Apache Beam’s latest release, version [2.33.0](/get-started/downloads/), is the first official release of the long experimental Go SDK.
+Built with the [Go Programming Language](https://golang.org/), the Go SDK joins the Java and Python SDKs as the third implementation of the Beam programming model.
+
+<!--more-->
+
+## Using the new Go SDK.
+
+New users of the Go SDK can start using it in their Go programs by importing the main beam package:
+
+```
+import "github.com/apache/beam/sdks/v2/go/pkg/beam"
+```
+
+The next run of `go mod tidy` will fetch the latest stable version of the module.
+Alternatively executing `go get github.com/apache/beam/sdks/v2/go/pkg/beam` will download it to the local module cache immeadiately, and add it to your `go.mod` file.
+
+Existing users of the experimental Go SDK need to update to new `v2` import paths to start using the latest versions of the SDK.
+This is can be done by adding `v2` to the import paths, changing `github.com/apache/beam/sdks/go/`... to `github.com/apache/beam/sdks/v2/go/`... where applicable, and then running `go mod tidy`.
+
+Further documentation on using the SDK is available in the [Beam Programming Guide](/documentation/programming-guide/), and in the package Go Doc at https://pkg.go.dev/github.com/apache/beam/sdks/v2/go/pkg/beam.
+
+## Feature Support
+
+At time of writing, the Go SDK is currently "Batteries Not Included".
+This means that there are gaps or edge cases in supported IOs and transforms.
+That said, the core of the SDK enables a great deal of the Beam Model for
+custom user use, supporting following features:
+
+* PTransforms
+  * Impulse
+  * Create
+  * ParDo w/User DoFns
+    * Iterable Side Inputs
+    * Multiple Output emitters
+    * Receive and Return Key Value pairs
+    * EventTime
+    * SplittableDoFns
+  * GroupByKey and CoGroupByKey
+  * CombineFns for use with Combine and CombinePerKey
+  * Windowing
+    * Global, Fixed intervals, Sliding windows, and Session
+    * Aggregating over windowed PCollections w/GBKs or Combines.
+  * Flatten
+  * Partition
+  * Composites
+  * Cross Language Transforms
+* Coders
+  * Primitive Go types (ints, string, []bytes, and more)
+  * Beam Schemas for Go Struct types (including struct, slice, and map fields)
+  * Registering custom coders
+* Metrics
+  * PCollection metrics (ElementCount, Size Estimates)
+  * Custom User Metrics
+  * Post job user metrics querying (coming in 2.34.0)
+  * DoFn profiling metrics (coming in 2.35.0)
+* Provided Built Transforms
+  * Sum, Count, Min, Max, Top, Filter
+  * Scalable TextIO Reading
+
+Upcoming features support roadmap, and known issues are discussed below.
+In particular, we plan to support a much richer set of IO connectors via Beam's cross-language capabilities.
+
+## Releases
+
+With this release, the Go SDK now uses [Go Modules](https://golang.org/ref/mod) for dependency management.
+This makes it so users, SDK Devs, and the testing infrastructure can all rely on the same versions of dependencies, making builds reproducible.
+This also makes [validating Go SDK Release Candidates simple](/blog/validate-beam-release/#configuring-a-go-build-to-validate-a-beam-release-candidate).
+
+Versioned SDK worker containers are now built and [published](https://hub.docker.com/r/apache/beam_go_sdk/tags?page=1&ordering=last_updated), with the SDK using matched tagged versions.
+For released versions, user jobs no longer need to specify a container to use, except when using custom containers.
+
+## Compatibility
+
+The Go SDK will largely follow suit with the Go notion of compatibility.
+Some concessions are made to keep all SDKs together on the same release cycle.
+
+### Language Compatibility
+
+The SDK will be tested at a minimum [Go Programming Language version of 1.16](https://golang.org/doc/devel/release), and use available language features and standard library packages accordingly.
+To maintain a broad compatibility, the Go SDK will not require the latest major version of Go.
+We expect to follow the 2nd newest supported release of the language, with a possible exception when Go 1.18 is released, in order to begin experimenting with [Go Generics](https://go.dev/blog/generics-proposal) in the SDK.
+Release notes will call out when the minimum version of the language changes.
+
+### Package Compatibility
+
+The primary user packages will avoid changing in backwards incompatible ways for core features.
+This is to be inline with Go's notion of the [`import compatibility rule`](https://research.swtch.com/vgo-import).
+
+> If an old package and a new package have the same import path,
+> the new package must be backwards compatible with the old package.
+
+Exceptions to this policy are around newer, experimental, or in development features.
+These are subject to change.
+Such features will have a doc comment noting the experimental status, or be mentioned the change notes for a release.
+For example, using `beam.WindowInto` with Triggers is currently experimental and may have the api changed in a future release.
+
+Primary user packages include:
+* The main beam package `github.com/apache/beam/sdks/v2/go/pkg/beam`
+* Sub packages under `.../transforms`, `.../io`, `.../runners`, and `.../testing`.
+
+Generally, packages in the module other than the primary user packages are for framework use.
+They are at risk of changing, though at this point, large breaking changes are unlikely.
+
+### Known Issues
+
+#### Batteries not included.
+* Current native transforms are undertested.
+* IOs may not be written to scale.
+* Go Direct Runner is incomplete and is not portable, prefer using the Python Portable runner, or Flink.
+  * Doesn't support side input windowing. [BEAM-13075](https://issues.apache.org/jira/browse/BEAM-13075)
+  * Doesn't serialize data, making it unlikely to catch coder issues [BEAM-6372](https://issues.apache.org/jira/browse/BEAM-6372)
+  * Can use other general improvements, and become portable [BEAM-11076](https://issues.apache.org/jira/browse/BEAM-11076)
+* Current Trigger API is under iteration and subject to change [BEAM-3304](https://issues.apache.org/jira/browse/BEAM-3304).
+  * API has a possible breaking change between 2.33.0 and 2.34.0, and may change again.
+* Support of the SDK on services, like Google Cloud Dataflow, remains at the service owner's discretion.
+* Need something?
+  * File a ticket in the [Beam JIRA](https://issues.apache.org/jira/issues/?jql=project%20%3D%20BEAM%20AND%20component%20%3D%20sdk-go) and,
+  * Email the dev@beam.apache.org list!

Review comment:
       Can you make the e-mail address a mail link?

##########
File path: website/www/site/content/en/blog/go-sdk-release.md
##########
@@ -0,0 +1,163 @@
+---
+title:  "Go SDK Exits Experimental in Apache Beam 2.33.0"
+date:   2021-11-04 00:00:01 -0800
+categories:
+  - blog
+authors:
+  - lostluck
+---
+<!--
+Licensed 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.
+-->
+
+Apache Beam’s latest release, version [2.33.0](/get-started/downloads/), is the first official release of the long experimental Go SDK.
+Built with the [Go Programming Language](https://golang.org/), the Go SDK joins the Java and Python SDKs as the third implementation of the Beam programming model.
+
+<!--more-->
+
+## Using the new Go SDK.
+
+New users of the Go SDK can start using it in their Go programs by importing the main beam package:
+
+```
+import "github.com/apache/beam/sdks/v2/go/pkg/beam"
+```
+
+The next run of `go mod tidy` will fetch the latest stable version of the module.
+Alternatively executing `go get github.com/apache/beam/sdks/v2/go/pkg/beam` will download it to the local module cache immeadiately, and add it to your `go.mod` file.
+
+Existing users of the experimental Go SDK need to update to new `v2` import paths to start using the latest versions of the SDK.
+This is can be done by adding `v2` to the import paths, changing `github.com/apache/beam/sdks/go/`... to `github.com/apache/beam/sdks/v2/go/`... where applicable, and then running `go mod tidy`.
+
+Further documentation on using the SDK is available in the [Beam Programming Guide](/documentation/programming-guide/), and in the package Go Doc at https://pkg.go.dev/github.com/apache/beam/sdks/v2/go/pkg/beam.
+
+## Feature Support
+
+At time of writing, the Go SDK is currently "Batteries Not Included".
+This means that there are gaps or edge cases in supported IOs and transforms.
+That said, the core of the SDK enables a great deal of the Beam Model for
+custom user use, supporting following features:
+
+* PTransforms
+  * Impulse
+  * Create
+  * ParDo w/User DoFns
+    * Iterable Side Inputs
+    * Multiple Output emitters
+    * Receive and Return Key Value pairs
+    * EventTime

Review comment:
       Is there something special about event time being listed under ParDo or would this make more sense under Windowing?

##########
File path: website/www/site/content/en/blog/go-sdk-release.md
##########
@@ -0,0 +1,163 @@
+---
+title:  "Go SDK Exits Experimental in Apache Beam 2.33.0"
+date:   2021-11-04 00:00:01 -0800
+categories:
+  - blog
+authors:
+  - lostluck
+---
+<!--
+Licensed 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.
+-->
+
+Apache Beam’s latest release, version [2.33.0](/get-started/downloads/), is the first official release of the long experimental Go SDK.
+Built with the [Go Programming Language](https://golang.org/), the Go SDK joins the Java and Python SDKs as the third implementation of the Beam programming model.
+
+<!--more-->
+
+## Using the new Go SDK.
+
+New users of the Go SDK can start using it in their Go programs by importing the main beam package:
+
+```
+import "github.com/apache/beam/sdks/v2/go/pkg/beam"
+```
+
+The next run of `go mod tidy` will fetch the latest stable version of the module.
+Alternatively executing `go get github.com/apache/beam/sdks/v2/go/pkg/beam` will download it to the local module cache immeadiately, and add it to your `go.mod` file.
+
+Existing users of the experimental Go SDK need to update to new `v2` import paths to start using the latest versions of the SDK.
+This is can be done by adding `v2` to the import paths, changing `github.com/apache/beam/sdks/go/`... to `github.com/apache/beam/sdks/v2/go/`... where applicable, and then running `go mod tidy`.
+
+Further documentation on using the SDK is available in the [Beam Programming Guide](/documentation/programming-guide/), and in the package Go Doc at https://pkg.go.dev/github.com/apache/beam/sdks/v2/go/pkg/beam.
+
+## Feature Support
+
+At time of writing, the Go SDK is currently "Batteries Not Included".
+This means that there are gaps or edge cases in supported IOs and transforms.
+That said, the core of the SDK enables a great deal of the Beam Model for
+custom user use, supporting following features:
+
+* PTransforms
+  * Impulse
+  * Create
+  * ParDo w/User DoFns
+    * Iterable Side Inputs
+    * Multiple Output emitters
+    * Receive and Return Key Value pairs
+    * EventTime
+    * SplittableDoFns
+  * GroupByKey and CoGroupByKey
+  * CombineFns for use with Combine and CombinePerKey
+  * Windowing
+    * Global, Fixed intervals, Sliding windows, and Session
+    * Aggregating over windowed PCollections w/GBKs or Combines.
+  * Flatten
+  * Partition
+  * Composites
+  * Cross Language Transforms
+* Coders
+  * Primitive Go types (ints, string, []bytes, and more)
+  * Beam Schemas for Go Struct types (including struct, slice, and map fields)
+  * Registering custom coders
+* Metrics
+  * PCollection metrics (ElementCount, Size Estimates)
+  * Custom User Metrics
+  * Post job user metrics querying (coming in 2.34.0)
+  * DoFn profiling metrics (coming in 2.35.0)
+* Provided Built Transforms
+  * Sum, Count, Min, Max, Top, Filter
+  * Scalable TextIO Reading
+
+Upcoming features support roadmap, and known issues are discussed below.
+In particular, we plan to support a much richer set of IO connectors via Beam's cross-language capabilities.
+
+## Releases
+
+With this release, the Go SDK now uses [Go Modules](https://golang.org/ref/mod) for dependency management.
+This makes it so users, SDK Devs, and the testing infrastructure can all rely on the same versions of dependencies, making builds reproducible.
+This also makes [validating Go SDK Release Candidates simple](/blog/validate-beam-release/#configuring-a-go-build-to-validate-a-beam-release-candidate).
+
+Versioned SDK worker containers are now built and [published](https://hub.docker.com/r/apache/beam_go_sdk/tags?page=1&ordering=last_updated), with the SDK using matched tagged versions.
+For released versions, user jobs no longer need to specify a container to use, except when using custom containers.
+
+## Compatibility
+
+The Go SDK will largely follow suit with the Go notion of compatibility.
+Some concessions are made to keep all SDKs together on the same release cycle.
+
+### Language Compatibility
+
+The SDK will be tested at a minimum [Go Programming Language version of 1.16](https://golang.org/doc/devel/release), and use available language features and standard library packages accordingly.
+To maintain a broad compatibility, the Go SDK will not require the latest major version of Go.
+We expect to follow the 2nd newest supported release of the language, with a possible exception when Go 1.18 is released, in order to begin experimenting with [Go Generics](https://go.dev/blog/generics-proposal) in the SDK.
+Release notes will call out when the minimum version of the language changes.
+
+### Package Compatibility
+
+The primary user packages will avoid changing in backwards incompatible ways for core features.
+This is to be inline with Go's notion of the [`import compatibility rule`](https://research.swtch.com/vgo-import).
+
+> If an old package and a new package have the same import path,
+> the new package must be backwards compatible with the old package.
+
+Exceptions to this policy are around newer, experimental, or in development features.
+These are subject to change.
+Such features will have a doc comment noting the experimental status, or be mentioned the change notes for a release.
+For example, using `beam.WindowInto` with Triggers is currently experimental and may have the api changed in a future release.
+
+Primary user packages include:
+* The main beam package `github.com/apache/beam/sdks/v2/go/pkg/beam`
+* Sub packages under `.../transforms`, `.../io`, `.../runners`, and `.../testing`.
+
+Generally, packages in the module other than the primary user packages are for framework use.
+They are at risk of changing, though at this point, large breaking changes are unlikely.
+
+### Known Issues
+
+#### Batteries not included.
+* Current native transforms are undertested.
+* IOs may not be written to scale.
+* Go Direct Runner is incomplete and is not portable, prefer using the Python Portable runner, or Flink.
+  * Doesn't support side input windowing. [BEAM-13075](https://issues.apache.org/jira/browse/BEAM-13075)
+  * Doesn't serialize data, making it unlikely to catch coder issues [BEAM-6372](https://issues.apache.org/jira/browse/BEAM-6372)
+  * Can use other general improvements, and become portable [BEAM-11076](https://issues.apache.org/jira/browse/BEAM-11076)
+* Current Trigger API is under iteration and subject to change [BEAM-3304](https://issues.apache.org/jira/browse/BEAM-3304).
+  * API has a possible breaking change between 2.33.0 and 2.34.0, and may change again.
+* Support of the SDK on services, like Google Cloud Dataflow, remains at the service owner's discretion.
+* Need something?
+  * File a ticket in the [Beam JIRA](https://issues.apache.org/jira/issues/?jql=project%20%3D%20BEAM%20AND%20component%20%3D%20sdk-go) and,
+  * Email the dev@beam.apache.org list!
+
+#### Fixed in 2.34.0
+  * `top.SmallestPerKey` was broken [BEAM-12946](https://issues.apache.org/jira/browse/BEAM-12946)
+  * `beam.TryCrossLanguage` API didn't match non-Try version [BEAM-9918](https://issues.apache.org/jira/browse/BEAM-9918)
+    * This is a breaking change if one was calling `beam.TryCrossLanguage`
+
+#### Fixed in 2.35.0
+  * Non-Global Window Side Inputs don't match (correctness bug) [BEAM-11087](https://issues.apache.org/jira/browse/BEAM-11087)
+    * Until 2.35.0 it's not recommended to use SideInputs that are not using the Global Window.

Review comment:
       ```suggestion
       * Until 2.35.0 it's not recommended to use Side Inputs that are not using the Global Window.
   ```

##########
File path: website/www/site/content/en/blog/go-sdk-release.md
##########
@@ -0,0 +1,163 @@
+---
+title:  "Go SDK Exits Experimental in Apache Beam 2.33.0"
+date:   2021-11-04 00:00:01 -0800
+categories:
+  - blog
+authors:
+  - lostluck
+---
+<!--
+Licensed 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.
+-->
+
+Apache Beam’s latest release, version [2.33.0](/get-started/downloads/), is the first official release of the long experimental Go SDK.
+Built with the [Go Programming Language](https://golang.org/), the Go SDK joins the Java and Python SDKs as the third implementation of the Beam programming model.
+
+<!--more-->
+
+## Using the new Go SDK.
+
+New users of the Go SDK can start using it in their Go programs by importing the main beam package:
+
+```
+import "github.com/apache/beam/sdks/v2/go/pkg/beam"
+```
+
+The next run of `go mod tidy` will fetch the latest stable version of the module.
+Alternatively executing `go get github.com/apache/beam/sdks/v2/go/pkg/beam` will download it to the local module cache immeadiately, and add it to your `go.mod` file.
+
+Existing users of the experimental Go SDK need to update to new `v2` import paths to start using the latest versions of the SDK.
+This is can be done by adding `v2` to the import paths, changing `github.com/apache/beam/sdks/go/`... to `github.com/apache/beam/sdks/v2/go/`... where applicable, and then running `go mod tidy`.
+
+Further documentation on using the SDK is available in the [Beam Programming Guide](/documentation/programming-guide/), and in the package Go Doc at https://pkg.go.dev/github.com/apache/beam/sdks/v2/go/pkg/beam.
+
+## Feature Support
+
+At time of writing, the Go SDK is currently "Batteries Not Included".
+This means that there are gaps or edge cases in supported IOs and transforms.
+That said, the core of the SDK enables a great deal of the Beam Model for
+custom user use, supporting following features:
+
+* PTransforms
+  * Impulse
+  * Create
+  * ParDo w/User DoFns
+    * Iterable Side Inputs
+    * Multiple Output emitters
+    * Receive and Return Key Value pairs
+    * EventTime
+    * SplittableDoFns
+  * GroupByKey and CoGroupByKey
+  * CombineFns for use with Combine and CombinePerKey
+  * Windowing

Review comment:
       Should windowing be at the same level as PTransforms (unindent Windowing)?

##########
File path: website/www/site/content/en/blog/go-sdk-release.md
##########
@@ -0,0 +1,163 @@
+---
+title:  "Go SDK Exits Experimental in Apache Beam 2.33.0"
+date:   2021-11-04 00:00:01 -0800
+categories:
+  - blog
+authors:
+  - lostluck
+---
+<!--
+Licensed 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.
+-->
+
+Apache Beam’s latest release, version [2.33.0](/get-started/downloads/), is the first official release of the long experimental Go SDK.
+Built with the [Go Programming Language](https://golang.org/), the Go SDK joins the Java and Python SDKs as the third implementation of the Beam programming model.
+
+<!--more-->
+
+## Using the new Go SDK.
+
+New users of the Go SDK can start using it in their Go programs by importing the main beam package:
+
+```
+import "github.com/apache/beam/sdks/v2/go/pkg/beam"
+```
+
+The next run of `go mod tidy` will fetch the latest stable version of the module.
+Alternatively executing `go get github.com/apache/beam/sdks/v2/go/pkg/beam` will download it to the local module cache immeadiately, and add it to your `go.mod` file.
+
+Existing users of the experimental Go SDK need to update to new `v2` import paths to start using the latest versions of the SDK.
+This is can be done by adding `v2` to the import paths, changing `github.com/apache/beam/sdks/go/`... to `github.com/apache/beam/sdks/v2/go/`... where applicable, and then running `go mod tidy`.
+
+Further documentation on using the SDK is available in the [Beam Programming Guide](/documentation/programming-guide/), and in the package Go Doc at https://pkg.go.dev/github.com/apache/beam/sdks/v2/go/pkg/beam.
+
+## Feature Support
+
+At time of writing, the Go SDK is currently "Batteries Not Included".
+This means that there are gaps or edge cases in supported IOs and transforms.
+That said, the core of the SDK enables a great deal of the Beam Model for
+custom user use, supporting following features:
+
+* PTransforms
+  * Impulse
+  * Create
+  * ParDo w/User DoFns
+    * Iterable Side Inputs
+    * Multiple Output emitters
+    * Receive and Return Key Value pairs
+    * EventTime
+    * SplittableDoFns
+  * GroupByKey and CoGroupByKey
+  * CombineFns for use with Combine and CombinePerKey
+  * Windowing
+    * Global, Fixed intervals, Sliding windows, and Session
+    * Aggregating over windowed PCollections w/GBKs or Combines.
+  * Flatten
+  * Partition
+  * Composites
+  * Cross Language Transforms
+* Coders
+  * Primitive Go types (ints, string, []bytes, and more)
+  * Beam Schemas for Go Struct types (including struct, slice, and map fields)
+  * Registering custom coders
+* Metrics
+  * PCollection metrics (ElementCount, Size Estimates)
+  * Custom User Metrics
+  * Post job user metrics querying (coming in 2.34.0)
+  * DoFn profiling metrics (coming in 2.35.0)
+* Provided Built Transforms
+  * Sum, Count, Min, Max, Top, Filter
+  * Scalable TextIO Reading

Review comment:
       ```suggestion
   * Provided Transforms
     * Sum, Count, Min, Max, Top, Filter
     * Scalable TextIO Reading
   ```
   
   Or we could go with `Built-in transforms`

##########
File path: website/www/site/content/en/blog/go-sdk-release.md
##########
@@ -0,0 +1,163 @@
+---
+title:  "Go SDK Exits Experimental in Apache Beam 2.33.0"
+date:   2021-11-04 00:00:01 -0800
+categories:
+  - blog
+authors:
+  - lostluck
+---
+<!--
+Licensed 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.
+-->
+
+Apache Beam’s latest release, version [2.33.0](/get-started/downloads/), is the first official release of the long experimental Go SDK.
+Built with the [Go Programming Language](https://golang.org/), the Go SDK joins the Java and Python SDKs as the third implementation of the Beam programming model.
+
+<!--more-->
+
+## Using the new Go SDK.
+
+New users of the Go SDK can start using it in their Go programs by importing the main beam package:
+
+```
+import "github.com/apache/beam/sdks/v2/go/pkg/beam"
+```
+
+The next run of `go mod tidy` will fetch the latest stable version of the module.
+Alternatively executing `go get github.com/apache/beam/sdks/v2/go/pkg/beam` will download it to the local module cache immeadiately, and add it to your `go.mod` file.
+
+Existing users of the experimental Go SDK need to update to new `v2` import paths to start using the latest versions of the SDK.
+This is can be done by adding `v2` to the import paths, changing `github.com/apache/beam/sdks/go/`... to `github.com/apache/beam/sdks/v2/go/`... where applicable, and then running `go mod tidy`.
+
+Further documentation on using the SDK is available in the [Beam Programming Guide](/documentation/programming-guide/), and in the package Go Doc at https://pkg.go.dev/github.com/apache/beam/sdks/v2/go/pkg/beam.
+
+## Feature Support
+
+At time of writing, the Go SDK is currently "Batteries Not Included".
+This means that there are gaps or edge cases in supported IOs and transforms.
+That said, the core of the SDK enables a great deal of the Beam Model for
+custom user use, supporting following features:
+
+* PTransforms
+  * Impulse
+  * Create
+  * ParDo w/User DoFns
+    * Iterable Side Inputs
+    * Multiple Output emitters
+    * Receive and Return Key Value pairs
+    * EventTime
+    * SplittableDoFns
+  * GroupByKey and CoGroupByKey
+  * CombineFns for use with Combine and CombinePerKey
+  * Windowing
+    * Global, Fixed intervals, Sliding windows, and Session
+    * Aggregating over windowed PCollections w/GBKs or Combines.
+  * Flatten
+  * Partition
+  * Composites
+  * Cross Language Transforms
+* Coders
+  * Primitive Go types (ints, string, []bytes, and more)
+  * Beam Schemas for Go Struct types (including struct, slice, and map fields)
+  * Registering custom coders
+* Metrics
+  * PCollection metrics (ElementCount, Size Estimates)
+  * Custom User Metrics
+  * Post job user metrics querying (coming in 2.34.0)
+  * DoFn profiling metrics (coming in 2.35.0)
+* Provided Built Transforms
+  * Sum, Count, Min, Max, Top, Filter
+  * Scalable TextIO Reading
+
+Upcoming features support roadmap, and known issues are discussed below.
+In particular, we plan to support a much richer set of IO connectors via Beam's cross-language capabilities.
+
+## Releases
+
+With this release, the Go SDK now uses [Go Modules](https://golang.org/ref/mod) for dependency management.
+This makes it so users, SDK Devs, and the testing infrastructure can all rely on the same versions of dependencies, making builds reproducible.
+This also makes [validating Go SDK Release Candidates simple](/blog/validate-beam-release/#configuring-a-go-build-to-validate-a-beam-release-candidate).
+
+Versioned SDK worker containers are now built and [published](https://hub.docker.com/r/apache/beam_go_sdk/tags?page=1&ordering=last_updated), with the SDK using matched tagged versions.
+For released versions, user jobs no longer need to specify a container to use, except when using custom containers.
+
+## Compatibility
+
+The Go SDK will largely follow suit with the Go notion of compatibility.
+Some concessions are made to keep all SDKs together on the same release cycle.
+
+### Language Compatibility
+
+The SDK will be tested at a minimum [Go Programming Language version of 1.16](https://golang.org/doc/devel/release), and use available language features and standard library packages accordingly.
+To maintain a broad compatibility, the Go SDK will not require the latest major version of Go.
+We expect to follow the 2nd newest supported release of the language, with a possible exception when Go 1.18 is released, in order to begin experimenting with [Go Generics](https://go.dev/blog/generics-proposal) in the SDK.
+Release notes will call out when the minimum version of the language changes.
+
+### Package Compatibility
+
+The primary user packages will avoid changing in backwards incompatible ways for core features.
+This is to be inline with Go's notion of the [`import compatibility rule`](https://research.swtch.com/vgo-import).
+
+> If an old package and a new package have the same import path,
+> the new package must be backwards compatible with the old package.
+
+Exceptions to this policy are around newer, experimental, or in development features.
+These are subject to change.
+Such features will have a doc comment noting the experimental status, or be mentioned the change notes for a release.
+For example, using `beam.WindowInto` with Triggers is currently experimental and may have the api changed in a future release.
+
+Primary user packages include:
+* The main beam package `github.com/apache/beam/sdks/v2/go/pkg/beam`
+* Sub packages under `.../transforms`, `.../io`, `.../runners`, and `.../testing`.
+
+Generally, packages in the module other than the primary user packages are for framework use.
+They are at risk of changing, though at this point, large breaking changes are unlikely.
+
+### Known Issues
+
+#### Batteries not included.
+* Current native transforms are undertested.
+* IOs may not be written to scale.
+* Go Direct Runner is incomplete and is not portable, prefer using the Python Portable runner, or Flink.
+  * Doesn't support side input windowing. [BEAM-13075](https://issues.apache.org/jira/browse/BEAM-13075)
+  * Doesn't serialize data, making it unlikely to catch coder issues [BEAM-6372](https://issues.apache.org/jira/browse/BEAM-6372)
+  * Can use other general improvements, and become portable [BEAM-11076](https://issues.apache.org/jira/browse/BEAM-11076)
+* Current Trigger API is under iteration and subject to change [BEAM-3304](https://issues.apache.org/jira/browse/BEAM-3304).
+  * API has a possible breaking change between 2.33.0 and 2.34.0, and may change again.
+* Support of the SDK on services, like Google Cloud Dataflow, remains at the service owner's discretion.
+* Need something?
+  * File a ticket in the [Beam JIRA](https://issues.apache.org/jira/issues/?jql=project%20%3D%20BEAM%20AND%20component%20%3D%20sdk-go) and,
+  * Email the dev@beam.apache.org list!
+
+#### Fixed in 2.34.0
+  * `top.SmallestPerKey` was broken [BEAM-12946](https://issues.apache.org/jira/browse/BEAM-12946)
+  * `beam.TryCrossLanguage` API didn't match non-Try version [BEAM-9918](https://issues.apache.org/jira/browse/BEAM-9918)
+    * This is a breaking change if one was calling `beam.TryCrossLanguage`
+
+#### Fixed in 2.35.0
+  * Non-Global Window Side Inputs don't match (correctness bug) [BEAM-11087](https://issues.apache.org/jira/browse/BEAM-11087)
+    * Until 2.35.0 it's not recommended to use SideInputs that are not using the Global Window.
+  * Side Inputs using DoFns accumulate memory over bundles, causing OOMs [BEAM-13130](https://issues.apache.org/jira/browse/BEAM-13130)
+
+## Roadmap
+
+The [SDK roadmap](/roadmap/go-sdk/) has been updated.
+Ongoing focus is to bolster more streaming focused features, and improve existing connectors, and make connectors easier to implement.
+
+In the nearer term this comes in the form of improvements to Side Inputs, and providing wrappers and improving ease-of-use for Cross Language Transforms from Java.
+
+## Conclusion
+
+We hope you find the SDK useful, and it's still early days.
+If you make something using it, consider [sharing it with us](/community/contact-us/).

Review comment:
       awkward?
   ```suggestion
   If you make something useful, consider [sharing it with us](/community/contact-us/).
   ```

##########
File path: website/www/site/content/en/blog/go-sdk-release.md
##########
@@ -0,0 +1,163 @@
+---
+title:  "Go SDK Exits Experimental in Apache Beam 2.33.0"
+date:   2021-11-04 00:00:01 -0800
+categories:
+  - blog
+authors:
+  - lostluck
+---
+<!--
+Licensed 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.
+-->
+
+Apache Beam’s latest release, version [2.33.0](/get-started/downloads/), is the first official release of the long experimental Go SDK.
+Built with the [Go Programming Language](https://golang.org/), the Go SDK joins the Java and Python SDKs as the third implementation of the Beam programming model.
+
+<!--more-->
+
+## Using the new Go SDK.
+
+New users of the Go SDK can start using it in their Go programs by importing the main beam package:
+
+```
+import "github.com/apache/beam/sdks/v2/go/pkg/beam"
+```
+
+The next run of `go mod tidy` will fetch the latest stable version of the module.
+Alternatively executing `go get github.com/apache/beam/sdks/v2/go/pkg/beam` will download it to the local module cache immeadiately, and add it to your `go.mod` file.
+
+Existing users of the experimental Go SDK need to update to new `v2` import paths to start using the latest versions of the SDK.
+This is can be done by adding `v2` to the import paths, changing `github.com/apache/beam/sdks/go/`... to `github.com/apache/beam/sdks/v2/go/`... where applicable, and then running `go mod tidy`.
+
+Further documentation on using the SDK is available in the [Beam Programming Guide](/documentation/programming-guide/), and in the package Go Doc at https://pkg.go.dev/github.com/apache/beam/sdks/v2/go/pkg/beam.
+
+## Feature Support
+
+At time of writing, the Go SDK is currently "Batteries Not Included".
+This means that there are gaps or edge cases in supported IOs and transforms.
+That said, the core of the SDK enables a great deal of the Beam Model for
+custom user use, supporting following features:
+
+* PTransforms
+  * Impulse
+  * Create
+  * ParDo w/User DoFns
+    * Iterable Side Inputs
+    * Multiple Output emitters
+    * Receive and Return Key Value pairs
+    * EventTime
+    * SplittableDoFns
+  * GroupByKey and CoGroupByKey
+  * CombineFns for use with Combine and CombinePerKey
+  * Windowing
+    * Global, Fixed intervals, Sliding windows, and Session
+    * Aggregating over windowed PCollections w/GBKs or Combines.
+  * Flatten
+  * Partition
+  * Composites
+  * Cross Language Transforms
+* Coders
+  * Primitive Go types (ints, string, []bytes, and more)
+  * Beam Schemas for Go Struct types (including struct, slice, and map fields)
+  * Registering custom coders
+* Metrics
+  * PCollection metrics (ElementCount, Size Estimates)
+  * Custom User Metrics
+  * Post job user metrics querying (coming in 2.34.0)
+  * DoFn profiling metrics (coming in 2.35.0)
+* Provided Built Transforms
+  * Sum, Count, Min, Max, Top, Filter
+  * Scalable TextIO Reading
+
+Upcoming features support roadmap, and known issues are discussed below.
+In particular, we plan to support a much richer set of IO connectors via Beam's cross-language capabilities.
+
+## Releases
+
+With this release, the Go SDK now uses [Go Modules](https://golang.org/ref/mod) for dependency management.
+This makes it so users, SDK Devs, and the testing infrastructure can all rely on the same versions of dependencies, making builds reproducible.
+This also makes [validating Go SDK Release Candidates simple](/blog/validate-beam-release/#configuring-a-go-build-to-validate-a-beam-release-candidate).
+
+Versioned SDK worker containers are now built and [published](https://hub.docker.com/r/apache/beam_go_sdk/tags?page=1&ordering=last_updated), with the SDK using matched tagged versions.
+For released versions, user jobs no longer need to specify a container to use, except when using custom containers.
+
+## Compatibility
+
+The Go SDK will largely follow suit with the Go notion of compatibility.
+Some concessions are made to keep all SDKs together on the same release cycle.
+
+### Language Compatibility
+
+The SDK will be tested at a minimum [Go Programming Language version of 1.16](https://golang.org/doc/devel/release), and use available language features and standard library packages accordingly.
+To maintain a broad compatibility, the Go SDK will not require the latest major version of Go.
+We expect to follow the 2nd newest supported release of the language, with a possible exception when Go 1.18 is released, in order to begin experimenting with [Go Generics](https://go.dev/blog/generics-proposal) in the SDK.
+Release notes will call out when the minimum version of the language changes.
+
+### Package Compatibility
+
+The primary user packages will avoid changing in backwards incompatible ways for core features.
+This is to be inline with Go's notion of the [`import compatibility rule`](https://research.swtch.com/vgo-import).
+
+> If an old package and a new package have the same import path,
+> the new package must be backwards compatible with the old package.
+
+Exceptions to this policy are around newer, experimental, or in development features.
+These are subject to change.
+Such features will have a doc comment noting the experimental status, or be mentioned the change notes for a release.
+For example, using `beam.WindowInto` with Triggers is currently experimental and may have the api changed in a future release.
+
+Primary user packages include:
+* The main beam package `github.com/apache/beam/sdks/v2/go/pkg/beam`
+* Sub packages under `.../transforms`, `.../io`, `.../runners`, and `.../testing`.
+
+Generally, packages in the module other than the primary user packages are for framework use.
+They are at risk of changing, though at this point, large breaking changes are unlikely.
+
+### Known Issues
+
+#### Batteries not included.
+* Current native transforms are undertested.
+* IOs may not be written to scale.
+* Go Direct Runner is incomplete and is not portable, prefer using the Python Portable runner, or Flink.
+  * Doesn't support side input windowing. [BEAM-13075](https://issues.apache.org/jira/browse/BEAM-13075)
+  * Doesn't serialize data, making it unlikely to catch coder issues [BEAM-6372](https://issues.apache.org/jira/browse/BEAM-6372)
+  * Can use other general improvements, and become portable [BEAM-11076](https://issues.apache.org/jira/browse/BEAM-11076)
+* Current Trigger API is under iteration and subject to change [BEAM-3304](https://issues.apache.org/jira/browse/BEAM-3304).
+  * API has a possible breaking change between 2.33.0 and 2.34.0, and may change again.
+* Support of the SDK on services, like Google Cloud Dataflow, remains at the service owner's discretion.
+* Need something?
+  * File a ticket in the [Beam JIRA](https://issues.apache.org/jira/issues/?jql=project%20%3D%20BEAM%20AND%20component%20%3D%20sdk-go) and,
+  * Email the dev@beam.apache.org list!
+
+#### Fixed in 2.34.0
+  * `top.SmallestPerKey` was broken [BEAM-12946](https://issues.apache.org/jira/browse/BEAM-12946)
+  * `beam.TryCrossLanguage` API didn't match non-Try version [BEAM-9918](https://issues.apache.org/jira/browse/BEAM-9918)
+    * This is a breaking change if one was calling `beam.TryCrossLanguage`
+
+#### Fixed in 2.35.0
+  * Non-Global Window Side Inputs don't match (correctness bug) [BEAM-11087](https://issues.apache.org/jira/browse/BEAM-11087)
+    * Until 2.35.0 it's not recommended to use SideInputs that are not using the Global Window.
+  * Side Inputs using DoFns accumulate memory over bundles, causing OOMs [BEAM-13130](https://issues.apache.org/jira/browse/BEAM-13130)
+
+## Roadmap
+
+The [SDK roadmap](/roadmap/go-sdk/) has been updated.
+Ongoing focus is to bolster more streaming focused features, and improve existing connectors, and make connectors easier to implement.

Review comment:
       ```suggestion
   Ongoing focus is to bolster streaming focused features, improve existing connectors, and make connectors easier to implement.
   ```

##########
File path: website/www/site/content/en/blog/go-sdk-release.md
##########
@@ -0,0 +1,163 @@
+---
+title:  "Go SDK Exits Experimental in Apache Beam 2.33.0"
+date:   2021-11-04 00:00:01 -0800
+categories:
+  - blog
+authors:
+  - lostluck
+---
+<!--
+Licensed 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.
+-->
+
+Apache Beam’s latest release, version [2.33.0](/get-started/downloads/), is the first official release of the long experimental Go SDK.
+Built with the [Go Programming Language](https://golang.org/), the Go SDK joins the Java and Python SDKs as the third implementation of the Beam programming model.
+
+<!--more-->
+
+## Using the new Go SDK.
+
+New users of the Go SDK can start using it in their Go programs by importing the main beam package:
+
+```
+import "github.com/apache/beam/sdks/v2/go/pkg/beam"
+```
+
+The next run of `go mod tidy` will fetch the latest stable version of the module.
+Alternatively executing `go get github.com/apache/beam/sdks/v2/go/pkg/beam` will download it to the local module cache immeadiately, and add it to your `go.mod` file.
+
+Existing users of the experimental Go SDK need to update to new `v2` import paths to start using the latest versions of the SDK.
+This is can be done by adding `v2` to the import paths, changing `github.com/apache/beam/sdks/go/`... to `github.com/apache/beam/sdks/v2/go/`... where applicable, and then running `go mod tidy`.
+
+Further documentation on using the SDK is available in the [Beam Programming Guide](/documentation/programming-guide/), and in the package Go Doc at https://pkg.go.dev/github.com/apache/beam/sdks/v2/go/pkg/beam.
+
+## Feature Support
+
+At time of writing, the Go SDK is currently "Batteries Not Included".
+This means that there are gaps or edge cases in supported IOs and transforms.
+That said, the core of the SDK enables a great deal of the Beam Model for
+custom user use, supporting following features:
+
+* PTransforms
+  * Impulse
+  * Create
+  * ParDo w/User DoFns
+    * Iterable Side Inputs
+    * Multiple Output emitters
+    * Receive and Return Key Value pairs
+    * EventTime
+    * SplittableDoFns
+  * GroupByKey and CoGroupByKey
+  * CombineFns for use with Combine and CombinePerKey
+  * Windowing
+    * Global, Fixed intervals, Sliding windows, and Session
+    * Aggregating over windowed PCollections w/GBKs or Combines.
+  * Flatten
+  * Partition
+  * Composites

Review comment:
       ```suggestion
     * Composite Transforms
   ```

##########
File path: website/www/site/content/en/blog/go-sdk-release.md
##########
@@ -0,0 +1,163 @@
+---
+title:  "Go SDK Exits Experimental in Apache Beam 2.33.0"
+date:   2021-11-04 00:00:01 -0800
+categories:
+  - blog
+authors:
+  - lostluck
+---
+<!--
+Licensed 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.
+-->
+
+Apache Beam’s latest release, version [2.33.0](/get-started/downloads/), is the first official release of the long experimental Go SDK.
+Built with the [Go Programming Language](https://golang.org/), the Go SDK joins the Java and Python SDKs as the third implementation of the Beam programming model.
+
+<!--more-->
+
+## Using the new Go SDK.
+
+New users of the Go SDK can start using it in their Go programs by importing the main beam package:
+
+```
+import "github.com/apache/beam/sdks/v2/go/pkg/beam"
+```
+
+The next run of `go mod tidy` will fetch the latest stable version of the module.
+Alternatively executing `go get github.com/apache/beam/sdks/v2/go/pkg/beam` will download it to the local module cache immeadiately, and add it to your `go.mod` file.
+
+Existing users of the experimental Go SDK need to update to new `v2` import paths to start using the latest versions of the SDK.
+This is can be done by adding `v2` to the import paths, changing `github.com/apache/beam/sdks/go/`... to `github.com/apache/beam/sdks/v2/go/`... where applicable, and then running `go mod tidy`.
+
+Further documentation on using the SDK is available in the [Beam Programming Guide](/documentation/programming-guide/), and in the package Go Doc at https://pkg.go.dev/github.com/apache/beam/sdks/v2/go/pkg/beam.
+
+## Feature Support
+
+At time of writing, the Go SDK is currently "Batteries Not Included".
+This means that there are gaps or edge cases in supported IOs and transforms.
+That said, the core of the SDK enables a great deal of the Beam Model for
+custom user use, supporting following features:
+
+* PTransforms
+  * Impulse
+  * Create
+  * ParDo w/User DoFns
+    * Iterable Side Inputs
+    * Multiple Output emitters
+    * Receive and Return Key Value pairs
+    * EventTime
+    * SplittableDoFns
+  * GroupByKey and CoGroupByKey
+  * CombineFns for use with Combine and CombinePerKey
+  * Windowing
+    * Global, Fixed intervals, Sliding windows, and Session
+    * Aggregating over windowed PCollections w/GBKs or Combines.
+  * Flatten
+  * Partition
+  * Composites
+  * Cross Language Transforms
+* Coders
+  * Primitive Go types (ints, string, []bytes, and more)
+  * Beam Schemas for Go Struct types (including struct, slice, and map fields)
+  * Registering custom coders
+* Metrics
+  * PCollection metrics (ElementCount, Size Estimates)
+  * Custom User Metrics
+  * Post job user metrics querying (coming in 2.34.0)
+  * DoFn profiling metrics (coming in 2.35.0)
+* Provided Built Transforms
+  * Sum, Count, Min, Max, Top, Filter
+  * Scalable TextIO Reading
+
+Upcoming features support roadmap, and known issues are discussed below.
+In particular, we plan to support a much richer set of IO connectors via Beam's cross-language capabilities.
+
+## Releases
+
+With this release, the Go SDK now uses [Go Modules](https://golang.org/ref/mod) for dependency management.
+This makes it so users, SDK Devs, and the testing infrastructure can all rely on the same versions of dependencies, making builds reproducible.
+This also makes [validating Go SDK Release Candidates simple](/blog/validate-beam-release/#configuring-a-go-build-to-validate-a-beam-release-candidate).
+
+Versioned SDK worker containers are now built and [published](https://hub.docker.com/r/apache/beam_go_sdk/tags?page=1&ordering=last_updated), with the SDK using matched tagged versions.
+For released versions, user jobs no longer need to specify a container to use, except when using custom containers.
+
+## Compatibility
+
+The Go SDK will largely follow suit with the Go notion of compatibility.
+Some concessions are made to keep all SDKs together on the same release cycle.
+
+### Language Compatibility
+
+The SDK will be tested at a minimum [Go Programming Language version of 1.16](https://golang.org/doc/devel/release), and use available language features and standard library packages accordingly.
+To maintain a broad compatibility, the Go SDK will not require the latest major version of Go.
+We expect to follow the 2nd newest supported release of the language, with a possible exception when Go 1.18 is released, in order to begin experimenting with [Go Generics](https://go.dev/blog/generics-proposal) in the SDK.
+Release notes will call out when the minimum version of the language changes.
+
+### Package Compatibility
+
+The primary user packages will avoid changing in backwards incompatible ways for core features.
+This is to be inline with Go's notion of the [`import compatibility rule`](https://research.swtch.com/vgo-import).
+
+> If an old package and a new package have the same import path,
+> the new package must be backwards compatible with the old package.
+
+Exceptions to this policy are around newer, experimental, or in development features.
+These are subject to change.
+Such features will have a doc comment noting the experimental status, or be mentioned the change notes for a release.
+For example, using `beam.WindowInto` with Triggers is currently experimental and may have the api changed in a future release.

Review comment:
       ```suggestion
   Such features will have a doc comment noting the experimental status. Major changes will be mentioned in the release notes.
   For example, using `beam.WindowInto` with Triggers is currently experimental and may have the API changed in a future release.
   ```

##########
File path: website/www/site/content/en/blog/go-sdk-release.md
##########
@@ -0,0 +1,163 @@
+---
+title:  "Go SDK Exits Experimental in Apache Beam 2.33.0"
+date:   2021-11-04 00:00:01 -0800
+categories:
+  - blog
+authors:
+  - lostluck
+---
+<!--
+Licensed 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.
+-->
+
+Apache Beam’s latest release, version [2.33.0](/get-started/downloads/), is the first official release of the long experimental Go SDK.
+Built with the [Go Programming Language](https://golang.org/), the Go SDK joins the Java and Python SDKs as the third implementation of the Beam programming model.
+
+<!--more-->
+
+## Using the new Go SDK.
+
+New users of the Go SDK can start using it in their Go programs by importing the main beam package:
+
+```
+import "github.com/apache/beam/sdks/v2/go/pkg/beam"
+```
+
+The next run of `go mod tidy` will fetch the latest stable version of the module.
+Alternatively executing `go get github.com/apache/beam/sdks/v2/go/pkg/beam` will download it to the local module cache immeadiately, and add it to your `go.mod` file.
+
+Existing users of the experimental Go SDK need to update to new `v2` import paths to start using the latest versions of the SDK.
+This is can be done by adding `v2` to the import paths, changing `github.com/apache/beam/sdks/go/`... to `github.com/apache/beam/sdks/v2/go/`... where applicable, and then running `go mod tidy`.
+
+Further documentation on using the SDK is available in the [Beam Programming Guide](/documentation/programming-guide/), and in the package Go Doc at https://pkg.go.dev/github.com/apache/beam/sdks/v2/go/pkg/beam.
+
+## Feature Support
+
+At time of writing, the Go SDK is currently "Batteries Not Included".
+This means that there are gaps or edge cases in supported IOs and transforms.
+That said, the core of the SDK enables a great deal of the Beam Model for
+custom user use, supporting following features:
+
+* PTransforms

Review comment:
       I would consider only capitalizing the first word in this list except where we are using DoFns, ParDo, GroupByKey, CoGroupByKey, SplittableDoFn, PCollection, 

##########
File path: website/www/site/content/en/blog/go-sdk-release.md
##########
@@ -0,0 +1,163 @@
+---
+title:  "Go SDK Exits Experimental in Apache Beam 2.33.0"
+date:   2021-11-04 00:00:01 -0800
+categories:
+  - blog
+authors:
+  - lostluck
+---
+<!--
+Licensed 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.
+-->
+
+Apache Beam’s latest release, version [2.33.0](/get-started/downloads/), is the first official release of the long experimental Go SDK.
+Built with the [Go Programming Language](https://golang.org/), the Go SDK joins the Java and Python SDKs as the third implementation of the Beam programming model.
+
+<!--more-->
+
+## Using the new Go SDK.
+
+New users of the Go SDK can start using it in their Go programs by importing the main beam package:
+
+```
+import "github.com/apache/beam/sdks/v2/go/pkg/beam"
+```
+
+The next run of `go mod tidy` will fetch the latest stable version of the module.
+Alternatively executing `go get github.com/apache/beam/sdks/v2/go/pkg/beam` will download it to the local module cache immeadiately, and add it to your `go.mod` file.
+
+Existing users of the experimental Go SDK need to update to new `v2` import paths to start using the latest versions of the SDK.
+This is can be done by adding `v2` to the import paths, changing `github.com/apache/beam/sdks/go/`... to `github.com/apache/beam/sdks/v2/go/`... where applicable, and then running `go mod tidy`.
+
+Further documentation on using the SDK is available in the [Beam Programming Guide](/documentation/programming-guide/), and in the package Go Doc at https://pkg.go.dev/github.com/apache/beam/sdks/v2/go/pkg/beam.
+
+## Feature Support
+
+At time of writing, the Go SDK is currently "Batteries Not Included".
+This means that there are gaps or edge cases in supported IOs and transforms.
+That said, the core of the SDK enables a great deal of the Beam Model for
+custom user use, supporting following features:
+
+* PTransforms
+  * Impulse
+  * Create
+  * ParDo w/User DoFns
+    * Iterable Side Inputs
+    * Multiple Output emitters
+    * Receive and Return Key Value pairs
+    * EventTime
+    * SplittableDoFns
+  * GroupByKey and CoGroupByKey
+  * CombineFns for use with Combine and CombinePerKey
+  * Windowing
+    * Global, Fixed intervals, Sliding windows, and Session
+    * Aggregating over windowed PCollections w/GBKs or Combines.
+  * Flatten
+  * Partition
+  * Composites
+  * Cross Language Transforms
+* Coders
+  * Primitive Go types (ints, string, []bytes, and more)
+  * Beam Schemas for Go Struct types (including struct, slice, and map fields)
+  * Registering custom coders
+* Metrics
+  * PCollection metrics (ElementCount, Size Estimates)
+  * Custom User Metrics
+  * Post job user metrics querying (coming in 2.34.0)
+  * DoFn profiling metrics (coming in 2.35.0)
+* Provided Built Transforms
+  * Sum, Count, Min, Max, Top, Filter
+  * Scalable TextIO Reading
+
+Upcoming features support roadmap, and known issues are discussed below.
+In particular, we plan to support a much richer set of IO connectors via Beam's cross-language capabilities.
+
+## Releases
+
+With this release, the Go SDK now uses [Go Modules](https://golang.org/ref/mod) for dependency management.
+This makes it so users, SDK Devs, and the testing infrastructure can all rely on the same versions of dependencies, making builds reproducible.
+This also makes [validating Go SDK Release Candidates simple](/blog/validate-beam-release/#configuring-a-go-build-to-validate-a-beam-release-candidate).
+
+Versioned SDK worker containers are now built and [published](https://hub.docker.com/r/apache/beam_go_sdk/tags?page=1&ordering=last_updated), with the SDK using matched tagged versions.
+For released versions, user jobs no longer need to specify a container to use, except when using custom containers.
+
+## Compatibility
+
+The Go SDK will largely follow suit with the Go notion of compatibility.
+Some concessions are made to keep all SDKs together on the same release cycle.
+
+### Language Compatibility
+
+The SDK will be tested at a minimum [Go Programming Language version of 1.16](https://golang.org/doc/devel/release), and use available language features and standard library packages accordingly.
+To maintain a broad compatibility, the Go SDK will not require the latest major version of Go.
+We expect to follow the 2nd newest supported release of the language, with a possible exception when Go 1.18 is released, in order to begin experimenting with [Go Generics](https://go.dev/blog/generics-proposal) in the SDK.
+Release notes will call out when the minimum version of the language changes.
+
+### Package Compatibility
+
+The primary user packages will avoid changing in backwards incompatible ways for core features.
+This is to be inline with Go's notion of the [`import compatibility rule`](https://research.swtch.com/vgo-import).
+
+> If an old package and a new package have the same import path,
+> the new package must be backwards compatible with the old package.
+
+Exceptions to this policy are around newer, experimental, or in development features.
+These are subject to change.

Review comment:
       ```suggestion
   Exceptions to this policy are around newer, experimental, or in development features and are subject to change.
   ```

##########
File path: website/www/site/content/en/blog/go-sdk-release.md
##########
@@ -0,0 +1,163 @@
+---
+title:  "Go SDK Exits Experimental in Apache Beam 2.33.0"
+date:   2021-11-04 00:00:01 -0800
+categories:
+  - blog
+authors:
+  - lostluck
+---
+<!--
+Licensed 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.
+-->
+
+Apache Beam’s latest release, version [2.33.0](/get-started/downloads/), is the first official release of the long experimental Go SDK.
+Built with the [Go Programming Language](https://golang.org/), the Go SDK joins the Java and Python SDKs as the third implementation of the Beam programming model.
+
+<!--more-->
+
+## Using the new Go SDK.
+
+New users of the Go SDK can start using it in their Go programs by importing the main beam package:
+
+```
+import "github.com/apache/beam/sdks/v2/go/pkg/beam"
+```
+
+The next run of `go mod tidy` will fetch the latest stable version of the module.
+Alternatively executing `go get github.com/apache/beam/sdks/v2/go/pkg/beam` will download it to the local module cache immeadiately, and add it to your `go.mod` file.
+
+Existing users of the experimental Go SDK need to update to new `v2` import paths to start using the latest versions of the SDK.
+This is can be done by adding `v2` to the import paths, changing `github.com/apache/beam/sdks/go/`... to `github.com/apache/beam/sdks/v2/go/`... where applicable, and then running `go mod tidy`.
+
+Further documentation on using the SDK is available in the [Beam Programming Guide](/documentation/programming-guide/), and in the package Go Doc at https://pkg.go.dev/github.com/apache/beam/sdks/v2/go/pkg/beam.
+
+## Feature Support
+
+At time of writing, the Go SDK is currently "Batteries Not Included".
+This means that there are gaps or edge cases in supported IOs and transforms.
+That said, the core of the SDK enables a great deal of the Beam Model for
+custom user use, supporting following features:
+
+* PTransforms
+  * Impulse
+  * Create
+  * ParDo w/User DoFns
+    * Iterable Side Inputs
+    * Multiple Output emitters
+    * Receive and Return Key Value pairs
+    * EventTime
+    * SplittableDoFns
+  * GroupByKey and CoGroupByKey
+  * CombineFns for use with Combine and CombinePerKey
+  * Windowing
+    * Global, Fixed intervals, Sliding windows, and Session
+    * Aggregating over windowed PCollections w/GBKs or Combines.
+  * Flatten
+  * Partition
+  * Composites
+  * Cross Language Transforms
+* Coders
+  * Primitive Go types (ints, string, []bytes, and more)
+  * Beam Schemas for Go Struct types (including struct, slice, and map fields)
+  * Registering custom coders
+* Metrics
+  * PCollection metrics (ElementCount, Size Estimates)
+  * Custom User Metrics
+  * Post job user metrics querying (coming in 2.34.0)
+  * DoFn profiling metrics (coming in 2.35.0)
+* Provided Built Transforms
+  * Sum, Count, Min, Max, Top, Filter
+  * Scalable TextIO Reading
+
+Upcoming features support roadmap, and known issues are discussed below.
+In particular, we plan to support a much richer set of IO connectors via Beam's cross-language capabilities.
+
+## Releases
+
+With this release, the Go SDK now uses [Go Modules](https://golang.org/ref/mod) for dependency management.
+This makes it so users, SDK Devs, and the testing infrastructure can all rely on the same versions of dependencies, making builds reproducible.
+This also makes [validating Go SDK Release Candidates simple](/blog/validate-beam-release/#configuring-a-go-build-to-validate-a-beam-release-candidate).
+
+Versioned SDK worker containers are now built and [published](https://hub.docker.com/r/apache/beam_go_sdk/tags?page=1&ordering=last_updated), with the SDK using matched tagged versions.
+For released versions, user jobs no longer need to specify a container to use, except when using custom containers.
+
+## Compatibility
+
+The Go SDK will largely follow suit with the Go notion of compatibility.
+Some concessions are made to keep all SDKs together on the same release cycle.
+
+### Language Compatibility
+
+The SDK will be tested at a minimum [Go Programming Language version of 1.16](https://golang.org/doc/devel/release), and use available language features and standard library packages accordingly.
+To maintain a broad compatibility, the Go SDK will not require the latest major version of Go.
+We expect to follow the 2nd newest supported release of the language, with a possible exception when Go 1.18 is released, in order to begin experimenting with [Go Generics](https://go.dev/blog/generics-proposal) in the SDK.
+Release notes will call out when the minimum version of the language changes.
+
+### Package Compatibility
+
+The primary user packages will avoid changing in backwards incompatible ways for core features.
+This is to be inline with Go's notion of the [`import compatibility rule`](https://research.swtch.com/vgo-import).
+
+> If an old package and a new package have the same import path,
+> the new package must be backwards compatible with the old package.
+
+Exceptions to this policy are around newer, experimental, or in development features.
+These are subject to change.
+Such features will have a doc comment noting the experimental status, or be mentioned the change notes for a release.
+For example, using `beam.WindowInto` with Triggers is currently experimental and may have the api changed in a future release.
+
+Primary user packages include:
+* The main beam package `github.com/apache/beam/sdks/v2/go/pkg/beam`
+* Sub packages under `.../transforms`, `.../io`, `.../runners`, and `.../testing`.
+
+Generally, packages in the module other than the primary user packages are for framework use.
+They are at risk of changing, though at this point, large breaking changes are unlikely.
+
+### Known Issues
+
+#### Batteries not included.
+* Current native transforms are undertested.
+* IOs may not be written to scale.
+* Go Direct Runner is incomplete and is not portable, prefer using the Python Portable runner, or Flink.
+  * Doesn't support side input windowing. [BEAM-13075](https://issues.apache.org/jira/browse/BEAM-13075)
+  * Doesn't serialize data, making it unlikely to catch coder issues [BEAM-6372](https://issues.apache.org/jira/browse/BEAM-6372)
+  * Can use other general improvements, and become portable [BEAM-11076](https://issues.apache.org/jira/browse/BEAM-11076)
+* Current Trigger API is under iteration and subject to change [BEAM-3304](https://issues.apache.org/jira/browse/BEAM-3304).
+  * API has a possible breaking change between 2.33.0 and 2.34.0, and may change again.
+* Support of the SDK on services, like Google Cloud Dataflow, remains at the service owner's discretion.
+* Need something?
+  * File a ticket in the [Beam JIRA](https://issues.apache.org/jira/issues/?jql=project%20%3D%20BEAM%20AND%20component%20%3D%20sdk-go) and,
+  * Email the dev@beam.apache.org list!
+
+#### Fixed in 2.34.0
+  * `top.SmallestPerKey` was broken [BEAM-12946](https://issues.apache.org/jira/browse/BEAM-12946)
+  * `beam.TryCrossLanguage` API didn't match non-Try version [BEAM-9918](https://issues.apache.org/jira/browse/BEAM-9918)
+    * This is a breaking change if one was calling `beam.TryCrossLanguage`
+
+#### Fixed in 2.35.0
+  * Non-Global Window Side Inputs don't match (correctness bug) [BEAM-11087](https://issues.apache.org/jira/browse/BEAM-11087)
+    * Until 2.35.0 it's not recommended to use SideInputs that are not using the Global Window.
+  * Side Inputs using DoFns accumulate memory over bundles, causing OOMs [BEAM-13130](https://issues.apache.org/jira/browse/BEAM-13130)

Review comment:
       ```suggestion
     * DoFns using Side Inputs accumulate memory over bundles, causing OOMs [BEAM-13130](https://issues.apache.org/jira/browse/BEAM-13130)
   ```

##########
File path: website/www/site/content/en/blog/go-sdk-release.md
##########
@@ -0,0 +1,163 @@
+---
+title:  "Go SDK Exits Experimental in Apache Beam 2.33.0"
+date:   2021-11-04 00:00:01 -0800
+categories:
+  - blog
+authors:
+  - lostluck
+---
+<!--
+Licensed 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.
+-->
+
+Apache Beam’s latest release, version [2.33.0](/get-started/downloads/), is the first official release of the long experimental Go SDK.
+Built with the [Go Programming Language](https://golang.org/), the Go SDK joins the Java and Python SDKs as the third implementation of the Beam programming model.
+
+<!--more-->
+
+## Using the new Go SDK.
+
+New users of the Go SDK can start using it in their Go programs by importing the main beam package:
+
+```
+import "github.com/apache/beam/sdks/v2/go/pkg/beam"
+```
+
+The next run of `go mod tidy` will fetch the latest stable version of the module.
+Alternatively executing `go get github.com/apache/beam/sdks/v2/go/pkg/beam` will download it to the local module cache immeadiately, and add it to your `go.mod` file.
+
+Existing users of the experimental Go SDK need to update to new `v2` import paths to start using the latest versions of the SDK.
+This is can be done by adding `v2` to the import paths, changing `github.com/apache/beam/sdks/go/`... to `github.com/apache/beam/sdks/v2/go/`... where applicable, and then running `go mod tidy`.
+
+Further documentation on using the SDK is available in the [Beam Programming Guide](/documentation/programming-guide/), and in the package Go Doc at https://pkg.go.dev/github.com/apache/beam/sdks/v2/go/pkg/beam.
+
+## Feature Support
+
+At time of writing, the Go SDK is currently "Batteries Not Included".
+This means that there are gaps or edge cases in supported IOs and transforms.
+That said, the core of the SDK enables a great deal of the Beam Model for
+custom user use, supporting following features:
+
+* PTransforms
+  * Impulse
+  * Create
+  * ParDo w/User DoFns
+    * Iterable Side Inputs
+    * Multiple Output emitters
+    * Receive and Return Key Value pairs
+    * EventTime
+    * SplittableDoFns
+  * GroupByKey and CoGroupByKey
+  * CombineFns for use with Combine and CombinePerKey
+  * Windowing
+    * Global, Fixed intervals, Sliding windows, and Session
+    * Aggregating over windowed PCollections w/GBKs or Combines.

Review comment:
       ```suggestion
       * Aggregating over windowed PCollections with GroupByKeys or Combines.
   ```

##########
File path: website/www/site/content/en/blog/go-sdk-release.md
##########
@@ -0,0 +1,163 @@
+---
+title:  "Go SDK Exits Experimental in Apache Beam 2.33.0"
+date:   2021-11-04 00:00:01 -0800
+categories:
+  - blog
+authors:
+  - lostluck
+---
+<!--
+Licensed 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.
+-->
+
+Apache Beam’s latest release, version [2.33.0](/get-started/downloads/), is the first official release of the long experimental Go SDK.
+Built with the [Go Programming Language](https://golang.org/), the Go SDK joins the Java and Python SDKs as the third implementation of the Beam programming model.
+
+<!--more-->
+
+## Using the new Go SDK.
+
+New users of the Go SDK can start using it in their Go programs by importing the main beam package:
+
+```
+import "github.com/apache/beam/sdks/v2/go/pkg/beam"
+```
+
+The next run of `go mod tidy` will fetch the latest stable version of the module.
+Alternatively executing `go get github.com/apache/beam/sdks/v2/go/pkg/beam` will download it to the local module cache immeadiately, and add it to your `go.mod` file.
+
+Existing users of the experimental Go SDK need to update to new `v2` import paths to start using the latest versions of the SDK.
+This is can be done by adding `v2` to the import paths, changing `github.com/apache/beam/sdks/go/`... to `github.com/apache/beam/sdks/v2/go/`... where applicable, and then running `go mod tidy`.
+
+Further documentation on using the SDK is available in the [Beam Programming Guide](/documentation/programming-guide/), and in the package Go Doc at https://pkg.go.dev/github.com/apache/beam/sdks/v2/go/pkg/beam.
+
+## Feature Support
+
+At time of writing, the Go SDK is currently "Batteries Not Included".
+This means that there are gaps or edge cases in supported IOs and transforms.
+That said, the core of the SDK enables a great deal of the Beam Model for
+custom user use, supporting following features:
+
+* PTransforms
+  * Impulse
+  * Create
+  * ParDo w/User DoFns
+    * Iterable Side Inputs
+    * Multiple Output emitters
+    * Receive and Return Key Value pairs
+    * EventTime
+    * SplittableDoFns
+  * GroupByKey and CoGroupByKey
+  * CombineFns for use with Combine and CombinePerKey
+  * Windowing
+    * Global, Fixed intervals, Sliding windows, and Session
+    * Aggregating over windowed PCollections w/GBKs or Combines.
+  * Flatten
+  * Partition
+  * Composites
+  * Cross Language Transforms
+* Coders
+  * Primitive Go types (ints, string, []bytes, and more)
+  * Beam Schemas for Go Struct types (including struct, slice, and map fields)
+  * Registering custom coders
+* Metrics
+  * PCollection metrics (ElementCount, Size Estimates)
+  * Custom User Metrics
+  * Post job user metrics querying (coming in 2.34.0)
+  * DoFn profiling metrics (coming in 2.35.0)
+* Provided Built Transforms
+  * Sum, Count, Min, Max, Top, Filter
+  * Scalable TextIO Reading
+
+Upcoming features support roadmap, and known issues are discussed below.
+In particular, we plan to support a much richer set of IO connectors via Beam's cross-language capabilities.
+
+## Releases
+
+With this release, the Go SDK now uses [Go Modules](https://golang.org/ref/mod) for dependency management.
+This makes it so users, SDK Devs, and the testing infrastructure can all rely on the same versions of dependencies, making builds reproducible.

Review comment:
       ```suggestion
   This makes it so users, SDK authors, and the testing infrastructure can all rely on the same versions of dependencies, making builds reproducible.
   ```

##########
File path: website/www/site/content/en/blog/go-sdk-release.md
##########
@@ -0,0 +1,163 @@
+---
+title:  "Go SDK Exits Experimental in Apache Beam 2.33.0"
+date:   2021-11-04 00:00:01 -0800
+categories:
+  - blog
+authors:
+  - lostluck
+---
+<!--
+Licensed 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.
+-->
+
+Apache Beam’s latest release, version [2.33.0](/get-started/downloads/), is the first official release of the long experimental Go SDK.
+Built with the [Go Programming Language](https://golang.org/), the Go SDK joins the Java and Python SDKs as the third implementation of the Beam programming model.
+
+<!--more-->
+
+## Using the new Go SDK.
+
+New users of the Go SDK can start using it in their Go programs by importing the main beam package:
+
+```
+import "github.com/apache/beam/sdks/v2/go/pkg/beam"
+```
+
+The next run of `go mod tidy` will fetch the latest stable version of the module.
+Alternatively executing `go get github.com/apache/beam/sdks/v2/go/pkg/beam` will download it to the local module cache immeadiately, and add it to your `go.mod` file.
+
+Existing users of the experimental Go SDK need to update to new `v2` import paths to start using the latest versions of the SDK.
+This is can be done by adding `v2` to the import paths, changing `github.com/apache/beam/sdks/go/`... to `github.com/apache/beam/sdks/v2/go/`... where applicable, and then running `go mod tidy`.
+
+Further documentation on using the SDK is available in the [Beam Programming Guide](/documentation/programming-guide/), and in the package Go Doc at https://pkg.go.dev/github.com/apache/beam/sdks/v2/go/pkg/beam.
+
+## Feature Support
+
+At time of writing, the Go SDK is currently "Batteries Not Included".
+This means that there are gaps or edge cases in supported IOs and transforms.
+That said, the core of the SDK enables a great deal of the Beam Model for
+custom user use, supporting following features:
+
+* PTransforms
+  * Impulse
+  * Create
+  * ParDo w/User DoFns
+    * Iterable Side Inputs
+    * Multiple Output emitters
+    * Receive and Return Key Value pairs
+    * EventTime
+    * SplittableDoFns
+  * GroupByKey and CoGroupByKey
+  * CombineFns for use with Combine and CombinePerKey
+  * Windowing
+    * Global, Fixed intervals, Sliding windows, and Session
+    * Aggregating over windowed PCollections w/GBKs or Combines.
+  * Flatten
+  * Partition
+  * Composites
+  * Cross Language Transforms
+* Coders
+  * Primitive Go types (ints, string, []bytes, and more)
+  * Beam Schemas for Go Struct types (including struct, slice, and map fields)
+  * Registering custom coders
+* Metrics
+  * PCollection metrics (ElementCount, Size Estimates)
+  * Custom User Metrics
+  * Post job user metrics querying (coming in 2.34.0)
+  * DoFn profiling metrics (coming in 2.35.0)
+* Provided Built Transforms
+  * Sum, Count, Min, Max, Top, Filter
+  * Scalable TextIO Reading
+
+Upcoming features support roadmap, and known issues are discussed below.
+In particular, we plan to support a much richer set of IO connectors via Beam's cross-language capabilities.
+
+## Releases
+
+With this release, the Go SDK now uses [Go Modules](https://golang.org/ref/mod) for dependency management.
+This makes it so users, SDK Devs, and the testing infrastructure can all rely on the same versions of dependencies, making builds reproducible.
+This also makes [validating Go SDK Release Candidates simple](/blog/validate-beam-release/#configuring-a-go-build-to-validate-a-beam-release-candidate).
+
+Versioned SDK worker containers are now built and [published](https://hub.docker.com/r/apache/beam_go_sdk/tags?page=1&ordering=last_updated), with the SDK using matched tagged versions.
+For released versions, user jobs no longer need to specify a container to use, except when using custom containers.

Review comment:
       ```suggestion
   User jobs no longer need to specify a container to use for released versions, except when using custom containers.
   ```

##########
File path: website/www/site/content/en/blog/go-sdk-release.md
##########
@@ -0,0 +1,163 @@
+---
+title:  "Go SDK Exits Experimental in Apache Beam 2.33.0"
+date:   2021-11-04 00:00:01 -0800
+categories:
+  - blog
+authors:
+  - lostluck
+---
+<!--
+Licensed 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.
+-->
+
+Apache Beam’s latest release, version [2.33.0](/get-started/downloads/), is the first official release of the long experimental Go SDK.
+Built with the [Go Programming Language](https://golang.org/), the Go SDK joins the Java and Python SDKs as the third implementation of the Beam programming model.
+
+<!--more-->
+
+## Using the new Go SDK.
+
+New users of the Go SDK can start using it in their Go programs by importing the main beam package:
+
+```
+import "github.com/apache/beam/sdks/v2/go/pkg/beam"
+```
+
+The next run of `go mod tidy` will fetch the latest stable version of the module.
+Alternatively executing `go get github.com/apache/beam/sdks/v2/go/pkg/beam` will download it to the local module cache immeadiately, and add it to your `go.mod` file.
+
+Existing users of the experimental Go SDK need to update to new `v2` import paths to start using the latest versions of the SDK.
+This is can be done by adding `v2` to the import paths, changing `github.com/apache/beam/sdks/go/`... to `github.com/apache/beam/sdks/v2/go/`... where applicable, and then running `go mod tidy`.
+
+Further documentation on using the SDK is available in the [Beam Programming Guide](/documentation/programming-guide/), and in the package Go Doc at https://pkg.go.dev/github.com/apache/beam/sdks/v2/go/pkg/beam.
+
+## Feature Support
+
+At time of writing, the Go SDK is currently "Batteries Not Included".
+This means that there are gaps or edge cases in supported IOs and transforms.
+That said, the core of the SDK enables a great deal of the Beam Model for
+custom user use, supporting following features:
+
+* PTransforms
+  * Impulse
+  * Create
+  * ParDo w/User DoFns
+    * Iterable Side Inputs
+    * Multiple Output emitters
+    * Receive and Return Key Value pairs
+    * EventTime
+    * SplittableDoFns
+  * GroupByKey and CoGroupByKey
+  * CombineFns for use with Combine and CombinePerKey
+  * Windowing
+    * Global, Fixed intervals, Sliding windows, and Session
+    * Aggregating over windowed PCollections w/GBKs or Combines.
+  * Flatten
+  * Partition
+  * Composites
+  * Cross Language Transforms
+* Coders
+  * Primitive Go types (ints, string, []bytes, and more)
+  * Beam Schemas for Go Struct types (including struct, slice, and map fields)
+  * Registering custom coders
+* Metrics
+  * PCollection metrics (ElementCount, Size Estimates)
+  * Custom User Metrics
+  * Post job user metrics querying (coming in 2.34.0)
+  * DoFn profiling metrics (coming in 2.35.0)
+* Provided Built Transforms
+  * Sum, Count, Min, Max, Top, Filter
+  * Scalable TextIO Reading
+
+Upcoming features support roadmap, and known issues are discussed below.
+In particular, we plan to support a much richer set of IO connectors via Beam's cross-language capabilities.
+
+## Releases
+
+With this release, the Go SDK now uses [Go Modules](https://golang.org/ref/mod) for dependency management.
+This makes it so users, SDK Devs, and the testing infrastructure can all rely on the same versions of dependencies, making builds reproducible.
+This also makes [validating Go SDK Release Candidates simple](/blog/validate-beam-release/#configuring-a-go-build-to-validate-a-beam-release-candidate).
+
+Versioned SDK worker containers are now built and [published](https://hub.docker.com/r/apache/beam_go_sdk/tags?page=1&ordering=last_updated), with the SDK using matched tagged versions.
+For released versions, user jobs no longer need to specify a container to use, except when using custom containers.
+
+## Compatibility
+
+The Go SDK will largely follow suit with the Go notion of compatibility.
+Some concessions are made to keep all SDKs together on the same release cycle.
+
+### Language Compatibility
+
+The SDK will be tested at a minimum [Go Programming Language version of 1.16](https://golang.org/doc/devel/release), and use available language features and standard library packages accordingly.
+To maintain a broad compatibility, the Go SDK will not require the latest major version of Go.
+We expect to follow the 2nd newest supported release of the language, with a possible exception when Go 1.18 is released, in order to begin experimenting with [Go Generics](https://go.dev/blog/generics-proposal) in the SDK.
+Release notes will call out when the minimum version of the language changes.
+
+### Package Compatibility
+
+The primary user packages will avoid changing in backwards incompatible ways for core features.
+This is to be inline with Go's notion of the [`import compatibility rule`](https://research.swtch.com/vgo-import).
+
+> If an old package and a new package have the same import path,
+> the new package must be backwards compatible with the old package.
+
+Exceptions to this policy are around newer, experimental, or in development features.
+These are subject to change.
+Such features will have a doc comment noting the experimental status, or be mentioned the change notes for a release.
+For example, using `beam.WindowInto` with Triggers is currently experimental and may have the api changed in a future release.
+
+Primary user packages include:
+* The main beam package `github.com/apache/beam/sdks/v2/go/pkg/beam`
+* Sub packages under `.../transforms`, `.../io`, `.../runners`, and `.../testing`.
+
+Generally, packages in the module other than the primary user packages are for framework use.
+They are at risk of changing, though at this point, large breaking changes are unlikely.

Review comment:
       ```suggestion
   Generally, packages in the module other than the primary user packages are for framework use and are at risk of changing.
   ```

##########
File path: website/www/site/content/en/blog/go-sdk-release.md
##########
@@ -0,0 +1,161 @@
+---
+title:  "Go SDK Exits Experimental in Apache Beam 2.33.0"
+date:   2021-11-04 00:00:01 -0800
+categories:
+  - blog
+authors:
+  - lostluck
+---
+<!--
+Licensed 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.
+-->
+
+Apache Beam’s latest release, version [2.33.0](/get-started/downloads/), is the first official release of the long experimental Go SDK.
+Built with the [Go Programming Language](https://golang.org/), the Go SDK joins the Java and Python SDKs as the third implementation of the Beam programming model.
+
+<!--more-->
+
+## Using the new Go SDK.
+
+New users of the Go SDK can start using it in their Go programs by importing the main beam package:
+
+```
+import "github.com/apache/beam/sdks/v2/go/pkg/beam"
+```
+
+The next run of `go mod tidy` will fetch the latest stable version of the module.
+Alternatively executing `go get github.com/apache/beam/sdks/v2/go/pkg/beam` will download it to the local module cache immeadiately, and add it to your `go.mod` file.
+
+Existing users of the experimental Go SDK need to update to new `v2` import paths to start using the latest versions of the SDK.
+This is can be done by adding `v2` to the import paths, changing `github.com/apache/beam/sdks/go/`... to `github.com/apache/beam/sdks/v2/go/`... where applicable, and then running `go mod tidy`.

Review comment:
       ```suggestion
   This can be done by adding `v2` to the import paths, changing `github.com/apache/beam/sdks/go/`... to `github.com/apache/beam/sdks/v2/go/`... where applicable, and then running `go mod tidy`.
   ```

##########
File path: website/www/site/content/en/blog/go-sdk-release.md
##########
@@ -0,0 +1,161 @@
+---
+title:  "Go SDK Exits Experimental in Apache Beam 2.33.0"
+date:   2021-11-04 00:00:01 -0800
+categories:
+  - blog
+authors:
+  - lostluck
+---
+<!--
+Licensed 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.
+-->
+
+Apache Beam’s latest release, version [2.33.0](/get-started/downloads/), is the first official release of the long experimental Go SDK.
+Built with the [Go Programming Language](https://golang.org/), the Go SDK joins the Java and Python SDKs as the third implementation of the Beam programming model.
+
+<!--more-->
+
+## Using the new Go SDK.
+
+New users of the Go SDK can start using it in their Go programs by importing the main beam package:
+
+```
+import "github.com/apache/beam/sdks/v2/go/pkg/beam"
+```
+
+The next run of `go mod tidy` will fetch the latest stable version of the module.
+Alternatively executing `go get github.com/apache/beam/sdks/v2/go/pkg/beam` will download it to the local module cache immeadiately, and add it to your `go.mod` file.
+
+Existing users of the experimental Go SDK need to update to new `v2` import paths to start using the latest versions of the SDK.
+This is can be done by adding `v2` to the import paths, changing `github.com/apache/beam/sdks/go/`... to `github.com/apache/beam/sdks/v2/go/`... where applicable, and then running `go mod tidy`.
+
+Further documentation on using the SDK is available in the [Beam Programming Guide](/documentation/programming-guide/), and in the package [Go Doc](https://pkg.go.dev/github.com/apache/beam/sdks/v2/go/pkg/beam).
+
+## Feature Support
+
+At time of writing, the Go SDK is currently "Batteries Not Included".
+This means that there are gaps or edge cases in supported IOs and transforms.
+That said, the core of the SDK enables a great deal of the Beam Model for
+custom user use, supporting following features:
+
+* PTransforms
+  * Impulse
+  * Create
+  * ParDo with user DoFns
+    * Iterable side inputs
+    * Multiple output emitters
+    * Receive and return key-value pairs
+    * SplittableDoFns
+  * GroupByKey and CoGroupByKey
+  * CombineFns for use with Combine and CombinePerKey
+  * Flatten
+  * Partition
+  * Composite transforms
+  * Cross language transforms
+* EventTime windowing
+  * Global, Fixed Interval, Sliding, and Session windows
+  * Aggregating over windowed PCollections with GroupByKeys or Combines.

Review comment:
       ```suggestion
     * Aggregating over windowed PCollections with GroupByKeys or Combines
   ```

##########
File path: website/www/site/content/en/roadmap/go-sdk.md
##########
@@ -17,55 +17,14 @@ limitations under the License.
 
 # Go SDK Roadmap
 
-The Go SDK is currently experimental. As the first purely portable Beam SDK, the Go SDK is constrained
-by the status of the [Beam Portability Framework](https://beam.apache.org/roadmap/portability/) and the existence of
-portable runners.
+The Go SDK is [fully released as of v2.33.0](/blog/go-sdk-release/).
 
-**April 2020 Update**
-This year we hope to move the SDK out of experimental at least for Batch usage.
+The Go SDK the first SDK purely on the [Beam Portability Framework](/roadmap/portability/)
+and can execute pipelines on portable runners, like Flink, Spark, Samza, and Google Cloud Dataflow.
 
-To do so, there are a few blocking changes:
-  * Support Interoperability with other SDKs
-  * Scalable IOs
-  * Portability Proto stability
-  * Go Ecosystem integration improvements
-
-Interoperability while not a blocking feature in itself, requires Beam Schema support, which
-the SDK could then use as it's default coder. Batch Splittable DoFns are nearly ready for
-playing with on Flink, and the Python Direct Runner, answering the scalable batch IO question.
-There's much work getting the portability protos to a stable baseline. This will allow runner
-and SDK independance, so they don't need to be updated in lockstep. Finally, the Go SDK should
-adopt Go Modules as it's versioning solution, and officially "catch up" with the current beam
-version.
-
-The Go SDK has the following goals for the next few months:
-
-## Usability
-
-* Beam Schema Support [BEAM-9615](https://issues.apache.org/jira/browse/BEAM-9615)
-* Improvements to starcgen [BEAM-9616](https://issues.apache.org/jira/browse/BEAM-9616)
-
-## Integrating with the Go ecosystem
-
-The authors of the Go SDK intended to keep the parts of the language we love, and intend for
-user pipelines to be as close to ordinary Go as possible, minimizing framework boiler plate code.
-
-* Migrate to a vanity URL path [BEAM-4115](https://issues.apache.org/jira/browse/BEAM-4115)
-* Package versioning support [BEAM-5379](https://issues.apache.org/jira/browse/BEAM-5379)
-
-## Implement Portability features
-
-The following are dependant on the features being implemented in the Portability Framework.
-
-* Splitable DoFns (SDFs) for Scalable IO [BEAM-3301](https://issues.apache.org/jira/browse/BEAM-3301)
-  * This is the primary blocker for the Go SDK to scale to ingest large numbers of elements in both batch and streaming.
-* Triggers and Timers [BEAM-3304](https://issues.apache.org/jira/browse/BEAM-3304)
-* Advanced WindowFns
-   * Session windows [BEAM-4152](https://issues.apache.org/jira/browse/BEAM-4152)
-   * Custom WindowFns (dependant on streaming Splitable DoFn support) [BEAM-2939](https://issues.apache.org/jira/browse/BEAM-2939)
-
-Without SDFs, IOs are always constrained to work on a single machine prior to a sharding operation (like CoGroupByKey),
-which makes scalable IOs difficult to impossible to write.
+Current roadmap:
+* continue building up Streaming facing features, as described on the [Beam Dev Wiki](https://cwiki.apache.org/confluence/display/BEAM/Supporting+Streaming+in+the+Go+SDK).
+* improve Connector support via Cross Language transforms, and improving scalable native transforms. [Go SDK Connector Roadmap](/roadmap/connectors-go-sdk/)

Review comment:
       ```suggestion
   * improve IO support via cross language transforms and improve scalable native transforms. [Go SDK Connector Roadmap](/roadmap/connectors-go-sdk/)
   ```

##########
File path: website/www/site/content/en/blog/go-sdk-release.md
##########
@@ -0,0 +1,161 @@
+---
+title:  "Go SDK Exits Experimental in Apache Beam 2.33.0"
+date:   2021-11-04 00:00:01 -0800
+categories:
+  - blog
+authors:
+  - lostluck
+---
+<!--
+Licensed 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.
+-->
+
+Apache Beam’s latest release, version [2.33.0](/get-started/downloads/), is the first official release of the long experimental Go SDK.
+Built with the [Go Programming Language](https://golang.org/), the Go SDK joins the Java and Python SDKs as the third implementation of the Beam programming model.
+
+<!--more-->
+
+## Using the new Go SDK.
+
+New users of the Go SDK can start using it in their Go programs by importing the main beam package:
+
+```
+import "github.com/apache/beam/sdks/v2/go/pkg/beam"
+```
+
+The next run of `go mod tidy` will fetch the latest stable version of the module.
+Alternatively executing `go get github.com/apache/beam/sdks/v2/go/pkg/beam` will download it to the local module cache immeadiately, and add it to your `go.mod` file.
+
+Existing users of the experimental Go SDK need to update to new `v2` import paths to start using the latest versions of the SDK.
+This is can be done by adding `v2` to the import paths, changing `github.com/apache/beam/sdks/go/`... to `github.com/apache/beam/sdks/v2/go/`... where applicable, and then running `go mod tidy`.
+
+Further documentation on using the SDK is available in the [Beam Programming Guide](/documentation/programming-guide/), and in the package [Go Doc](https://pkg.go.dev/github.com/apache/beam/sdks/v2/go/pkg/beam).
+
+## Feature Support
+
+At time of writing, the Go SDK is currently "Batteries Not Included".
+This means that there are gaps or edge cases in supported IOs and transforms.
+That said, the core of the SDK enables a great deal of the Beam Model for
+custom user use, supporting following features:
+
+* PTransforms
+  * Impulse
+  * Create
+  * ParDo with user DoFns
+    * Iterable side inputs
+    * Multiple output emitters
+    * Receive and return key-value pairs
+    * SplittableDoFns
+  * GroupByKey and CoGroupByKey
+  * CombineFns for use with Combine and CombinePerKey
+  * Flatten
+  * Partition
+  * Composite transforms
+  * Cross language transforms
+* EventTime windowing
+  * Global, Fixed Interval, Sliding, and Session windows
+  * Aggregating over windowed PCollections with GroupByKeys or Combines.
+* Coders
+  * Primitive Go types (ints, string, []bytes, and more)
+  * Beam Schemas for Go Struct types (including struct, slice, and map fields)
+  * Registering custom coders
+* Metrics
+  * PCollection metrics (element counts, size estimates)
+  * Custom user metrics
+  * Post job user metrics querying (coming in 2.34.0)
+  * DoFn profiling metrics (coming in 2.35.0)
+* Built-in transforms
+  * Sum, count, min, max, top, filter
+  * Scalable TextIO reading
+
+Upcoming features support roadmap, and known issues are discussed below.
+In particular, we plan to support a much richer set of IO connectors via Beam's cross-language capabilities.
+
+## Releases
+
+With this release, the Go SDK now uses [Go Modules](https://golang.org/ref/mod) for dependency management.
+This makes it so users, SDK authors, and the testing infrastructure can all rely on the same versions of dependencies, making builds reproducible.
+This also makes [validating Go SDK Release Candidates simple](/blog/validate-beam-release/#configuring-a-go-build-to-validate-a-beam-release-candidate).
+
+Versioned SDK worker containers are now built and [published](https://hub.docker.com/r/apache/beam_go_sdk/tags?page=1&ordering=last_updated), with the SDK using matched tagged versions.
+User jobs no longer need to specify a container to use for released versions, except when using custom containers.
+
+## Compatibility
+
+The Go SDK will largely follow suit with the Go notion of compatibility.
+Some concessions are made to keep all SDKs together on the same release cycle.
+
+### Language Compatibility
+
+The SDK will be tested at a minimum [Go Programming Language version of 1.16](https://golang.org/doc/devel/release), and use available language features and standard library packages accordingly.
+To maintain a broad compatibility, the Go SDK will not require the latest major version of Go.
+We expect to follow the 2nd newest supported release of the language, with a possible exception when Go 1.18 is released, in order to begin experimenting with [Go Generics](https://go.dev/blog/generics-proposal) in the SDK.
+Release notes will call out when the minimum version of the language changes.
+
+### Package Compatibility
+
+The primary user packages will avoid changing in backwards incompatible ways for core features.
+This is to be inline with Go's notion of the [`import compatibility rule`](https://research.swtch.com/vgo-import).
+
+> If an old package and a new package have the same import path,
+> the new package must be backwards compatible with the old package.
+
+Exceptions to this policy are around newer, experimental, or in development features and are subject to change.
+Such features will have a doc comment noting the experimental status.
+Major changes will be mentioned in the release notes.
+For example, using `beam.WindowInto` with Triggers is currently experimental and may have the API changed in a future release.
+
+Primary user packages include:
+* The main beam package `github.com/apache/beam/sdks/v2/go/pkg/beam`
+* Sub packages under `.../transforms`, `.../io`, `.../runners`, and `.../testing`.
+
+Generally, packages in the module other than the primary user packages are for framework use and are at risk of changing.
+
+### Known Issues
+
+#### Batteries not included.
+* Current native transforms are undertested.
+* IOs may not be written to scale.
+* Go Direct Runner is incomplete and is not portable, prefer using the Python Portable runner, or Flink.
+  * Doesn't support side input windowing. [BEAM-13075](https://issues.apache.org/jira/browse/BEAM-13075)
+  * Doesn't serialize data, making it unlikely to catch coder issues [BEAM-6372](https://issues.apache.org/jira/browse/BEAM-6372)
+  * Can use other general improvements, and become portable [BEAM-11076](https://issues.apache.org/jira/browse/BEAM-11076)
+* Current Trigger API is under iteration and subject to change [BEAM-3304](https://issues.apache.org/jira/browse/BEAM-3304).
+  * API has a possible breaking change between 2.33.0 and 2.34.0, and may change again.
+* Support of the SDK on services, like Google Cloud Dataflow, remains at the service owner's discretion.
+* Need something?
+  * File a ticket in the [Beam JIRA](https://issues.apache.org/jira/issues/?jql=project%20%3D%20BEAM%20AND%20component%20%3D%20sdk-go) and,
+  * Email the [dev@beam.apache.org](mailto:dev@beam.apache.org?subject=%5BGo%20SDK%20Feature%5D) list!
+
+#### Fixed in 2.34.0
+  * `top.SmallestPerKey` was broken [BEAM-12946](https://issues.apache.org/jira/browse/BEAM-12946)
+  * `beam.TryCrossLanguage` API didn't match non-Try version [BEAM-9918](https://issues.apache.org/jira/browse/BEAM-9918)
+    * This is a breaking change if one was calling `beam.TryCrossLanguage`
+
+#### Fixed in 2.35.0
+  * Non-global window Side Inputs don't match (correctness bug) [BEAM-11087](https://issues.apache.org/jira/browse/BEAM-11087)
+    * Until 2.35.0 it's not recommended to use Side Inputs that are not using the global window.
+  * DoFns using Side Inputs accumulate memory over bundles, causing OOMs [BEAM-13130](https://issues.apache.org/jira/browse/BEAM-13130)
+
+## Roadmap
+
+The [SDK roadmap](/roadmap/go-sdk/) has been updated.
+Ongoing focus is to bolster streaming focused features, improve existing connectors, and make connectors easier to implement.
+
+In the nearer term this comes in the form of improvements to Side Inputs, and providing wrappers and improving ease-of-use for Cross Language Transforms from Java.

Review comment:
       ```suggestion
   In the nearer term this comes in the form of improvements to side inputs, and providing wrappers and improving ease-of-use for cross language transforms from Java.
   ```

##########
File path: website/www/site/content/en/blog/go-sdk-release.md
##########
@@ -0,0 +1,161 @@
+---
+title:  "Go SDK Exits Experimental in Apache Beam 2.33.0"
+date:   2021-11-04 00:00:01 -0800
+categories:
+  - blog
+authors:
+  - lostluck
+---
+<!--
+Licensed 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.
+-->
+
+Apache Beam’s latest release, version [2.33.0](/get-started/downloads/), is the first official release of the long experimental Go SDK.
+Built with the [Go Programming Language](https://golang.org/), the Go SDK joins the Java and Python SDKs as the third implementation of the Beam programming model.
+
+<!--more-->
+
+## Using the new Go SDK.
+
+New users of the Go SDK can start using it in their Go programs by importing the main beam package:
+
+```
+import "github.com/apache/beam/sdks/v2/go/pkg/beam"
+```
+
+The next run of `go mod tidy` will fetch the latest stable version of the module.
+Alternatively executing `go get github.com/apache/beam/sdks/v2/go/pkg/beam` will download it to the local module cache immeadiately, and add it to your `go.mod` file.
+
+Existing users of the experimental Go SDK need to update to new `v2` import paths to start using the latest versions of the SDK.
+This is can be done by adding `v2` to the import paths, changing `github.com/apache/beam/sdks/go/`... to `github.com/apache/beam/sdks/v2/go/`... where applicable, and then running `go mod tidy`.
+
+Further documentation on using the SDK is available in the [Beam Programming Guide](/documentation/programming-guide/), and in the package [Go Doc](https://pkg.go.dev/github.com/apache/beam/sdks/v2/go/pkg/beam).
+
+## Feature Support
+
+At time of writing, the Go SDK is currently "Batteries Not Included".
+This means that there are gaps or edge cases in supported IOs and transforms.
+That said, the core of the SDK enables a great deal of the Beam Model for
+custom user use, supporting following features:
+
+* PTransforms
+  * Impulse
+  * Create
+  * ParDo with user DoFns
+    * Iterable side inputs
+    * Multiple output emitters
+    * Receive and return key-value pairs
+    * SplittableDoFns
+  * GroupByKey and CoGroupByKey
+  * CombineFns for use with Combine and CombinePerKey
+  * Flatten
+  * Partition
+  * Composite transforms
+  * Cross language transforms
+* EventTime windowing
+  * Global, Fixed Interval, Sliding, and Session windows
+  * Aggregating over windowed PCollections with GroupByKeys or Combines.
+* Coders
+  * Primitive Go types (ints, string, []bytes, and more)
+  * Beam Schemas for Go Struct types (including struct, slice, and map fields)
+  * Registering custom coders
+* Metrics
+  * PCollection metrics (element counts, size estimates)
+  * Custom user metrics
+  * Post job user metrics querying (coming in 2.34.0)
+  * DoFn profiling metrics (coming in 2.35.0)
+* Built-in transforms
+  * Sum, count, min, max, top, filter
+  * Scalable TextIO reading
+
+Upcoming features support roadmap, and known issues are discussed below.
+In particular, we plan to support a much richer set of IO connectors via Beam's cross-language capabilities.
+
+## Releases
+
+With this release, the Go SDK now uses [Go Modules](https://golang.org/ref/mod) for dependency management.
+This makes it so users, SDK authors, and the testing infrastructure can all rely on the same versions of dependencies, making builds reproducible.
+This also makes [validating Go SDK Release Candidates simple](/blog/validate-beam-release/#configuring-a-go-build-to-validate-a-beam-release-candidate).
+
+Versioned SDK worker containers are now built and [published](https://hub.docker.com/r/apache/beam_go_sdk/tags?page=1&ordering=last_updated), with the SDK using matched tagged versions.

Review comment:
       ```suggestion
   Versioned SDK worker containers are now built and [published](https://hub.docker.com/r/apache/beam_go_sdk/tags?page=1&ordering=last_updated), with the SDK using matching tagged versions.
   ```

##########
File path: website/www/site/content/en/blog/go-sdk-release.md
##########
@@ -0,0 +1,161 @@
+---
+title:  "Go SDK Exits Experimental in Apache Beam 2.33.0"
+date:   2021-11-04 00:00:01 -0800
+categories:
+  - blog
+authors:
+  - lostluck
+---
+<!--
+Licensed 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.
+-->
+
+Apache Beam’s latest release, version [2.33.0](/get-started/downloads/), is the first official release of the long experimental Go SDK.
+Built with the [Go Programming Language](https://golang.org/), the Go SDK joins the Java and Python SDKs as the third implementation of the Beam programming model.
+
+<!--more-->
+
+## Using the new Go SDK.
+
+New users of the Go SDK can start using it in their Go programs by importing the main beam package:
+
+```
+import "github.com/apache/beam/sdks/v2/go/pkg/beam"
+```
+
+The next run of `go mod tidy` will fetch the latest stable version of the module.
+Alternatively executing `go get github.com/apache/beam/sdks/v2/go/pkg/beam` will download it to the local module cache immeadiately, and add it to your `go.mod` file.
+
+Existing users of the experimental Go SDK need to update to new `v2` import paths to start using the latest versions of the SDK.
+This is can be done by adding `v2` to the import paths, changing `github.com/apache/beam/sdks/go/`... to `github.com/apache/beam/sdks/v2/go/`... where applicable, and then running `go mod tidy`.
+
+Further documentation on using the SDK is available in the [Beam Programming Guide](/documentation/programming-guide/), and in the package [Go Doc](https://pkg.go.dev/github.com/apache/beam/sdks/v2/go/pkg/beam).
+
+## Feature Support
+
+At time of writing, the Go SDK is currently "Batteries Not Included".
+This means that there are gaps or edge cases in supported IOs and transforms.
+That said, the core of the SDK enables a great deal of the Beam Model for
+custom user use, supporting following features:
+
+* PTransforms
+  * Impulse
+  * Create
+  * ParDo with user DoFns
+    * Iterable side inputs
+    * Multiple output emitters
+    * Receive and return key-value pairs
+    * SplittableDoFns
+  * GroupByKey and CoGroupByKey
+  * CombineFns for use with Combine and CombinePerKey
+  * Flatten
+  * Partition
+  * Composite transforms
+  * Cross language transforms
+* EventTime windowing
+  * Global, Fixed Interval, Sliding, and Session windows

Review comment:
       ```suggestion
     * Global, Interval, Sliding, and Session windows
   ```

##########
File path: website/www/site/content/en/blog/go-sdk-release.md
##########
@@ -0,0 +1,161 @@
+---
+title:  "Go SDK Exits Experimental in Apache Beam 2.33.0"
+date:   2021-11-04 00:00:01 -0800
+categories:
+  - blog
+authors:
+  - lostluck
+---
+<!--
+Licensed 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.
+-->
+
+Apache Beam’s latest release, version [2.33.0](/get-started/downloads/), is the first official release of the long experimental Go SDK.
+Built with the [Go Programming Language](https://golang.org/), the Go SDK joins the Java and Python SDKs as the third implementation of the Beam programming model.
+
+<!--more-->
+
+## Using the new Go SDK.
+
+New users of the Go SDK can start using it in their Go programs by importing the main beam package:
+
+```
+import "github.com/apache/beam/sdks/v2/go/pkg/beam"
+```
+
+The next run of `go mod tidy` will fetch the latest stable version of the module.
+Alternatively executing `go get github.com/apache/beam/sdks/v2/go/pkg/beam` will download it to the local module cache immeadiately, and add it to your `go.mod` file.
+
+Existing users of the experimental Go SDK need to update to new `v2` import paths to start using the latest versions of the SDK.
+This is can be done by adding `v2` to the import paths, changing `github.com/apache/beam/sdks/go/`... to `github.com/apache/beam/sdks/v2/go/`... where applicable, and then running `go mod tidy`.
+
+Further documentation on using the SDK is available in the [Beam Programming Guide](/documentation/programming-guide/), and in the package [Go Doc](https://pkg.go.dev/github.com/apache/beam/sdks/v2/go/pkg/beam).
+
+## Feature Support
+
+At time of writing, the Go SDK is currently "Batteries Not Included".
+This means that there are gaps or edge cases in supported IOs and transforms.
+That said, the core of the SDK enables a great deal of the Beam Model for
+custom user use, supporting following features:
+
+* PTransforms
+  * Impulse
+  * Create
+  * ParDo with user DoFns
+    * Iterable side inputs
+    * Multiple output emitters
+    * Receive and return key-value pairs
+    * SplittableDoFns
+  * GroupByKey and CoGroupByKey
+  * CombineFns for use with Combine and CombinePerKey
+  * Flatten
+  * Partition
+  * Composite transforms
+  * Cross language transforms
+* EventTime windowing
+  * Global, Fixed Interval, Sliding, and Session windows
+  * Aggregating over windowed PCollections with GroupByKeys or Combines.
+* Coders
+  * Primitive Go types (ints, string, []bytes, and more)
+  * Beam Schemas for Go Struct types (including struct, slice, and map fields)
+  * Registering custom coders
+* Metrics
+  * PCollection metrics (element counts, size estimates)
+  * Custom user metrics
+  * Post job user metrics querying (coming in 2.34.0)
+  * DoFn profiling metrics (coming in 2.35.0)
+* Built-in transforms
+  * Sum, count, min, max, top, filter
+  * Scalable TextIO reading
+
+Upcoming features support roadmap, and known issues are discussed below.
+In particular, we plan to support a much richer set of IO connectors via Beam's cross-language capabilities.
+
+## Releases
+
+With this release, the Go SDK now uses [Go Modules](https://golang.org/ref/mod) for dependency management.
+This makes it so users, SDK authors, and the testing infrastructure can all rely on the same versions of dependencies, making builds reproducible.
+This also makes [validating Go SDK Release Candidates simple](/blog/validate-beam-release/#configuring-a-go-build-to-validate-a-beam-release-candidate).
+
+Versioned SDK worker containers are now built and [published](https://hub.docker.com/r/apache/beam_go_sdk/tags?page=1&ordering=last_updated), with the SDK using matched tagged versions.
+User jobs no longer need to specify a container to use for released versions, except when using custom containers.
+
+## Compatibility
+
+The Go SDK will largely follow suit with the Go notion of compatibility.
+Some concessions are made to keep all SDKs together on the same release cycle.
+
+### Language Compatibility
+
+The SDK will be tested at a minimum [Go Programming Language version of 1.16](https://golang.org/doc/devel/release), and use available language features and standard library packages accordingly.
+To maintain a broad compatibility, the Go SDK will not require the latest major version of Go.
+We expect to follow the 2nd newest supported release of the language, with a possible exception when Go 1.18 is released, in order to begin experimenting with [Go Generics](https://go.dev/blog/generics-proposal) in the SDK.
+Release notes will call out when the minimum version of the language changes.
+
+### Package Compatibility
+
+The primary user packages will avoid changing in backwards incompatible ways for core features.
+This is to be inline with Go's notion of the [`import compatibility rule`](https://research.swtch.com/vgo-import).
+
+> If an old package and a new package have the same import path,
+> the new package must be backwards compatible with the old package.
+
+Exceptions to this policy are around newer, experimental, or in development features and are subject to change.
+Such features will have a doc comment noting the experimental status.
+Major changes will be mentioned in the release notes.
+For example, using `beam.WindowInto` with Triggers is currently experimental and may have the API changed in a future release.
+
+Primary user packages include:
+* The main beam package `github.com/apache/beam/sdks/v2/go/pkg/beam`
+* Sub packages under `.../transforms`, `.../io`, `.../runners`, and `.../testing`.
+
+Generally, packages in the module other than the primary user packages are for framework use and are at risk of changing.
+
+### Known Issues
+
+#### Batteries not included.
+* Current native transforms are undertested.
+* IOs may not be written to scale.
+* Go Direct Runner is incomplete and is not portable, prefer using the Python Portable runner, or Flink.
+  * Doesn't support side input windowing. [BEAM-13075](https://issues.apache.org/jira/browse/BEAM-13075)
+  * Doesn't serialize data, making it unlikely to catch coder issues [BEAM-6372](https://issues.apache.org/jira/browse/BEAM-6372)
+  * Can use other general improvements, and become portable [BEAM-11076](https://issues.apache.org/jira/browse/BEAM-11076)
+* Current Trigger API is under iteration and subject to change [BEAM-3304](https://issues.apache.org/jira/browse/BEAM-3304).
+  * API has a possible breaking change between 2.33.0 and 2.34.0, and may change again.
+* Support of the SDK on services, like Google Cloud Dataflow, remains at the service owner's discretion.
+* Need something?
+  * File a ticket in the [Beam JIRA](https://issues.apache.org/jira/issues/?jql=project%20%3D%20BEAM%20AND%20component%20%3D%20sdk-go) and,
+  * Email the [dev@beam.apache.org](mailto:dev@beam.apache.org?subject=%5BGo%20SDK%20Feature%5D) list!
+
+#### Fixed in 2.34.0
+  * `top.SmallestPerKey` was broken [BEAM-12946](https://issues.apache.org/jira/browse/BEAM-12946)
+  * `beam.TryCrossLanguage` API didn't match non-Try version [BEAM-9918](https://issues.apache.org/jira/browse/BEAM-9918)
+    * This is a breaking change if one was calling `beam.TryCrossLanguage`
+
+#### Fixed in 2.35.0
+  * Non-global window Side Inputs don't match (correctness bug) [BEAM-11087](https://issues.apache.org/jira/browse/BEAM-11087)
+    * Until 2.35.0 it's not recommended to use Side Inputs that are not using the global window.
+  * DoFns using Side Inputs accumulate memory over bundles, causing OOMs [BEAM-13130](https://issues.apache.org/jira/browse/BEAM-13130)

Review comment:
       ```suggestion
     * Non-global window side inputs don't match (correctness bug) [BEAM-11087](https://issues.apache.org/jira/browse/BEAM-11087)
       * Until 2.35.0 it's not recommended to use side inputs that are not using the global window.
     * DoFns using side inputs accumulate memory over bundles, causing out of memory issues [BEAM-13130](https://issues.apache.org/jira/browse/BEAM-13130)
   ```

##########
File path: website/www/site/content/en/blog/go-sdk-release.md
##########
@@ -0,0 +1,161 @@
+---
+title:  "Go SDK Exits Experimental in Apache Beam 2.33.0"
+date:   2021-11-04 00:00:01 -0800
+categories:
+  - blog
+authors:
+  - lostluck
+---
+<!--
+Licensed 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.
+-->
+
+Apache Beam’s latest release, version [2.33.0](/get-started/downloads/), is the first official release of the long experimental Go SDK.
+Built with the [Go Programming Language](https://golang.org/), the Go SDK joins the Java and Python SDKs as the third implementation of the Beam programming model.
+
+<!--more-->
+
+## Using the new Go SDK.
+
+New users of the Go SDK can start using it in their Go programs by importing the main beam package:
+
+```
+import "github.com/apache/beam/sdks/v2/go/pkg/beam"
+```
+
+The next run of `go mod tidy` will fetch the latest stable version of the module.
+Alternatively executing `go get github.com/apache/beam/sdks/v2/go/pkg/beam` will download it to the local module cache immeadiately, and add it to your `go.mod` file.
+
+Existing users of the experimental Go SDK need to update to new `v2` import paths to start using the latest versions of the SDK.
+This is can be done by adding `v2` to the import paths, changing `github.com/apache/beam/sdks/go/`... to `github.com/apache/beam/sdks/v2/go/`... where applicable, and then running `go mod tidy`.
+
+Further documentation on using the SDK is available in the [Beam Programming Guide](/documentation/programming-guide/), and in the package [Go Doc](https://pkg.go.dev/github.com/apache/beam/sdks/v2/go/pkg/beam).
+
+## Feature Support
+
+At time of writing, the Go SDK is currently "Batteries Not Included".
+This means that there are gaps or edge cases in supported IOs and transforms.
+That said, the core of the SDK enables a great deal of the Beam Model for
+custom user use, supporting following features:
+
+* PTransforms
+  * Impulse
+  * Create
+  * ParDo with user DoFns
+    * Iterable side inputs
+    * Multiple output emitters
+    * Receive and return key-value pairs
+    * SplittableDoFns
+  * GroupByKey and CoGroupByKey
+  * CombineFns for use with Combine and CombinePerKey
+  * Flatten
+  * Partition
+  * Composite transforms
+  * Cross language transforms
+* EventTime windowing

Review comment:
       Is EventTime a special class in the Beam Go SDK, it not then lets go with:
   ```suggestion
   * Event time windowing
   ```

##########
File path: website/www/site/content/en/blog/go-sdk-release.md
##########
@@ -0,0 +1,161 @@
+---
+title:  "Go SDK Exits Experimental in Apache Beam 2.33.0"
+date:   2021-11-04 00:00:01 -0800
+categories:
+  - blog
+authors:
+  - lostluck
+---
+<!--
+Licensed 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.
+-->
+
+Apache Beam’s latest release, version [2.33.0](/get-started/downloads/), is the first official release of the long experimental Go SDK.
+Built with the [Go Programming Language](https://golang.org/), the Go SDK joins the Java and Python SDKs as the third implementation of the Beam programming model.
+
+<!--more-->
+
+## Using the new Go SDK.
+
+New users of the Go SDK can start using it in their Go programs by importing the main beam package:
+
+```
+import "github.com/apache/beam/sdks/v2/go/pkg/beam"
+```
+
+The next run of `go mod tidy` will fetch the latest stable version of the module.
+Alternatively executing `go get github.com/apache/beam/sdks/v2/go/pkg/beam` will download it to the local module cache immeadiately, and add it to your `go.mod` file.
+
+Existing users of the experimental Go SDK need to update to new `v2` import paths to start using the latest versions of the SDK.
+This is can be done by adding `v2` to the import paths, changing `github.com/apache/beam/sdks/go/`... to `github.com/apache/beam/sdks/v2/go/`... where applicable, and then running `go mod tidy`.
+
+Further documentation on using the SDK is available in the [Beam Programming Guide](/documentation/programming-guide/), and in the package [Go Doc](https://pkg.go.dev/github.com/apache/beam/sdks/v2/go/pkg/beam).
+
+## Feature Support
+
+At time of writing, the Go SDK is currently "Batteries Not Included".
+This means that there are gaps or edge cases in supported IOs and transforms.
+That said, the core of the SDK enables a great deal of the Beam Model for
+custom user use, supporting following features:
+
+* PTransforms
+  * Impulse
+  * Create
+  * ParDo with user DoFns
+    * Iterable side inputs
+    * Multiple output emitters
+    * Receive and return key-value pairs
+    * SplittableDoFns
+  * GroupByKey and CoGroupByKey
+  * CombineFns for use with Combine and CombinePerKey
+  * Flatten
+  * Partition
+  * Composite transforms
+  * Cross language transforms
+* EventTime windowing
+  * Global, Fixed Interval, Sliding, and Session windows
+  * Aggregating over windowed PCollections with GroupByKeys or Combines.
+* Coders
+  * Primitive Go types (ints, string, []bytes, and more)
+  * Beam Schemas for Go Struct types (including struct, slice, and map fields)
+  * Registering custom coders
+* Metrics
+  * PCollection metrics (element counts, size estimates)
+  * Custom user metrics
+  * Post job user metrics querying (coming in 2.34.0)
+  * DoFn profiling metrics (coming in 2.35.0)
+* Built-in transforms
+  * Sum, count, min, max, top, filter
+  * Scalable TextIO reading
+
+Upcoming features support roadmap, and known issues are discussed below.
+In particular, we plan to support a much richer set of IO connectors via Beam's cross-language capabilities.
+
+## Releases
+
+With this release, the Go SDK now uses [Go Modules](https://golang.org/ref/mod) for dependency management.
+This makes it so users, SDK authors, and the testing infrastructure can all rely on the same versions of dependencies, making builds reproducible.
+This also makes [validating Go SDK Release Candidates simple](/blog/validate-beam-release/#configuring-a-go-build-to-validate-a-beam-release-candidate).
+
+Versioned SDK worker containers are now built and [published](https://hub.docker.com/r/apache/beam_go_sdk/tags?page=1&ordering=last_updated), with the SDK using matched tagged versions.
+User jobs no longer need to specify a container to use for released versions, except when using custom containers.
+
+## Compatibility
+
+The Go SDK will largely follow suit with the Go notion of compatibility.
+Some concessions are made to keep all SDKs together on the same release cycle.
+
+### Language Compatibility
+
+The SDK will be tested at a minimum [Go Programming Language version of 1.16](https://golang.org/doc/devel/release), and use available language features and standard library packages accordingly.
+To maintain a broad compatibility, the Go SDK will not require the latest major version of Go.
+We expect to follow the 2nd newest supported release of the language, with a possible exception when Go 1.18 is released, in order to begin experimenting with [Go Generics](https://go.dev/blog/generics-proposal) in the SDK.
+Release notes will call out when the minimum version of the language changes.
+
+### Package Compatibility
+
+The primary user packages will avoid changing in backwards incompatible ways for core features.
+This is to be inline with Go's notion of the [`import compatibility rule`](https://research.swtch.com/vgo-import).
+
+> If an old package and a new package have the same import path,
+> the new package must be backwards compatible with the old package.
+
+Exceptions to this policy are around newer, experimental, or in development features and are subject to change.
+Such features will have a doc comment noting the experimental status.
+Major changes will be mentioned in the release notes.
+For example, using `beam.WindowInto` with Triggers is currently experimental and may have the API changed in a future release.
+
+Primary user packages include:
+* The main beam package `github.com/apache/beam/sdks/v2/go/pkg/beam`
+* Sub packages under `.../transforms`, `.../io`, `.../runners`, and `.../testing`.
+
+Generally, packages in the module other than the primary user packages are for framework use and are at risk of changing.
+
+### Known Issues
+
+#### Batteries not included.
+* Current native transforms are undertested.
+* IOs may not be written to scale.
+* Go Direct Runner is incomplete and is not portable, prefer using the Python Portable runner, or Flink.
+  * Doesn't support side input windowing. [BEAM-13075](https://issues.apache.org/jira/browse/BEAM-13075)
+  * Doesn't serialize data, making it unlikely to catch coder issues [BEAM-6372](https://issues.apache.org/jira/browse/BEAM-6372)
+  * Can use other general improvements, and become portable [BEAM-11076](https://issues.apache.org/jira/browse/BEAM-11076)
+* Current Trigger API is under iteration and subject to change [BEAM-3304](https://issues.apache.org/jira/browse/BEAM-3304).
+  * API has a possible breaking change between 2.33.0 and 2.34.0, and may change again.
+* Support of the SDK on services, like Google Cloud Dataflow, remains at the service owner's discretion.
+* Need something?
+  * File a ticket in the [Beam JIRA](https://issues.apache.org/jira/issues/?jql=project%20%3D%20BEAM%20AND%20component%20%3D%20sdk-go) and,
+  * Email the [dev@beam.apache.org](mailto:dev@beam.apache.org?subject=%5BGo%20SDK%20Feature%5D) list!

Review comment:
       Consider having consistent `.` usage.
   
   Not sure how best to insert it when there is a JIRA tag, might be simplest to not have any as I have suggested below:
   ```suggestion
   * Current native transforms are undertested
   * IOs may not be written to scale
   * Go Direct Runner is incomplete and is not portable, prefer using the Python Portable runner, or Flink
     * Doesn't support side input windowing [BEAM-13075](https://issues.apache.org/jira/browse/BEAM-13075)
     * Doesn't serialize data, making it unlikely to catch coder issues [BEAM-6372](https://issues.apache.org/jira/browse/BEAM-6372)
     * Can use other general improvements, and become portable [BEAM-11076](https://issues.apache.org/jira/browse/BEAM-11076)
   * Current Trigger API is under iteration and subject to change [BEAM-3304](https://issues.apache.org/jira/browse/BEAM-3304).
     * API has a possible breaking change between 2.33.0 and 2.34.0, and may change again
   * Support of the SDK on services, like Google Cloud Dataflow, remains at the service owner's discretion
   * Need something?
     * File a ticket in the [Beam JIRA](https://issues.apache.org/jira/issues/?jql=project%20%3D%20BEAM%20AND%20component%20%3D%20sdk-go) and,
     * Email the [dev@beam.apache.org](mailto:dev@beam.apache.org?subject=%5BGo%20SDK%20Feature%5D) list!
   ```

##########
File path: website/www/site/content/en/roadmap/connectors-go-sdk.md
##########
@@ -17,9 +17,11 @@ limitations under the License.
 
 Roadmap for connectors developed using Go SDK.
 
-* We hope to add a Splittable DoFn implementation to Go SDK to support developing new sources. In the
-meantime bounded sources can be developed in the form of ParDos. See
-[Authoring I/O Transforms](https://beam.apache.org/documentation/io/authoring-overview/) for more details.
-
 * Go SDK plans to utilize currently available Java and Python connectors
 through cross-language transforms feature.
+  * KafkaIO via Java - DONE
+  * BigQuery via Java - In Progress
+  * Beam SQL via Java
+* The Go SDK supports SplittableDoFns for Batch, so scalable batch transforms are possible.

Review comment:
       ```suggestion
   * The Go SDK supports SplittableDoFns for bounded pipelines, so scalable bounded pipelines are possible.
   ```

##########
File path: website/www/site/content/en/roadmap/go-sdk.md
##########
@@ -17,55 +17,14 @@ limitations under the License.
 
 # Go SDK Roadmap
 
-The Go SDK is currently experimental. As the first purely portable Beam SDK, the Go SDK is constrained
-by the status of the [Beam Portability Framework](https://beam.apache.org/roadmap/portability/) and the existence of
-portable runners.
+The Go SDK is [fully released as of v2.33.0](/blog/go-sdk-release/).
 
-**April 2020 Update**
-This year we hope to move the SDK out of experimental at least for Batch usage.
+The Go SDK the first SDK purely on the [Beam Portability Framework](/roadmap/portability/)
+and can execute pipelines on portable runners, like Flink, Spark, Samza, and Google Cloud Dataflow.
 
-To do so, there are a few blocking changes:
-  * Support Interoperability with other SDKs
-  * Scalable IOs
-  * Portability Proto stability
-  * Go Ecosystem integration improvements
-
-Interoperability while not a blocking feature in itself, requires Beam Schema support, which
-the SDK could then use as it's default coder. Batch Splittable DoFns are nearly ready for
-playing with on Flink, and the Python Direct Runner, answering the scalable batch IO question.
-There's much work getting the portability protos to a stable baseline. This will allow runner
-and SDK independance, so they don't need to be updated in lockstep. Finally, the Go SDK should
-adopt Go Modules as it's versioning solution, and officially "catch up" with the current beam
-version.
-
-The Go SDK has the following goals for the next few months:
-
-## Usability
-
-* Beam Schema Support [BEAM-9615](https://issues.apache.org/jira/browse/BEAM-9615)
-* Improvements to starcgen [BEAM-9616](https://issues.apache.org/jira/browse/BEAM-9616)
-
-## Integrating with the Go ecosystem
-
-The authors of the Go SDK intended to keep the parts of the language we love, and intend for
-user pipelines to be as close to ordinary Go as possible, minimizing framework boiler plate code.
-
-* Migrate to a vanity URL path [BEAM-4115](https://issues.apache.org/jira/browse/BEAM-4115)
-* Package versioning support [BEAM-5379](https://issues.apache.org/jira/browse/BEAM-5379)
-
-## Implement Portability features
-
-The following are dependant on the features being implemented in the Portability Framework.
-
-* Splitable DoFns (SDFs) for Scalable IO [BEAM-3301](https://issues.apache.org/jira/browse/BEAM-3301)
-  * This is the primary blocker for the Go SDK to scale to ingest large numbers of elements in both batch and streaming.
-* Triggers and Timers [BEAM-3304](https://issues.apache.org/jira/browse/BEAM-3304)
-* Advanced WindowFns
-   * Session windows [BEAM-4152](https://issues.apache.org/jira/browse/BEAM-4152)
-   * Custom WindowFns (dependant on streaming Splitable DoFn support) [BEAM-2939](https://issues.apache.org/jira/browse/BEAM-2939)
-
-Without SDFs, IOs are always constrained to work on a single machine prior to a sharding operation (like CoGroupByKey),
-which makes scalable IOs difficult to impossible to write.
+Current roadmap:
+* continue building up Streaming facing features, as described on the [Beam Dev Wiki](https://cwiki.apache.org/confluence/display/BEAM/Supporting+Streaming+in+the+Go+SDK).

Review comment:
       ```suggestion
   * continue building up unbounded pipeline facing features, as described on the [Beam Dev Wiki](https://cwiki.apache.org/confluence/display/BEAM/Supporting+Streaming+in+the+Go+SDK).
   ```




-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: github-unsubscribe@beam.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



[GitHub] [beam] robertwb commented on a change in pull request #15894: [Go SDK] Go SDK Exits Experimental

Posted by GitBox <gi...@apache.org>.
robertwb commented on a change in pull request #15894:
URL: https://github.com/apache/beam/pull/15894#discussion_r743116146



##########
File path: website/www/site/content/en/blog/go-sdk-release.md
##########
@@ -0,0 +1,151 @@
+---
+title:  "Go SDK Exits Experimental in Apache Beam 2.34.0"
+date:   2021-11-05 00:00:01 -0800
+categories:
+  - blog
+authors:
+  - lostluck
+---
+<!--
+Licensed 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.
+-->
+
+Apache Beam’s latest release, version [2.34.0](/get-started/downloads/), is the first official release of the long experimental Go SDK.
+Built with the [Go Programming Language](https://golang.org/), the Go SDK joins the Java and Python SDKs as the third implementation of the Beam programming model.
+
+<!--more-->
+
+## Using the new Go SDK.
+
+New users of the Go SDK can start using it in their Go programs by importing the main beam package:
+
+```
+import "github.com/apache/beam/sdks/v2/go/pkg/beam"
+```
+
+The next run of `go mod tidy` will fetch the latest stable version of the module.
+Alternatively executing `go get github.com/apache/beam/sdks/v2/go/pkg/beam` will download it to the local module cache immeadiately, and add it to your `go.mod` file.
+
+Existing users of the experimental Go SDK need to update to new `v2` import paths to start using the latest versions of the SDK.
+This is can be done by adding `v2` to the import paths, changing `github.com/apache/beam/sdks/go/`... to `github.com/apache/beam/sdks/v2/go/`... where applicable, and then running `go mod tidy`.
+
+Further documentation on using the SDK is available in the [Beam Programming Guide](/documentation/programming-guide/), and in the package Go Doc at https://pkg.go.dev/github.com/apache/beam/sdks/v2/go/pkg/beam.
+
+## Feature Support
+
+At time of writing, the Go SDK is currently "Batteries Not Included".
+This means that there are gaps or edge cases in supported IOs and transforms.
+That said, the core of the SDK enables a great deal of the Beam Model for
+custom user use, supporting following features:
+
+* PTransforms
+  * Impulse
+  * Create
+  * ParDo w/User DoFns
+    * Iterable Side Inputs
+    * Multiple Output emitters
+    * Receive and Return Key Value pairs
+    * EventTime
+    * SplittableDoFns
+  * GroupByKey and CoGroupByKey
+  * CombineFns for use with Combine and CombinePerKey
+  * Windowing
+    * Global, Fixed intervals, Sliding windows, and Session
+    * Aggregating over windowed PCollections w/GBKs or Combines.
+  * Flatten
+  * Partition
+  * Composites
+  * Cross Language Transforms
+* Coders
+  * Primitive Go types (ints, string, []bytes, and more)
+  * Beam Schemas for Go Struct types (including struct, slice, and map fields)
+  * Registering custom coders
+* Metrics
+  * PCollection metrics (ElementCount, Size Estimates)
+  * Custom User Metrics
+  * DoFn profiling metrics (coming in 2.35.0)
+* Provided Built Transforms
+  * Sum, Count, Min, Max, Top, Filter
+  * Scalable TextIO Reading
+
+Upcoming features support roadmap, and known issues are discussed below.

Review comment:
       I know it's discussed below, but I would say something like "in particular, we plan to support a much richer set of IO connectes via Beam's cross-language capabilities."




-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: github-unsubscribe@beam.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



[GitHub] [beam] robertwb commented on a change in pull request #15894: [Go SDK] Go SDK Exits Experimental

Posted by GitBox <gi...@apache.org>.
robertwb commented on a change in pull request #15894:
URL: https://github.com/apache/beam/pull/15894#discussion_r743116146



##########
File path: website/www/site/content/en/blog/go-sdk-release.md
##########
@@ -0,0 +1,151 @@
+---
+title:  "Go SDK Exits Experimental in Apache Beam 2.34.0"
+date:   2021-11-05 00:00:01 -0800
+categories:
+  - blog
+authors:
+  - lostluck
+---
+<!--
+Licensed 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.
+-->
+
+Apache Beam’s latest release, version [2.34.0](/get-started/downloads/), is the first official release of the long experimental Go SDK.
+Built with the [Go Programming Language](https://golang.org/), the Go SDK joins the Java and Python SDKs as the third implementation of the Beam programming model.
+
+<!--more-->
+
+## Using the new Go SDK.
+
+New users of the Go SDK can start using it in their Go programs by importing the main beam package:
+
+```
+import "github.com/apache/beam/sdks/v2/go/pkg/beam"
+```
+
+The next run of `go mod tidy` will fetch the latest stable version of the module.
+Alternatively executing `go get github.com/apache/beam/sdks/v2/go/pkg/beam` will download it to the local module cache immeadiately, and add it to your `go.mod` file.
+
+Existing users of the experimental Go SDK need to update to new `v2` import paths to start using the latest versions of the SDK.
+This is can be done by adding `v2` to the import paths, changing `github.com/apache/beam/sdks/go/`... to `github.com/apache/beam/sdks/v2/go/`... where applicable, and then running `go mod tidy`.
+
+Further documentation on using the SDK is available in the [Beam Programming Guide](/documentation/programming-guide/), and in the package Go Doc at https://pkg.go.dev/github.com/apache/beam/sdks/v2/go/pkg/beam.
+
+## Feature Support
+
+At time of writing, the Go SDK is currently "Batteries Not Included".
+This means that there are gaps or edge cases in supported IOs and transforms.
+That said, the core of the SDK enables a great deal of the Beam Model for
+custom user use, supporting following features:
+
+* PTransforms
+  * Impulse
+  * Create
+  * ParDo w/User DoFns
+    * Iterable Side Inputs
+    * Multiple Output emitters
+    * Receive and Return Key Value pairs
+    * EventTime
+    * SplittableDoFns
+  * GroupByKey and CoGroupByKey
+  * CombineFns for use with Combine and CombinePerKey
+  * Windowing
+    * Global, Fixed intervals, Sliding windows, and Session
+    * Aggregating over windowed PCollections w/GBKs or Combines.
+  * Flatten
+  * Partition
+  * Composites
+  * Cross Language Transforms
+* Coders
+  * Primitive Go types (ints, string, []bytes, and more)
+  * Beam Schemas for Go Struct types (including struct, slice, and map fields)
+  * Registering custom coders
+* Metrics
+  * PCollection metrics (ElementCount, Size Estimates)
+  * Custom User Metrics
+  * DoFn profiling metrics (coming in 2.35.0)
+* Provided Built Transforms
+  * Sum, Count, Min, Max, Top, Filter
+  * Scalable TextIO Reading
+
+Upcoming features support roadmap, and known issues are discussed below.

Review comment:
       I know it's discussed below, but I would say something like "in particular, we plan to support a much richer set of IO connectes via Beam's cross-language capabilities."




-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: github-unsubscribe@beam.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



[GitHub] [beam] apilloud commented on a change in pull request #15894: [Go SDK] Go SDK Exits Experimental

Posted by GitBox <gi...@apache.org>.
apilloud commented on a change in pull request #15894:
URL: https://github.com/apache/beam/pull/15894#discussion_r743098698



##########
File path: website/www/site/content/en/roadmap/go-sdk.md
##########
@@ -17,55 +17,14 @@ limitations under the License.
 
 # Go SDK Roadmap
 
-The Go SDK is currently experimental. As the first purely portable Beam SDK, the Go SDK is constrained
-by the status of the [Beam Portability Framework](https://beam.apache.org/roadmap/portability/) and the existence of
-portable runners.
+The Go SDK is [fully released as of v2.34.0](https://beam.apache.org/blog/go-sdk-release/).

Review comment:
       All your URLs should be relative. (Drop the 'https://beam.apache.org' prefix.)




-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: github-unsubscribe@beam.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



[GitHub] [beam] jrmccluskey commented on a change in pull request #15894: [Go SDK] Go SDK Exits Experimental

Posted by GitBox <gi...@apache.org>.
jrmccluskey commented on a change in pull request #15894:
URL: https://github.com/apache/beam/pull/15894#discussion_r742959071



##########
File path: website/www/site/content/en/blog/go-sdk-release.md
##########
@@ -0,0 +1,156 @@
+---
+title:  "Go SDK Exits Experimental in Apache Beam 2.34.0"
+date:   2021-11-05 00:00:01 -0800
+categories:
+  - blog
+authors:
+  - lostluck
+---
+<!--
+Licensed 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.
+-->
+
+Apache Beam’s latest release, version [2.34.0](/get-started/downloads/), is the first official release of the long experimental Go SDK.
+Built with the [Go Programming Language](https://golang.org/), the Go SDK joins the Java and Python SDKs as the third implementation of the Beam programming model.
+
+<!--more-->
+
+## Using the new Go SDK.
+
+New users of the Go SDK can start using it in their Go programs:
+
+```
+import "github.com/apache/beam/sdks/v2/go/pkg/beam"
+```
+
+The next run of `go mod tidy` will fetch the latest stable version.
+Alternatively executing `go get github.com/apache/beam/sdks/v2/go/pkg/beam` will download it to the local module cache immeadiately, and add it to your `go.mod` file.
+
+Existing users of the experimental Go SDK need to update to new `v2` import paths to start using the latest versions of the SDK. 
+This is can be done by adding `v2` to the import paths, changing `github.com/apache/beam/sdks/go/`... to `github.com/apache/beam/sdks/v2/go/`... where applicable, and then running `go mod tidy`.
+
+Further documentation on using the SDK is available in the [Beam Programming Guide](https://beam.apache.org/documentation/programming-guide/), and in the package Go Doc at https://pkg.go.dev/github.com/apache/beam/sdks/v2/go/pkg/beam.
+
+## Feature Support
+
+At time of writing, the Go SDK is currently "Batteries Not Included".
+This means that there are gaps or edge cases in supported IOs and transforms.
+That said, the core of the SDK enables a great deal of the Beam Model for
+custom user use, supporting following features:
+
+* PTransforms
+  * Impulse
+  * Create
+  * ParDo w/User DoFns
+    * Iterable Side Inputs
+    * Multiple Output emitters
+    * Receive and Return Key Value pairs
+    * EventTime
+    * SplittableDoFns
+  * GroupByKey and CoGroupByKey
+  * CombineFns for use with Combine and CombinePerKey
+  * Windowing
+    * Global, Fixed intervals, Sliding windows, and Session
+    * Aggregating over windowed PCollections w/GBKs or Combines.
+  * Flatten
+  * Partition
+  * Composites
+  * Cross Language Transforms
+* Coders
+  * Primitive Go types (ints, string, []bytes, and more)
+  * Beam Schemas for Go Struct types (including struct, slice, and map fields)
+  * Registering custom coders
+* Metrics
+  * PCollection metrics (ElementCount, Size Estimates)
+  * Custom User Metrics
+  * DoFn profiling metrics (coming in 2.35.0)
+* Provided Built Transforms
+  * Sum, Count, Min, Max, Top, Filter
+  * Scalable TextIO Reading
+  * Test Stream (for runners that support it.)
+
+Upcoming features support roadmap, and known issues are discussed below.
+
+## Releases
+
+With this release, the Go SDK now uses [Go Modules](https://golang.org/ref/mod) for dependency management.
+This makes it so users, SDK Devs, and the testing infrastructure can all rely on the same versions of dependencies, making builds reproducible.
+
+Versioned SDK worker containers are now built and [published](https://hub.docker.com/r/apache/beam_go_sdk/tags?page=1&ordering=last_updated), with the SDK using matched tagged versions.
+For released versions, user jobs no longer need to specify a container to use, except when using custom containers.
+  
+## Compatibility
+
+The Go SDK will largely follow suite with the Go notion of compatibility. 
+Some concessions are made to keep all SDKs together on the same release cycle.
+
+### Language Compatibility
+
+The SDK will be tested at a minimum [Go Programming Language version of 1.16](https://golang.org/doc/devel/release), and use available language features and standard library packages accordingly.
+To maintain a broad compatibility, the Go SDK will not require the latest major version of Go.
+We expect to follow the 2nd newest supported release of the language, with a possible exception when Go 1.18 is released, in order to begin experimenting with [Go Generics](https://go.dev/blog/generics-proposal) in the SDK.
+Release notes will call out when the minimum version of the language changes.
+
+### Package Compatibility
+
+The primary user packages will avoid changing in backwards incompatible ways for core features.
+This is to be inline with Go's notion of the [`import compatibility rule`](https://research.swtch.com/vgo-import).
+
+> If an old package and a new package have the same import path,
+> the new package must be backwards compatible with the old package.
+
+Exceptions to this policy are around newer, experimental, or in development features.
+These are subject to change.
+Such features will have a doc comment noting the experimental status, or be mentioned the change notes for a release.
+For example, using `beam.WindowInto` with Triggers is currently experimental and may have the api changed in a future release. 
+
+Primary user packages include:
+* The main beam package `github.com/apache/beam/sdks/v2/go/pkg/beam`
+* Sub packages under `.../transforms`, `.../io`, `.../runners`, and `.../testing`.
+
+Generally, packages in the module other than the primary user packages are for framework use.
+They are at risk of changing, though at this point, large breaking changes are unlikely.
+
+### Known Issues
+
+DO NOT SUBMIT: include Known Issues w/ 2.33.0, and known features making 2.34.0 and 2.35.0  (side inputs, metrics queyrying, IOs, Direct Runner, Triggers, Test Stream,  Cross Language Transforms caveats)

Review comment:
       I'm guessing you don't want the DO NOT SUBMIT block submitted

##########
File path: website/www/site/content/en/blog/go-sdk-release.md
##########
@@ -0,0 +1,156 @@
+---
+title:  "Go SDK Exits Experimental in Apache Beam 2.34.0"
+date:   2021-11-05 00:00:01 -0800
+categories:
+  - blog
+authors:
+  - lostluck
+---
+<!--
+Licensed 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.
+-->
+
+Apache Beam’s latest release, version [2.34.0](/get-started/downloads/), is the first official release of the long experimental Go SDK.
+Built with the [Go Programming Language](https://golang.org/), the Go SDK joins the Java and Python SDKs as the third implementation of the Beam programming model.
+
+<!--more-->
+
+## Using the new Go SDK.
+
+New users of the Go SDK can start using it in their Go programs:
+
+```
+import "github.com/apache/beam/sdks/v2/go/pkg/beam"
+```
+
+The next run of `go mod tidy` will fetch the latest stable version.
+Alternatively executing `go get github.com/apache/beam/sdks/v2/go/pkg/beam` will download it to the local module cache immeadiately, and add it to your `go.mod` file.
+
+Existing users of the experimental Go SDK need to update to new `v2` import paths to start using the latest versions of the SDK. 
+This is can be done by adding `v2` to the import paths, changing `github.com/apache/beam/sdks/go/`... to `github.com/apache/beam/sdks/v2/go/`... where applicable, and then running `go mod tidy`.
+
+Further documentation on using the SDK is available in the [Beam Programming Guide](https://beam.apache.org/documentation/programming-guide/), and in the package Go Doc at https://pkg.go.dev/github.com/apache/beam/sdks/v2/go/pkg/beam.
+
+## Feature Support
+
+At time of writing, the Go SDK is currently "Batteries Not Included".
+This means that there are gaps or edge cases in supported IOs and transforms.
+That said, the core of the SDK enables a great deal of the Beam Model for
+custom user use, supporting following features:
+
+* PTransforms
+  * Impulse
+  * Create
+  * ParDo w/User DoFns
+    * Iterable Side Inputs
+    * Multiple Output emitters
+    * Receive and Return Key Value pairs
+    * EventTime
+    * SplittableDoFns
+  * GroupByKey and CoGroupByKey
+  * CombineFns for use with Combine and CombinePerKey
+  * Windowing
+    * Global, Fixed intervals, Sliding windows, and Session
+    * Aggregating over windowed PCollections w/GBKs or Combines.
+  * Flatten
+  * Partition
+  * Composites
+  * Cross Language Transforms
+* Coders
+  * Primitive Go types (ints, string, []bytes, and more)
+  * Beam Schemas for Go Struct types (including struct, slice, and map fields)
+  * Registering custom coders
+* Metrics
+  * PCollection metrics (ElementCount, Size Estimates)
+  * Custom User Metrics
+  * DoFn profiling metrics (coming in 2.35.0)
+* Provided Built Transforms
+  * Sum, Count, Min, Max, Top, Filter
+  * Scalable TextIO Reading
+  * Test Stream (for runners that support it.)

Review comment:
       Are we comfortable promoting test stream while we still have it marked as experimental?

##########
File path: website/www/site/content/en/blog/go-sdk-release.md
##########
@@ -0,0 +1,156 @@
+---
+title:  "Go SDK Exits Experimental in Apache Beam 2.34.0"
+date:   2021-11-05 00:00:01 -0800
+categories:
+  - blog
+authors:
+  - lostluck
+---
+<!--
+Licensed 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.
+-->
+
+Apache Beam’s latest release, version [2.34.0](/get-started/downloads/), is the first official release of the long experimental Go SDK.
+Built with the [Go Programming Language](https://golang.org/), the Go SDK joins the Java and Python SDKs as the third implementation of the Beam programming model.
+
+<!--more-->
+
+## Using the new Go SDK.
+
+New users of the Go SDK can start using it in their Go programs:
+
+```
+import "github.com/apache/beam/sdks/v2/go/pkg/beam"
+```
+
+The next run of `go mod tidy` will fetch the latest stable version.
+Alternatively executing `go get github.com/apache/beam/sdks/v2/go/pkg/beam` will download it to the local module cache immeadiately, and add it to your `go.mod` file.
+
+Existing users of the experimental Go SDK need to update to new `v2` import paths to start using the latest versions of the SDK. 
+This is can be done by adding `v2` to the import paths, changing `github.com/apache/beam/sdks/go/`... to `github.com/apache/beam/sdks/v2/go/`... where applicable, and then running `go mod tidy`.
+
+Further documentation on using the SDK is available in the [Beam Programming Guide](https://beam.apache.org/documentation/programming-guide/), and in the package Go Doc at https://pkg.go.dev/github.com/apache/beam/sdks/v2/go/pkg/beam.
+
+## Feature Support
+
+At time of writing, the Go SDK is currently "Batteries Not Included".
+This means that there are gaps or edge cases in supported IOs and transforms.
+That said, the core of the SDK enables a great deal of the Beam Model for
+custom user use, supporting following features:
+
+* PTransforms
+  * Impulse
+  * Create
+  * ParDo w/User DoFns
+    * Iterable Side Inputs
+    * Multiple Output emitters
+    * Receive and Return Key Value pairs
+    * EventTime
+    * SplittableDoFns
+  * GroupByKey and CoGroupByKey
+  * CombineFns for use with Combine and CombinePerKey
+  * Windowing
+    * Global, Fixed intervals, Sliding windows, and Session
+    * Aggregating over windowed PCollections w/GBKs or Combines.
+  * Flatten
+  * Partition
+  * Composites
+  * Cross Language Transforms
+* Coders
+  * Primitive Go types (ints, string, []bytes, and more)
+  * Beam Schemas for Go Struct types (including struct, slice, and map fields)
+  * Registering custom coders
+* Metrics
+  * PCollection metrics (ElementCount, Size Estimates)
+  * Custom User Metrics
+  * DoFn profiling metrics (coming in 2.35.0)
+* Provided Built Transforms
+  * Sum, Count, Min, Max, Top, Filter
+  * Scalable TextIO Reading
+  * Test Stream (for runners that support it.)
+
+Upcoming features support roadmap, and known issues are discussed below.
+
+## Releases
+
+With this release, the Go SDK now uses [Go Modules](https://golang.org/ref/mod) for dependency management.
+This makes it so users, SDK Devs, and the testing infrastructure can all rely on the same versions of dependencies, making builds reproducible.
+
+Versioned SDK worker containers are now built and [published](https://hub.docker.com/r/apache/beam_go_sdk/tags?page=1&ordering=last_updated), with the SDK using matched tagged versions.
+For released versions, user jobs no longer need to specify a container to use, except when using custom containers.
+  
+## Compatibility
+
+The Go SDK will largely follow suite with the Go notion of compatibility. 

Review comment:
       ```suggestion
   The Go SDK will largely follow suit with the Go notion of compatibility. 
   ```




-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: github-unsubscribe@beam.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



[GitHub] [beam] lostluck commented on pull request #15894: [Go SDK] Go SDK Exits Experimental

Posted by GitBox <gi...@apache.org>.
lostluck commented on pull request #15894:
URL: https://github.com/apache/beam/pull/15894#issuecomment-961476107


   PTAL Moved things back to "v2.33.0". Known issues + links added.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: github-unsubscribe@beam.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



[GitHub] [beam] lostluck commented on a change in pull request #15894: [Go SDK] Go SDK Exits Experimental

Posted by GitBox <gi...@apache.org>.
lostluck commented on a change in pull request #15894:
URL: https://github.com/apache/beam/pull/15894#discussion_r743057632



##########
File path: website/www/site/content/en/blog/go-sdk-release.md
##########
@@ -0,0 +1,156 @@
+---
+title:  "Go SDK Exits Experimental in Apache Beam 2.34.0"
+date:   2021-11-05 00:00:01 -0800
+categories:
+  - blog
+authors:
+  - lostluck
+---
+<!--
+Licensed 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.
+-->
+
+Apache Beam’s latest release, version [2.34.0](/get-started/downloads/), is the first official release of the long experimental Go SDK.
+Built with the [Go Programming Language](https://golang.org/), the Go SDK joins the Java and Python SDKs as the third implementation of the Beam programming model.
+
+<!--more-->
+
+## Using the new Go SDK.
+
+New users of the Go SDK can start using it in their Go programs:
+
+```
+import "github.com/apache/beam/sdks/v2/go/pkg/beam"
+```
+
+The next run of `go mod tidy` will fetch the latest stable version.
+Alternatively executing `go get github.com/apache/beam/sdks/v2/go/pkg/beam` will download it to the local module cache immeadiately, and add it to your `go.mod` file.
+
+Existing users of the experimental Go SDK need to update to new `v2` import paths to start using the latest versions of the SDK. 
+This is can be done by adding `v2` to the import paths, changing `github.com/apache/beam/sdks/go/`... to `github.com/apache/beam/sdks/v2/go/`... where applicable, and then running `go mod tidy`.
+
+Further documentation on using the SDK is available in the [Beam Programming Guide](https://beam.apache.org/documentation/programming-guide/), and in the package Go Doc at https://pkg.go.dev/github.com/apache/beam/sdks/v2/go/pkg/beam.
+
+## Feature Support
+
+At time of writing, the Go SDK is currently "Batteries Not Included".
+This means that there are gaps or edge cases in supported IOs and transforms.
+That said, the core of the SDK enables a great deal of the Beam Model for
+custom user use, supporting following features:
+
+* PTransforms
+  * Impulse
+  * Create
+  * ParDo w/User DoFns
+    * Iterable Side Inputs
+    * Multiple Output emitters
+    * Receive and Return Key Value pairs
+    * EventTime
+    * SplittableDoFns
+  * GroupByKey and CoGroupByKey
+  * CombineFns for use with Combine and CombinePerKey
+  * Windowing
+    * Global, Fixed intervals, Sliding windows, and Session
+    * Aggregating over windowed PCollections w/GBKs or Combines.
+  * Flatten
+  * Partition
+  * Composites
+  * Cross Language Transforms
+* Coders
+  * Primitive Go types (ints, string, []bytes, and more)
+  * Beam Schemas for Go Struct types (including struct, slice, and map fields)
+  * Registering custom coders
+* Metrics
+  * PCollection metrics (ElementCount, Size Estimates)
+  * Custom User Metrics
+  * DoFn profiling metrics (coming in 2.35.0)
+* Provided Built Transforms
+  * Sum, Count, Min, Max, Top, Filter
+  * Scalable TextIO Reading
+  * Test Stream (for runners that support it.)

Review comment:
       Good point, I'll remove it from this list.




-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: github-unsubscribe@beam.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



[GitHub] [beam] lostluck commented on a change in pull request #15894: [Go SDK] Go SDK Exits Experimental

Posted by GitBox <gi...@apache.org>.
lostluck commented on a change in pull request #15894:
URL: https://github.com/apache/beam/pull/15894#discussion_r743099255



##########
File path: website/www/site/content/en/roadmap/go-sdk.md
##########
@@ -17,55 +17,14 @@ limitations under the License.
 
 # Go SDK Roadmap
 
-The Go SDK is currently experimental. As the first purely portable Beam SDK, the Go SDK is constrained
-by the status of the [Beam Portability Framework](https://beam.apache.org/roadmap/portability/) and the existence of
-portable runners.
+The Go SDK is [fully released as of v2.34.0](https://beam.apache.org/blog/go-sdk-release/).

Review comment:
       Thanks for the confirmation! I was wondering about that.

##########
File path: website/www/site/content/en/blog/go-sdk-release.md
##########
@@ -0,0 +1,151 @@
+---
+title:  "Go SDK Exits Experimental in Apache Beam 2.34.0"
+date:   2021-11-05 00:00:01 -0800
+categories:
+  - blog
+authors:
+  - lostluck
+---
+<!--
+Licensed 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.
+-->
+
+Apache Beam’s latest release, version [2.34.0](/get-started/downloads/), is the first official release of the long experimental Go SDK.
+Built with the [Go Programming Language](https://golang.org/), the Go SDK joins the Java and Python SDKs as the third implementation of the Beam programming model.
+
+<!--more-->
+
+## Using the new Go SDK.
+
+New users of the Go SDK can start using it in their Go programs by importing the main beam package:
+
+```
+import "github.com/apache/beam/sdks/v2/go/pkg/beam"
+```
+
+The next run of `go mod tidy` will fetch the latest stable version of the module.
+Alternatively executing `go get github.com/apache/beam/sdks/v2/go/pkg/beam` will download it to the local module cache immeadiately, and add it to your `go.mod` file.
+
+Existing users of the experimental Go SDK need to update to new `v2` import paths to start using the latest versions of the SDK.
+This is can be done by adding `v2` to the import paths, changing `github.com/apache/beam/sdks/go/`... to `github.com/apache/beam/sdks/v2/go/`... where applicable, and then running `go mod tidy`.
+
+Further documentation on using the SDK is available in the [Beam Programming Guide](/documentation/programming-guide/), and in the package Go Doc at https://pkg.go.dev/github.com/apache/beam/sdks/v2/go/pkg/beam.
+
+## Feature Support
+
+At time of writing, the Go SDK is currently "Batteries Not Included".
+This means that there are gaps or edge cases in supported IOs and transforms.
+That said, the core of the SDK enables a great deal of the Beam Model for
+custom user use, supporting following features:
+
+* PTransforms
+  * Impulse
+  * Create
+  * ParDo w/User DoFns
+    * Iterable Side Inputs
+    * Multiple Output emitters
+    * Receive and Return Key Value pairs
+    * EventTime
+    * SplittableDoFns
+  * GroupByKey and CoGroupByKey
+  * CombineFns for use with Combine and CombinePerKey
+  * Windowing
+    * Global, Fixed intervals, Sliding windows, and Session
+    * Aggregating over windowed PCollections w/GBKs or Combines.
+  * Flatten
+  * Partition
+  * Composites
+  * Cross Language Transforms
+* Coders
+  * Primitive Go types (ints, string, []bytes, and more)
+  * Beam Schemas for Go Struct types (including struct, slice, and map fields)
+  * Registering custom coders
+* Metrics
+  * PCollection metrics (ElementCount, Size Estimates)
+  * Custom User Metrics
+  * DoFn profiling metrics (coming in 2.35.0)
+* Provided Built Transforms
+  * Sum, Count, Min, Max, Top, Filter
+  * Scalable TextIO Reading
+
+Upcoming features support roadmap, and known issues are discussed below.

Review comment:
       I like it. Done.

##########
File path: website/www/site/content/en/blog/go-sdk-release.md
##########
@@ -0,0 +1,163 @@
+---
+title:  "Go SDK Exits Experimental in Apache Beam 2.33.0"
+date:   2021-11-04 00:00:01 -0800
+categories:
+  - blog
+authors:
+  - lostluck
+---
+<!--
+Licensed 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.
+-->
+
+Apache Beam’s latest release, version [2.33.0](/get-started/downloads/), is the first official release of the long experimental Go SDK.
+Built with the [Go Programming Language](https://golang.org/), the Go SDK joins the Java and Python SDKs as the third implementation of the Beam programming model.
+
+<!--more-->
+
+## Using the new Go SDK.
+
+New users of the Go SDK can start using it in their Go programs by importing the main beam package:
+
+```
+import "github.com/apache/beam/sdks/v2/go/pkg/beam"
+```
+
+The next run of `go mod tidy` will fetch the latest stable version of the module.
+Alternatively executing `go get github.com/apache/beam/sdks/v2/go/pkg/beam` will download it to the local module cache immeadiately, and add it to your `go.mod` file.
+
+Existing users of the experimental Go SDK need to update to new `v2` import paths to start using the latest versions of the SDK.
+This is can be done by adding `v2` to the import paths, changing `github.com/apache/beam/sdks/go/`... to `github.com/apache/beam/sdks/v2/go/`... where applicable, and then running `go mod tidy`.
+
+Further documentation on using the SDK is available in the [Beam Programming Guide](/documentation/programming-guide/), and in the package Go Doc at https://pkg.go.dev/github.com/apache/beam/sdks/v2/go/pkg/beam.
+
+## Feature Support
+
+At time of writing, the Go SDK is currently "Batteries Not Included".
+This means that there are gaps or edge cases in supported IOs and transforms.
+That said, the core of the SDK enables a great deal of the Beam Model for
+custom user use, supporting following features:
+
+* PTransforms
+  * Impulse
+  * Create
+  * ParDo w/User DoFns
+    * Iterable Side Inputs
+    * Multiple Output emitters
+    * Receive and Return Key Value pairs
+    * EventTime
+    * SplittableDoFns
+  * GroupByKey and CoGroupByKey
+  * CombineFns for use with Combine and CombinePerKey
+  * Windowing
+    * Global, Fixed intervals, Sliding windows, and Session
+    * Aggregating over windowed PCollections w/GBKs or Combines.
+  * Flatten
+  * Partition
+  * Composites
+  * Cross Language Transforms
+* Coders
+  * Primitive Go types (ints, string, []bytes, and more)
+  * Beam Schemas for Go Struct types (including struct, slice, and map fields)
+  * Registering custom coders
+* Metrics
+  * PCollection metrics (ElementCount, Size Estimates)
+  * Custom User Metrics
+  * Post job user metrics querying (coming in 2.34.0)
+  * DoFn profiling metrics (coming in 2.35.0)
+* Provided Built Transforms
+  * Sum, Count, Min, Max, Top, Filter
+  * Scalable TextIO Reading

Review comment:
       Ah that's a typo for sure. Thanks!

##########
File path: website/www/site/content/en/blog/go-sdk-release.md
##########
@@ -0,0 +1,163 @@
+---
+title:  "Go SDK Exits Experimental in Apache Beam 2.33.0"
+date:   2021-11-04 00:00:01 -0800
+categories:
+  - blog
+authors:
+  - lostluck
+---
+<!--
+Licensed 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.
+-->
+
+Apache Beam’s latest release, version [2.33.0](/get-started/downloads/), is the first official release of the long experimental Go SDK.
+Built with the [Go Programming Language](https://golang.org/), the Go SDK joins the Java and Python SDKs as the third implementation of the Beam programming model.
+
+<!--more-->
+
+## Using the new Go SDK.
+
+New users of the Go SDK can start using it in their Go programs by importing the main beam package:
+
+```
+import "github.com/apache/beam/sdks/v2/go/pkg/beam"
+```
+
+The next run of `go mod tidy` will fetch the latest stable version of the module.
+Alternatively executing `go get github.com/apache/beam/sdks/v2/go/pkg/beam` will download it to the local module cache immeadiately, and add it to your `go.mod` file.
+
+Existing users of the experimental Go SDK need to update to new `v2` import paths to start using the latest versions of the SDK.
+This is can be done by adding `v2` to the import paths, changing `github.com/apache/beam/sdks/go/`... to `github.com/apache/beam/sdks/v2/go/`... where applicable, and then running `go mod tidy`.
+
+Further documentation on using the SDK is available in the [Beam Programming Guide](/documentation/programming-guide/), and in the package Go Doc at https://pkg.go.dev/github.com/apache/beam/sdks/v2/go/pkg/beam.
+
+## Feature Support
+
+At time of writing, the Go SDK is currently "Batteries Not Included".
+This means that there are gaps or edge cases in supported IOs and transforms.
+That said, the core of the SDK enables a great deal of the Beam Model for
+custom user use, supporting following features:
+
+* PTransforms
+  * Impulse
+  * Create
+  * ParDo w/User DoFns
+    * Iterable Side Inputs
+    * Multiple Output emitters
+    * Receive and Return Key Value pairs
+    * EventTime

Review comment:
       Not particularly, I renamed the windowing section to "EventTime windowing" instead.
   
   Likely the origin was while the framework is dealing with event time via windowing, the user deals with event time in DoFns.

##########
File path: website/www/site/content/en/blog/go-sdk-release.md
##########
@@ -0,0 +1,161 @@
+---
+title:  "Go SDK Exits Experimental in Apache Beam 2.33.0"
+date:   2021-11-04 00:00:01 -0800
+categories:
+  - blog
+authors:
+  - lostluck
+---
+<!--
+Licensed 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.
+-->
+
+Apache Beam’s latest release, version [2.33.0](/get-started/downloads/), is the first official release of the long experimental Go SDK.
+Built with the [Go Programming Language](https://golang.org/), the Go SDK joins the Java and Python SDKs as the third implementation of the Beam programming model.
+
+<!--more-->
+
+## Using the new Go SDK.
+
+New users of the Go SDK can start using it in their Go programs by importing the main beam package:
+
+```
+import "github.com/apache/beam/sdks/v2/go/pkg/beam"
+```
+
+The next run of `go mod tidy` will fetch the latest stable version of the module.
+Alternatively executing `go get github.com/apache/beam/sdks/v2/go/pkg/beam` will download it to the local module cache immeadiately, and add it to your `go.mod` file.
+
+Existing users of the experimental Go SDK need to update to new `v2` import paths to start using the latest versions of the SDK.
+This is can be done by adding `v2` to the import paths, changing `github.com/apache/beam/sdks/go/`... to `github.com/apache/beam/sdks/v2/go/`... where applicable, and then running `go mod tidy`.
+
+Further documentation on using the SDK is available in the [Beam Programming Guide](/documentation/programming-guide/), and in the package [Go Doc](https://pkg.go.dev/github.com/apache/beam/sdks/v2/go/pkg/beam).
+
+## Feature Support
+
+At time of writing, the Go SDK is currently "Batteries Not Included".
+This means that there are gaps or edge cases in supported IOs and transforms.
+That said, the core of the SDK enables a great deal of the Beam Model for
+custom user use, supporting following features:
+
+* PTransforms
+  * Impulse
+  * Create
+  * ParDo with user DoFns
+    * Iterable side inputs
+    * Multiple output emitters
+    * Receive and return key-value pairs
+    * SplittableDoFns
+  * GroupByKey and CoGroupByKey
+  * CombineFns for use with Combine and CombinePerKey
+  * Flatten
+  * Partition
+  * Composite transforms
+  * Cross language transforms
+* EventTime windowing

Review comment:
       `beam.EventTime` is a special type value for beam event times. https://pkg.go.dev/github.com/apache/beam/sdks/v2/go/pkg/beam#EventTime




-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: github-unsubscribe@beam.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



[GitHub] [beam] lostluck commented on a change in pull request #15894: [Go SDK] Go SDK Exits Experimental

Posted by GitBox <gi...@apache.org>.
lostluck commented on a change in pull request #15894:
URL: https://github.com/apache/beam/pull/15894#discussion_r743057307



##########
File path: website/www/site/content/en/blog/go-sdk-release.md
##########
@@ -0,0 +1,156 @@
+---
+title:  "Go SDK Exits Experimental in Apache Beam 2.34.0"
+date:   2021-11-05 00:00:01 -0800
+categories:
+  - blog
+authors:
+  - lostluck
+---
+<!--
+Licensed 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.
+-->
+
+Apache Beam’s latest release, version [2.34.0](/get-started/downloads/), is the first official release of the long experimental Go SDK.
+Built with the [Go Programming Language](https://golang.org/), the Go SDK joins the Java and Python SDKs as the third implementation of the Beam programming model.
+
+<!--more-->
+
+## Using the new Go SDK.
+
+New users of the Go SDK can start using it in their Go programs:
+
+```
+import "github.com/apache/beam/sdks/v2/go/pkg/beam"
+```
+
+The next run of `go mod tidy` will fetch the latest stable version.
+Alternatively executing `go get github.com/apache/beam/sdks/v2/go/pkg/beam` will download it to the local module cache immeadiately, and add it to your `go.mod` file.
+
+Existing users of the experimental Go SDK need to update to new `v2` import paths to start using the latest versions of the SDK. 
+This is can be done by adding `v2` to the import paths, changing `github.com/apache/beam/sdks/go/`... to `github.com/apache/beam/sdks/v2/go/`... where applicable, and then running `go mod tidy`.
+
+Further documentation on using the SDK is available in the [Beam Programming Guide](https://beam.apache.org/documentation/programming-guide/), and in the package Go Doc at https://pkg.go.dev/github.com/apache/beam/sdks/v2/go/pkg/beam.
+
+## Feature Support
+
+At time of writing, the Go SDK is currently "Batteries Not Included".
+This means that there are gaps or edge cases in supported IOs and transforms.
+That said, the core of the SDK enables a great deal of the Beam Model for
+custom user use, supporting following features:
+
+* PTransforms
+  * Impulse
+  * Create
+  * ParDo w/User DoFns
+    * Iterable Side Inputs
+    * Multiple Output emitters
+    * Receive and Return Key Value pairs
+    * EventTime
+    * SplittableDoFns
+  * GroupByKey and CoGroupByKey
+  * CombineFns for use with Combine and CombinePerKey
+  * Windowing
+    * Global, Fixed intervals, Sliding windows, and Session
+    * Aggregating over windowed PCollections w/GBKs or Combines.
+  * Flatten
+  * Partition
+  * Composites
+  * Cross Language Transforms
+* Coders
+  * Primitive Go types (ints, string, []bytes, and more)
+  * Beam Schemas for Go Struct types (including struct, slice, and map fields)
+  * Registering custom coders
+* Metrics
+  * PCollection metrics (ElementCount, Size Estimates)
+  * Custom User Metrics
+  * DoFn profiling metrics (coming in 2.35.0)
+* Provided Built Transforms
+  * Sum, Count, Min, Max, Top, Filter
+  * Scalable TextIO Reading
+  * Test Stream (for runners that support it.)
+
+Upcoming features support roadmap, and known issues are discussed below.
+
+## Releases
+
+With this release, the Go SDK now uses [Go Modules](https://golang.org/ref/mod) for dependency management.
+This makes it so users, SDK Devs, and the testing infrastructure can all rely on the same versions of dependencies, making builds reproducible.
+
+Versioned SDK worker containers are now built and [published](https://hub.docker.com/r/apache/beam_go_sdk/tags?page=1&ordering=last_updated), with the SDK using matched tagged versions.
+For released versions, user jobs no longer need to specify a container to use, except when using custom containers.
+  
+## Compatibility
+
+The Go SDK will largely follow suite with the Go notion of compatibility. 
+Some concessions are made to keep all SDKs together on the same release cycle.
+
+### Language Compatibility
+
+The SDK will be tested at a minimum [Go Programming Language version of 1.16](https://golang.org/doc/devel/release), and use available language features and standard library packages accordingly.
+To maintain a broad compatibility, the Go SDK will not require the latest major version of Go.
+We expect to follow the 2nd newest supported release of the language, with a possible exception when Go 1.18 is released, in order to begin experimenting with [Go Generics](https://go.dev/blog/generics-proposal) in the SDK.
+Release notes will call out when the minimum version of the language changes.
+
+### Package Compatibility
+
+The primary user packages will avoid changing in backwards incompatible ways for core features.
+This is to be inline with Go's notion of the [`import compatibility rule`](https://research.swtch.com/vgo-import).
+
+> If an old package and a new package have the same import path,
+> the new package must be backwards compatible with the old package.
+
+Exceptions to this policy are around newer, experimental, or in development features.
+These are subject to change.
+Such features will have a doc comment noting the experimental status, or be mentioned the change notes for a release.
+For example, using `beam.WindowInto` with Triggers is currently experimental and may have the api changed in a future release. 
+
+Primary user packages include:
+* The main beam package `github.com/apache/beam/sdks/v2/go/pkg/beam`
+* Sub packages under `.../transforms`, `.../io`, `.../runners`, and `.../testing`.
+
+Generally, packages in the module other than the primary user packages are for framework use.
+They are at risk of changing, though at this point, large breaking changes are unlikely.
+
+### Known Issues
+
+DO NOT SUBMIT: include Known Issues w/ 2.33.0, and known features making 2.34.0 and 2.35.0  (side inputs, metrics queyrying, IOs, Direct Runner, Triggers, Test Stream,  Cross Language Transforms caveats)

Review comment:
       This is still being drafted, but at a certain point, it's necessary to get other eyes on it to make sure the right content is being covered. 
   Per the email to the exit thread I'm gathering up the known issues today, and the DO NOT SUBMITs are to remind me to actually populate certain things.




-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: github-unsubscribe@beam.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



[GitHub] [beam] lostluck commented on a change in pull request #15894: [Go SDK] Go SDK Exits Experimental

Posted by GitBox <gi...@apache.org>.
lostluck commented on a change in pull request #15894:
URL: https://github.com/apache/beam/pull/15894#discussion_r743231902



##########
File path: website/www/site/content/en/blog/go-sdk-release.md
##########
@@ -0,0 +1,151 @@
+---
+title:  "Go SDK Exits Experimental in Apache Beam 2.34.0"
+date:   2021-11-05 00:00:01 -0800
+categories:
+  - blog
+authors:
+  - lostluck
+---
+<!--
+Licensed 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.
+-->
+
+Apache Beam’s latest release, version [2.34.0](/get-started/downloads/), is the first official release of the long experimental Go SDK.
+Built with the [Go Programming Language](https://golang.org/), the Go SDK joins the Java and Python SDKs as the third implementation of the Beam programming model.
+
+<!--more-->
+
+## Using the new Go SDK.
+
+New users of the Go SDK can start using it in their Go programs by importing the main beam package:
+
+```
+import "github.com/apache/beam/sdks/v2/go/pkg/beam"
+```
+
+The next run of `go mod tidy` will fetch the latest stable version of the module.
+Alternatively executing `go get github.com/apache/beam/sdks/v2/go/pkg/beam` will download it to the local module cache immeadiately, and add it to your `go.mod` file.
+
+Existing users of the experimental Go SDK need to update to new `v2` import paths to start using the latest versions of the SDK.
+This is can be done by adding `v2` to the import paths, changing `github.com/apache/beam/sdks/go/`... to `github.com/apache/beam/sdks/v2/go/`... where applicable, and then running `go mod tidy`.
+
+Further documentation on using the SDK is available in the [Beam Programming Guide](/documentation/programming-guide/), and in the package Go Doc at https://pkg.go.dev/github.com/apache/beam/sdks/v2/go/pkg/beam.
+
+## Feature Support
+
+At time of writing, the Go SDK is currently "Batteries Not Included".
+This means that there are gaps or edge cases in supported IOs and transforms.
+That said, the core of the SDK enables a great deal of the Beam Model for
+custom user use, supporting following features:
+
+* PTransforms
+  * Impulse
+  * Create
+  * ParDo w/User DoFns
+    * Iterable Side Inputs
+    * Multiple Output emitters
+    * Receive and Return Key Value pairs
+    * EventTime
+    * SplittableDoFns
+  * GroupByKey and CoGroupByKey
+  * CombineFns for use with Combine and CombinePerKey
+  * Windowing
+    * Global, Fixed intervals, Sliding windows, and Session
+    * Aggregating over windowed PCollections w/GBKs or Combines.
+  * Flatten
+  * Partition
+  * Composites
+  * Cross Language Transforms
+* Coders
+  * Primitive Go types (ints, string, []bytes, and more)
+  * Beam Schemas for Go Struct types (including struct, slice, and map fields)
+  * Registering custom coders
+* Metrics
+  * PCollection metrics (ElementCount, Size Estimates)
+  * Custom User Metrics
+  * DoFn profiling metrics (coming in 2.35.0)
+* Provided Built Transforms
+  * Sum, Count, Min, Max, Top, Filter
+  * Scalable TextIO Reading
+
+Upcoming features support roadmap, and known issues are discussed below.

Review comment:
       I like it. Done.




-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: github-unsubscribe@beam.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



[GitHub] [beam] apilloud commented on pull request #15894: [Go SDK] Go SDK Exits Experimental

Posted by GitBox <gi...@apache.org>.
apilloud commented on pull request #15894:
URL: https://github.com/apache/beam/pull/15894#issuecomment-961309027


   You can validate your changes on the staging website (there is a precommit that generates it for each PR): https://apache-beam-website-pull-requests.storage.googleapis.com/15894/index.html
   
   It looks like your blog post is missing:
   https://apache-beam-website-pull-requests.storage.googleapis.com/15894/blog/index.html


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: github-unsubscribe@beam.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



[GitHub] [beam] lostluck commented on pull request #15894: [Go SDK] Go SDK Exits Experimental

Posted by GitBox <gi...@apache.org>.
lostluck commented on pull request #15894:
URL: https://github.com/apache/beam/pull/15894#issuecomment-961312034






-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: github-unsubscribe@beam.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



[GitHub] [beam] robertwb commented on a change in pull request #15894: [Go SDK] Go SDK Exits Experimental

Posted by GitBox <gi...@apache.org>.
robertwb commented on a change in pull request #15894:
URL: https://github.com/apache/beam/pull/15894#discussion_r743116146



##########
File path: website/www/site/content/en/blog/go-sdk-release.md
##########
@@ -0,0 +1,151 @@
+---
+title:  "Go SDK Exits Experimental in Apache Beam 2.34.0"
+date:   2021-11-05 00:00:01 -0800
+categories:
+  - blog
+authors:
+  - lostluck
+---
+<!--
+Licensed 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.
+-->
+
+Apache Beam’s latest release, version [2.34.0](/get-started/downloads/), is the first official release of the long experimental Go SDK.
+Built with the [Go Programming Language](https://golang.org/), the Go SDK joins the Java and Python SDKs as the third implementation of the Beam programming model.
+
+<!--more-->
+
+## Using the new Go SDK.
+
+New users of the Go SDK can start using it in their Go programs by importing the main beam package:
+
+```
+import "github.com/apache/beam/sdks/v2/go/pkg/beam"
+```
+
+The next run of `go mod tidy` will fetch the latest stable version of the module.
+Alternatively executing `go get github.com/apache/beam/sdks/v2/go/pkg/beam` will download it to the local module cache immeadiately, and add it to your `go.mod` file.
+
+Existing users of the experimental Go SDK need to update to new `v2` import paths to start using the latest versions of the SDK.
+This is can be done by adding `v2` to the import paths, changing `github.com/apache/beam/sdks/go/`... to `github.com/apache/beam/sdks/v2/go/`... where applicable, and then running `go mod tidy`.
+
+Further documentation on using the SDK is available in the [Beam Programming Guide](/documentation/programming-guide/), and in the package Go Doc at https://pkg.go.dev/github.com/apache/beam/sdks/v2/go/pkg/beam.
+
+## Feature Support
+
+At time of writing, the Go SDK is currently "Batteries Not Included".
+This means that there are gaps or edge cases in supported IOs and transforms.
+That said, the core of the SDK enables a great deal of the Beam Model for
+custom user use, supporting following features:
+
+* PTransforms
+  * Impulse
+  * Create
+  * ParDo w/User DoFns
+    * Iterable Side Inputs
+    * Multiple Output emitters
+    * Receive and Return Key Value pairs
+    * EventTime
+    * SplittableDoFns
+  * GroupByKey and CoGroupByKey
+  * CombineFns for use with Combine and CombinePerKey
+  * Windowing
+    * Global, Fixed intervals, Sliding windows, and Session
+    * Aggregating over windowed PCollections w/GBKs or Combines.
+  * Flatten
+  * Partition
+  * Composites
+  * Cross Language Transforms
+* Coders
+  * Primitive Go types (ints, string, []bytes, and more)
+  * Beam Schemas for Go Struct types (including struct, slice, and map fields)
+  * Registering custom coders
+* Metrics
+  * PCollection metrics (ElementCount, Size Estimates)
+  * Custom User Metrics
+  * DoFn profiling metrics (coming in 2.35.0)
+* Provided Built Transforms
+  * Sum, Count, Min, Max, Top, Filter
+  * Scalable TextIO Reading
+
+Upcoming features support roadmap, and known issues are discussed below.

Review comment:
       I know it's discussed below, but I would say something like "in particular, we plan to support a much richer set of IO connectes via Beam's cross-language capabilities."




-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: github-unsubscribe@beam.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



[GitHub] [beam] apilloud commented on pull request #15894: [Go SDK] Go SDK Exits Experimental

Posted by GitBox <gi...@apache.org>.
apilloud commented on pull request #15894:
URL: https://github.com/apache/beam/pull/15894#issuecomment-961309027


   You can validate your changes on the staging website (there is a precommit that generates it for each PR): https://apache-beam-website-pull-requests.storage.googleapis.com/15894/index.html
   
   It looks like your blog post is missing:
   https://apache-beam-website-pull-requests.storage.googleapis.com/15894/blog/index.html


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: github-unsubscribe@beam.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



[GitHub] [beam] lostluck commented on pull request #15894: [Go SDK] Go SDK Exits Experimental

Posted by GitBox <gi...@apache.org>.
lostluck commented on pull request #15894:
URL: https://github.com/apache/beam/pull/15894#issuecomment-961312034


   > You can validate your changes on the staging website (there is a precommit that generates it for each PR): https://apache-beam-website-pull-requests.storage.googleapis.com/15894/index.html
   
   Fantastic, I didn't know this! I've been testing locally. 
   
   > It looks like your blog post is missing: https://apache-beam-website-pull-requests.storage.googleapis.com/15894/blog/index.html
   
   Probably because the date for publishing is still in the future, rather than in the local runs.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: github-unsubscribe@beam.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



[GitHub] [beam] apilloud commented on pull request #15894: [Go SDK] Go SDK Exits Experimental

Posted by GitBox <gi...@apache.org>.
apilloud commented on pull request #15894:
URL: https://github.com/apache/beam/pull/15894#issuecomment-961309027


   You can validate your changes on the staging website (there is a precommit that generates it for each PR): https://apache-beam-website-pull-requests.storage.googleapis.com/15894/index.html
   
   It looks like your blog post is missing:
   https://apache-beam-website-pull-requests.storage.googleapis.com/15894/blog/index.html


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: github-unsubscribe@beam.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



[GitHub] [beam] lostluck commented on a change in pull request #15894: [Go SDK] Go SDK Exits Experimental

Posted by GitBox <gi...@apache.org>.
lostluck commented on a change in pull request #15894:
URL: https://github.com/apache/beam/pull/15894#discussion_r743099255



##########
File path: website/www/site/content/en/roadmap/go-sdk.md
##########
@@ -17,55 +17,14 @@ limitations under the License.
 
 # Go SDK Roadmap
 
-The Go SDK is currently experimental. As the first purely portable Beam SDK, the Go SDK is constrained
-by the status of the [Beam Portability Framework](https://beam.apache.org/roadmap/portability/) and the existence of
-portable runners.
+The Go SDK is [fully released as of v2.34.0](https://beam.apache.org/blog/go-sdk-release/).

Review comment:
       Thanks for the confirmation! I was wondering about that.




-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: github-unsubscribe@beam.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



[GitHub] [beam] lostluck commented on a change in pull request #15894: [Go SDK] Go SDK Exits Experimental

Posted by GitBox <gi...@apache.org>.
lostluck commented on a change in pull request #15894:
URL: https://github.com/apache/beam/pull/15894#discussion_r743864917



##########
File path: website/www/site/content/en/blog/go-sdk-release.md
##########
@@ -0,0 +1,163 @@
+---
+title:  "Go SDK Exits Experimental in Apache Beam 2.33.0"
+date:   2021-11-04 00:00:01 -0800
+categories:
+  - blog
+authors:
+  - lostluck
+---
+<!--
+Licensed 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.
+-->
+
+Apache Beam’s latest release, version [2.33.0](/get-started/downloads/), is the first official release of the long experimental Go SDK.
+Built with the [Go Programming Language](https://golang.org/), the Go SDK joins the Java and Python SDKs as the third implementation of the Beam programming model.
+
+<!--more-->
+
+## Using the new Go SDK.
+
+New users of the Go SDK can start using it in their Go programs by importing the main beam package:
+
+```
+import "github.com/apache/beam/sdks/v2/go/pkg/beam"
+```
+
+The next run of `go mod tidy` will fetch the latest stable version of the module.
+Alternatively executing `go get github.com/apache/beam/sdks/v2/go/pkg/beam` will download it to the local module cache immeadiately, and add it to your `go.mod` file.
+
+Existing users of the experimental Go SDK need to update to new `v2` import paths to start using the latest versions of the SDK.
+This is can be done by adding `v2` to the import paths, changing `github.com/apache/beam/sdks/go/`... to `github.com/apache/beam/sdks/v2/go/`... where applicable, and then running `go mod tidy`.
+
+Further documentation on using the SDK is available in the [Beam Programming Guide](/documentation/programming-guide/), and in the package Go Doc at https://pkg.go.dev/github.com/apache/beam/sdks/v2/go/pkg/beam.
+
+## Feature Support
+
+At time of writing, the Go SDK is currently "Batteries Not Included".
+This means that there are gaps or edge cases in supported IOs and transforms.
+That said, the core of the SDK enables a great deal of the Beam Model for
+custom user use, supporting following features:
+
+* PTransforms
+  * Impulse
+  * Create
+  * ParDo w/User DoFns
+    * Iterable Side Inputs
+    * Multiple Output emitters
+    * Receive and Return Key Value pairs
+    * EventTime

Review comment:
       Not particularly, I renamed the windowing section to "EventTime windowing" instead.
   
   Likely the origin was while the framework is dealing with event time via windowing, the user deals with event time in DoFns.




-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: github-unsubscribe@beam.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



[GitHub] [beam] lostluck commented on a change in pull request #15894: [Go SDK] Go SDK Exits Experimental

Posted by GitBox <gi...@apache.org>.
lostluck commented on a change in pull request #15894:
URL: https://github.com/apache/beam/pull/15894#discussion_r743905079



##########
File path: website/www/site/content/en/blog/go-sdk-release.md
##########
@@ -0,0 +1,161 @@
+---
+title:  "Go SDK Exits Experimental in Apache Beam 2.33.0"
+date:   2021-11-04 00:00:01 -0800
+categories:
+  - blog
+authors:
+  - lostluck
+---
+<!--
+Licensed 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.
+-->
+
+Apache Beam’s latest release, version [2.33.0](/get-started/downloads/), is the first official release of the long experimental Go SDK.
+Built with the [Go Programming Language](https://golang.org/), the Go SDK joins the Java and Python SDKs as the third implementation of the Beam programming model.
+
+<!--more-->
+
+## Using the new Go SDK.
+
+New users of the Go SDK can start using it in their Go programs by importing the main beam package:
+
+```
+import "github.com/apache/beam/sdks/v2/go/pkg/beam"
+```
+
+The next run of `go mod tidy` will fetch the latest stable version of the module.
+Alternatively executing `go get github.com/apache/beam/sdks/v2/go/pkg/beam` will download it to the local module cache immeadiately, and add it to your `go.mod` file.
+
+Existing users of the experimental Go SDK need to update to new `v2` import paths to start using the latest versions of the SDK.
+This is can be done by adding `v2` to the import paths, changing `github.com/apache/beam/sdks/go/`... to `github.com/apache/beam/sdks/v2/go/`... where applicable, and then running `go mod tidy`.
+
+Further documentation on using the SDK is available in the [Beam Programming Guide](/documentation/programming-guide/), and in the package [Go Doc](https://pkg.go.dev/github.com/apache/beam/sdks/v2/go/pkg/beam).
+
+## Feature Support
+
+At time of writing, the Go SDK is currently "Batteries Not Included".
+This means that there are gaps or edge cases in supported IOs and transforms.
+That said, the core of the SDK enables a great deal of the Beam Model for
+custom user use, supporting following features:
+
+* PTransforms
+  * Impulse
+  * Create
+  * ParDo with user DoFns
+    * Iterable side inputs
+    * Multiple output emitters
+    * Receive and return key-value pairs
+    * SplittableDoFns
+  * GroupByKey and CoGroupByKey
+  * CombineFns for use with Combine and CombinePerKey
+  * Flatten
+  * Partition
+  * Composite transforms
+  * Cross language transforms
+* EventTime windowing

Review comment:
       `beam.EventTime` is a special type value for beam event times. https://pkg.go.dev/github.com/apache/beam/sdks/v2/go/pkg/beam#EventTime




-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: github-unsubscribe@beam.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



[GitHub] [beam] apilloud commented on a change in pull request #15894: [Go SDK] Go SDK Exits Experimental

Posted by GitBox <gi...@apache.org>.
apilloud commented on a change in pull request #15894:
URL: https://github.com/apache/beam/pull/15894#discussion_r743098698



##########
File path: website/www/site/content/en/roadmap/go-sdk.md
##########
@@ -17,55 +17,14 @@ limitations under the License.
 
 # Go SDK Roadmap
 
-The Go SDK is currently experimental. As the first purely portable Beam SDK, the Go SDK is constrained
-by the status of the [Beam Portability Framework](https://beam.apache.org/roadmap/portability/) and the existence of
-portable runners.
+The Go SDK is [fully released as of v2.34.0](https://beam.apache.org/blog/go-sdk-release/).

Review comment:
       All your URLs should be relative. (Drop the 'https://beam.apache.org' prefix.)




-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: github-unsubscribe@beam.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org