1
00:00:00,360 --> 00:00:01,620
Angela: In the last few lessons,

2
00:00:01,620 --> 00:00:04,680
we looked at implementing source control locally

3
00:00:04,680 --> 00:00:08,880
using the command line and also remotely using GitHub.

4
00:00:08,880 --> 00:00:11,160
So now I wanna take you a little bit further

5
00:00:11,160 --> 00:00:13,860
and I wanna talk about collaboration

6
00:00:13,860 --> 00:00:16,950
using remote repositories and GitHub

7
00:00:16,950 --> 00:00:18,810
because this is one of the best ways

8
00:00:18,810 --> 00:00:22,560
to start working in a team of programmers

9
00:00:22,560 --> 00:00:26,730
and to contribute your skills to open-source projects.

10
00:00:26,730 --> 00:00:28,950
So we've seen all of these four areas,

11
00:00:28,950 --> 00:00:30,930
the working directory, the staging area,

12
00:00:30,930 --> 00:00:32,490
the local repository,

13
00:00:32,490 --> 00:00:34,530
as well as the remote repository.

14
00:00:34,530 --> 00:00:35,880
And you should be pretty familiar

15
00:00:35,880 --> 00:00:38,430
with all four of these areas by now.

16
00:00:38,430 --> 00:00:40,350
Now in the next scenario,

17
00:00:40,350 --> 00:00:42,660
let's shift over to just look at

18
00:00:42,660 --> 00:00:46,470
the local and remote repository that you own.

19
00:00:46,470 --> 00:00:51,240
Let's say that Angela, so myself, I own this repository.

20
00:00:51,240 --> 00:00:52,860
I created it locally

21
00:00:52,860 --> 00:00:56,670
and then I pushed it to my remote repository on GitHub.

22
00:00:56,670 --> 00:01:01,650
Now let's say that I have an evil twin who's called

23
00:01:01,650 --> 00:01:03,630
I don't know, Bangela.

24
00:01:03,630 --> 00:01:04,780
That's a terrible name.

25
00:01:05,670 --> 00:01:08,160
Let's say that she also wanted

26
00:01:08,160 --> 00:01:09,960
to make changes to my repository.

27
00:01:09,960 --> 00:01:11,400
She's looking at my code base,

28
00:01:11,400 --> 00:01:13,350
and you know, she wants to add some features

29
00:01:13,350 --> 00:01:15,903
or fix some bugs or do something.

30
00:01:16,800 --> 00:01:21,060
Because I own this remote repository over here,

31
00:01:21,060 --> 00:01:23,190
in order for her to work on it,

32
00:01:23,190 --> 00:01:25,260
she could make a copy of it

33
00:01:25,260 --> 00:01:28,170
that exists on her GitHub account.

34
00:01:28,170 --> 00:01:30,630
Remember, this is different from git clone.

35
00:01:30,630 --> 00:01:35,630
Git clone is just grabbing at the entirety of the repository

36
00:01:35,940 --> 00:01:39,540
and then cloning it to your local work environment.

37
00:01:39,540 --> 00:01:40,440
Now in this case,

38
00:01:40,440 --> 00:01:43,230
we're basically just copying a repository

39
00:01:43,230 --> 00:01:44,610
that's hosted on GitHub,

40
00:01:44,610 --> 00:01:48,000
and we're keeping the copy under our own GitHub account

41
00:01:48,000 --> 00:01:49,980
where we can make changes to it.

42
00:01:49,980 --> 00:01:53,910
So this in terms of GitHub lingo is called forking.

43
00:01:53,910 --> 00:01:56,640
Now once you've forked a remote repository.

44
00:01:56,640 --> 00:01:58,620
then you now own it.

45
00:01:58,620 --> 00:02:02,370
You have full permissions to do whatever it is that you like

46
00:02:02,370 --> 00:02:04,830
with this copy of the repository.

47
00:02:04,830 --> 00:02:06,120
Because as you can imagine,

48
00:02:06,120 --> 00:02:07,830
it would be pretty crazy

49
00:02:07,830 --> 00:02:11,400
if everybody could modify your source code

50
00:02:11,400 --> 00:02:14,010
on all of your open source repositories

51
00:02:14,010 --> 00:02:17,490
because you know it would lead to maybe amateurs changing

52
00:02:17,490 --> 00:02:19,950
all sorts of things that you don't want them to,

