WEBVTT

NOTE
This file was generated by Descript 

00:00:10.113 --> 00:00:15.303
Hey folks, and welcome to the Small
Tech Podcast from Éphémère Creative.

00:00:15.333 --> 00:00:21.513
I'm your host Raph and today we are going
to be talking about version control.

00:00:22.213 --> 00:00:24.913
So the first episode was very scripted.

00:00:24.943 --> 00:00:28.423
The second episode was
a little bit scripted.

00:00:28.423 --> 00:00:33.613
I had some notes and stuff, but this
episode, I just haven't had the time

00:00:33.673 --> 00:00:35.953
to put a lot of thought into it.

00:00:36.433 --> 00:00:40.303
Um, but I figured this is something
that, uh, this is something that I

00:00:40.303 --> 00:00:45.463
know this is something that I deal with
on a regular basis and have explored

00:00:45.463 --> 00:00:48.043
various options over the years.

00:00:48.433 --> 00:00:54.643
So maybe this is a good candidate
for something to sort of wing it on.

00:00:55.093 --> 00:01:01.783
Um, and I would love to hear what you
all have to say about this subject.

00:01:01.963 --> 00:01:03.673
Um, so version control.

00:01:04.513 --> 00:01:10.033
I remember the first time I dealt with
any kind of version control was back in.

00:01:10.753 --> 00:01:16.063
2011, I think was a project
that was using subversion.

00:01:16.483 --> 00:01:21.753
This was, my first time really
working on any kind of web project.

00:01:21.753 --> 00:01:25.413
And I wasn't allowed anywhere
near the repo, but there was a...

00:01:25.803 --> 00:01:31.293
I was allowed to access some code
at some point and not contribute,

00:01:31.293 --> 00:01:33.183
but I could poke around at it.

00:01:33.993 --> 00:01:34.683
So.

00:01:35.643 --> 00:01:36.573
Since then.

00:01:36.783 --> 00:01:38.133
A lot of things have changed.

00:01:38.943 --> 00:01:41.473
And there used to be Mercurial.

00:01:41.473 --> 00:01:42.223
What was the other one?

00:01:42.223 --> 00:01:46.513
Like Tortoise SVN, some other
stuff like that in the meantime,

00:01:46.823 --> 00:01:48.013
git took over the world.

00:01:48.403 --> 00:01:52.903
And for people who are more new
to, technology and development,

00:01:53.233 --> 00:01:55.743
you might have heard of GitHub.

00:01:56.443 --> 00:02:00.703
But a lot of people make the mistake
when they first get into this field

00:02:01.033 --> 00:02:06.763
of a conflating GitHub with git,
git is the actual system you can

00:02:06.763 --> 00:02:09.283
think of it kind of like a protocol.

00:02:09.713 --> 00:02:15.783
It's the tool that we use to, to
manage version control, uh, for code.

00:02:16.473 --> 00:02:16.713
Yeah.

00:02:16.743 --> 00:02:17.943
So you might've heard of GitHub.

00:02:18.513 --> 00:02:22.653
That is a system that uses get,
but there are plenty of others.

00:02:23.043 --> 00:02:28.053
And in the context of building
tech in a small company.

00:02:28.623 --> 00:02:30.363
Or a small organization.

00:02:30.993 --> 00:02:34.683
There are a lot of different options
actually, and GitHub might not be the

00:02:34.683 --> 00:02:36.393
one that makes the most sense for you.

00:02:36.633 --> 00:02:40.983
Let's back up a second, And talk
a little bit about what git is and

00:02:40.983 --> 00:02:44.823
why you might use it and why you
use version control more generally.

00:02:45.063 --> 00:02:49.213
So version control systems,
like subversion, git,

00:02:49.233 --> 00:02:50.793
mercurial and these other ones.

00:02:51.103 --> 00:02:57.683
Allow you to commit changes to your
code, and so as you're working, you'll

00:02:57.683 --> 00:03:01.823
say, yep, this is ready to go and so
I'm going to commit the changes to

00:03:01.823 --> 00:03:03.923
all of these files and say, this is a.

00:03:04.193 --> 00:03:08.123
Uh, step in this, uh, in this
project, in the right direction.

00:03:08.423 --> 00:03:10.253
And you can do, what's called branching.

00:03:10.283 --> 00:03:12.473
So you'll create a branch
to work on a feature.

00:03:12.743 --> 00:03:17.063
And if stuff doesn't work out,
you can revert back to the other

00:03:17.063 --> 00:03:18.893
branch that you sourced it from.

00:03:19.103 --> 00:03:24.233
And so you can just ignore all of the
work that you did and sort of rewind

