You are viewing a plain text version of this content. The canonical link for it is here.
Posted to github@beam.apache.org by "damccorm (via GitHub)" <gi...@apache.org> on 2023/08/07 20:22:48 UTC

[GitHub] [beam] damccorm opened a new pull request, #27883: Move code contribution guide into repo

damccorm opened a new pull request, #27883:
URL: https://github.com/apache/beam/pull/27883

   This should hopefully make things more discoverable
   
   ------------------------
   
   Thank you for your contribution! Follow this checklist to help us incorporate your contribution quickly and easily:
   
    - [ ] Mention the appropriate issue in your description (for example: `addresses #123`), if applicable. This will automatically add a link to the pull request in the issue. If you would like the issue to automatically close on merging the pull request, comment `fixes #<ISSUE NUMBER>` instead.
    - [ ] 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/get-started-contributing/#make-the-reviewers-job-easier).
   
   To check the build health, please visit [https://github.com/apache/beam/blob/master/.test-infra/BUILD_STATUS.md](https://github.com/apache/beam/blob/master/.test-infra/BUILD_STATUS.md)
   
   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)
   [![Go tests](https://github.com/apache/beam/workflows/Go%20tests/badge.svg?branch=master&event=schedule)](https://github.com/apache/beam/actions?query=workflow%3A%22Go+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 or the [workflows README](https://github.com/apache/beam/blob/master/.github/workflows/README.md) to see a list of phrases to trigger workflows.
   


-- 
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] damccorm commented on pull request #27883: Move code contribution guide into repo

Posted by "damccorm (via GitHub)" <gi...@apache.org>.
damccorm commented on PR #27883:
URL: https://github.com/apache/beam/pull/27883#issuecomment-1668586861

   R: @liferoad 


-- 
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] liferoad commented on a diff in pull request #27883: Move code contribution guide into repo

Posted by "liferoad (via GitHub)" <gi...@apache.org>.
liferoad commented on code in PR #27883:
URL: https://github.com/apache/beam/pull/27883#discussion_r1286397051


##########
CONTRIBUTING.md:
##########
@@ -17,13 +17,314 @@
     under the License.
 -->
 
-## Contributing to Beam
+# Contributing to Beam
 
