Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

go-algorand 3.16.1-stable Release PR #5465

Merged
merged 137 commits into from
Jun 12, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
137 commits
Select commit Hold shift + click to select a range
1fe68f4
CI: set reviewdog golangci-lint go version (#5196)
cce Mar 11, 2023
7b11fc7
goal: user defined scheme to connect to remote host (#4922)
win-t Mar 11, 2023
5214d4b
ERL: Support zero-size reservations (#5192)
AlgoAxel Mar 13, 2023
9e121f8
refactor: Move streamVerifier to util/execpool/stream (#5168)
algonautshant Mar 13, 2023
c556cfc
catchpoints: small tweaks, mostly to comments (#5195)
jannotti Mar 13, 2023
942eee1
txHandler: make dedup working set independent from ERL (#5200)
algorandskiy Mar 14, 2023
ca04d83
Algod: Remove unused 404 resp in simulate endpoint (#5211)
ahangsu Mar 16, 2023
6cad66e
catchpointdump: fix panic when processing gzip files (#5210)
algorandskiy Mar 17, 2023
f4fa3cb
Fix: Tech Debt (wsNetwork "auto" and OnlineAccountsDelete comment) (#…
AlgoAxel Mar 17, 2023
f8edd66
Goal: Introduce new command for simulate (#5213)
ahangsu Mar 21, 2023
0368e14
tools: compare node.log for matching catchpoint roots (#5205)
algorandskiy Mar 21, 2023
3b79446
Merge remote-tracking branch 'origin/rel/stable' into relstable3.15.0…
Algo-devops-service Mar 22, 2023
ac69a53
Bump Version, Remove buildnumber.dat and genesistimestamp.dat files.
Algo-devops-service Mar 22, 2023
b034cb8
Merge pull request #5223 from Algo-devops-service/relstable3.15.0-rem…
algojohnlee Mar 22, 2023
e31b978
util/s3: improve patch number capacity in version comparison (#5224)
algorandskiy Mar 22, 2023
88cf74a
Dev Tools: Integrate Logfile Navigator (lnav) (#5000)
Aharonee Mar 24, 2023
e659181
test: enable runtime metrics in custom templates (#5231)
algorandskiy Mar 24, 2023
9a0f374
Simulate: Add opcode costs and budgets into response (#5221)
algochoi Mar 27, 2023
7738691
docker: option to override topology file and peer address. (#5209)
shiqizng Mar 29, 2023
02f6d27
algod: search phonebook in data directory in addition to bindir (#5235)
algorandskiy Mar 29, 2023
1228171
ledger: rename "internal" to "eval" (#5236)
cce Mar 29, 2023
19862ba
tools: Don't use strings.Title in chopper (#5239)
Eric-Warehime Mar 29, 2023
14ce659
Algod: support state proofs recoverability (#4803)
id-ms Mar 30, 2023
b7234a3
api: Fix vote status computation. (#5228)
winder Mar 30, 2023
36ffb59
ledger: convert FC unmarshalled nil value to empty byte slice on DB w…
ahangsu Mar 30, 2023
1d8e2a4
tests: fix expect test regex and logger (#5244)
algorandskiy Mar 31, 2023
d27b674
tools: block generator (#5245)
shiqizng Mar 31, 2023
7703bc4
Algod: New health endpoint (k8s `/ready` endpoint) (#4844)
ahangsu Mar 31, 2023
f8a130e
ledger: fix commit tasks enqueueing (#5214)
algorandskiy Apr 3, 2023
c27422c
api: Limit request body size to 10MB (#5246)
algochoi Apr 3, 2023
1bc1252
Algod: rename crypto-stateproof-builder to crypto-stateproof-prover (…
id-ms Apr 4, 2023
896015f
AVM: Avoid panics in disassembly when branch instructions are short (…
jannotti Apr 4, 2023
ff2997b
tests: Change truncate to dd for e2e_subs tests (#5256)
algochoi Apr 5, 2023
f4f5ec6
Algod: Minor refactoring REST client `submitForm` from go-sdk PR #335…
ahangsu Apr 5, 2023
8068d8e
algocfg(profile): Add file name to config file conflict message. (#5262)
winder Apr 6, 2023
a80008f
goal: Better formatting in `goal clerk simulate` (#5259)
jasonpaulos Apr 6, 2023
d71fa38
tests: Change `dd` argument to use a bytes value (#5263)
algochoi Apr 6, 2023
9ff7947
follower: Set initial sync round to latest tracker committed round. (…
tzaffi Apr 7, 2023
edbc577
AVM: Share resource arrays across transactions (#5035)
jannotti Apr 7, 2023
142bbed
Typo Fix: fix typo in simulate.go (#5282)
eltociear Apr 10, 2023
e5ad8ee
AVM: Avoid panics while type checking bad immediates (#5271)
jannotti Apr 10, 2023
9875686
follower: add round information for missing deltas request (#5277)
tzaffi Apr 11, 2023
f8a9746
docker: disable rewards in devmode template (#5270)
joe-p Apr 11, 2023
335e0ad
chore: Focus CONTRIBUTING.md on code contributions. (#5294)
winder Apr 11, 2023
b75a1df
tools: new endpoints for block generator (#5257)
shiqizng Apr 12, 2023
c252aba
Fix: broken links (correct md link syntax) in contributing.md (#5301)
Apr 13, 2023
afc7387
ledger: Check MaxAcctLookback in tracker. (#5300)
winder Apr 13, 2023
1aeec2e
Merge remote-tracking branch 'origin/rel/stable' into excalq/relstabl…
excalq Apr 13, 2023
b2dc097
Merge pull request #5302 from algorand/excalq/relstable3.15.1-remerge
algojohnlee Apr 13, 2023
1d80ccb
chore: Rename ModStateProofNextRound to StateProofNext. (#5265)
winder Apr 14, 2023
15bc838
network: enforce maximum header size on outgoing ws conns (#5268)
iansuvak Apr 18, 2023
9901aa8
scripts: enhance upload_config.sh (#5260)
AlgoAxel Apr 18, 2023
885191a
ledger: fix error shadowing in accountsNewRound (#5266)
algorandskiy Apr 18, 2023
30acd70
algod: Modify simulate endpoint request type (#5292)
jasonpaulos Apr 18, 2023
7cc6a6c
docker: Updated user and data dir handling. (#5276)
winder Apr 19, 2023
4e06e73
docs: remove outdated personal statements (#5307)
Apr 19, 2023
66911af
eval: Add block hooks to eval tracer (#5303)
Eric-Warehime Apr 19, 2023
cae1b5b
docs: update agreement README with committableEvent (#5317)
Apr 20, 2023
bfc9863
algod: Allow timestamp offsets in dev mode (#5296)
algochoi Apr 20, 2023
c798ffd
tools: update block-generator to use conduit binary (#5306)
shiqizng Apr 20, 2023
a79532b
docs: increase heading levels, thus only one h1 is used (#5291)
Apr 21, 2023
036c4c9
docker: add profile support and improved endpoint access. (#5323)
winder Apr 21, 2023
c7ee8b2
Algod: Better Box Reference Error Message (#5325)
ahangsu Apr 21, 2023
b3f5ba1
tools: Cross Repo Types Comparison Tool (#5304)
tzaffi Apr 24, 2023
904a2a9
algocfg(profile): improve invalid profile error message. (#5324)
winder Apr 24, 2023
a9f11cd
Algod: Simulation run with increased limits on logs (#5247)
ahangsu Apr 24, 2023
1d155e5
docs: add titles of subsystems, minor md fixes (#5279)
Apr 24, 2023
ebf65a6
Test: Improve flaky test from non-deterministic order string (#5333)
ahangsu Apr 24, 2023
13e9c29
docs: Fix bug label (#5322)
Apr 25, 2023
5e27371
tests: Fix devmode test (#5334)
Eric-Warehime Apr 26, 2023
7866c32
AVM: Show opcode context for logicsigs (not just apps) (#5336)
jannotti Apr 26, 2023
1ff6da8
Simulate: Make optional signatures an opt-in feature (#5335)
jasonpaulos Apr 26, 2023
ebcd07b
EvalTracer: Txn group deltas Tracer (#5297)
Eric-Warehime Apr 27, 2023
6d13c31
REST: add the round number to algod box endpoint repsonse (#5340)
bbroder-algo Apr 28, 2023
f03090f
Enhancement: Only look back to FirstValid for pending transactions t…
barnjamin Apr 28, 2023
9fc6158
Fix: Correct GeneratedAccountsMnemonics Check (#5274)
AlgoAxel Apr 28, 2023
59ea5e9
testing: fix consensus version inconsistency in newTestLedger (#5342)
cce Apr 28, 2023
c90fe85
tools: search/replace indexer/conduit in block-generator (#5321)
tzaffi Apr 28, 2023
e24a35a
tools: add block-generator into published build (#5351)
tzaffi May 2, 2023
d17c1b5
tools: block generator data reporting (#5339)
shiqizng May 3, 2023
12bf7ff
DevOps: Add CODEOWNERS to restrict workflow edits (#5353)
onetechnical May 3, 2023
1634285
DevOps: fix codecov uploading (#5345)
onetechnical May 3, 2023
7818183
goal: Make goal state schema optional (#5356)
jasonpaulos May 4, 2023
91771c0
follow mode: set sync round after fast catchup. (#5349)
winder May 4, 2023
c5e57c3
logging: fix logging to line. (#5359)
winder May 4, 2023
d939705
bugfix: reduce flakiness in follower node test (#5355)
tzaffi May 5, 2023
ac9cdad
AVM: No low resources (#5328)
jannotti May 5, 2023
9e980d3
Algod: Simulation run with extra budget per transaction group (#5354)
ahangsu May 5, 2023
2bb2516
api: Txn Group Delta Apis (#5350)
Eric-Warehime May 9, 2023
7920f21
Algod: Use future consensus version to test with no low resources (#5…
jasonpaulos May 9, 2023
6bfe03a
tools: Run the Cross Repo Type Checker in C.I. (#5326)
tzaffi May 9, 2023
74c3caa
Tests: Fix error messages in ledger tests (#5363)
id-ms May 9, 2023
8926510
AVM: Modify StackType to provide additional information (#5130)
barnjamin May 10, 2023
b988971
Documentation: Add container image tagging information (#5372)
jsgranados May 10, 2023
460aebf
lint: enable nilerr linter and fix errors (#5361)
cce May 11, 2023
d7c5e54
txn tracer: Fix pointer bug copying deltas for txn groups (#5375)
Eric-Warehime May 11, 2023
c5c59a7
tools: allow dumpblocks work with wal-enabled dbs (#5380)
algorandskiy May 12, 2023
377d724
Algod: Add EvalTracer tests for StateDeltas (#5368)
jasonpaulos May 13, 2023
0152eae
tests: fix flaky stateproofs ledger tests (#5379)
id-ms May 15, 2023
cee1c81
tests: reduce flakiness in TestSyncRoundWithRemake (#5367)
tzaffi May 16, 2023
1425f3f
DevOps: Update CODEOWNERS to only refer to the devops group (#5389)
onetechnical May 16, 2023
57feb2c
Dependency: Update codec version to 1.1.9 (#5395)
algobarb May 17, 2023
31ae1d6
algod: Move delta API tags (#5396)
Eric-Warehime May 17, 2023
b376efd
netdeploy: Copy ledger directory for kv tracker database (#5392)
AlgoAxel May 18, 2023
5e1f8a2
assembler: Error if extra args are present in pragmas (#5400)
jasonpaulos May 19, 2023
b684243
ledger: Exclude stake at R-320 that is expired by R (#5403)
algorandskiy May 19, 2023
a497df0
algod: Don't return a top level array from algod (#5404)
Eric-Warehime May 19, 2023
06b7727
typo: fix typo in event.go (#5405)
eltociear May 22, 2023
99081cb
consensus: Introduce versions v37 and v38 (#5397)
algorandskiy May 22, 2023
f256d9d
Update the Version, BuildNumber, genesistimestamp.data
Algo-devops-service May 22, 2023
a873070
tools: run block generator using a preloaded db (#5384)
shiqizng May 22, 2023
1abbd50
bug fix: block generator test (#5410)
shiqizng May 22, 2023
297a4a1
Merge pull request #5406 from Algo-devops-service/relbeta3.16.0
algojohnlee May 23, 2023
ce3802e
test: remove follower node flaky TestSyncRoundWithRemake (#5415)
tzaffi May 24, 2023
9d2bfef
docker: Fix ADMIN_TOKEN and add missing variables to echo statements.…
winder May 24, 2023
3fb6964
ledger: report catchpoint writing only when it actually started (#5413)
algorandskiy May 24, 2023
058a9d5
Goal: rename `--allow-extra-opcode-budget` to `--allow-more-opcode-bu…
ahangsu May 24, 2023
cc2f223
Merge branch 'master' into relbeta3.16.0
Algo-devops-service May 24, 2023
f6e34b9
Merge pull request #5417 from Algo-devops-service/relbeta3.16.0
algojohnlee May 24, 2023
44f4da8
lint: Fix lint errors in `config/` (#5416)
algochoi May 24, 2023
1d9638a
algod: Capitalize API fields for state deltas (#5414)
algochoi May 25, 2023
79d1e3a
community: Create CODE_OF_CONDUCT.md (#5408)
winder May 25, 2023
e7e76fc
ci: make tidy and diffutils for macos
tzaffi May 25, 2023
a10efe5
AVM: Simplify conversion and fix a spurious complaint from static ana…
jannotti May 26, 2023
56b7e82
TEAL: Add columns to assembly error messages. (#5402)
jannotti May 26, 2023
6ad660f
tools: enable consecutive test runs in the block generator (#5409)
shiqizng May 26, 2023
aa6a5bb
AVM: Make apps and app accounts available while creation is "pending"…
jannotti May 30, 2023
d045ee7
Merge branch 'master' into relbeta3.16.0
Algo-devops-service May 30, 2023
f0db9b8
Merge pull request #5430 from Algo-devops-service/relbeta3.16.0
algojohnlee May 30, 2023
04fc60d
CICD: fix ci-build target for buildsrc-special support (#5433)
onetechnical May 30, 2023
b33c2ff
Merge branch 'master' into relbeta3.16.0
Algo-devops-service May 30, 2023
7d732ab
Merge pull request #5434 from Algo-devops-service/relbeta3.16.0
algojohnlee May 30, 2023
9263066
api: Fix errFailedRetrievingStateDelta response. (#5452)
winder Jun 5, 2023
4e99d62
Bump buildnumber.dat.
onetechnical Jun 6, 2023
01a8931
algod: adjust numeric version encoding (#5457)
algorandskiy Jun 7, 2023
dfda9e9
eval: update endOfBlock
cce Jun 6, 2023
7f246db
Merge pull request #5458 from algorand/relbeta3.16.1
algojohnlee Jun 7, 2023
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
9 changes: 9 additions & 0 deletions .circleci/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,11 @@ parameters:
valid_nightly_branch:
type: string
default: /hotfix\/.*/
# The following is intentional - hardcoding a token for public repos
# is recommended here to allow fork access
codecov:
type: string
default: "8b4a1f91-f154-4c26-b84c-c9aaa90159c6"

executors:
amd64_medium:
Expand Down Expand Up @@ -239,6 +244,8 @@ jobs:
executor: << parameters.platform >>_medium
working_directory: << pipeline.parameters.build_dir >>/project
parallelism: 32
environment:
CODECOV_TOKEN: << pipeline.parameters.codecov >>
steps:
- generic_build
- generic_test:
Expand All @@ -254,6 +261,8 @@ jobs:
executor: << parameters.platform >>_large
working_directory: << pipeline.parameters.build_dir >>/project
parallelism: 4
environment:
CODECOV_TOKEN: << pipeline.parameters.codecov >>
steps:
- generic_build
- generic_test:
Expand Down
2 changes: 1 addition & 1 deletion .github/ISSUE_TEMPLATE/bug_report.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
name: "\U0001F41C Bug report"
about: Report a reproducible bug.
title: ''
labels: new-bug
labels: bug
assignees: ''

---
Expand Down
4 changes: 3 additions & 1 deletion .github/workflows/pr-type-category.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,10 @@ jobs:
labels: "New Feature, Enhancement, Bug-Fix, Not-Yet-Enabled, Skip-Release-Notes"

- name: "Checking for PR Category in PR title. Should be like '<category>: <pr title>'."
env:
PR_TITLE: ${{ github.event.pull_request.title }}
run: |
if [[ ! "${{ github.event.pull_request.title }}" =~ ^.{2,}\:.{2,} ]]; then
if [[ ! "$PR_TITLE" =~ ^.{2,}\:.{2,} ]]; then
echo "## PR Category is missing from PR title. Please add it like '<category>: <pr title>'." >> GITHUB_STEP_SUMMARY
exit 1
fi
1 change: 1 addition & 0 deletions .github/workflows/reviewdog.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ jobs:
- name: reviewdog-golangci-lint
uses: reviewdog/action-golangci-lint@v2
with:
go_version_file: go.mod
golangci_lint_version: "v1.47.3"
golangci_lint_flags: "-c .golangci.yml --allow-parallel-runners"
reporter: "github-pr-check"
Expand Down
6 changes: 6 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -68,3 +68,9 @@ index.html

# test summary
testresults.json

# block generator binary
tools/block-generator/block-generator

# cross repo types tool binary
tools/x-repo-types/x-repo-types
10 changes: 2 additions & 8 deletions .golangci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ linters:
- govet
- ineffassign
- misspell
- nilerr
- nolintlint
- revive
- staticcheck
Expand All @@ -30,11 +31,6 @@ linters-settings:
require-explanation: true
errcheck:
exclude-functions:
# data/transactions/logic/assembler.go uses ops.error, warn, to append log messages: OK to ignore for this case
- (*github.com/algorand/go-algorand/data/transactions/logic.OpStream).errorf
- (*github.com/algorand/go-algorand/data/transactions/logic.OpStream).error
- (*github.com/algorand/go-algorand/data/transactions/logic.OpStream).warnf
- (*github.com/algorand/go-algorand/data/transactions/logic.OpStream).warn
# We do this 121 times and never check the error.
- (*github.com/spf13/cobra.Command).MarkFlagRequired
govet:
Expand All @@ -61,9 +57,6 @@ linters-settings:
- (github.com/algorand/go-algorand/logging.Logger).Error
- (github.com/algorand/go-algorand/logging.Logger).Fatal
- (github.com/algorand/go-algorand/logging.Logger).Panic
- (github.com/algorand/go-algorand/data/transactions/logic.OpStream).warnf
- (github.com/algorand/go-algorand/data/transactions/logic.OpStream).errorf
- (github.com/algorand/go-algorand/data/transactions/logic.OpStream).lineErrorf
- (github.com/algorand/go-algorand/cmd/goal/main).reportInfof
- (github.com/algorand/go-algorand/cmd/goal/main).reportInfoln
- (github.com/algorand/go-algorand/cmd/goal/main).reportWarnf
Expand Down Expand Up @@ -114,6 +107,7 @@ issues:
# - govet
- ineffassign
- misspell
# - nilerr
- nolintlint
# - revive
- staticcheck
Expand Down
2 changes: 2 additions & 0 deletions CODEOWNERS
Validating CODEOWNERS rules …
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
.github/ @algorand/devops
.circleci/ @algorand/devops
128 changes: 128 additions & 0 deletions CODE_OF_CONDUCT.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,128 @@
# Contributor Covenant Code of Conduct

## Our Pledge

We as members, contributors, and leaders pledge to make participation in our
community a harassment-free experience for everyone, regardless of age, body
size, visible or invisible disability, ethnicity, sex characteristics, gender
identity and expression, level of experience, education, socio-economic status,
nationality, personal appearance, race, religion, or sexual identity
and orientation.

We pledge to act and interact in ways that contribute to an open, welcoming,
diverse, inclusive, and healthy community.

## Our Standards

Examples of behavior that contributes to a positive environment for our
community include:

* Demonstrating empathy and kindness toward other people
* Being respectful of differing opinions, viewpoints, and experiences
* Giving and gracefully accepting constructive feedback
* Accepting responsibility and apologizing to those affected by our mistakes,
and learning from the experience
* Focusing on what is best not just for us as individuals, but for the
overall community

Examples of unacceptable behavior include:

* The use of sexualized language or imagery, and sexual attention or
advances of any kind
* Trolling, insulting or derogatory comments, and personal or political attacks
* Public or private harassment
* Publishing others' private information, such as a physical or email
address, without their explicit permission
* Other conduct which could reasonably be considered inappropriate in a
professional setting

## Enforcement Responsibilities

Community leaders are responsible for clarifying and enforcing our standards of
acceptable behavior and will take appropriate and fair corrective action in
response to any behavior that they deem inappropriate, threatening, offensive,
or harmful.

Community leaders have the right and responsibility to remove, edit, or reject
comments, commits, code, wiki edits, issues, and other contributions that are
not aligned to this Code of Conduct, and will communicate reasons for moderation
decisions when appropriate.

## Scope

This Code of Conduct applies within all community spaces, and also applies when
an individual is officially representing the community in public spaces.
Examples of representing our community include using an official e-mail address,
posting via an official social media account, or acting as an appointed
representative at an online or offline event.

## Enforcement

Instances of abusive, harassing, or otherwise unacceptable behavior may be
reported to the community leaders responsible for enforcement at
[email protected].
All complaints will be reviewed and investigated promptly and fairly.

All community leaders are obligated to respect the privacy and security of the
reporter of any incident.

## Enforcement Guidelines

Community leaders will follow these Community Impact Guidelines in determining
the consequences for any action they deem in violation of this Code of Conduct:

### 1. Correction

**Community Impact**: Use of inappropriate language or other behavior deemed
unprofessional or unwelcome in the community.

**Consequence**: A private, written warning from community leaders, providing
clarity around the nature of the violation and an explanation of why the
behavior was inappropriate. A public apology may be requested.

### 2. Warning

**Community Impact**: A violation through a single incident or series
of actions.

**Consequence**: A warning with consequences for continued behavior. No
interaction with the people involved, including unsolicited interaction with
those enforcing the Code of Conduct, for a specified period of time. This
includes avoiding interactions in community spaces as well as external channels
like social media. Violating these terms may lead to a temporary or
permanent ban.

### 3. Temporary Ban

**Community Impact**: A serious violation of community standards, including
sustained inappropriate behavior.

**Consequence**: A temporary ban from any sort of interaction or public
communication with the community for a specified period of time. No public or
private interaction with the people involved, including unsolicited interaction
with those enforcing the Code of Conduct, is allowed during this period.
Violating these terms may lead to a permanent ban.

### 4. Permanent Ban

**Community Impact**: Demonstrating a pattern of violation of community
standards, including sustained inappropriate behavior, harassment of an
individual, or aggression toward or disparagement of classes of individuals.

**Consequence**: A permanent ban from any sort of public interaction within
the community.

## Attribution

This Code of Conduct is adapted from the [Contributor Covenant][homepage],
version 2.0, available at
https://www.contributor-covenant.org/version/2/0/code_of_conduct.html.

Community Impact Guidelines were inspired by [Mozilla's code of conduct
enforcement ladder](https://github.com/mozilla/diversity).

[homepage]: https://www.contributor-covenant.org

For answers to common questions about this code of conduct, see the FAQ at
https://www.contributor-covenant.org/faq. Translations are available at
https://www.contributor-covenant.org/translations.
74 changes: 39 additions & 35 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,58 +2,62 @@

If you are interested in contributing to the project, we welcome and thank you. We want to make the best decentralized and effective blockchain platform available and we appreciate your willingness to help us.

The [Algorand GitHub Organization](https://github.com/algorand) has all of our open source projects, and dependencies which we fork and use in those projects. This contribution guide applies to all of these.
The [Algorand GitHub Organization](https://github.com/algorand) has all of our open source projects, and dependencies which we fork and use in those projects. While technical details in this document are specific to `go-algorand`, the general ideas are applicable to all of our projects.

Some of our most active projects include:
* [go-algorand](https://github.com/algorand/go-algorand) - Algorand node software (this repository)
* [go-algorand-sdk](https://github.com/algorand/go-algorand-sdk) - Golang SDK
* [java-algorand-sdk](https://github.com/algorand/java-algorand-sdk) - Java SDK
* [js-algorand-sdk](https://github.com/algorand/js-algorand-sdk) - JavaScript SDK
* [indexer](https://github.com/algorand/indexer) - Blockchain analytics database
* [ledger-app-algorand](https://github.com/algorand/ledger-app-algorand) - Ledger hardware wallet application
* [mule](https://github.com/algorand/mule) - Continuous Integration automation tool
* [py-algorand-sdk](https://github.com/algorand/py-algorand-sdk) - Python SDK
* [sandbox](https://github.com/algorand/sandbox) - Algorand node quickstart tool
## Non-code Contributions

## Filing Issues
While contributions come in many forms, this document is focused on code. For other types of involvement, see the following:
* [Reporting issues and features requests.][go-algorand-issues]
* [Security vulnerability disclosures.][security-disclosure]
* [Documentation improvements.][algorand-docs]

Did you discover a bug? Do you have a feature request? Filing issues is an easy way anyone can contribute and helps us improve Algorand. We use GitHub Issues to track all known bugs and feature requests.
## Contribution Model

Before logging an issue be sure to check current issues, verify that your [node is synced](https://developer.algorand.org/docs/introduction-installing-node#sync-node), check the [Developer Frequently Asked Questions](https://developer.algorand.org/docs/developer-faq) and [GitHub issues][issues_url] to see if your issue is described there.
All changes to `go-algorand` are made through the same process: a pull request targeting the `master` branch. This goes for internal and external contributions. To familiarize yourself with the process we recommend that you review the current open pull requests, and the GitHub documentation for [creating a pull request from a fork][gh-pr-process].

If you’d like to contribute to any of the repositories, please file a [GitHub issue][issues_url] using the issues menu item. Make sure to specify whether you are describing a bug or a new enhancement using the **Bug report** or **Feature request** button.
Note: some of our other projects are using gitflow, for these the process is the same but you will target pull requests against the `develop` branch.

See the GitHub help guide for more information on [filing an issue](https://help.github.com/en/articles/creating-an-issue).
## Communication Channels

## Security / Vulnerabilities
The core development team monitors the Algorand [discord community](https://discord.gg/algorand) and regularly responds to questions and suggestions. For very technical questions and implementation discussions GitHub Issues and Pull Requests are a good way to reach maintainers.

Please refer to our [SECURITY](SECURITY.md) document.
## Pull Requests

If you have any questions, don't hesitate to contact us at [email protected].
All changes are are made via pull requests.

## Contribution Model
Small changes are easier to review and merge than large ones, so the more focused a PR the better. If a feature requires refactoring, the refactoring should be a separate PR. If refactoring uncovers a bug, the fix should be a separate PR. These are not strict rules, but generally speaking, they make things easier to review which speeds up the PR process.

For each of our repositories we use the same model for contributing code. Developers wanting to contribute must create pull requests. This process is described in the GitHub [Creating a pull request from a fork](https://help.github.com/en/articles/creating-a-pull-request-from-a-fork) documentation. Each pull request should be initiated against the `master` branch in the Algorand repository. After a pull request is submitted the core development team will review the submission and communicate with the developer using the comments sections of the PR. After the submission is reviewed and approved, it will be merged into the `master` branch of the source. These changes will be merged to our release branch on the next viable release date. For the SDKs, this may be immediate. Changes to the node software may take more time as we must ensure and verify the security, as well as apply protocol upgrades in an orderly way.
### General Guidelines

Note: some of our projects are using gitflow, for these you will open pull requests against the `develop` branch.
* Have a clear well-formatted description in the pull request. This helps reviewers and later serves as documentation in the release notes.
* Code must adhere to the [Go formatting guidelines](https://golang.org/doc/effective_go.html).
* All tests must be passing.
* New unit and integration tests should be added to ensure correctness and prevent regressions where appropriate.
* Run linting and code formatting tools, see [the README](README.md) for details.
* All CI checks should pass.
* Use draft mode for PRs that are still in progress.

Again, if you have a patch for a critical security vulnerability, please use our [vulnerability disclosure form][vuln_url] instead of creating a PR. We'll follow up with you on distributing the patch before we merge it.
### Peer Review

## Code Guidelines
This is the single most important part of introducing new code to `go-algorand`.

For Go code we use the [Golang guidelines defined here](https://golang.org/doc/effective_go.html).
* Code must adhere to the official Go formatting guidelines (i.e. uses gofmt).
* We use **gofmt** and **golangci-lint**. Also make sure to run `make sanity` and `make generate` before opening a pull request.
* Code must be documented adhering to the official Go commentary guidelines.
#### Concept Review

For JavaScript code we use the [MDN formatting rules](https://developer.mozilla.org/en-US/docs/MDN/Contribute/Guidelines/Code_guidelines/JavaScript).
Because code reviews are a considerable time commitment, the first step for peer review is convincing reviewers that it is worth their time. Typically this is done by keeping changes small, writing a thorough description to clearly explain the need for a given improvement, or discussing larger changes ahead of time through one of the communication channels.

For Java code we use [Oracle’s standard formatting rules for Java](https://www.oracle.com/technetwork/java/codeconventions-150003.pdf).
If reviewers are not convinced about the merits of a change, they may reject a PR instead of reviewing it. All rejections should include the rationale for how that decision was reached. It is not uncommon for this to occur. Some users opt to maintain long running forks to add features which are not suitable for the upstream repo at this time.

## Communication Channels
#### Code Review

Reviewers will leave feedback directly on the pull request, typically inline with the code. This is an opportunity to discuss the changes. If a PR is left open with unresolved feedback it may eventually be closed.

The project maintainers are responsible for the code in `go-algorand`, so ultimately whether or not a pull request is merged depends on their involvement.

#### Merge

The core development team monitors the Algorand community forums and regularly responds to questions and suggestions. Issues and Pull Requests are handled on GitHub.
All changes are subject to a minimum of two reviews from subject matter experts prior to merge. Once this approval is reached a small number of committers are responsible for merging the changes. The list of committers is limited for practical and security reasons.

[issues_url]: https://github.com/algorand/go-algorand/issues
[vuln_url]: https://www.algorand.com/resources/blog/security
[bug_bounty_url]: https://bugcrowd.com/algorand
[gh-pr-process]: https://help.github.com/en/articles/creating-a-pull-request-from-a-fork
[go-algorand-issues]: https://github.com/algorand/go-algorand/issues/new/choose
[security-disclosure]: https://github.com/algorand/go-algorand/security/policy
[algorand-docs]: https://github.com/algorand/docs/blob/staging/CONTRIBUTING.md
6 changes: 2 additions & 4 deletions Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -49,12 +49,10 @@ ENV PATH="/node/bin:${PATH}" ALGOD_PORT="8080" KMD_PORT="7833" ALGORAND_DATA="/a
RUN apt-get update && apt-get install -y --no-install-recommends ca-certificates curl && \
rm -rf /var/lib/apt/lists/* && \
mkdir -p "$ALGORAND_DATA" && \
groupadd --system algorand && \
useradd --no-log-init --create-home --system --gid algorand algorand && \
groupadd --gid=999 --system algorand && \
useradd --uid=999 --no-log-init --create-home --system --gid algorand algorand && \
chown -R algorand:algorand /algod

USER algorand

COPY --chown=algorand:algorand --from=builder "/dist/bin/" "/node/bin/"
COPY --chown=algorand:algorand --from=builder "/dist/files/run/" "/node/run/"

Expand Down
Loading