53
00:02:19,950 --> 00:02:22,800
or you know, people making features

54
00:02:22,800 --> 00:02:25,890
that are incompatible with what you've got already.

55
00:02:25,890 --> 00:02:27,660
Basically, you would only give people

56
00:02:27,660 --> 00:02:30,060
who you have a trusting relationship with

57
00:02:30,060 --> 00:02:32,760
write access to your remote repository.

58
00:02:32,760 --> 00:02:35,400
So say if you worked within a team

59
00:02:35,400 --> 00:02:37,710
and you're all working on a product,

60
00:02:37,710 --> 00:02:39,690
then everybody in the team probably has

61
00:02:39,690 --> 00:02:41,970
both read and write permissions

62
00:02:41,970 --> 00:02:43,800
on a single remote repository,

63
00:02:43,800 --> 00:02:47,190
and that way they can git clone and work on it locally

64
00:02:47,190 --> 00:02:51,630
and then push it and resolve any sort of conflict that way.

65
00:02:51,630 --> 00:02:54,210
But you don't want anybody on the internet

66
00:02:54,210 --> 00:02:55,920
having those kind of permissions.

67
00:02:55,920 --> 00:02:58,110
So how do you implement this kind of

68
00:02:58,110 --> 00:02:59,970
open source collaboration then?

69
00:02:59,970 --> 00:03:03,363
Well, it's through forking and making pull requests.

70
00:03:04,620 --> 00:03:06,810
So now let's say that evil Angela,

71
00:03:06,810 --> 00:03:09,630
Bangela, has forked my repository.

72
00:03:09,630 --> 00:03:10,890
So on her GitHub account,

73
00:03:10,890 --> 00:03:14,670
she now owns a copy of my repository.

74
00:03:14,670 --> 00:03:16,140
And from this point,

75
00:03:16,140 --> 00:03:21,030
she can then clone that repository to work on it locally.

76
00:03:21,030 --> 00:03:23,880
And if she decides to add some features to it

77
00:03:23,880 --> 00:03:26,460
maybe you know, improve the code base

78
00:03:26,460 --> 00:03:29,520
or add some more code or do something crazy

79
00:03:29,520 --> 00:03:31,140
or whatever it is that she wants,

80
00:03:31,140 --> 00:03:33,360
then after she's happy with that

81
00:03:33,360 --> 00:03:35,460
and she's committed those changes,

82
00:03:35,460 --> 00:03:39,270
then she can push it to her remote repository.

83
00:03:39,270 --> 00:03:42,210
And then if she wants me or good Angela

84
00:03:42,210 --> 00:03:45,000
to incorporate those changes that she made,

85
00:03:45,000 --> 00:03:49,230
then her only option is to make a pull request

86
00:03:49,230 --> 00:03:51,960
if she is not within that trusted pool of people

87
00:03:51,960 --> 00:03:55,620
who all have read and write access to my remote repository.

88
00:03:55,620 --> 00:03:57,960
So say if she only has read access

89
00:03:57,960 --> 00:04:00,930
then she would have to make a pull request.

90
00:04:00,930 --> 00:04:03,360
And it's almost like making a suggestion.

91
00:04:03,360 --> 00:04:06,420
Here are some suggested changes that I've been working on.

92
00:04:06,420 --> 00:04:07,800
What do you think about it?

93
00:04:07,800 --> 00:04:09,690
If you okay it, then please,

94
00:04:09,690 --> 00:04:13,260
you know, merge it to your remote repository.

95
00:04:13,260 --> 00:04:15,270
The reason why it's called a pull request

96
00:04:15,270 --> 00:04:17,339
and not a push request is

97
00:04:17,339 --> 00:04:20,010
because the person who has the write permission

98
00:04:20,010 --> 00:04:21,180
to the repository.

99
00:04:21,180 --> 00:04:25,080
So I have write permission to my own remote repository

100
00:04:25,080 --> 00:04:28,920
which has been forked and duplicated by,

101
00:04:28,920 --> 00:04:30,810
you know, my evil twin.

102
00:04:30,810 --> 00:04:33,210
If she wants to incorporate those changes

103
00:04:33,210 --> 00:04:35,250
then I have the deciding vote.

104
00:04:35,250 --> 00:04:37,230
So I can review those changes

105
00:04:37,230 --> 00:04:41,100
and I can pull the changes over.

106
00:04:41,100 --> 00:04:44,850
So it's not a push because you don't own the rights

