Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Contributing to Go
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Nathan Youngman
May 26, 2014
Technology
490
2
Share
Contributing to Go
Motivation and How-to for contributing to Go.
Nathan Youngman
May 26, 2014
More Decks by Nathan Youngman
See All by Nathan Youngman
The Healthy Programmer
nathany
2
120
Go and Node.js: a comparison
nathany
1
240
Diet Hacks
nathany
2
390
Go 1.6 and HTTP/2
nathany
3
150
Upgrading Rails Redux
nathany
1
99
GopherCon recap
nathany
0
190
Go Functions
nathany
0
110
Go Arrays & Slices
nathany
0
160
Go Types
nathany
2
140
Other Decks in Technology
See All in Technology
I ran an automated simulation of fake news spread using OpenClaw.
zzzzico
0
160
Why we keep our community?
kawaguti
PRO
0
360
AIエージェント勉強会第3回 エージェンティックAIの時代がやってきた
ymiya55
0
220
トイルを超えたCREは何屋になるのか
bengo4com
0
120
Network Firewall Proxyで 自前プロキシを消し去ることができるのか
gusandayo
0
160
CloudFrontのHost Header転送設定でパケットの中身はどう変わるのか?
nagisa53
1
250
Babylon.js Japan Activities (2026/4)
limes2018
0
140
BFCacheを活用して無限スクロールのUX を改善した話
apple_yagi
0
140
LLMに何を任せ、何を任せないか
cap120
11
6.9k
Physical AI on AWS リファレンスアーキテクチャ / Physical AI on AWS Reference Architecture
aws_shota
1
300
OpenClaw初心者向けセミナー / OpenClaw Beginner Seminar
cmhiranofumio
0
210
MIX AUDIO EN BROADCAST
ralpherick
0
140
Featured
See All Featured
Exploring anti-patterns in Rails
aemeredith
3
300
Rebuilding a faster, lazier Slack
samanthasiow
85
9.4k
Lightning Talk: Beautiful Slides for Beginners
inesmontani
PRO
1
500
Principles of Awesome APIs and How to Build Them.
keavy
128
17k
Getting science done with accelerated Python computing platforms
jacobtomlinson
2
160
Highjacked: Video Game Concept Design
rkendrick25
PRO
1
340
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.6k
Navigating Weather and Climate Data
rabernat
0
160
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.3k
My Coaching Mixtape
mlcsv
0
91
Agile Leadership in an Agile Organization
kimpetersen
PRO
0
120
How To Speak Unicorn (iThemes Webinar)
marktimemedia
1
420
Transcript
! Contributing to Go @nathany
Motivation even better tools
go.tools/cover
Naming things func validateFlags() error “notice that the purpose of
this is to set up state; the validation is secondary. it's misnamed.” - r
Error messages "phrasing: say what's wrong, not how to fix
it.” ! return fmt.Errorf("unexpected argument provided”) “this isn't quite right. "extra argument"? "too many arguments"?” - r
None
Code style pathsToRemove := make([]string, 0) ! “Just write: !
var pathsToRemove []string” - iant! https://code.google.com/p/go-wiki/wiki/CodeReviewComments
Effective use of the standard library ! atomic.AddInt32(&c.val, 1) !
“use ioutil.TempDir to create a unique root for this test run” - dfc!
– rsc “The goal here should be to expose the
minimal necessary functionality that lets people build useful things…” API design
– rsc “The problem with callbacks is that you now
have to worry about user code blocking (or panicking) a library goroutine. ! A channel is a much better separation.” I hadn’t considered…
– rsc “There is no testing benefit here to the
interface over a simple struct with only public fields.” Keep it simple
–Chad Fowler “Pick an open source project that you admire
and whose developers appear to be at that "next level" you’re looking to reach.” Motivation
Go source # Mac xcode-select --install brew install hg
hg clone https://code.google.com/p/go cd go/src ./all.bash golang.org/doc/install/source
CLA # .bashrc/.zshrc export GOPATH=$HOME/project export PATH=$PATH:$HOME/go/bin:$HOME/project/bin Contributor License Agreement
golang.org/doc/contribute.html#copyright GOPATH
go.tools • godoc • vet • cover • oracle •
goimports go get code.google.com/p/go.tools/cmd/godoc
CDPATH # .bashrc export CDPATH=.:$HOME/go/src/pkg:$GOPATH/ src/code.google.com/p # .zshrc setopt
auto_cd cdpath=($HOME/go/src/pkg $GOPATH/src/ code.google.com/p) cd net/http
hg pull hg update hg update release hg update
default
rietveld “not the same as using standard Mercurial” # .hg/hgrc
[extensions] codereview = ~/go/lib/codereview/codereview.py [ui] username = Your Name <
[email protected]
> tip.golang.org/doc/contribute.html
rietveld hg help codereview hg code-login ! # code, code,
code hg add myfile.go
review hg ksdiff ./all.bash ! godoc -http=:8080 ! hg change
www.kaleidoscopeapp.com
CL
PTAL hg sync hg mail 999999 ! hg upload
999999
LGTM Submitted