about summary refs log tree commit diff
path: root/usth/ICT2.7/P1L4 Version Control Subtitles/2 - Interview with John Britton - lang_en_vs5.srt
blob: 999833f76c7a512d9fdc77023b585702d8ebdee3 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
1
00:00:00,170 --> 00:00:02,630
>> And I thought that the best way to break the ice on version

2
00:00:02,630 --> 00:00:04,970
control systems and Git and some other

3
00:00:04,970 --> 00:00:07,939
related concepts was to interview John Britton who

4
00:00:07,939 --> 00:00:11,840
works with GitHub. So let's go and see what John has to say about

5
00:00:11,840 --> 00:00:14,120
Git, about version control systems in general,

6
00:00:14,120 --> 00:00:17,809
and about GitHub. John is in Tapei, if I'm not wrong.

7
00:00:17,809 --> 00:00:18,610
>> That's correct.

8
00:00:18,610 --> 00:00:20,320
>> Okay so we're, you know we couldn't

9
00:00:20,320 --> 00:00:22,570
go there so we're interviewing him remotely. And I

10
00:00:22,570 --> 00:00:25,490
want, I just want to thank you so much and John for agreeing to talk to us.

11
00:00:25,490 --> 00:00:27,940
>> Thank you very much for having me it was my pleasure.

12
00:00:27,940 --> 00:00:30,560
>> And, I'm just going to ask, a few

13
00:00:30,560 --> 00:00:32,938
general questions because John is an expert on,

14
00:00:32,938 --> 00:00:36,270
Git and GitHub. John is a developer and

15
00:00:36,270 --> 00:00:38,550
a community builder is active in both the

16
00:00:38,550 --> 00:00:42,200
open source and the open education areas. And

17
00:00:42,200 --> 00:00:44,860
as an educational liaison we have, is working

18
00:00:44,860 --> 00:00:47,580
to improve Computer Science education by bringing the

19
00:00:47,580 --> 00:00:51,460
principles of open source into the classroom. And

20
00:00:51,460 --> 00:00:53,160
I'm going to start with an general question,

21
00:00:53,160 --> 00:00:55,320
which is what is a version control system?

22
00:00:55,320 --> 00:00:57,960
>> So, a version control system is

23
00:00:57,960 --> 00:01:00,360
a tool that software developers use. Anybody

24
00:01:00,360 --> 00:01:02,560
who's doing you know, working with digital

25
00:01:02,560 --> 00:01:06,540
assets, digital projects can also use for

26
00:01:06,540 --> 00:01:11,320
keeping track of, you know, revisions of your project, and when I say revisions, I

27
00:01:11,320 --> 00:01:16,850
mean essentially snapshots of your project over time. So you can imagine doing

28
00:01:16,850 --> 00:01:19,720
some work and then every so often, be it, every couple of

29
00:01:19,720 --> 00:01:23,799
hours, every couple of days, saving a permanent snapshot of your project.

30
00:01:24,880 --> 00:01:26,650
>> Why is this useful? I understand that

31
00:01:26,650 --> 00:01:28,720
it is nice to take a snapshot of your

32
00:01:28,720 --> 00:01:30,070
project, but what did you do with the

33
00:01:30,070 --> 00:01:33,420
snapshot afterwards? I think the most immediately obvious benefit

34
00:01:33,420 --> 00:01:36,340
to having snapshots of your project to keeping

35
00:01:36,340 --> 00:01:38,280
revisions is that you can go back. If you

36
00:01:38,280 --> 00:01:40,190
have ever worked on a project and got to

37
00:01:40,190 --> 00:01:41,940
a point where you solved a bunch of your

38
00:01:41,940 --> 00:01:45,330
problems, and there is just one more step to do. And

39
00:01:45,330 --> 00:01:47,640
you start working on trying to solve that last step, and

40
00:01:47,640 --> 00:01:51,350
you break things, you make it worse then it was an

41
00:01:51,350 --> 00:01:54,420
hour ago. At that point its easier to just go back

42
00:01:54,420 --> 00:01:56,780
to what you had then trying to figure out what you

43
00:01:56,780 --> 00:01:59,320
broke. So you can always go back in time, and the

44
00:01:59,320 --> 00:02:02,660
other big one is being able to collaborate with multiple people,

45
00:02:02,660 --> 00:02:07,450
so its pretty seldom these days that you. Work on a production

46
00:02:07,450 --> 00:02:09,860
totally on your own. It's most common to work in, you

47
00:02:09,860 --> 00:02:12,993
know, in teams and small groups. And so, using a revision

48
00:02:12,993 --> 00:02:16,340
control system allows you to collaborate with other people. And make

49
00:02:16,340 --> 00:02:19,060
sure that you don't step on each other's toes as you're working.

50
00:02:19,060 --> 00:02:21,310
>> Alright, that's great, because those are exactly some of the

51
00:02:21,310 --> 00:02:25,250
topics that we're going to cover in the lesson. And so since we're

52
00:02:25,250 --> 00:02:28,470
going to talk about the specifics of version control system which is

53
00:02:28,470 --> 00:02:32,660
Git and you're definitely an expert in, in Git. So what would