107
00:04:44,850 --> 00:04:48,003
to the remote repository that you're trying to push to.

108
00:04:48,990 --> 00:04:49,860
In this case,

109
00:04:49,860 --> 00:04:52,320
if I decide after a code review that

110
00:04:52,320 --> 00:04:55,170
actually those features that she added were pretty great

111
00:04:55,170 --> 00:04:58,230
and it seems compatible with my code so far

112
00:04:58,230 --> 00:04:59,760
and doesn't break anything,

113
00:04:59,760 --> 00:05:02,580
then I would approve the pull request

114
00:05:02,580 --> 00:05:07,410
and merge her repository with my own.

115
00:05:07,410 --> 00:05:11,250
So the changes will be reflected in a new commit.

116
00:05:11,250 --> 00:05:13,413
So let's take a look at this in action.

117
00:05:15,120 --> 00:05:18,720
So here we've got our original story repository.

118
00:05:18,720 --> 00:05:20,700
So this is a remote repository,

119
00:05:20,700 --> 00:05:23,550
remember because it's hosted online on GitHub.

120
00:05:23,550 --> 00:05:25,680
And we've got a number of commits

121
00:05:25,680 --> 00:05:29,850
and we've been doing some modifications and writing

122
00:05:29,850 --> 00:05:32,190
to write our storyline.

123
00:05:32,190 --> 00:05:35,430
Now I'm going to log out of my account

124
00:05:35,430 --> 00:05:38,940
so that was the account that created the story.

125
00:05:38,940 --> 00:05:42,480
And then I'm gonna sign in using a different account.

126
00:05:42,480 --> 00:05:46,620
So right now I'm signed into a different GitHub account.

127
00:05:46,620 --> 00:05:48,993
This account is named gilfoyleismyothername.

128
00:05:50,160 --> 00:05:53,610
And now I'm going to search for that repository.

129
00:05:53,610 --> 00:05:57,660
So I found the story repository by the user angelabauer.

130
00:05:57,660 --> 00:06:00,120
So that was the one that we saw earlier on.

131
00:06:00,120 --> 00:06:03,150
So I'm gonna go into this repository and you can see that

132
00:06:03,150 --> 00:06:06,660
all of these lines and files are publicly visible

133
00:06:06,660 --> 00:06:08,970
and you can read through all of it

134
00:06:08,970 --> 00:06:11,730
even though you are now not signed in

135
00:06:11,730 --> 00:06:14,490
to the account that created this repository.

136
00:06:14,490 --> 00:06:16,380
From here what I'm gonna do is

137
00:06:16,380 --> 00:06:19,173
I'm going to fork this repository.

138
00:06:20,250 --> 00:06:21,360
As we mentioned before,

139
00:06:21,360 --> 00:06:25,980
forking is simply making a copy or a duplicate of

140
00:06:25,980 --> 00:06:27,930
a remote repository

141
00:06:27,930 --> 00:06:31,620
and putting it under your own GitHub account.

142
00:06:31,620 --> 00:06:33,000
You can see this user

143
00:06:33,000 --> 00:06:36,090
that I've created is called gilfoyleismyothername

144
00:06:36,090 --> 00:06:41,090
and now I have this repository under my own username.

145
00:06:41,520 --> 00:06:43,350
So I've made a copy of it.

146
00:06:43,350 --> 00:06:46,170
And you can see it's exactly the same as before.

147
00:06:46,170 --> 00:06:47,520
Everything's been copied over,

148
00:06:47,520 --> 00:06:51,120
including all of the previous commits that were made.

149
00:06:51,120 --> 00:06:54,210
So from here I'm going to make some changes.

150
00:06:54,210 --> 00:06:58,593
So let's maybe change one of these storylines.

151
00:06:59,640 --> 00:07:01,563
So let's change chapter 4.

152
00:07:04,680 --> 00:07:08,100
So let's say that this other user, this other person,

153
00:07:08,100 --> 00:07:11,460
has some suggested improvements to my code,

154
00:07:11,460 --> 00:07:13,500
or in this case to my writing.

155
00:07:13,500 --> 00:07:15,570
They're still keeping the spirit of

156
00:07:15,570 --> 00:07:17,310
the original repository alive,

157
00:07:17,310 --> 00:07:19,350
because we are now converting

158
00:07:19,350 --> 00:07:22,920
into a space theme or an alien theme.