00:03:24.233 --> 00:03:27.653
back to the point that you branch
from and you can merge branches.

00:03:27.683 --> 00:03:28.973
And so these systems.

00:03:29.603 --> 00:03:35.903
Allow you through this sort of merging
and, uh, splitting and committing.

00:03:36.293 --> 00:03:40.193
The allow you to work collaboratively
with people because the software can

00:03:40.193 --> 00:03:44.333
track who made, what changes when
and help you merge them all together.

00:03:44.333 --> 00:03:47.603
So you might all be working on
the same file and running this

00:03:47.603 --> 00:03:49.313
software on separate machines.

00:03:49.843 --> 00:03:53.223
And when you say, yep,
this is ready to go you...

00:03:53.283 --> 00:03:53.703
with...

00:03:53.733 --> 00:03:59.713
in GitHubs parlance, you will submit
a PR a pull request in GitLab.

00:03:59.793 --> 00:04:01.713
They call it a Merge Request.

00:04:02.233 --> 00:04:05.683
But one way or another, what, what that
saying is, Hey, can someone look at my

00:04:05.683 --> 00:04:11.593
code and look at the differences between
the sort of production branch, if you

00:04:11.593 --> 00:04:13.783
want to call it that though there's...

00:04:14.413 --> 00:04:18.163
you can go into how, how you
want to deal with branches and

00:04:18.163 --> 00:04:20.023
what's production or whatever.

00:04:20.443 --> 00:04:23.923
But you're basically asking someone,
"Hey, can you check if this is ready?"

00:04:24.013 --> 00:04:25.033
I want to merge it back.

00:04:25.303 --> 00:04:26.143
And the system.

00:04:26.843 --> 00:04:28.493
Often not always.

00:04:28.733 --> 00:04:31.223
We'll be able to take
care of that for you.

00:04:31.283 --> 00:04:32.393
And so you can say, yep.

00:04:32.423 --> 00:04:36.203
I've looked at all of the differences
and I think this is good to go.

00:04:36.203 --> 00:04:37.553
Let's merge it back.

00:04:38.393 --> 00:04:42.913
And it will figure out, based off of
the timing of the different commits, if

00:04:42.913 --> 00:04:47.773
anyone else has made any commits,  in the
meantime how they should come together.

00:04:48.013 --> 00:04:49.993
In some cases that's not possible.

00:04:50.053 --> 00:04:57.163
And then we get merged conflicts and that,
uh, is something that someone somewhere

00:04:57.163 --> 00:04:59.473
on the team is going to have to deal with.

00:04:59.943 --> 00:05:04.923
There's different ways of dealing with
it, from an operational perspective,

00:05:04.923 --> 00:05:06.813
from a technological perspective.

00:05:07.263 --> 00:05:09.033
But yeah, that's, that's there.

00:05:09.213 --> 00:05:10.113
The crux of it.

00:05:10.293 --> 00:05:11.283
So essentially.

00:05:12.123 --> 00:05:17.253
Version control systems allow you to
work collaboratively and independently.

00:05:17.553 --> 00:05:20.793
And bring your work back together
into one cohesive product.

00:05:21.493 --> 00:05:26.963
And platforms like GitHub
have made it really easy to do

00:05:26.963 --> 00:05:28.973
that in the open source world.

00:05:29.063 --> 00:05:34.313
And so you'll know, GitHub primarily
because most open source projects.

00:05:35.123 --> 00:05:37.273
Host their stuff on GitHub.

00:05:37.373 --> 00:05:38.393
Their code is there.

00:05:38.723 --> 00:05:40.463
Uh, for the world to see.

00:05:41.153 --> 00:05:43.343
But there's also private repositories on.

00:05:44.303 --> 00:05:51.903
And so organizations, uh, companies, uh,
individuals will host their code on GitHub

00:05:51.923 --> 00:05:55.853
as well, uh, in private repositories
that they don't want the world to see.

00:05:55.913 --> 00:05:58.823
Now, this is something that actually
only was made possible in the

00:05:58.853 --> 00:06:02.063
last few years on a free tier.

00:06:02.093 --> 00:06:04.973
It used to be that if you
wanted to use GitHub for private

00:06:04.973 --> 00:06:06.893
projects, you had to pay.

00:06:07.613 --> 00:06:12.293
And so that's actually why I
initially started using other tools.

00:06:12.563 --> 00:06:18.623
For example, two of the other big ones
are Bitbucket, which is by Atlassian.

00:06:18.923 --> 00:06:19.953
And GitLab

