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 [email protected] 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 [email protected] 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 [email protected] 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 [email protected] 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 [email protected] 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: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


Reply via email to