159
00:07:22,920 --> 00:07:24,750
So I've made my changes to chapter 4

160
00:07:24,750 --> 00:07:28,440
and I'm going to commit those changes saying

161
00:07:28,440 --> 00:07:33,440
add more space theme to chapter 4.

162
00:07:34,290 --> 00:07:35,220
So that's what I did

163
00:07:35,220 --> 00:07:37,350
and I'm gonna commit to the master branch.

164
00:07:37,350 --> 00:07:39,270
So this is the master branch of

165
00:07:39,270 --> 00:07:43,560
my own forked copy of the story repository.

166
00:07:43,560 --> 00:07:45,780
So once I commit those changes,

167
00:07:45,780 --> 00:07:49,260
then we can view what it currently looks like

168
00:07:49,260 --> 00:07:51,270
under the Graphs.

169
00:07:51,270 --> 00:07:54,063
If we have a look at the network,

170
00:07:55,350 --> 00:07:57,630
you can see that this is the point

171
00:07:57,630 --> 00:08:01,377
where I forked the story repository.

172
00:08:01,377 --> 00:08:04,740
And that commit was created by Angela Yu,

173
00:08:04,740 --> 00:08:08,250
which basically merged this branch to the master branch.

174
00:08:08,250 --> 00:08:11,610
So we did that two lessons back, if you remember.

175
00:08:11,610 --> 00:08:14,460
The latest commit though is made by

176
00:08:14,460 --> 00:08:17,190
this current user gilfoyleismyothername.

177
00:08:17,190 --> 00:08:21,150
And you can see that I've added it to the master branch

178
00:08:21,150 --> 00:08:24,870
of my forked copy of that repository.

179
00:08:24,870 --> 00:08:27,840
Say if I now open up a incognito window

180
00:08:27,840 --> 00:08:32,520
and I log back in to the Angela account

181
00:08:32,520 --> 00:08:36,090
and go over to that story repository,

182
00:08:36,090 --> 00:08:38,220
you can see that if I have a look

183
00:08:38,220 --> 00:08:40,679
inside my Graphs,

184
00:08:40,679 --> 00:08:42,179
go into Network,

185
00:08:42,179 --> 00:08:45,270
that that latest change it's not reflected

186
00:08:45,270 --> 00:08:47,010
on my master branch.

187
00:08:47,010 --> 00:08:50,910
It's showing up as a separate branch

188
00:08:50,910 --> 00:08:53,190
made by gilfoyleismyothername.

189
00:08:53,190 --> 00:08:57,330
And you can see the members who have forked your repository.

190
00:08:57,330 --> 00:08:59,940
This is a great way of collaborating

191
00:08:59,940 --> 00:09:01,650
because you can have contributors

192
00:09:01,650 --> 00:09:04,050
make edits or add new features

193
00:09:04,050 --> 00:09:08,460
to your preexisting code base or repository.

194
00:09:08,460 --> 00:09:10,890
And now what I can do

195
00:09:10,890 --> 00:09:13,983
if I head back to the gilfoyle account.

196
00:09:14,910 --> 00:09:16,500
So I'm just gonna flip through these two

197
00:09:16,500 --> 00:09:17,640
so that you can see.

198
00:09:17,640 --> 00:09:20,700
Right now I'm inside the gilfoyle account

199
00:09:20,700 --> 00:09:24,510
and this is the angelabauer account.

200
00:09:24,510 --> 00:09:26,220
Now under the gilfoyle account,

201
00:09:26,220 --> 00:09:30,180
what I can do is I can make a pull request.

202
00:09:30,180 --> 00:09:32,010
We can do that here.

203
00:09:32,010 --> 00:09:34,740
And you can see that it's able to merge

204
00:09:34,740 --> 00:09:36,780
and these are the changes.

205
00:09:36,780 --> 00:09:38,670
So swapping that word for that word,

206
00:09:38,670 --> 00:09:40,950
swapping that word for that phrase.

207
00:09:40,950 --> 00:09:45,720
Now all I have to do is hit Create pull request.

208
00:09:45,720 --> 00:09:50,100
And tell the original author, which is angelabauer,

209
00:09:50,100 --> 00:09:51,600
what I've done,

210
00:09:51,600 --> 00:09:56,310
why I think my modifications or my features are worthy

211
00:09:56,310 --> 00:10:00,420
to be merged with the original repository.

212
00:10:00,420 --> 00:10:02,160
And you know, any other notes, right?