00:06:20.193 --> 00:06:24.123
. 
For those who don't know also
GitHub is owned by Microsoft.

00:06:24.153 --> 00:06:27.123
They acquired them for many
billions of dollars a few years ago.

00:06:28.113 --> 00:06:31.863
So why might you choose
one over the other?

00:06:32.763 --> 00:06:38.613
I initially started using Bitbucket
because it had free private repos.

00:06:39.183 --> 00:06:40.413
I think this was.

00:06:40.923 --> 00:06:43.833
At a time where GitLab
wasn't really well known.

00:06:43.833 --> 00:06:47.613
I think I started using them
in 2014 or something like that.

00:06:47.823 --> 00:06:49.353
GitLab may not even have existed.

00:06:49.383 --> 00:06:51.993
I don't know what the timeline is there.

00:06:52.283 --> 00:06:55.973
But Bitbucket was
available and it was free.

00:06:56.663 --> 00:06:58.403
Uh, for private repositories.

00:06:58.433 --> 00:07:02.753
So you could use it for your company and
on top of it, all it integrated really

00:07:02.753 --> 00:07:05.423
well with Atlassian's other projects.

00:07:05.483 --> 00:07:08.513
You might remember our
little discussion last week.

00:07:08.933 --> 00:07:11.613
About Atlassia n JIRA.

00:07:12.033 --> 00:07:14.673
Product, which is their
project management tool.

00:07:15.303 --> 00:07:17.943
So Bitbucket integrates nicely with JIRA.

00:07:18.303 --> 00:07:20.733
So I was using Bitbucket at the time.

00:07:20.733 --> 00:07:21.793
Also used JIRA.

00:07:22.473 --> 00:07:28.763
Uh, since then, I had a friend,
point out to me that there's this

00:07:28.763 --> 00:07:32.903
fantastic new platform called GitLab.

00:07:33.743 --> 00:07:37.643
And he explained that he liked it
a lot because it was open source.

00:07:38.003 --> 00:07:41.453
Uh, so you can run it yourself
on your own servers using just

00:07:41.453 --> 00:07:42.743
their open source version.

00:07:43.433 --> 00:07:46.013
Or you can use their hosted version.

00:07:46.403 --> 00:07:47.763
Uh, GitLab.com.

00:07:48.413 --> 00:07:53.333
And one of the things that was neat
about GitLab is that it integrated.

00:07:53.433 --> 00:07:57.303
Continuous delivery tools,
CI/CD can do continuous

00:07:57.303 --> 00:07:59.433
integration, continuous delivery.

00:07:59.553 --> 00:08:03.783
That's a weird mashup of
terms that essentially mean.

00:08:04.743 --> 00:08:10.383
Tools to run tests and
builds and deployments of

00:08:10.383 --> 00:08:12.183
your code onto your servers.

00:08:12.873 --> 00:08:14.583
And at the time.

00:08:15.063 --> 00:08:19.383
Bitbucket and GitHub did
not offer anything like that

00:08:19.383 --> 00:08:20.733
built into their platform.

00:08:21.433 --> 00:08:26.353
I previously was using a tool called
Circle CI to do that sort of stuff.

00:08:26.743 --> 00:08:29.773
Now all of them offer this out of the box.

00:08:29.983 --> 00:08:34.433
They all now also offer a free
private repos, which was another

00:08:34.433 --> 00:08:35.673
selling point for GitLab.

00:08:35.693 --> 00:08:38.633
They had free private repos and, uh, the,

00:08:38.713 --> 00:08:40.573
The CIC D tooling built in.

00:08:41.113 --> 00:08:45.503
And so it was a great way  to run a
repo for a private, private project.

00:08:46.013 --> 00:08:52.943
Um, They also offered a lot of other
stuff like hosting of a Docker registry.

00:08:53.183 --> 00:08:56.683
You could push different types
of packages and host them there.

00:08:57.033 --> 00:09:01.203
And they also offered a bunch of
other tooling to do monitoring

00:09:01.263 --> 00:09:02.673
and all kinds of other stuff.

00:09:03.043 --> 00:09:06.523
So that was really, really useful to me.

00:09:07.063 --> 00:09:11.483
Since then I've started doing a
lot more, open source stuff with

00:09:11.513 --> 00:09:14.183
our project called the Chewy Stack.

00:09:14.903 --> 00:09:18.513
And I am drifting back towards GitHub.

00:09:18.833 --> 00:09:23.873
And my reason for that is that for
open source, it's really great to be

00:09:23.873 --> 00:09:27.893
on GitHub because that's where all of
the other open source projects are.

00:09:28.133 --> 00:09:33.903
So you just gain visibility, by
being there there's more potential

