

How Github uses Github to build Github - brown9-2
http://zachholman.com/talk/how-github-uses-github-to-build-github

======
socratic
Every time I read one of these (Github, Etsy, ...), I feel a bit guilty that
our tiny startup doesn't do continuous integration/deployment. I mean, we git
push to Heroku to deploy (maybe once a week), but there is no automated push
once the tests pass. It seems like this is a big psychological leap (deploy
every week vs deploy every hour).

When does setting up something like Jenkins CI become worth it? When you have
2 people? 10 people? 100 people?

Is there tons of custom code to set it all up with Github or whatever
deployment scripts exist? What CI systems are dominant? (I'm mostly curious
about Ruby-centric ones, but don't really want to bias responses.)

~~~
rtomayko
Assuming your main product is on the web, you really only need a few things to
do this right:

\- Automated tests that run on push to any branch.

\- Rolling deploys (no downtime) from any branch.

\- Exception reporting system (Exceptional, Hoptoad, homegrown, whatever).

\- Twitter search feed.

Push to a topic branch, wait for the tests to come in green, deploy from topic
branch, watch exception notification and twitter. If everything looks okay
after 10 minutes, push to master. If exceptions or twitter blows up, redeploy
master.

You should be able to setup the whole system in about the same time as it
takes to develop a majorish product feature.

~~~
tim_iles
Sorry, what do you mean by Twitter search feed?

~~~
cstejerean
I assume watch a feed on Twitter for a search about your company or product.
If people on Twitter start complaining in mass about your latest push it's
probably a good sign that you need to roll back.

~~~
tim_iles
Ok, this is what I also assumed - although I would never _rely_ upon this as
part of my continuous deployment process, I guess it does little harm to still
monitor and be aware of such things...

------
icandoitbetter
Zach, what software did you use to make those slides? They are beautiful.
Thanks.

~~~
holman
Keynote. I use SpeakerDeck to share them with people (love, love, love
SpeakerDeck... they really nailed the project. Still in private beta for now,
I think.)

~~~
telemachos
> love, love, love SpeakerDeck...

Just two cents from a user's point of view (someone viewing not uploading the
slides). I think the interface is very pretty, but it lacks a few features
that seem essential to me. First, you can only advance or go back one slide at
a time. There's no easy way to jump to a specific slide if you want to go back
or forward and review something. Second, there's no download option. (From the
point of view of some uploaders and SpeakerDeck, this may be a feature not a
lack of one.)

I understand that it's still in beta, so this isn't a major complaint, but I
would love to see these features added.

~~~
kalid
It's not apparent, but you can mouse over the progress bar for a real-time
preview of any slide. You can then click to jump to that location.

------
phzbOx
The slides were very well done. Here's another set not-that-much-related that
I found: [http://speakerdeck.com/u/pengwynn/p/accelerating-titanium-
de...](http://speakerdeck.com/u/pengwynn/p/accelerating-titanium-development-
with-coffeescript-compass-and-sass).

------
phillco
I like the idea of teaching a chat bot to run various commands for you. Not
only is it faster (one place to go), it probably makes it easier to teach new
people the ropes. ("How do we do x?" "Tell Hubot to do it.")

~~~
rtomayko
This is exactly why Hubot was created in the first place. An excerpt from the
original project README:

 _This is Hubot, a Campfire chat bot in node.js._

 _The goal is to make common systems stuff seem less like black magic by
turning frequently performed manual processes into simple commands and making
those interactions visible to the team via Campfire. Benefits:_

 _• Fast access to server logs and machine information when something goes
wrong._

 _• Everyone sees how common tasks are performed._

 _• Interactions are logged and available in campfire transcripts._

 _• Let's us do stuff from the phone with Ember when AFK._

 _• Can paste squirrel pics and stuff like that._

For new people starting at GitHub, they can kind of just lurk in the chat room
for a couple days to get a feel for how most types of things are done because
people are issuing Hubot commands all the time.

It's really powerful. Way more powerful than we suspected.

EDIT: Formatting.

~~~
ethank
How do you do the "who's here?" in hubbot? of all the things when I'm managing
teams, knowing physical locations of people was always the pain.

~~~
willcodeforfoo
I believe it reads MAC addresses of connected machines to the wireless router.

------
patrickod
Some great nuggets of wisdom from what is obviously a very high-throughput and
productive team. Zach always has something very interesting to say. The
beautiful slides are a nice plus as well. What are you using to make them Zach
?

~~~
holman
Keynote (and a lot of time!)

------
Yhippa
I love it when companies eat their dogfood and make it work while having the
employees not hate it at the same time. That says a lot about your product.

~~~
philwelch
That's supposed to be the intention of eating your own dogfood. If a company's
too big, maybe it turns into an exercise in "company loyalty" with no concrete
benefit because there's too much red tape between devs in one group and
changing requirements and design choices in a completely separate group, but
for Github I think it might actually be working as intended.

------
markbao
This is an awesome talk.

~~~
hswolff
Any chance of video becoming available? The slides were awesome and colorful
and I'd love to hear the words that went along with them.

Great stuff! =)

~~~
trenthauck
Yes the slides are very nice. Anyone know what he used to create the deck?

~~~
technoweenie
Keynote. Some of these slides are a little messed up because the elaborate
animations had to be scaled way down for PDF. For instance, the
status.github.com pull request slide was actually a tall browser screenshot.
Transitions slid to a further point in the pull request to highlight specific
events.

------
kellysutton
GitHub is a great Strange Loop. Probably why it's so good.

------
rbreve
Loving that typeface

~~~
Scottopherson
Yanone Kaffeesatz, it's available from Google Web Fonts:

<http://www.google.com/webfonts/specimen/Yanone+Kaffeesatz>

------
sthulbourn
I really love GitHub's way of working. I think this is the future of working
in a team.

~~~
aespinoza
This presentation just inspired me to write a really emotional email to our
teammates about speed and process using Github... we are already loving
Github...but this presentation definitely hit the spot...

------
p_ch
"internal twitter"? What's that?

------
there
was "don't reinvent the _wheel_ your authentication can be free" intentional?

------
arriu
Also, CMake uses CMake to create its project files. Any others?

~~~
perlgeek
Lots of compilers are bootstrapped; GCC builds itself with GCC, GHC (the
Haskell compiler) is written in Haskell and builds itself.

These are just two popular examples, but my experience is that most serious
compilers for general purpose languages are bootstrapped.

(I'm working on a Perl 6 compiler that is mostly written in Perl 6. It's real
fun!)

~~~
simcop2387
I'm curious what back end you're using for that project. Offhand I'd assume
LLVM but I know there's others that might make a good choice too.

~~~
perlgeek
The current backend is the parrot VM (LLVM would be a bit too "low level"),
though we plan CLR (.NET/mono) and JVM backends.

------
cheez
This is amazing.

------
mhartl
s/Github/GitHub/g

This is one of the most commonly misspelled company names in hackerland, right
up there with the various mutations of "37signals". Details like this are
worth getting right.