213
00:10:02,160 --> 00:10:03,993
Any other comments that I have.

214
00:10:04,890 --> 00:10:06,063
Let's just say.

215
00:10:09,540 --> 00:10:11,040
Always helps to be complimentary.

216
00:10:11,040 --> 00:10:14,523
Now let's go ahead and create a pull request.

217
00:10:17,280 --> 00:10:19,110
The pull request is done,

218
00:10:19,110 --> 00:10:24,110
but if we have a look back into the story repository,

219
00:10:24,180 --> 00:10:27,780
you can see that those changes are not made, right?

220
00:10:27,780 --> 00:10:30,270
It's because I don't own this repository.

221
00:10:30,270 --> 00:10:31,800
I don't have write access.

222
00:10:31,800 --> 00:10:35,250
I only have read access as a member of the general public

223
00:10:35,250 --> 00:10:39,270
and not a member of the trusted inner circle.

224
00:10:39,270 --> 00:10:43,290
So I can only suggest my changes.

225
00:10:43,290 --> 00:10:44,850
If we head over back

226
00:10:44,850 --> 00:10:48,843
to the angelabauer account who owns this repository.

227
00:10:49,920 --> 00:10:53,340
Now if I have a look under Pull Requests,

228
00:10:53,340 --> 00:10:56,280
I've got a brand new pull request, right?

229
00:10:56,280 --> 00:10:59,130
So it previously was zero, but now I have one.

230
00:10:59,130 --> 00:11:02,190
And it's showing as one open pull request.

231
00:11:02,190 --> 00:11:05,970
And this is added a minute ago by gilfoyle.

232
00:11:05,970 --> 00:11:07,170
And if I look at it,

233
00:11:07,170 --> 00:11:11,970
I can see why he thinks that this modification is necessary

234
00:11:11,970 --> 00:11:14,280
and what were his commit message.

235
00:11:14,280 --> 00:11:18,750
And I can also take a look at the commits that he made

236
00:11:18,750 --> 00:11:21,270
and compare the differences.

237
00:11:21,270 --> 00:11:23,943
So review those changes.

238
00:11:24,930 --> 00:11:29,910
So I could say something like, great job Gilfoyle.

239
00:11:29,910 --> 00:11:32,730
And I can submit this feedback to Gilfoyle

240
00:11:32,730 --> 00:11:35,703
and approve merging these changes.

241
00:11:38,040 --> 00:11:41,970
Now all I have to do is hit Merge pull requests

242
00:11:41,970 --> 00:11:44,520
and maybe add a,

243
00:11:44,520 --> 00:11:49,520
Merged from Gilfoyle's modifications to chapter 4.

244
00:11:52,950 --> 00:11:56,433
Okay, so let's go ahead and confirm the merge.

245
00:11:57,510 --> 00:12:01,410
And now you can see that that commit is added

246
00:12:01,410 --> 00:12:03,660
to angelabauer master.

247
00:12:03,660 --> 00:12:06,813
So if I have a look inside my Graphs now,

248
00:12:09,390 --> 00:12:13,350
you can see that the latest commit was my merge.

249
00:12:13,350 --> 00:12:15,150
And you can see where it came from.

250
00:12:15,150 --> 00:12:18,300
It came from a fork made by gilfoyle,

251
00:12:18,300 --> 00:12:20,310
which shows up as a separate branch,

252
00:12:20,310 --> 00:12:21,870
and then it got merged back into

253
00:12:21,870 --> 00:12:24,750
the main branch of the main repository.

254
00:12:24,750 --> 00:12:27,360
So some people use GitHub purely as

255
00:12:27,360 --> 00:12:29,970
version control for their own project

256
00:12:29,970 --> 00:12:31,440
and use some of the features

257
00:12:31,440 --> 00:12:33,900
that we discussed in previous lessons.

258
00:12:33,900 --> 00:12:37,530
But there's also a huge community of

259
00:12:37,530 --> 00:12:39,450
awesome coders on here

260
00:12:39,450 --> 00:12:43,890
who have created really brilliant projects.

261
00:12:43,890 --> 00:12:46,680
And if you can see ways of improving it

262
00:12:46,680 --> 00:12:48,390
or contributing to it,

263
00:12:48,390 --> 00:12:51,630
then it's a great way of starting to learn

264
00:12:51,630 --> 00:12:54,690
how to work in a team of programmers,

