>> And I thought that the best way to break the ice on version
control systems and Git and some other
related concepts was to interview John Britton who
works with GitHub. So let's go and see what John has to say about
Git, about version control systems in general,
and about GitHub. John is in Tapei, if I'm not wrong.
>> That's correct.
>> Okay so we're, you know we couldn't
go there so we're interviewing him remotely. And I
want, I just want to thank you so much and John for agreeing to talk to us.
>> Thank you very much for having me it was my pleasure.
>> And, I'm just going to ask, a few
general questions because John is an expert on,
Git and GitHub. John is a developer and
a community builder is active in both the
open source and the open education areas. And
as an educational liaison we have, is working
to improve Computer Science education by bringing the
principles of open source into the classroom. And
I'm going to start with an general question,
which is what is a version control system?
>> So, a version control system is
a tool that software developers use. Anybody
who's doing you know, working with digital
assets, digital projects can also use for
keeping track of, you know, revisions of your project, and when I say revisions, I
mean essentially snapshots of your project over time. So you can imagine doing
some work and then every so often, be it, every couple of
hours, every couple of days, saving a permanent snapshot of your project.
>> Why is this useful? I understand that
it is nice to take a snapshot of your
project, but what did you do with the
snapshot afterwards? I think the most immediately obvious benefit
to having snapshots of your project to keeping
revisions is that you can go back. If you
have ever worked on a project and got to
a point where you solved a bunch of your
problems, and there is just one more step to do. And
you start working on trying to solve that last step, and
you break things, you make it worse then it was an
hour ago. At that point its easier to just go back
to what you had then trying to figure out what you
broke. So you can always go back in time, and the
other big one is being able to collaborate with multiple people,
so its pretty seldom these days that you. Work on a production
totally on your own. It's most common to work in, you
know, in teams and small groups. And so, using a revision
control system allows you to collaborate with other people. And make
sure that you don't step on each other's toes as you're working.
>> Alright, that's great, because those are exactly some of the
topics that we're going to cover in the lesson. And so since we're
going to talk about the specifics of version control system which is
Git and you're definitely an expert in, in Git. So what would
you say is specifically special about Git? What characterizes it
and how does it compare to other version control systems.
>> So if any of you have used version control systems before, you
may have heard of something like subversion, CVS, or maybe a commercial solution
like ProForce. I think the main important characteristics of Git are first that
it's open source. And the second,
that it's a distributed version control system.
So what that means, the distributed version
control system is essentially a system for tracking
revisions of your software that doesn't have any
central repository. So the biggest characteristic is that
I can do my work and you can also work on the same project at
the same time without communicating with each other
and without communicating to a central system.
>> Okay, great. And so now that we saw what Git is, what is
GitHub and how does it fit into
this picture of the distributed, revision control system?
>> So GitHub is, the world's largest code host, and we essentially have a
website where you can collaborate with people
when you're writing code. There's two ways you
can use GitHub. You can use it publicly for open source and you can use
it in private within your team, or your company, or within your class. And, Git
Hub started out just as a way to host your Git repositories. But it's
actually grown into quite a bit more. It's
an entire collaboration system around your code.
>> How many users do you have?
>> I would say that we're approaching five million.
I don't know the exact number. We're definitely more
than four million right now. But yeah, I'd say
somewhere, somewhere close to between four and five million.
>> So that's a lot space I'd guess. Terabytes of disk
space, I would imagine.
>> There are a lot of GIT repositories on, on our servers.
>> Something else you want to say? I
guess that the when taking about GitHub there's one
thing that you kind of can't leave out and
that's that's a feature that's called a pull request.
So when you're using GitHub, you can share
your Git repository, do some work, and actually do
do a code review. Of proposed changes which
is what we call a pull request on github.com.
Essentially what it lets you do is have a discussion
about a set of proposed changes and leave feedback in
line with the code. You could say for example, this
method needs to be re-factored or I think I found if
off by one error here, just different kinds of feedback
so that before you totally integrate some proposed changes. You have,
kind of a conversation about what your code. And I
think that's really valuable when you are working in a team.
>> Thank you, John, that was very informative and
thanks again for taking the time to talk to us.
>> No problem, thanks for having me. I'll talk to you soon.
>> Let's thank again John for enlightening us
on some aspects of version control systems, Git and
GitHub. And now, let's go over some of the
topics that we discussed with John to recap them.