00:09:33.903 --> 00:09:35.853
for connections to other projects.

00:09:35.883 --> 00:09:38.823
People are there already
and they trust the platform.

00:09:39.093 --> 00:09:43.113
So we're going to put a little sponsorship
button on the project and see if

00:09:43.113 --> 00:09:44.823
anyone's interested in sponsoring.

00:09:45.243 --> 00:09:47.703
And that whole ecosystem is really.

00:09:47.703 --> 00:09:51.483
Really nice to be a part of,
for an open source project.

00:09:52.143 --> 00:09:58.873
My instinct is that with that
will come some other tie-ins that

00:09:58.873 --> 00:10:00.913
make it valuable to stick around.

00:10:00.943 --> 00:10:05.383
So a company might find it valuable
to use, GitHub for their open source

00:10:05.383 --> 00:10:11.053
projects, but because they're already
there then they might want to keep their

00:10:11.053 --> 00:10:15.763
enterprise projects in there as well
because everyone knows the workflow.

00:10:16.163 --> 00:10:19.163
Yeah, I think that's, that's
mostly it there, there are other,

00:10:19.223 --> 00:10:20.753
there are other tools out there.

00:10:20.783 --> 00:10:24.893
Other platforms, I think
one of them is called Gitea.

00:10:25.703 --> 00:10:30.873
Uh, git tea I'm just going to
take that out and see, I think

00:10:30.873 --> 00:10:32.523
this is another open source one.

00:10:33.063 --> 00:10:37.413
Gitea to you as a forge software
package for hosting software development

00:10:37.413 --> 00:10:40.983
version control using get as well
as other collaborative features

00:10:40.983 --> 00:10:44.733
like bug tracking, code review,
Kanban boards, tickets and wikis.

00:10:45.393 --> 00:10:47.883
Um, yeah, so that's kind of cool.

00:10:47.913 --> 00:10:48.663
It's another one.

00:10:48.663 --> 00:10:50.343
I'm sure there's others too.

00:10:50.793 --> 00:10:56.193
My instinct generally is if you
work with JIRA or other Atlassian

00:10:56.193 --> 00:10:58.793
tools, go with BitBucket.

00:10:59.673 --> 00:11:01.893
If you want to run your own.

00:11:02.043 --> 00:11:08.053
Uh, server or if you value the open
source and community driven development

00:11:08.083 --> 00:11:11.513
of a platform then go with, GitLab.

00:11:11.923 --> 00:11:17.663
If you're in open source or you're
more new to this stuff, then GitHub

00:11:17.683 --> 00:11:19.813
is probably a nice place to go.

00:11:20.143 --> 00:11:23.263
For open source, obviously, as
we discussed everyone's there

00:11:23.263 --> 00:11:25.123
anyway, so might as well be there.

00:11:25.433 --> 00:11:29.003
But I think it's also a
very friendly platform.

00:11:29.463 --> 00:11:31.473
It's pretty easy to get started with.

00:11:31.763 --> 00:11:33.483
GitLab can be a bit overwhelming.

00:11:33.723 --> 00:11:38.923
Bit bucket is easy, but is tightly
integrated with a lot of Atlassian

00:11:38.943 --> 00:11:41.073
stuff and perhaps less flexible.

00:11:41.483 --> 00:11:42.173
So yeah.

00:11:42.243 --> 00:11:45.393
GitHub is probably your best bet
if you're just getting started.

00:11:46.233 --> 00:11:49.563
And that is pretty much it.

00:11:49.623 --> 00:11:56.463
I would love to hear why you choose
the version control software that

00:11:56.463 --> 00:11:59.493
you do and more specifically,
cause it's almost certainly git

00:11:59.763 --> 00:12:01.533
which platform you use and why.

00:12:01.773 --> 00:12:04.563
Did the things I just outlined
actually makes sense to you?

00:12:04.613 --> 00:12:08.303
Does that help you make a decision
about which platform you want to use?

00:12:08.993 --> 00:12:10.043
Yeah, let us know.

00:12:10.093 --> 00:12:13.963
Shoot us an email at
hello@smalltechpodcast.com.

00:12:14.233 --> 00:12:19.123
Or, I don't know, find us on YouTube
or on the website or elsewhere.

00:12:19.693 --> 00:12:22.603
If you want to keep up with this
stuff with building small tech

00:12:22.873 --> 00:12:25.093
then make sure to subscribe.

00:12:25.273 --> 00:12:29.563
I have been your host Raph, and we
all want to do some good in the world.

00:12:29.623 --> 00:12:33.313
So go out and build
something good friends.