Building New on top of old:

The argument for simplicity
1
Sam Lambert

Director of Systems, GitHub
How people build software
!
!
Building New on Top of Old
The Argument for Simplicity
How people build software!
Sam Lambert
Director of Systems
! github.com/samlambert
! twitter.com/isamlambert
! samlambert.com
3
!
How people build software!
GitHub
Code hosting and collaboration
4
!
How people build software! 5
!
Where do we work?
How people build software! 6
!
Hubot
How people build software! 7
!
Hubot
How people build software! 8
!
Hubot
How people build software! 9
!
Hubot
How people build software! 10
!
!
!
OVER 11 MILLION USERS
29 MILLION REPOSITORIES
What is GitHub?
How people build software!
Scale can be relative
11
!
How people build software! 12
!
Who are the Systems Organization?
!
!
GIT AND GIT SYSTEMS
DATABASE SYSTEMS
How people build software!
The Systems Philosophy
13
!
How people build software!
Above all else, GitHub is a Unix shop. We
create programs and tools that follow the
basic principles of Unix: simplicity,
modularity, composability.
14
How people build software!
We believe that it is always easier to
add complexity than it is to remove it.
15
How people build software!
We are excited by new tools, but we
never use them just to use them. We
experiment, but we will always prefer
what is proven over what is new.
16
How people build software!
Simplicity
17
How people build software!
Why?
18
How people build software!
Is this wrong?
19
How people build software!
The Stack
20
How people build software!
MySQL
21
Ruby
Rails
C
ElasticSearch
Javascript
Git
Shell
How people build software! 22
Pragmatism
How people build software! 23
What do we get?
How people build software! 24
Sleep!
How people build software! 25
Predictability
How people build software! 26
Right tool for the job?
How people build software! 27
Community knowledge
How people build software! 28
!
How people build software! 29
!
How people build software! 30
MySQL
How people build software! 31
How people build software! 32
How people build software! 33
Why do *we* naturally build
complex systems?
How people build software! 34
Innovation
How people build software!
The role of new technologies
35
How people build software!
MySQL
36
How people build software!
No approach you can’t borrow from
37
How people build software!
Brubeck
38
How people build software!
Brubeck’s feature is that it has no features. It is a
very simple C daemon that uses state-of-the-art
technologies such as “a while loop” and “more than
one thread”.
- Vicent Marti
39
“
”
How people build software!
GitHub Enterprise
40
How people build software!
!
41
How people build software! 42
!
How people build software!
Multiple repos, complex build process
43
How people build software!
The rewrite
44
How people build software!
LXE
45
How people build software! 46
#!	
  /bin/bash	
  
mkdir	
  -­‐p	
  ./chroot	
  
debootstrap	
  -­‐-­‐arch=amd64	
  precise	
  ./chroot	
  
chroot	
  ./chroot	
  apt-­‐get	
  install	
  ...	
  
cp	
  -­‐r	
  <whatever>	
  ./chroot/etc
1	
  
2	
  
3	
  
4	
  
5	
  
6	
  
7	
  
8	
  
9	
  
10	
  
11	
  
12	
  
13	
  
14	
  
15	
  
16	
  
17
How people build software!
Reduction in complexity
47
How people build software!
1986
48
How people build software!
Iteration
49
How people build software!
Are we strengthening our
foundations or rebuilding them?
50
How people build software! 51
@EricaJoy
@EricaStanley
@eanakashima
@skamille
How people build software! 52
Questions?
Building New on Top of Old: The Argument for Simplicity

Building New on Top of Old: The Argument for Simplicity