-*Before opening a pull request*, review the
-[Beam contribution guide](https://beam.apache.org/contribute/).
-It lists steps that are required before creating a PR. In particular, consider
+There are many ways to contribute to Beam, just one of which is by contributing code.
+For a full list of ways to contribute and get plugged into Beam, see the
+[Beam Contribution Guide](https://beam.apache.org/contribute/get-started-contributing/)
+
+## Code Contributions
+
+*Before opening a pull request*, review the Beam contribution guide below.
+It lists steps that are required before creating a PR and provides tips for
+getting started. In particular, consider the following:
 
 - Have you searched for existing, related Issues and pull requests?
 - Have you shared your intent by creating an issue and commenting that you plan to take it on?
 - If the change is large, have you discussed it on the dev@ mailing list?
 - Is the change being proposed clearly explained and motivated?
+
+These steps and instructions on getting started are outlined below as well.
+
+### Prerequisites
+
+- A [GitHub](https://github.com/) account.
+- A Linux, macOS, or Microsoft Windows development environment.
+- Java JDK 8 installed.
+- [Docker](https://www.docker.com/) installed for some tasks including building worker containers and testing changes to this website locally.
+- For SDK Development:
+  - [Go](https://golang.org) 1.16.0 or later installed for Go SDK development.

Review Comment:
   I remember Go has to be installed even for Java SDK development.



##########
.github/PULL_REQUEST_TEMPLATE.md:
##########
@@ -8,7 +8,7 @@ Thank you for your contribution! Follow this checklist to help us incorporate yo
  - [ ] 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/get-started-contributing/#make-the-reviewers-job-easier).
+See the [Contributor Guide](https://beam.apache.org/contribute) for more tips on [how to make review process smoother](https://beam.apache.orghttps://github.com/apache/beam/blob/master/CONTRIBUTING.md#make-the-reviewers-job-easier).
 

Review Comment:
   is this supposed to be `https://github.com/apache/beam/blob/master/CONTRIBUTING.md#make-the-reviewers-job-easier)`?



##########
CONTRIBUTING.md:
##########
@@ -17,13 +17,314 @@
     under the License.
 -->
 
-## Contributing to Beam
+# Contributing to Beam
 
-*Before opening a pull request*, review the
-[Beam contribution guide](https://beam.apache.org/contribute/).
-It lists steps that are required before creating a PR. In particular, consider
+There are many ways to contribute to Beam, just one of which is by contributing code.
+For a full list of ways to contribute and get plugged into Beam, see the
+[Beam Contribution Guide](https://beam.apache.org/contribute/get-started-contributing/)
+
+## Code Contributions
+
+*Before opening a pull request*, review the Beam contribution guide below.
+It lists steps that are required before creating a PR and provides tips for
+getting started. In particular, consider the following:
 
 - Have you searched for existing, related Issues and pull requests?
 - Have you shared your intent by creating an issue and commenting that you plan to take it on?
 - If the change is large, have you discussed it on the dev@ mailing list?
 - Is the change being proposed clearly explained and motivated?
+
+These steps and instructions on getting started are outlined below as well.
+
+### Prerequisites
+
+- A [GitHub](https://github.com/) account.
+- A Linux, macOS, or Microsoft Windows development environment.
+- Java JDK 8 installed.
+- [Docker](https://www.docker.com/) installed for some tasks including building worker containers and testing changes to this website locally.
+- For SDK Development:
+  - [Go](https://golang.org) 1.16.0 or later installed for Go SDK development.
+  - Python 3.x interpreters. You will need Python interpreters for all Python versions supported by Beam.
+    Interpreters should be installed and available in shell via `python3.x` commands. For more information, see:
+    Python installation tips in [Developer Wiki](https://cwiki.apache.org/confluence/display/BEAM/Python+Tips#PythonTips-InstallingPythoninterpreters).
+- For large contributions, a signed [Individual Contributor License.
+  Agreement](https://www.apache.org/licenses/icla.pdf) (ICLA) to the Apache
+  Software Foundation (ASF).
+
+### Share Your Intent
+1. Find or create an issue in the [Beam repo](https://github.com/apache/beam/issues/new/choose).
+   Tracking your work in an issue will avoid duplicated or conflicting work, and provide
+   a place for notes. Later, your pull request will be linked to the issue as well.
+2. Comment ".take-issue" on the issue. This will cause the issue to be assigned to you.
+   When you've completed the issue, you can close it by commenting ".close-issue".
+   If you are a committer and would like to assign an issue to a non-committer, they must comment
+   on the issue first; please tag the user asking them to do so or to comment "\`.take-issue\`".
+   The command will be ignored if it is surrounded by `\`` markdown characters.
+3. If your change is large or it is your first change, it is a good idea to
+   [discuss it on the dev@beam.apache.org mailing list](/community/contact-us/).
+4. For large changes create a design doc
+   ([template](https://s.apache.org/beam-design-doc-template),
+   [examples](https://s.apache.org/beam-design-docs)) and email it to the [dev@beam.apache.org mailing list](/community/contact-us/).
+
+### Setup Your Environment and Learn About Language Specific Setup
+
+Before you begin, check out the Wiki pages. There are many useful tips about [Git](https://cwiki.apache.org/confluence/display/BEAM/Git+Tips), [Go](https://cwiki.apache.org/confluence/display/BEAM/Go+Tips), [Gradle](https://cwiki.apache.org/confluence/display/BEAM/Gradle+Tips), [Java](https://cwiki.apache.org/confluence/display/BEAM/Java+Tips), [Python](https://cwiki.apache.org/confluence/display/BEAM/Python+Tips), etc.
+
+#### Configuration Options
+You have two options for configuring your development environment:
+- Local:
+  - Manually installing the [prerequisites](/contribute/#prerequisites).
+  - Using the automated script for Linux and macOS.
+- Container-based: using a [Docker](https://www.docker.com/) image.
+
+##### Local: Debian-based Distribution
+
+###### Manual steps
+
+To install these in a Debian-based distribution:
+1. Execute:
+    ```
+    sudo apt-get install \
+       openjdk-8-jdk \
+       python-setuptools \
+       python-pip \
+       virtualenv \
+       tox \
+       docker-ce
+    ```
+2. On some systems, like Ubuntu 20.04, install these:
+    ```
+    pip3 install grpcio-tools mypy-protobuf
+    ```
+3. If you develop in GO:
+  1. Install [Go](https://golang.org/doc/install).
+  2. Check BEAM repo is in: `$GOPATH/src/github.com/apache/`
+  3. At the end, it should look like this: `$GOPATH/src/github.com/apache/beam`
+4. Once Go is installed, install goavro:
+    ```
+    $ export GOPATH=`pwd`/sdks/go/examples/.gogradle/project_gopath
+    $ go get github.com/linkedin/goavro/v2
+    ```
+**Important**: gLinux users should configure their machines for sudoless Docker.
+
+###### Automated script for Linux and macOS
+
+You can install these in a Debian-based distribution for Linux or macOs using the [local-env-setup.sh](https://github.com/apache/beam/blob/master/local-env-setup.sh) script, which is part of the Beam repo. It contains:
+
+* pip3 packages
+* go packages
+* goavro
+* JDK 8
+* Python
+* Docker
+
+To install execute:
+```
+./local-env-setup.sh
+```
+
+##### Container: Docker-based
+
+Alternatively, you can use the Docker based local development environment to wrap your clone of the Beam repo
+into a container meeting the requirements above.
+
+You can start this container using the [start-build-env.sh](https://github.com/apache/beam/blob/master/start-build-env.sh) script which is part of the Beam repo.
+
+Execute:
+```
+./start-build-env.sh
+```
+
+#### Development Setup {#development-setup}
+
+1. Check [Git workflow tips](https://cwiki.apache.org/confluence/display/BEAM/Git+Tips) if you need help with git forking, cloning, branching, committing, pull requests, and squashing commits.
+
+2. Make a fork of https://github.com/apache/beam repo.
+
+3. Clone the forked repository. You can download it anywhere you like.
+    ```
+    $ mkdir -p ~/path/to/your/folder
+    $ cd ~/path/to/your/folder
+    $ git clone https://github.com/forked/apache/beam
+    $ cd beam
+    ```
+   For **Go development**:
+
+   We recommend putting it in your `$GOPATH` (`$HOME/go` by default on Unix systems).
+
+   Clone the repo, and update your branch as normal:
+    ```
+    $ git clone https://github.com/apache/beam.git
+    $ cd beam
+    $ git remote add <GitHub_user> git@github.com:<GitHub_user>/beam.git
+    $ git fetch --all
+    ```
+
+   Get or Update all the Go SDK dependencies:
+    ```
+    $ go get -u ./...
+    ```
+
+4. Check the environment was set up correctly.
+
+   **Option 1**: validate the Go, Java, and Python environments:
+
+   **Important**: Make sure you have activated Python development.
+    ```
+    ./gradlew :checkSetup
+    ```
+   **Option 2**: Run independent checks:
+  - For **Go development**:
+      ```
+      export GOLANG_PROTOBUF_REGISTRATION_CONFLICT=ignore./gradlew :sdks:go:examples:wordCount
+      ```
+  - For **Python development**:
+      ```
+      ./gradlew :sdks:python:wordCount
+      ```
+  - For **Java development**:
+      ```
+      ./gradlew :examples:java:wordCount
+     ```
+
+5. Familiarize yourself with gradle and the project structure.
+
+   At the root of the git repository, run:
+    ```
+    $ ./gradlew projects
+    ```
+   Examine the available tasks in a project. For the default set of tasks, use:
+    ```
+    $ ./gradlew tasks
+    ```
+   For a given module, use:
+    ```
+    $ ./gradlew -p sdks/java/io/cassandra tasks
+    ```
+   For an exhaustive list of tasks, use:
+    ```
+    $ ./gradlew tasks --all
+    ```
+
+6. Make sure you can build and run tests.
+
+   Since Beam is a large project, usually, you will want to limit testing to the particular module you are working on. Gradle will build just the necessary things to run those tests. For example:
+    ```
+    $ ./gradlew -p sdks/go check
+    $ ./gradlew -p sdks/java/io/cassandra check
+    $ ./gradlew -p runners/flink check
+    ```
+
+7. Now you may want to set up your preferred IDE and other aspects of your development
+   environment. See the Developers' wiki for tips, guides, and FAQs on:
+  - [IntelliJ](https://cwiki.apache.org/confluence/display/BEAM/Using+IntelliJ+IDE)
+  - [Java](https://cwiki.apache.org/confluence/display/BEAM/Java+Tips)
+  - [Python](https://cwiki.apache.org/confluence/display/BEAM/Python+Tips)
+  - [Go](https://cwiki.apache.org/confluence/display/BEAM/Go+Tips)
+  - [Website](https://cwiki.apache.org/confluence/display/BEAM/Website+Tips)
+  - [Gradle](https://cwiki.apache.org/confluence/display/BEAM/Gradle+Tips)
+  - [Jenkins](https://cwiki.apache.org/confluence/display/BEAM/Jenkins+Tips)
+  - [FAQ](https://cwiki.apache.org/confluence/display/BEAM/Contributor+FAQ)
+
+### Create a Pull Request
+
+1. Make your code change. Every source file needs to include the Apache license header. Every new dependency needs to
+   have an open source license [compatible](https://www.apache.org/legal/resolved.html#criteria) with Apache.
+
+2. Add unit tests for your change.
+
+3. Use descriptive commit messages that make it easy to identify changes and provide a clear history.
+
+4. When your change is ready to be reviewed and merged, create a pull request.
+
+5. Link to the issue you are addressing in your pull request.
+
+6. The pull request and any changes pushed to it will trigger [pre-commit
+   jobs](https://cwiki.apache.org/confluence/display/BEAM/Contribution+Testing+Guide#ContributionTestingGuide-Pre-commit). If a test fails and appears unrelated to your
+   change, you can cause tests to be re-run by adding a single line comment on your
+   PR:
+    ```
+    retest this please
+    ```
+Pull request template has a link to a [catalog of trigger phrases](https://github.com/apache/beam/blob/master/.test-infra/jenkins/README.md)
+that start various post-commit tests suites. Use these sparingly because post-commit tests consume shared development resources.
+
+### Review Process and Releases
+
+#### Get Reviewed
+
+Your pull requests should automatically have reviewers assigned within a few hours of opening it.
+If that doesn't happen for some reason, you can also request a review yourself.
+
+1. Pull requests can only be merged by a
+   [Beam committer](https://home.apache.org/phonebook.html?pmc=beam).
+   To find a committer for your area, either:
+  - look for similar code merges, or
+  - ask on [dev@beam.apache.org](/community/contact-us/)

Review Comment:
   should this be `https://beam.apache.org/community/contact-us/`?



##########
CONTRIBUTING.md:
##########
@@ -17,13 +17,314 @@
     under the License.
 -->
 
-## Contributing to Beam
+# Contributing to Beam
 
-*Before opening a pull request*, review the
-[Beam contribution guide](https://beam.apache.org/contribute/).
-It lists steps that are required before creating a PR. In particular, consider
+There are many ways to contribute to Beam, just one of which is by contributing code.
+For a full list of ways to contribute and get plugged into Beam, see the
+[Beam Contribution Guide](https://beam.apache.org/contribute/get-started-contributing/)
+
+## Code Contributions
+
+*Before opening a pull request*, review the Beam contribution guide below.
+It lists steps that are required before creating a PR and provides tips for
+getting started. In particular, consider the following:
 
 - Have you searched for existing, related Issues and pull requests?
 - Have you shared your intent by creating an issue and commenting that you plan to take it on?
 - If the change is large, have you discussed it on the dev@ mailing list?
 - Is the change being proposed clearly explained and motivated?
+
+These steps and instructions on getting started are outlined below as well.
+
+### Prerequisites
+
+- A [GitHub](https://github.com/) account.
+- A Linux, macOS, or Microsoft Windows development environment.
+- Java JDK 8 installed.
+- [Docker](https://www.docker.com/) installed for some tasks including building worker containers and testing changes to this website locally.
+- For SDK Development:
+  - [Go](https://golang.org) 1.16.0 or later installed for Go SDK development.
+  - Python 3.x interpreters. You will need Python interpreters for all Python versions supported by Beam.
+    Interpreters should be installed and available in shell via `python3.x` commands. For more information, see:
+    Python installation tips in [Developer Wiki](https://cwiki.apache.org/confluence/display/BEAM/Python+Tips#PythonTips-InstallingPythoninterpreters).
+- For large contributions, a signed [Individual Contributor License.
+  Agreement](https://www.apache.org/licenses/icla.pdf) (ICLA) to the Apache
+  Software Foundation (ASF).
+
+### Share Your Intent
+1. Find or create an issue in the [Beam repo](https://github.com/apache/beam/issues/new/choose).
+   Tracking your work in an issue will avoid duplicated or conflicting work, and provide
+   a place for notes. Later, your pull request will be linked to the issue as well.
+2. Comment ".take-issue" on the issue. This will cause the issue to be assigned to you.
+   When you've completed the issue, you can close it by commenting ".close-issue".
+   If you are a committer and would like to assign an issue to a non-committer, they must comment
+   on the issue first; please tag the user asking them to do so or to comment "\`.take-issue\`".
+   The command will be ignored if it is surrounded by `\`` markdown characters.
+3. If your change is large or it is your first change, it is a good idea to
+   [discuss it on the dev@beam.apache.org mailing list](/community/contact-us/).
+4. For large changes create a design doc
+   ([template](https://s.apache.org/beam-design-doc-template),
+   [examples](https://s.apache.org/beam-design-docs)) and email it to the [dev@beam.apache.org mailing list](/community/contact-us/).
+
+### Setup Your Environment and Learn About Language Specific Setup
+
+Before you begin, check out the Wiki pages. There are many useful tips about [Git](https://cwiki.apache.org/confluence/display/BEAM/Git+Tips), [Go](https://cwiki.apache.org/confluence/display/BEAM/Go+Tips), [Gradle](https://cwiki.apache.org/confluence/display/BEAM/Gradle+Tips), [Java](https://cwiki.apache.org/confluence/display/BEAM/Java+Tips), [Python](https://cwiki.apache.org/confluence/display/BEAM/Python+Tips), etc.
+
+#### Configuration Options
+You have two options for configuring your development environment:
+- Local:
+  - Manually installing the [prerequisites](/contribute/#prerequisites).
+  - Using the automated script for Linux and macOS.
+- Container-based: using a [Docker](https://www.docker.com/) image.
+
+##### Local: Debian-based Distribution
+
+###### Manual steps
+
+To install these in a Debian-based distribution:
+1. Execute:
+    ```
+    sudo apt-get install \
+       openjdk-8-jdk \
+       python-setuptools \
+       python-pip \
+       virtualenv \
+       tox \
+       docker-ce
+    ```
+2. On some systems, like Ubuntu 20.04, install these:
+    ```
+    pip3 install grpcio-tools mypy-protobuf
+    ```
+3. If you develop in GO:
+  1. Install [Go](https://golang.org/doc/install).
+  2. Check BEAM repo is in: `$GOPATH/src/github.com/apache/`
+  3. At the end, it should look like this: `$GOPATH/src/github.com/apache/beam`
+4. Once Go is installed, install goavro:
+    ```
+    $ export GOPATH=`pwd`/sdks/go/examples/.gogradle/project_gopath
+    $ go get github.com/linkedin/goavro/v2
+    ```
+**Important**: gLinux users should configure their machines for sudoless Docker.
+
+###### Automated script for Linux and macOS
+
+You can install these in a Debian-based distribution for Linux or macOs using the [local-env-setup.sh](https://github.com/apache/beam/blob/master/local-env-setup.sh) script, which is part of the Beam repo. It contains:
+
+* pip3 packages
+* go packages
+* goavro
+* JDK 8
+* Python
+* Docker
+
+To install execute:
+```
+./local-env-setup.sh
+```
+
+##### Container: Docker-based
+
+Alternatively, you can use the Docker based local development environment to wrap your clone of the Beam repo
+into a container meeting the requirements above.
+
+You can start this container using the [start-build-env.sh](https://github.com/apache/beam/blob/master/start-build-env.sh) script which is part of the Beam repo.
+
+Execute:
+```
+./start-build-env.sh
+```
+
+#### Development Setup {#development-setup}
+
+1. Check [Git workflow tips](https://cwiki.apache.org/confluence/display/BEAM/Git+Tips) if you need help with git forking, cloning, branching, committing, pull requests, and squashing commits.
+
+2. Make a fork of https://github.com/apache/beam repo.
+
+3. Clone the forked repository. You can download it anywhere you like.
+    ```
+    $ mkdir -p ~/path/to/your/folder
+    $ cd ~/path/to/your/folder
+    $ git clone https://github.com/forked/apache/beam
+    $ cd beam
+    ```
+   For **Go development**:
+
+   We recommend putting it in your `$GOPATH` (`$HOME/go` by default on Unix systems).
+
+   Clone the repo, and update your branch as normal:
+    ```
+    $ git clone https://github.com/apache/beam.git
+    $ cd beam
+    $ git remote add <GitHub_user> git@github.com:<GitHub_user>/beam.git
+    $ git fetch --all
+    ```
+
+   Get or Update all the Go SDK dependencies:
+    ```
+    $ go get -u ./...
+    ```
+
+4. Check the environment was set up correctly.
+
+   **Option 1**: validate the Go, Java, and Python environments:
+
+   **Important**: Make sure you have activated Python development.
+    ```
+    ./gradlew :checkSetup
+    ```
+   **Option 2**: Run independent checks:
+  - For **Go development**:
+      ```
+      export GOLANG_PROTOBUF_REGISTRATION_CONFLICT=ignore./gradlew :sdks:go:examples:wordCount
+      ```
+  - For **Python development**:
+      ```
+      ./gradlew :sdks:python:wordCount
+      ```
+  - For **Java development**:
+      ```
+      ./gradlew :examples:java:wordCount
+     ```
+
+5. Familiarize yourself with gradle and the project structure.
+
+   At the root of the git repository, run:
+    ```
+    $ ./gradlew projects
+    ```
+   Examine the available tasks in a project. For the default set of tasks, use:
+    ```
+    $ ./gradlew tasks
+    ```
+   For a given module, use:
+    ```
+    $ ./gradlew -p sdks/java/io/cassandra tasks
+    ```
+   For an exhaustive list of tasks, use:
+    ```
+    $ ./gradlew tasks --all
+    ```
+
+6. Make sure you can build and run tests.
+
+   Since Beam is a large project, usually, you will want to limit testing to the particular module you are working on. Gradle will build just the necessary things to run those tests. For example:
+    ```
+    $ ./gradlew -p sdks/go check
+    $ ./gradlew -p sdks/java/io/cassandra check
+    $ ./gradlew -p runners/flink check
+    ```
+
+7. Now you may want to set up your preferred IDE and other aspects of your development
+   environment. See the Developers' wiki for tips, guides, and FAQs on:
+  - [IntelliJ](https://cwiki.apache.org/confluence/display/BEAM/Using+IntelliJ+IDE)
+  - [Java](https://cwiki.apache.org/confluence/display/BEAM/Java+Tips)
+  - [Python](https://cwiki.apache.org/confluence/display/BEAM/Python+Tips)
+  - [Go](https://cwiki.apache.org/confluence/display/BEAM/Go+Tips)
+  - [Website](https://cwiki.apache.org/confluence/display/BEAM/Website+Tips)
+  - [Gradle](https://cwiki.apache.org/confluence/display/BEAM/Gradle+Tips)
+  - [Jenkins](https://cwiki.apache.org/confluence/display/BEAM/Jenkins+Tips)
+  - [FAQ](https://cwiki.apache.org/confluence/display/BEAM/Contributor+FAQ)
+
+### Create a Pull Request
+
+1. Make your code change. Every source file needs to include the Apache license header. Every new dependency needs to
+   have an open source license [compatible](https://www.apache.org/legal/resolved.html#criteria) with Apache.
+
+2. Add unit tests for your change.
+
+3. Use descriptive commit messages that make it easy to identify changes and provide a clear history.
+
+4. When your change is ready to be reviewed and merged, create a pull request.
+
+5. Link to the issue you are addressing in your pull request.
+
+6. The pull request and any changes pushed to it will trigger [pre-commit
+   jobs](https://cwiki.apache.org/confluence/display/BEAM/Contribution+Testing+Guide#ContributionTestingGuide-Pre-commit). If a test fails and appears unrelated to your
+   change, you can cause tests to be re-run by adding a single line comment on your
+   PR:
+    ```
+    retest this please
+    ```
+Pull request template has a link to a [catalog of trigger phrases](https://github.com/apache/beam/blob/master/.test-infra/jenkins/README.md)
+that start various post-commit tests suites. Use these sparingly because post-commit tests consume shared development resources.
+
+### Review Process and Releases
+
+#### Get Reviewed
+
+Your pull requests should automatically have reviewers assigned within a few hours of opening it.
+If that doesn't happen for some reason, you can also request a review yourself.
+
+1. Pull requests can only be merged by a
+   [Beam committer](https://home.apache.org/phonebook.html?pmc=beam).
+   To find a committer for your area, either:
+  - look for similar code merges, or
+  - ask on [dev@beam.apache.org](/community/contact-us/)

Review Comment:
   looks like other links might be broken.



-- 
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] github-actions[bot] commented on pull request #27883: Move code contribution guide into repo

Posted by "github-actions[bot] (via GitHub)" <gi...@apache.org>.
github-actions[bot] commented on PR #27883:
URL: https://github.com/apache/beam/pull/27883#issuecomment-1668588206

   Stopping reviewer notifications for this pull request: review requested by someone other than the bot, ceding control


-- 
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] github-actions[bot] commented on pull request #27883: Move code contribution guide into repo

Posted by "github-actions[bot] (via GitHub)" <gi...@apache.org>.
github-actions[bot] commented on PR #27883:
URL: https://github.com/apache/beam/pull/27883#issuecomment-1668576964

   Assigning reviewers. If you would like to opt out of this review, comment `assign to next reviewer`:
   
   R: @Abacn for label build.
   
   Available commands:
   - `stop reviewer notifications` - opt out of the automated review tooling
   - `remind me after tests pass` - tag the comment author after tests pass
   - `waiting on author` - shift the attention set back to the author (any comment or push by the author will return the attention set to the reviewers)
   
   The PR bot will only process comments in the main thread (not review comments).


-- 
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] damccorm commented on a diff in pull request #27883: Move code contribution guide into repo

Posted by "damccorm (via GitHub)" <gi...@apache.org>.
damccorm commented on code in PR #27883:
URL: https://github.com/apache/beam/pull/27883#discussion_r1286459064


##########
.github/PULL_REQUEST_TEMPLATE.md:
##########
@@ -8,7 +8,7 @@ Thank you for your contribution! Follow this checklist to help us incorporate yo
  - [ ] 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/get-started-contributing/#make-the-reviewers-job-easier).
+See the [Contributor Guide](https://beam.apache.org/contribute) for more tips on [how to make review process smoother](https://beam.apache.orghttps://github.com/apache/beam/blob/master/CONTRIBUTING.md#make-the-reviewers-job-easier).
 

Review Comment:
   Fixed



-- 
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] damccorm merged pull request #27883: Move code contribution guide into repo

Posted by "damccorm (via GitHub)" <gi...@apache.org>.
damccorm merged PR #27883:
URL: https://github.com/apache/beam/pull/27883


-- 
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] damccorm commented on a diff in pull request #27883: Move code contribution guide into repo

Posted by "damccorm (via GitHub)" <gi...@apache.org>.
damccorm commented on code in PR #27883:
URL: https://github.com/apache/beam/pull/27883#discussion_r1286459272


##########
CONTRIBUTING.md:
##########
@@ -17,13 +17,314 @@
     under the License.
 -->
 
-## Contributing to Beam
+# Contributing to Beam
 
-*Before opening a pull request*, review the
-[Beam contribution guide](https://beam.apache.org/contribute/).
-It lists steps that are required before creating a PR. In particular, consider
+There are many ways to contribute to Beam, just one of which is by contributing code.
+For a full list of ways to contribute and get plugged into Beam, see the
+[Beam Contribution Guide](https://beam.apache.org/contribute/get-started-contributing/)
+
+## Code Contributions
+
+*Before opening a pull request*, review the Beam contribution guide below.
+It lists steps that are required before creating a PR and provides tips for
+getting started. In particular, consider the following:
 
 - Have you searched for existing, related Issues and pull requests?
 - Have you shared your intent by creating an issue and commenting that you plan to take it on?
 - If the change is large, have you discussed it on the dev@ mailing list?
 - Is the change being proposed clearly explained and motivated?
+
+These steps and instructions on getting started are outlined below as well.
+
+### Prerequisites
+
+- A [GitHub](https://github.com/) account.
+- A Linux, macOS, or Microsoft Windows development environment.
+- Java JDK 8 installed.
+- [Docker](https://www.docker.com/) installed for some tasks including building worker containers and testing changes to this website locally.
+- For SDK Development:
+  - [Go](https://golang.org) 1.16.0 or later installed for Go SDK development.

Review Comment:
   Moved it out of SDK development and removed `for Go SDK development`



-- 
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] damccorm commented on a diff in pull request #27883: Move code contribution guide into repo

Posted by "damccorm (via GitHub)" <gi...@apache.org>.
damccorm commented on code in PR #27883:
URL: https://github.com/apache/beam/pull/27883#discussion_r1286459449


##########
CONTRIBUTING.md:
##########
@@ -17,13 +17,314 @@
     under the License.
 -->
 
-## Contributing to Beam
+# Contributing to Beam
 
-*Before opening a pull request*, review the
-[Beam contribution guide](https://beam.apache.org/contribute/).
-It lists steps that are required before creating a PR. In particular, consider
+There are many ways to contribute to Beam, just one of which is by contributing code.
+For a full list of ways to contribute and get plugged into Beam, see the
+[Beam Contribution Guide](https://beam.apache.org/contribute/get-started-contributing/)
+
+## Code Contributions
+
+*Before opening a pull request*, review the Beam contribution guide below.
+It lists steps that are required before creating a PR and provides tips for
+getting started. In particular, consider the following:
 
 - Have you searched for existing, related Issues and pull requests?
 - Have you shared your intent by creating an issue and commenting that you plan to take it on?
 - If the change is large, have you discussed it on the dev@ mailing list?
 - Is the change being proposed clearly explained and motivated?
+
+These steps and instructions on getting started are outlined below as well.
+
+### Prerequisites
+
+- A [GitHub](https://github.com/) account.
+- A Linux, macOS, or Microsoft Windows development environment.
+- Java JDK 8 installed.
+- [Docker](https://www.docker.com/) installed for some tasks including building worker containers and testing changes to this website locally.
+- For SDK Development:
+  - [Go](https://golang.org) 1.16.0 or later installed for Go SDK development.
+  - Python 3.x interpreters. You will need Python interpreters for all Python versions supported by Beam.
+    Interpreters should be installed and available in shell via `python3.x` commands. For more information, see:
+    Python installation tips in [Developer Wiki](https://cwiki.apache.org/confluence/display/BEAM/Python+Tips#PythonTips-InstallingPythoninterpreters).
+- For large contributions, a signed [Individual Contributor License.
+  Agreement](https://www.apache.org/licenses/icla.pdf) (ICLA) to the Apache
+  Software Foundation (ASF).
+
+### Share Your Intent
+1. Find or create an issue in the [Beam repo](https://github.com/apache/beam/issues/new/choose).
+   Tracking your work in an issue will avoid duplicated or conflicting work, and provide
+   a place for notes. Later, your pull request will be linked to the issue as well.
+2. Comment ".take-issue" on the issue. This will cause the issue to be assigned to you.
+   When you've completed the issue, you can close it by commenting ".close-issue".
+   If you are a committer and would like to assign an issue to a non-committer, they must comment
+   on the issue first; please tag the user asking them to do so or to comment "\`.take-issue\`".
+   The command will be ignored if it is surrounded by `\`` markdown characters.
+3. If your change is large or it is your first change, it is a good idea to
+   [discuss it on the dev@beam.apache.org mailing list](/community/contact-us/).
+4. For large changes create a design doc
+   ([template](https://s.apache.org/beam-design-doc-template),
+   [examples](https://s.apache.org/beam-design-docs)) and email it to the [dev@beam.apache.org mailing list](/community/contact-us/).
+
+### Setup Your Environment and Learn About Language Specific Setup
+
+Before you begin, check out the Wiki pages. There are many useful tips about [Git](https://cwiki.apache.org/confluence/display/BEAM/Git+Tips), [Go](https://cwiki.apache.org/confluence/display/BEAM/Go+Tips), [Gradle](https://cwiki.apache.org/confluence/display/BEAM/Gradle+Tips), [Java](https://cwiki.apache.org/confluence/display/BEAM/Java+Tips), [Python](https://cwiki.apache.org/confluence/display/BEAM/Python+Tips), etc.
+
+#### Configuration Options
+You have two options for configuring your development environment:
+- Local:
+  - Manually installing the [prerequisites](/contribute/#prerequisites).
+  - Using the automated script for Linux and macOS.
+- Container-based: using a [Docker](https://www.docker.com/) image.
+
+##### Local: Debian-based Distribution
+
+###### Manual steps
+
+To install these in a Debian-based distribution:
+1. Execute:
+    ```
+    sudo apt-get install \
+       openjdk-8-jdk \
+       python-setuptools \
+       python-pip \
+       virtualenv \
+       tox \
+       docker-ce
+    ```
+2. On some systems, like Ubuntu 20.04, install these:
+    ```
+    pip3 install grpcio-tools mypy-protobuf
+    ```
+3. If you develop in GO:
+  1. Install [Go](https://golang.org/doc/install).
+  2. Check BEAM repo is in: `$GOPATH/src/github.com/apache/`
+  3. At the end, it should look like this: `$GOPATH/src/github.com/apache/beam`
+4. Once Go is installed, install goavro:
+    ```
+    $ export GOPATH=`pwd`/sdks/go/examples/.gogradle/project_gopath
+    $ go get github.com/linkedin/goavro/v2
+    ```
+**Important**: gLinux users should configure their machines for sudoless Docker.
+
+###### Automated script for Linux and macOS
+
+You can install these in a Debian-based distribution for Linux or macOs using the [local-env-setup.sh](https://github.com/apache/beam/blob/master/local-env-setup.sh) script, which is part of the Beam repo. It contains:
+
+* pip3 packages
+* go packages
+* goavro
+* JDK 8
+* Python
+* Docker
+
+To install execute:
+```
+./local-env-setup.sh
+```
+
+##### Container: Docker-based
+
+Alternatively, you can use the Docker based local development environment to wrap your clone of the Beam repo
+into a container meeting the requirements above.
+
+You can start this container using the [start-build-env.sh](https://github.com/apache/beam/blob/master/start-build-env.sh) script which is part of the Beam repo.
+
+Execute:
+```
+./start-build-env.sh
+```
+
+#### Development Setup {#development-setup}
+
+1. Check [Git workflow tips](https://cwiki.apache.org/confluence/display/BEAM/Git+Tips) if you need help with git forking, cloning, branching, committing, pull requests, and squashing commits.
+
+2. Make a fork of https://github.com/apache/beam repo.
+
+3. Clone the forked repository. You can download it anywhere you like.
+    ```
+    $ mkdir -p ~/path/to/your/folder
+    $ cd ~/path/to/your/folder
+    $ git clone https://github.com/forked/apache/beam
+    $ cd beam
+    ```
+   For **Go development**:
+
+   We recommend putting it in your `$GOPATH` (`$HOME/go` by default on Unix systems).
+
+   Clone the repo, and update your branch as normal:
+    ```
+    $ git clone https://github.com/apache/beam.git
+    $ cd beam
+    $ git remote add <GitHub_user> git@github.com:<GitHub_user>/beam.git
+    $ git fetch --all
+    ```
+
+   Get or Update all the Go SDK dependencies:
+    ```
+    $ go get -u ./...
+    ```
+
+4. Check the environment was set up correctly.
+
+   **Option 1**: validate the Go, Java, and Python environments:
+
+   **Important**: Make sure you have activated Python development.
+    ```
+    ./gradlew :checkSetup
+    ```
+   **Option 2**: Run independent checks:
+  - For **Go development**:
+      ```
+      export GOLANG_PROTOBUF_REGISTRATION_CONFLICT=ignore./gradlew :sdks:go:examples:wordCount
+      ```
+  - For **Python development**:
+      ```
+      ./gradlew :sdks:python:wordCount
+      ```
+  - For **Java development**:
+      ```
+      ./gradlew :examples:java:wordCount
+     ```
+
+5. Familiarize yourself with gradle and the project structure.
+
+   At the root of the git repository, run:
+    ```
+    $ ./gradlew projects
+    ```
+   Examine the available tasks in a project. For the default set of tasks, use:
+    ```
+    $ ./gradlew tasks
+    ```
+   For a given module, use:
+    ```
+    $ ./gradlew -p sdks/java/io/cassandra tasks
+    ```
+   For an exhaustive list of tasks, use:
+    ```
+    $ ./gradlew tasks --all
+    ```
+
+6. Make sure you can build and run tests.
+
+   Since Beam is a large project, usually, you will want to limit testing to the particular module you are working on. Gradle will build just the necessary things to run those tests. For example:
+    ```
+    $ ./gradlew -p sdks/go check
+    $ ./gradlew -p sdks/java/io/cassandra check
+    $ ./gradlew -p runners/flink check
+    ```
+
+7. Now you may want to set up your preferred IDE and other aspects of your development
+   environment. See the Developers' wiki for tips, guides, and FAQs on:
+  - [IntelliJ](https://cwiki.apache.org/confluence/display/BEAM/Using+IntelliJ+IDE)
+  - [Java](https://cwiki.apache.org/confluence/display/BEAM/Java+Tips)
+  - [Python](https://cwiki.apache.org/confluence/display/BEAM/Python+Tips)
+  - [Go](https://cwiki.apache.org/confluence/display/BEAM/Go+Tips)
+  - [Website](https://cwiki.apache.org/confluence/display/BEAM/Website+Tips)
+  - [Gradle](https://cwiki.apache.org/confluence/display/BEAM/Gradle+Tips)
+  - [Jenkins](https://cwiki.apache.org/confluence/display/BEAM/Jenkins+Tips)
+  - [FAQ](https://cwiki.apache.org/confluence/display/BEAM/Contributor+FAQ)
+
+### Create a Pull Request
+
+1. Make your code change. Every source file needs to include the Apache license header. Every new dependency needs to
+   have an open source license [compatible](https://www.apache.org/legal/resolved.html#criteria) with Apache.
+
+2. Add unit tests for your change.
+
+3. Use descriptive commit messages that make it easy to identify changes and provide a clear history.
+
+4. When your change is ready to be reviewed and merged, create a pull request.
+
+5. Link to the issue you are addressing in your pull request.
+
+6. The pull request and any changes pushed to it will trigger [pre-commit
+   jobs](https://cwiki.apache.org/confluence/display/BEAM/Contribution+Testing+Guide#ContributionTestingGuide-Pre-commit). If a test fails and appears unrelated to your
+   change, you can cause tests to be re-run by adding a single line comment on your
+   PR:
+    ```
+    retest this please
+    ```
+Pull request template has a link to a [catalog of trigger phrases](https://github.com/apache/beam/blob/master/.test-infra/jenkins/README.md)
+that start various post-commit tests suites. Use these sparingly because post-commit tests consume shared development resources.
+
+### Review Process and Releases
+
+#### Get Reviewed
+
+Your pull requests should automatically have reviewers assigned within a few hours of opening it.
+If that doesn't happen for some reason, you can also request a review yourself.
+
+1. Pull requests can only be merged by a
+   [Beam committer](https://home.apache.org/phonebook.html?pmc=beam).
+   To find a committer for your area, either:
+  - look for similar code merges, or
+  - ask on [dev@beam.apache.org](/community/contact-us/)

Review Comment:
   Good call, I didn't notice these when I migrated some content from the website. 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