1. Wercker’s path to Go
Where we got convinced, disappointed and excited
Micha Hernandez van Leuffen @mies
Pieter Joost van de Sande @pjvds
2. WE’RE BUILDING AN INTEGRAL PLATFORM FOR HOW SOFTWARE
GETS DELIVERED TO THE INTERNET AND THE CLOUD
“
”
Pitch
Wercker is a collaborative continuous delivery platform
that helps developers reduce risk and eliminate waste in
their software development process by enabling them to
test and deploy their code often in a hassle-free way.
5. Challenges at wercker
✓ We are building a mission critical system
✓ We have the need to scale
✓ When we fail we want to recover and continue
✓ We do dive system level deep
6. Design goals of Go
LOVE AT FIRST SIGHT!
✓ Compilations efficiency
✓ Statically typed
✓ Feels dynamically typed
✓ Compiles to machine code
✓ Single deploy unit
✓ Used by other companies in our space
9. We needed an editor
GOSUBLIME
✓ Syntax highlighting
✓ Go format on file save
✓ Sublime build system integration
✓ Compiles to machine code
✓ Quickly jump to error reported code
✓ Go to definition
21. Handful of keywords
break default func interface select
case defer go map struct
chan else goto package switch
const fallthrough if range type
continue for import return var
22. Love for Go
It’s almost like a real relationship
Easy to setup
GoSublime
Out of the box
testing support
Bitter language
23. Handful of keywords
break default func interface select
case defer go map struct
chan else goto package switch
const fallthrough if range type
continue for import return var
?
24. Format is always the same
KEYNOTE SUBJECT 21 April 2013 - CONFIDENTIAL
before go format
25. Format is always the same
KEYNOTE SUBJECT 21 April 2013 - CONFIDENTIAL
after go format
26. Love for Go
It’s almost like a real relationship
Easy to setup
GoSublime
Out of the box
testing support
Bitter language
go
format
28. Love for Go
It’s almost like a real relationship
Easy to setup
GoSublime
Out of the box
testing support
Bitter language
go
format
no warnings,
only errors
30. Love for Go
It’s almost like a real relationship
Easy to setup
GoSublime
Out of the box
testing support
Bitter language
go
format
no warnings,
only errors
dynamic
behavior
31. Error mechanism that makes you think
KEYNOTE SUBJECT 21 April 2013 - CONFIDENTIAL
Not sure whether it’s good or bad
32. Love for Go
It’s almost like a real relationship
Easy to setup
GoSublime
Out of the box
testing support
Bitter language
go
format
no warnings,
only errors
dynamic
behavior
error
handling
33. Import paths not pull request friendly
Code that works against pull requests?
34. Import paths not pull request friendly
Code that works against pull requests?
35. Love for Go
It’s almost like a real relationship
Easy to setup
GoSublime
Out of the box
testing support
Bitter language
go
format
no warnings,
only errors
dynamic
behavior
error
handling
forking
unfriendly
36. Package management
WHAT WE LOVE
✓ Simple, run go get
✓ Single way to import a package
✓ Import is done in the code file
✓ You can only import packages you use
✓ You always use HEAD
✓ Packages are still pretty young
WHAT WE ....
37. Love for Go
It’s almost like a real relationship
Easy to setup
GoSublime
Out of the box
testing support
Bitter language
go
format
no warnings,
only errors
dynamic
behavior
error
handling
forking
unfriendly
Package
management
38. Import paths not pull request friendly
Code that works against pull requests?
39. Where will our journey end?
It’s almost like a real relationship
Easy to setup
GoSublime
Out of the box
testing support
Bitter language
go
format
no warnings,
only errors
dynamic
behavior
error
handling
forking
unfriendly
Package
management