5/ GitHub Inner Source @ OPEN'16

Post on 12-Apr-2017

52 Views

Category:

Software

0 Downloads

Preview:

Click to see full reader

Transcript

How people build software

!

"

OPEN’16Lutger Kunst @lukeart

How people build software

Inner Sourceadopting open source principlesto ship better code earlier & more often

2

Lutger Kunst

Solutions Engineer

GitHub

How people build software

!About us

3

FOUNDED

2008

GLOBAL RANK

#55

OFFICES

San Francisco Tokyo, Amsterdam, Boulder

USERS

15M

DAILY VISITORS

3M

REPOSITORIES

38M

How people build software

gA brief history of GitHub

4

g

2 0 1 0 . C O R P O R A T E T E A M S

Usage expands to include

working groups and project

teams within corporations

2 0 1 2 . E N T E R P R I S E

Major enterprises begin to

leverage the GitHub approach

to software development

2 0 0 8 . S O C I A L C O D I N G

GitHub launches a social

software platform that makes it

easy for anyone to share code.

How people build software

HappinessNo mockery in this world ever sounds to me so hollow as that of being told to cultivate happiness. What does such advice mean? Happiness is not a potato, to be planted in mould, and tilled with manure.

― Charlotte Brontë, Villette

5

$

How people build software

Open Source DevelopmentThe development of open source software involves bringing a widely distributed group of people together to work on complex problems while primarily communicating online.

6

%

How people build software

!2300% more requests served per second

7

!

How people build software

Open source projects have constraints

8

&

GEOGRAPHY TIMEZONE CULTURE

'%

!

How people build software

Open source principles

9

TRANSPARENCY PARTICIPATION COLLABORATION

( ) *

!

How people build software

The medium and the message are transparent

10

+ ' )

ELECTRONIC ASYNCHRONOUS LOCK-FREE

!

How people build software

The medium and the message are transparent

11

+ ' )

ELECTRONIC ASYNCHRONOUS LOCK-FREE

ARCHIVED,

!

How people build software

Minimizing friction enables participation

12

- ) &

DOCUMENTATIONREADME.md

CONTRIBUTING.md

GITHUB FLOWMake it easy to

propose changes

AUTOMATIONAllows reviewers tofocus on substance

How people build software

!Minimizing friction - Documentation

13

How people build software

!Minimizing friction - GitHub Flow

14

How people build software

!Minimizing friction - GitHub Flow

15

Experimentation Without Risk

Branch — Question, Hypothesis, Experiment, Analyze,

Conclude

Pull Request — Gather feedback from peers and

integrate with 3rd party products to perform

automation for quality of code, build status, and

deployment

How people build software

!Minimizing friction - GitHub Flow

16

Pull Request feedback loop

Writing a Pull Request — Include the purposes and why

the work is taking place. Include any references. Be

explicit about when and what kind of feedback you want.

Use @mentions to bring people into the conversation.

Providing feedback — Make sure you understand the

context of the pull request and explain any code changes

you propose. Use positive language.

Responding to feedback — Express that you appreciate

their feedback. Ask for clarification if needed or clarify

why you made certain decisions. Try to respond to any

comment.

How people build software

!Minimizing friction - Automation

17

How people build software

!Minimizing friction - Automation

18

How people build software

!Apple Swift - Expanding Commit Access

19

How people build software

!Minimizing friction - Automation

20

How people build software

!Code deploys - bring operations to the developer

21

+--------------------+ +--------+ +-----------------+ | GitHub Auto-Deploy | | GitHub | | Your Server | | Service | +--------+ +-----------------+ +--------------------+ | | | | | | Create Deployment | | |------------------------>| | | | | | | | | | Deployment Event | | |--------------------------------->| | | | | | Deployment Status (pending) | | |<---------------------------------| | | | | | | | | Deployment Status (success) | | |<---------------------------------| | | |

How people build software

!Deploy on every push commit

22

How people build software

!Deploy master on merge

23

How people build software

!Use branch based deployments

24

How people build software

!Deployment status

25

How people build software

!Haystack exception tracking

26

How people build software

!Code refactoring with Scientist

27

!

How people build software

Put everyone in one spot with chat…

28

• Team rooms• Region based rooms• Social rooms• Private chat• Ops rooms

How people build software

!… and bring your tools into your conversations

29

How people build software

!Meet Hubot

30

How people build software

!Hubot deploy example

31

!

How people build software

Steps to create happy developers

32

• Ensure quality• Implement rigorous testing and build• Short-lived branches for small features• Make deploys boring and predictable• Require documentation in the

repositories• Require mature and respectful

behavior

• Improve collaboration • Let developers share their work• Require public and focused code

reviews• Give employees the confidence to

contribute code• Put everyone in one spot with chat• Share your experiences

How people build software

!

"

Thank you!

top related