265
00:12:54,690 --> 00:12:56,670
which is a really essential skill

266
00:12:56,670 --> 00:12:59,220
when you're working for a startup or for a company.

267
00:13:00,090 --> 00:13:00,960
So for example,

268
00:13:00,960 --> 00:13:04,920
if we have a look at the Alamofire repository.

269
00:13:04,920 --> 00:13:08,340
If you have a look at the Contributions,

270
00:13:08,340 --> 00:13:11,340
you can see that there have been loads and loads of

271
00:13:11,340 --> 00:13:15,600
other users who have looked at the code and done things,

272
00:13:15,600 --> 00:13:17,460
you know, or made suggestions,

273
00:13:17,460 --> 00:13:21,600
and to steadily improve this framework that you know,

274
00:13:21,600 --> 00:13:24,150
everybody else is benefiting of, right?

275
00:13:24,150 --> 00:13:28,410
You can see that a total of 4,300 forks have been made

276
00:13:28,410 --> 00:13:32,220
and there's currently four open pull requests,

277
00:13:32,220 --> 00:13:35,760
but 559 pull requests were closed.

278
00:13:35,760 --> 00:13:37,080
So let's have a look.

279
00:13:37,080 --> 00:13:38,760
So for example, in this case,

280
00:13:38,760 --> 00:13:43,380
this guy updated the readme to the current version.

281
00:13:43,380 --> 00:13:45,630
So that's obviously just editing a text file

282
00:13:45,630 --> 00:13:48,870
and that's pretty much within anybody's capabilities, right?

283
00:13:48,870 --> 00:13:53,520
And then it got merged by somebody who owned this repository

284
00:13:53,520 --> 00:13:56,310
and they gave him a bit of feedback, right?

285
00:13:56,310 --> 00:13:58,230
But there's other things like, you know,

286
00:13:58,230 --> 00:14:02,400
code additions or code deletions or modifications

287
00:14:02,400 --> 00:14:03,780
that people have made.

288
00:14:03,780 --> 00:14:06,660
So this guy made some fixes

289
00:14:06,660 --> 00:14:09,510
and he's documented what were the goals,

290
00:14:09,510 --> 00:14:11,280
what were the implementation details,

291
00:14:11,280 --> 00:14:13,380
what were the tests that he performed.

292
00:14:13,380 --> 00:14:15,660
And then the guy who owned the repository said,

293
00:14:15,660 --> 00:14:19,380
hey, just you know, maybe one thing that you need to change,

294
00:14:19,380 --> 00:14:20,430
have a look in here.

295
00:14:20,430 --> 00:14:23,100
And then once it was changed then it was approved

296
00:14:23,100 --> 00:14:25,590
and merged with the master branch.

297
00:14:25,590 --> 00:14:27,390
Have a look around on GitHub

298
00:14:27,390 --> 00:14:29,730
and see what are some of the cool projects

299
00:14:29,730 --> 00:14:32,010
that you could maybe get involved in.

300
00:14:32,010 --> 00:14:32,880
To begin with,

301
00:14:32,880 --> 00:14:35,100
have a look at the libraries that you've been using.

302
00:14:35,100 --> 00:14:38,040
And if you want, you can build on top of it,

303
00:14:38,040 --> 00:14:40,890
either for your own goals and purposes,

304
00:14:40,890 --> 00:14:41,880
but also, you know,

305
00:14:41,880 --> 00:14:42,960
if you're building on top of

306
00:14:42,960 --> 00:14:44,850
somebody else's open source code,

307
00:14:44,850 --> 00:14:47,280
then it's a nice thing to contribute back

308
00:14:47,280 --> 00:14:49,230
to the open source world

309
00:14:49,230 --> 00:14:51,480
by forking and making a pull request

310
00:14:51,480 --> 00:14:56,480
to offer your improvements or bug fixes or new features.

311
00:14:56,880 --> 00:14:57,713
As I said,

312
00:14:57,713 --> 00:15:02,540
it's almost like a social network for programmers.

313
00:15:03,570 --> 00:15:06,450
And you can make a lot of great friends on here

314
00:15:06,450 --> 00:15:09,540
and you can also get a lot of help on here

315
00:15:09,540 --> 00:15:12,090
in your development journey.

316
00:15:12,090 --> 00:15:14,550
So I hope you enjoyed all of that.

317
00:15:14,550 --> 00:15:16,923
And I will see you on the next lesson.