54
00:02:32,660 --> 00:02:36,510
you say is specifically special about Git? What characterizes it

55
00:02:36,510 --> 00:02:39,940
and how does it compare to other version control systems.

56
00:02:39,940 --> 00:02:43,140
>> So if any of you have used version control systems before, you

57
00:02:43,140 --> 00:02:47,850
may have heard of something like subversion, CVS, or maybe a commercial solution

58
00:02:47,850 --> 00:02:53,550
like ProForce. I think the main important characteristics of Git are first that

59
00:02:53,550 --> 00:02:56,050
it's open source. And the second,

60
00:02:56,050 --> 00:02:59,030
that it's a distributed version control system.

61
00:02:59,030 --> 00:03:00,430
So what that means, the distributed version

62
00:03:00,430 --> 00:03:04,260
control system is essentially a system for tracking

63
00:03:04,260 --> 00:03:07,700
revisions of your software that doesn't have any

64
00:03:07,700 --> 00:03:11,730
central repository. So the biggest characteristic is that

65
00:03:11,730 --> 00:03:14,520
I can do my work and you can also work on the same project at

66
00:03:14,520 --> 00:03:16,900
the same time without communicating with each other

67
00:03:16,900 --> 00:03:19,650
and without communicating to a central system.

68
00:03:19,650 --> 00:03:24,190
>> Okay, great. And so now that we saw what Git is, what is

69
00:03:24,190 --> 00:03:26,050
GitHub and how does it fit into

70
00:03:26,050 --> 00:03:29,320
this picture of the distributed, revision control system?

71
00:03:29,320 --> 00:03:34,800
>> So GitHub is, the world's largest code host, and we essentially have a

72
00:03:34,800 --> 00:03:36,940
website where you can collaborate with people

73
00:03:36,940 --> 00:03:39,950
when you're writing code. There's two ways you

74
00:03:39,950 --> 00:03:43,650
can use GitHub. You can use it publicly for open source and you can use

75
00:03:43,650 --> 00:03:49,660
it in private within your team, or your company, or within your class. And, Git

76
00:03:49,660 --> 00:03:53,960
Hub started out just as a way to host your Git repositories. But it's

77
00:03:53,960 --> 00:03:56,000
actually grown into quite a bit more. It's

78
00:03:56,000 --> 00:03:59,820
an entire collaboration system around your code.

79
00:03:59,820 --> 00:04:00,580
>> How many users do you have?

80
00:04:00,580 --> 00:04:03,620
>> I would say that we're approaching five million.

81
00:04:03,620 --> 00:04:05,570
I don't know the exact number. We're definitely more

82
00:04:05,570 --> 00:04:08,080
than four million right now. But yeah, I'd say

83
00:04:08,080 --> 00:04:10,330
somewhere, somewhere close to between four and five million.

84
00:04:10,330 --> 00:04:14,750
>> So that's a lot space I'd guess. Terabytes of disk

85
00:04:14,750 --> 00:04:15,840
space, I would imagine.

86
00:04:15,840 --> 00:04:19,170
>> There are a lot of GIT repositories on, on our servers.

87
00:04:19,170 --> 00:04:21,180
>> Something else you want to say? I

88
00:04:21,180 --> 00:04:23,920
guess that the when taking about GitHub there's one

89
00:04:23,920 --> 00:04:26,110
thing that you kind of can't leave out and

90
00:04:26,110 --> 00:04:28,670
that's that's a feature that's called a pull request.

91
00:04:28,670 --> 00:04:31,090
So when you're using GitHub, you can share

92
00:04:31,090 --> 00:04:34,940
your Git repository, do some work, and actually do

93
00:04:34,940 --> 00:04:37,880
do a code review. Of proposed changes which

94
00:04:37,880 --> 00:04:39,770
is what we call a pull request on github.com.

95
00:04:39,770 --> 00:04:42,790
Essentially what it lets you do is have a discussion

96
00:04:42,790 --> 00:04:46,320
about a set of proposed changes and leave feedback in

97
00:04:46,320 --> 00:04:48,870
line with the code. You could say for example, this

98
00:04:48,870 --> 00:04:51,670
method needs to be re-factored or I think I found if

99
00:04:51,670 --> 00:04:54,830
off by one error here, just different kinds of feedback

100
00:04:54,830 --> 00:04:59,120
so that before you totally integrate some proposed changes. You have,

101
00:04:59,120 --> 00:05:01,180
kind of a conversation about what your code. And I

102
00:05:01,180 --> 00:05:03,050
think that's really valuable when you are working in a team.

103
00:05:03,050 --> 00:05:05,510
>> Thank you, John, that was very informative and

104
00:05:05,510 --> 00:05:07,440
thanks again for taking the time to talk to us.

105
00:05:07,440 --> 00:05:10,160
>> No problem, thanks for having me. I'll talk to you soon.

106
00:05:10,160 --> 00:05:13,990
>> Let's thank again John for enlightening us

107
00:05:13,990 --> 00:05:17,350
on some aspects of version control systems, Git and

108
00:05:17,350 --> 00:05:19,410
GitHub. And now, let's go over some of the

109
00:05:19,410 --> 00:05:21,650
topics that we discussed with John to recap them.