What is Github and how does it work?
Github is a website that allows people to share code and work on projects together. It is a popular site for developers, and is used by many large companies. Github also has a ” desktop” app that makes it easy to work on projects offline.
There are two ways to use Github. The first is to create a new project. This is done by clicking the “Create a new repository” button on the Github home page. You will need to enter a name for your repository, and a description of what it will contain. Once you have created your repository, you can add files to it by clicking the “Add files” button.
The second way to use Github is to fork an existing repository. This means that you copy someone else’s code so that you can work on it yourself. To do this, find the repository that you want to fork, and click the “Fork” button. This will create a copy of the code in your own account. You can then make changes to the code, and submit a pull request to the original author if you want your changes to be included in their project.
INTERVIEW WITH FOUNDER
* This original interview with Github co-founder and CEO Chris Wanstrath was first posted on March 6th, 2012.
How would you describe GitHub in under 50 words?
GitHub makes software development awesome for everyone. You can use it to develop an iPhone app by yourself, open source software with strangers, or an enterprise application with your entire company.
You started GitHub as a side project in October 2007. Did you have any idea of it’s potential at that point in time?
We knew it was good because we were using it every day during development. Once we finished the basic source control features, such as code browsing and viewing the commit history, we started getting really creative with other features we could add to make the experience more awesome – that was really exciting. We thought it could turn into its own business, but at the time we mostly focused on making the best product we could. And we knew we were on the right track.
How did you come up with the name?
Tom Preston-Werner came up with the name. We wanted a place where people could easily share Git repositories and also learn more about Git – a Git hub, if you will.
You launched publicly in April the next year, what did you learn from 3-4 months of private beta testing?
The beta was a great way to find and fix bugs. Hosting git repositories wasn’t something we’d ever done before – it was extremely helpful to have hundreds of people pushing code to GitHub. Tons of issues were exposed early on. We had to rewrite a few basic systems because our assumptions were wrong or because we hit some major blockers.
Has your initial vision changed since launch?
We still want to make sharing code as easy as possible, but now our vision is much broader. Sharing code is just one part of the software development process. Reviewing code, working with your coworkers, exploring open source projects – there are so many things GitHub can do to make your life easier and we’re trying to do them all well.
How did you meet co-founders Tom Preston-Werner and PJ Hyett?
I met PJ when I was working at CNET. We worked together on the relaunch of Chowhound.
Tom I knew through the open source community. He had released some pretty awesome Ruby code that I was using. Eventually I met him at a Ruby meetup in San Francisco and we started working on projects together.
When did GitHub start gaining traction?
From my perspective it had traction right away. Our first beta user was Yehuda Katz, a prolific hacker who was able to give us tons of good feedback and invite other high quality developers. The Ruby community took to GitHub right away and really helped us figure out what to focus on.
You learned Rails in your spare time while you were developing with PHP professionally at CNET (before GitHub). Would you recommend PHP developers branch out to Rails or Django?
I actually learned Rails before I started at CNET, but there weren’t many Rails jobs at the time and I really wanted to work at GameSpot. So that’s why I was still doing PHP.
I loved PHP, but I loved Rails more. My advice would be to try as many new technologies as possible. Try Rails, try Django, try node. Don’t write anything off just because it’s new.
What has been the most challenging scaling issue you’ve come across?
The first major problem was the way we were storing git repositories. In early 2009 we were using a network file system so all the machines had the same view of the repositories on disk. This was really simple to develop against, but it wasn’t scaling at all – the network file system was failing daily, and when it wasn’t failing it was super slow. We knew we needed a new approach.
Tom spent most of 2009 designing, developing, and testing our new repository storage system. It was classic sharding – instead of every machine sharing everything, we’d have specialized file servers that would each store a subset repositories based on the owner. We developed a routing system to keep track of who lives where and how full each file server was.
Two and a half years later we’re still largely using the technologies Tom developed for the rearchitecture. We’ve made some changes and improvements, but the general idea is still going strong.
How has the growth in open source projects compared to the growth in private paid for repositories?
They’ve both been tremendous. There is so much great open source on GitHub that it really boggles my mind. At the same time, we have some of the companies I admire most using GitHub to host their private code.
As a developer, why did you become CEO? Did you consider taking a more technical role and hiring a career CEO?
We’ve never discussed hiring a career CEO – I think we all agree that the best person to be CEO is someone who works great with the founding team, is technical, understands where GitHub came from and where it’s going, and believes in making both the company and the product great.
Working well with the founding team is really important. All the GitHub founders are very hands-on in running the business. We’re working hard to build a place where people can do their best work, and we’re doing it together.
If I wasn’t CEO, one of the other founders would be. There’s just no point in looking outside for that role when we have so many qualified people internally.
As far as me personally, who better to be CEO of GitHub than a developer?
GitHub is completely bootstrapped, did you ever consider pitching for funding?
We never considered pitching, but we’ve always had interest from investors. Plenty of times we had serious discussions but the timing never felt right. We didn’t need the money and were super happy with the way things were going.
How do you find talented employees?
It’s hard. We’re lucky that we’re in San Francisco and there is so much world class talent here. Mostly we try to use the networks of people who work at GitHub. If that doesn’t work we’ll post a job on our job board – we’ve had some amazing luck doing that. We also sometimes receive unsolicited resumes that turn out to be really great.
We’re always watching the rising stars in the open source community. We want to find really amazing people who are passionate about what they’re doing, and open source is a great way to find that type of person.
Where do you see GitHub in 5 years time?
What I really want is happy users and happy employees. In five years, in ten years, in twenty years. That’s really all that matters.
As far as the product goes, I see GitHub further integrated into the process of software development. We spend all day with github.com open in a browser, but there are still other tools we use in our workflow. Some of those tools suck. GitHub should make software development awesome, and if that means broadening its scope so you spend all day with great tools instead of crappy ones then that’s a direction we should head. At the same time, we shouldn’t be competing with great tools but instead working together with them.
What are you most excited about at the moment?
2012. We’ve built such an amazing team and this year we’re going to release some really awesome things – new features, new products, and reimagined versions of current features and products. As a GitHub user, I can’t wait for all this new stuff to get released so I can start using it daily.
Can you convince the reader to start using GitHub in under 50 words?
I don’t think I can, and I wouldn’t want to. I’d rather you just try it out for yourself. Explore some open source or contribute to someone else’s project. GitHub sells itself better than I ever could. I think if you give it a shot you’ll really like it.