The InfoStride Forum

TECHNOLOGY => Computing and Internet => Topic started by: ReadWrite on Nov 19, 2013, 03:31 AM

Title: GitHub's Tom Preston-Werner: How We Went Mainstream
Post by: ReadWrite on Nov 19, 2013, 03:31 AM
(http://readwrite.com/files/RWBUILDERS_BUMPER3.jpg)   ReadWriteBuilders (http://readwrite.com/series/builders) is a series of interviews with developers, designers and other architects of the programmable future.

It's telling that GitHub, a startup that hosts software development projects, greets visitors in a replica Oval Office (http://www.businessinsider.com/githubs-oval-office-2013-9). Since CEO Tom Preston-Werner cofounded GitHub in 2008, the service has transformed from an obscure club for developers into an open-source coding free-for-all that even the US government is getting in on (http://readwrite.com/2013/10/17/source-it-for-the-grassrootsgithub-government-portal-open-source).

Today, Preston-Werner presides over a growing community centered on Github's basic service—repositories for code that allow developers to easily collaborate while tracking changes. We talked about education for developers, diversity at work, and how a modern company based on hard-to-use free software called Git, which requires users to type in commands, took off in such a big way.

What I Learned In College ReadWrite: Like many successful coders, you've conformed to the college drop-out stereotype. Is college necessary for people pursuing jobs in tech?

(http://readwrite.com/files/fields/prestonwerner.jpg)  

Tom Preston-Werner: I don't know that it's necessary. I think it really depends on the individual. I think different people get different things out of going to college. I think the social experience is amazing, the ability to take risk and explore a broad set of topics is amazing. I went to college for two years and those two years completely changed my life. I think if I didn't go to college at all, I'd be a different person.

See also: Do Teenage Entrepreneurs Even Need To Go To College? (http://readwrite.com/2013/09/27/teenage-entrepreneurs-college)
 I got a job during the summer after my sophomore year at a startup that was just beginning doing some Java development. I really enjoyed that environment, enjoyed working on a product and really trying to build something real with a team of people. And so when they offered me a job after the summer was over, I had a choice. I could go back to school for two years and then when I was done with that, I could go and look for a job that was similar to what I already had. Or I could just have that same job that I already wanted.

From that perspective I thought, I have some computer development background, I love this thing that I'm working on, I can learn a lot doing it this way, and I would still be local to the college so I could still hang out with some of my friends from there. For me the decision made sense to stick around with the company, drop out of school, and just continue on that path. That was a decision that was individual for me. I can't sit here and say, "College is pointless. You should not go to college." I don't think that's the truth. I think it really depends on each person's individual circumstance.

There's a lot of learning material now. You can learn so much about development in college, but the thing that's so much harder to learn outside of college is everything else. All of the other stuff you learn from being in college. So I still found the college experience to be super useful.

Note To Self: Think Business Model RW: Not all of our readers are aware that, before you founded GitHub, you founded universal avatar service Gravatar. What was the idea behind that?

TP-W: It was never a company, it was really just a side project that I was doing when I was working on my own as a consultant for a couple of years. This was right when the blogosphere was blowing up, getting really popular. A lot of Web developers and designers were getting blogs. Web standards were becoming very popular.

I was looking for ways to contribute to the blogosphere. If I could come up with an idea that could make blogging better, that would be really cool. I could help out and make a name for myself. And so I started talking around ideas in my head. Every morning I'd wake up and spend an hour in bed staring at the ceiling thinking up ideas that I could do.

See also: GitHub Goes Government, Aims To Open Source Civics (http://readwrite.com/2013/10/17/source-it-for-the-grassrootsgithub-government-portal-open-source)
 Eventually I stumbled across this idea that a lot of Web forums had avatars [profile images]. You could see who was saying what, like it gave them a little bit of personality, you could pick them out more easily.

And that was great, but blogs didn't have anything like that. There were no avatars on blogs at all, at the time. Unless maybe you had to upload an individual avatar to every blog, and that was just absurd. You weren't going to do that. And so I thought, what if there was a way to set up avatars on blogs?

And so I thought up a system where you could have a central service that you could register an avatar with your email address, and then essentially every blogging system, if I wrote plugins for these different blogging systems, or let other people write them, users could easily take the email address that was pretty much required at the time—all blogs required that you give your name and your email address—and say, well if I hash that email address, if I take it and run it through a one way hashing algorithm, that will be your unique identifier and people won't be able to get the address back out of it, so you can take this identifier, 32 characters long at the time.

Since the blogging software already knows your email address, it can just request  from Gravatar the person's avatar by their email address, and get their avatar and display it. That would allow everyone on the Internet to be able to pull someone's avatar as long as they knew their email address.

I built that and started hitting up some of the bloggers that I liked, telling them to try it out. A few of them did and a few of them wrote about it, and then it just started to take popularity over a pretty long period. It took a while for it to really gain a lot of steam. But eventually it did and a lot of people used it.

It also caused me a lot of stress because it had no business model. I was running and paying for the servers all on my own, and I had to deal with scale issues that were pretty gnarly, and then it would have stability issues and people would get really angry at me because it was down. It was quite the experience. But I learned a lot from it. Mainly that if you start a side project, you should have a business model.

RW: But by the time you and the other founders built GitHub, there was a business model.

TP-W: That's exactly why we had a business model. Because I filtered any ideas I had through that. After I sold Gravatar to Automattic, I was looking for my next side project, and anything that I came up with, I evaluated from the metric of, if this thing that I'm going to work on becomes popular, will I be able to actually pay for it and switch to it full time if that's something that makes sense. GitHub is something that had that kind of aspect.

Git Busy, Git Going RW: In 2008, Git was already old and had a steep learning curve. Why base a collaborative community around Git and not something else?

(http://readwrite.com/files/coding_laptop.jpg)  

TP-W: Git was starting to gain popularity in the community that I ran with, which was the Ruby development community. It was an interesting thing—it had some nice things Subversion (http://subversion.apache.org/) [another open-source code version control system] didn't have, which was what most open source people used and what the Ruby community heavily used at the time.

And so [Git] was really complicated to use. People didn't know if it made sense. The command line interface was really quite complex. But the things that it did have like branching and a distributed model so that every clone of that software had the full history, these things were so powerful that I figured this was going to be what people used in the future. In my mind, I didn't see where people wouldn't switch to this. It was just a matter of time. Eventually the software would improve.

The hardest part, back then, was to even just put a repository up and share it with people. You'd have to have a Linux server and create user accounts and give people access to it, deal with their SSH keys directly. Everything was a pain in the ass.

So myself and some of the people I hung out with, got together and said, "Let's just make the simplest thing possible to share Git repositories in a really slick way. We're Web developers, so we can just build that. And we'll use it for ourselves, because we want it for open source, and then we'll see if other people like it too. Right now, Git's not very popular, but the Linux kernel uses it, so that's a pretty good sign. And if we make it easier to use, that will make other people want to use it, and eventually when Git becomes popular, if we're there, people will use us."

That was the idea. Let's start early before there's even much of a market and then be the main player when people eventually wake up to the power of Git.

Git Easier To Use RW: GitHub has also made several efforts to teach beginners how to use Git. How is GitHub is moving toward a more generalized audience?

(http://readwrite.com/files/fields/GithubTutorial_part2.jpg)  

TP-W: We do a lot of educational materials. We have a training team that has created a lot of training materials around how to use Git and GitHub. And we're always working on how to make the site simpler, not only for software developers, but for the people that work on software with them.

We want other kinds of people to be able to use GitHub, but our primary focus is software developers. That's still really important to us.

See also: GitHub For Beginners: Don't Get Scared, Get Started (http://readwrite.com/2013/09/30/understanding-github-a-journey-for-beginners-part-1)
 There's a lot of simplification that can happen through just terminology, through the work-flows, through the onboarding process when you sign up for GitHub. We can do a lot better job with that. We can create those experiences and bring them to the level where I think a lot of people can be involved in software development—or other types of things if they like—through the existing interfaces.

One of the biggest things we've done I think to simplify using GitHub is to make it usable through the Web interface. In 2008, you had to download the command line interface to your local machine and figure out how to use it through the command line, and that took a lot of effort. If you weren't a software developer, you probably weren't going to touch that at all.

Eventually some GUIs [graphical user interfaces] came out, applications that you could launch as a program on your Mac or Windows machine, and view your repositories graphically. Made it a lot easier for more people to use, but still pretty complicated. The concepts of Git end up being complex if you're not familiar with them.

See also: GitHub For Beginners: Commit, Push and Go (http://readwrite.com/2013/10/02/github-for-beginners-part-2)
 And then eventually, we built our own client called GitHub for Mac or GitHub for Windows to do that. They're at a mid-complexity demographic. So that's going to be designers, aspiring developers, people that are new to version control, and even hardcore developers who like using graphical interfaces.

But what really makes it approachable, I think, is something we've done in the last year. You can add files, delete files, modify files—all via the website. So you don't have to download anything. You can work on repositories and projects with coworkers and work right alongside software developers without downloading any sort of client. That's really powerful. That allows people to come in and edit documentation or collaboratively work on a blog post together without any sort of overhead. All you have to do is go to the website, have an account, and have access to the materials and you can get it done.

Git Bigger RW: Since the early days, how do you think GitHub has changed the most?

TP-W: Do I have to pick just one way? It's really quite different in a lot of ways. Beside the company, obviously—we're 217 people now—is much bigger. We have an office—we didn't have an office for two years. It took us a very long time.

Our core mission and values are still the same. We still operate on the idea that we can learn a lot from the way open source works.

(http://readwrite.com/files/fields/GitHubTutorial-Part1_0.jpg)  

From people working together, in that kind of fashion where you collaboratively come up with what to work on, is really special. That you can have people optimizing their behavior for the thing that they're interested in. It's important to the company. That working together in this way and moving a lot of this collaboration to the Internet, to unshackle it from constraints of time and space. Geography, where people live, what time of day they happen to be working: the Internet allows us to do now is to create a much better flexibility.

With those core philosophies unchanged, I think it's the surface level things that end up changing a lot. Like, how many people are there. How do we work together, how do we hire. There's a lot more sophistication to our processes, and a lot more processes in general. Any company that scales has to figure out how things work in that environment, document them, share those ideas, and still be able to change them over time, and that's sort of our philosophy as well.

Git More Useful RW: You've talked about expanding GitHub to "open everything (http://bits.blogs.nytimes.com/2012/12/28/github-has-big-dreams-for-open-source-software-and-more/?_r=2)," and GitHub and Government (http://government.github.com/) seems to be the first part of that. How did that come about? And what's next?

TP-W: We have a couple of initiatives around that. GitHub and Government is about how the government can use GitHub to be more open, especially with software. I think it's really important, like if you think about it, the US government is completely in service to the citizens. And if that's true, the work that they do should generally be as open as possible.

Software is one of the biggest places where that's easy to do. There's mechanisms to do that. There's a ton of work and effort put into applications by the government that are kept closed, and there's really no reason to do that. The general software community can benefit from all that work should the government be willing and able to share it and I think they should. That's ethically the correct thing to do to open it as much as possible.

See also: 7 Ways To Use GitHub That Aren't Coding (http://readwrite.com/2013/11/08/seven-ways-to-use-github-that-arent-coding)
 I think you're going to start thinking about how that might apply to philosophies around how you create laws or how you communicate laws to people. If people can see how laws are changing over time in a better way, then they could be more likely to participate. Or you could make laws easier to understand, having the tools to share, because we have that now. We have the Internet, we have GitHub for collaboration around software and around many sorts of supporting documents that people need to understand these things.

All of this technology exists. It's just a matter of getting buy-in from the right people in the government. So that's why we pay attention to it, because we think there's a huge amount of benefit that citizens can have from a more open government.

And that's just one. We also have initiatives in education and science as well. So we have a guy that concentrates on traveling around and talking to various colleges and universities and high schools about GitHub, software development, version control, changes in our industry, and how things are more sophisticated—and at the same time simpler to use—than ever before. These things can be huge benefits to [students'] careers going forward if they learn them now. They can help them work better together.

So getting education systems involved and just getting software development taught earlier and more prevalently—I think that's huge. I think that's an important part of the future because software is everywhere now. Everything that you do, you can improve if you have good systems. And those systems are generally software, and sometimes hardware. If you can find a way to get those done better and faster, then we can free up our time to do the things that we care about and work better together collaboratively.

In science, I think there's huge changes that can be made there as well. Again, it's because software is becoming so much more prevalent, involved in everything. It's involved more in science as well. And yet it's really rare to see research come out with the software that was written as a part of that research. So it makes it really hard for others to duplicate that research, which is what you want. You want to have research be duplicated by other people to insure that it's accurate.

And yet the software is being put together hastily, there's no tracking around how it changed over time. There's not a lot of sophistication in the software world in science right now and we'd love to change that, and there are a lot of people interested in doing that. I think having that be public, making that open with research, and letting other people improve it or comment on it, can only help to improve scientific research.

RW: You're a difficult guy to get a hold of these days! What have you been working on lately, and when can we expect to see it?

TP-W: I work a lot on just the company itself. In the product space, we have some pretty interesting products we're working on right now. Unfortunately, I won't be able to talk about them today, but we want to make it easier for people to work on software together.

This is our big goal. Helping people do that, that's what we're about. How GitHub can help change the world is by helping people to work better together on software. If we do that, because software is more and more part of every industry, I think we can hasten the arrival of a better future through software—by making it easier for people to write that software. Any products that we come out with are going to be focused around that.

Lead image by Flickr user jeffkward (http://www.flickr.com/photos/70998355@N00/5899574235/sizes/l/in/photolist-9ZjRTa-8zv9P7-8HEZz5-84Q4cC-7VnRhG/), CC 2.0