1
00:00:09,930 --> 00:00:11,260
alright so

2
00:00:12,120 --> 00:00:17,380
i'll just get started and what people
you felling in if you come so i'm

3
00:00:17,380 --> 00:00:21,440
gonna be talking about this project called
know mostly it's sort of an awkward name

4
00:00:21,440 --> 00:00:24,760
but donna names not too important

5
00:00:26,090 --> 00:00:30,860
before i get started here though before talk
about what i think it's really important

6
00:00:30,860 --> 00:00:39,040
to talk about why am here why i
care about what i do and the

7
00:00:39,040 --> 00:00:45,920
most important thing that really drives me is
free software very passionate about it and

8
00:00:46,660 --> 00:00:47,440
i just think it's

9
00:00:47,880 --> 00:00:50,520
it's always been important sense ever since

10
00:00:51,090 --> 00:00:52,120
which is a men road

11
00:00:53,110 --> 00:00:58,320
started the G P L and before that
secondarily i just have a lot of

12
00:00:58,320 --> 00:01:00,410
fun working in this community and

13
00:01:00,740 --> 00:01:04,550
you know hang out with other people in interacting
with before the world it's also

14
00:01:05,200 --> 00:01:10,930
but fourthly right having a prize linux
is very important to me and know was

15
00:01:10,930 --> 00:01:14,370
a very important component of that had enterprise linux

16
00:01:14,890 --> 00:01:16,980
and so when i ship

17
00:01:17,480 --> 00:01:22,500
this product to our enterprise customers i
wanna know that known is providing red hat

18
00:01:22,500 --> 00:01:24,460
enterprise linux with high quality software

19
00:01:24,900 --> 00:01:28,730
so all these things are important all these things drive me

20
00:01:31,370 --> 00:01:36,200
so secondarily though it's important is to like
restate or assumptions briefly why assume here

21
00:01:36,200 --> 00:01:41,670
well this is all from the website obviously
the free software the software freedom part

22
00:01:41,670 --> 00:01:45,860
is in common with michael's the other ones are important

23
00:01:46,500 --> 00:01:53,440
but i wanna dive into this connected aspect "'cause"
i think that's really interesting part

24
00:01:53,440 --> 00:01:57,250
it's probably the most interesting
to me so this is sort of the way i

25
00:01:57,250 --> 00:02:02,060
the way i think of it is gnome is
in ecosystem and we have our

26
00:02:02,060 --> 00:02:07,270
centres of gravity i'll talk about those and then
obviously we interact with all different

27
00:02:07,270 --> 00:02:13,120
kinds of other ecosystems so greater or
lesser degree looking at this list

28
00:02:13,670 --> 00:02:19,350
you know obviously we share a lot with
the canoe project tries in is there

29
00:02:19,350 --> 00:02:25,080
an use this on components right enterprise linux
very important to me obviously uses a

30
00:02:25,080 --> 00:02:28,960
lot of know and there is there's

31
00:02:29,460 --> 00:02:33,730
the programming languages icons for roles monos

32
00:02:34,070 --> 00:02:39,250
and other ones like open in embedded which
in turn are linked other ecosystems you

33
00:02:39,250 --> 00:02:43,300
know open about is going to wind river and
all these other embedded devices and

34
00:02:43,300 --> 00:02:44,110
stuff like that

35
00:02:44,680 --> 00:02:46,150
so

36
00:02:46,830 --> 00:02:49,020
it's important is sort of just visualise

37
00:02:49,490 --> 00:02:54,020
there's all these ecosystems around the gnome
is there around the centre grab these that's

38
00:02:54,020 --> 00:02:55,560
the way i think of it

39
00:02:57,700 --> 00:02:58,590
so

40
00:02:59,690 --> 00:03:03,140
with that background what a minute
talk about is just to build system

41
00:03:03,680 --> 00:03:09,120
but i'm really excited about it which
you guys made notice if you see it

42
00:03:09,120 --> 00:03:09,700
online

43
00:03:10,430 --> 00:03:15,810
because i just kind of always wanted to
send it's the in so successful now

44
00:03:16,950 --> 00:03:17,730
so

45
00:03:18,280 --> 00:03:23,980
my goal with this bill system is to
focus on owns core or centres of

46
00:03:23,980 --> 00:03:25,490
gravity and

47
00:03:26,840 --> 00:03:33,190
not exclude other things but just make sure
that we're doing well what is important

48
00:03:33,190 --> 00:03:40,890
to us and all talk about that and the continuous
aspect so it is building

49
00:03:40,890 --> 00:03:45,650
but it's also testing continuously and
i'm i could talk for the rest of this

50
00:03:45,650 --> 00:03:50,130
whole session about continuous integration why it's
so important but i'm just gonna gloss over

51
00:03:50,130 --> 00:03:50,560
that

52
00:03:51,840 --> 00:03:52,500
so

53
00:03:53,260 --> 00:03:54,650
it's testing

54
00:03:55,120 --> 00:04:00,100
a lot of get repositories a lot of the what
makes up cornell so kind

55
00:04:00,100 --> 00:04:04,170
of when i started this project i start
from this is sort of minimal system

56
00:04:04,170 --> 00:04:04,900
and build up

57
00:04:05,510 --> 00:04:08,560
from scratch and so i got to know
him shell like i wanted to just

58
00:04:08,560 --> 00:04:13,910
minimise interactions with other things so
we can again focus on our core aspects so

59
00:04:13,910 --> 00:04:19,520
striking a lot of get repositories for
example all hundred and some X or get

60
00:04:19,520 --> 00:04:23,870
repositories most of which are basically
just the protocols and never change but

61
00:04:25,480 --> 00:04:29,410
and of course all the know network the think
that are important network manager system

62
00:04:29,410 --> 00:04:34,410
do i wanna make sure that known works well
with the latest system so tracking

63
00:04:34,410 --> 00:04:36,250
system do you get master very important

64
00:04:37,560 --> 00:04:41,130
the basis done this is sort of stuff
like that i just don't care about

65
00:04:41,130 --> 00:04:45,070
like for example an S P R and S
open ssl those all come from

66
00:04:45,070 --> 00:04:48,970
of an embedded and basically are ran make
some binaries popped out if you're to

67
00:04:48,970 --> 00:04:52,740
work that's about the level of Q A that i gave to the

68
00:04:54,500 --> 00:04:56,910
also crucial is that i have

69
00:04:57,370 --> 00:05:01,910
a sort of course focus with this minutes only
targeting virtual eyes environments because

70
00:05:02,510 --> 00:05:07,810
there's many reasons for this one is that doing
testing fertilisation is whole much easier

71
00:05:07,810 --> 00:05:11,710
than trying to have like a test lab wired
to physical hardware that's a whole

72
00:05:11,710 --> 00:05:17,000
other level of management personalisation it's
really easy i can script using you make it

73
00:05:17,000 --> 00:05:21,570
do a dance when i wanted to it's great and of course

74
00:05:22,050 --> 00:05:27,370
there's other aspects of this like there's no security
updates because you basically need people

75
00:05:27,370 --> 00:05:30,920
there employed and obviously my employer does this

76
00:05:31,350 --> 00:05:37,310
i'm not trying to compete with them obviously
so these are that's sort of high

77
00:05:37,310 --> 00:05:42,930
level summary of what this project is and
kind of hopefully just is important what

78
00:05:42,930 --> 00:05:43,450
it is not

79
00:05:45,190 --> 00:05:49,450
so the core values of known as i
see them obviously we have the G

80
00:05:49,450 --> 00:05:54,000
T K stacked you live is very important
to me because i think it

81
00:05:55,280 --> 00:06:01,610
it's a fundamental pieces for writing modern
applications it has the event do it has

82
00:06:01,610 --> 00:06:07,000
a file system abstraction a bunch of stuff
that really is a core part of

83
00:06:07,000 --> 00:06:11,790
an operating system and i'd like to see
it used more particular in red hat

84
00:06:11,790 --> 00:06:12,610
enterprise linux

85
00:06:13,050 --> 00:06:20,680
also in known we have accessibility internationalisation
also part of our core values and he's

86
00:06:20,680 --> 00:06:23,250
the secondary list is kind of my list

87
00:06:24,860 --> 00:06:30,490
software engineering very important to me get the all
the basics of doing continuous integration

88
00:06:30,490 --> 00:06:33,300
you know just are we leaking memory you know just

89
00:06:33,750 --> 00:06:37,770
again the basics and i'm trying to sort of push for

90
00:06:38,340 --> 00:06:43,100
split between the operating system applications and
then always exceptions and i'll talk about this

91
00:06:43,100 --> 00:06:48,340
a bit more later but just to repeat
again the goal the system is to

92
00:06:48,340 --> 00:06:53,450
focus on gnomes core values and feedback code
continued a feedback as we have been

93
00:06:53,450 --> 00:06:55,990
doing for years back into these other you can systems

94
00:06:57,080 --> 00:06:57,630
so

95
00:06:58,310 --> 00:07:05,210
the non goals no enterprise features no packaging
know enterprise features there's no you know

96
00:07:05,210 --> 00:07:08,860
if you want her breast for example that's
not something that you know i'm gonna

97
00:07:08,860 --> 00:07:09,170
pass

98
00:07:09,530 --> 00:07:12,450
and a fast home again not something about it

99
00:07:13,200 --> 00:07:15,630
testing G T K G but

100
00:07:18,320 --> 00:07:25,030
so what has a system achieved well it's
been online deployed in the known data

101
00:07:25,030 --> 00:07:33,570
centre since december ish and since then it's been
building fairly reliably and very importantly

102
00:07:33,570 --> 00:07:37,880
without human intervention i'll talk a little
bit about the details of how that works

103
00:07:37,880 --> 00:07:41,490
but a lot of times it's just building one off

104
00:07:41,860 --> 00:07:44,150
doing something else and it's just working fine

105
00:07:44,790 --> 00:07:48,830
but more importantly than the building it's
been doing testing and all of talk a

106
00:07:48,830 --> 00:07:50,190
little bit about the details of that

107
00:07:52,250 --> 00:07:56,530
i have some numbers later so this is
something that i'm most proud of is

108
00:07:56,530 --> 00:08:00,620
so but i'm from a get pushed or something
like do you live in so

109
00:08:00,620 --> 00:08:05,200
when i'm booting a virtual machine
is down to minutes now and

110
00:08:06,990 --> 00:08:08,810
it depending on the type of change

111
00:08:10,920 --> 00:08:11,060
like

112
00:08:13,060 --> 00:08:16,230
depending on the type of change i think
i could get that down the second

113
00:08:16,230 --> 00:08:18,070
so that's always been michael

114
00:08:18,570 --> 00:08:24,400
it's totally possible the other thing that's
really important to me and i talked about

115
00:08:24,400 --> 00:08:25,950
this last year a bit but

116
00:08:27,200 --> 00:08:32,590
the story for how upgrades works is just crucial for no and

117
00:08:33,410 --> 00:08:38,230
something i just find deeply embarrassing about
the current red hat enterprise linux six which

118
00:08:38,230 --> 00:08:42,280
i run is that the upgrade system just doesn't
know anything about the browser in

119
00:08:42,280 --> 00:08:45,900
just it's not safe to upgrade it like
you know if you're if you lose

120
00:08:45,900 --> 00:08:50,200
power halfway so part of this project has actually
been redesigning how it this work

121
00:08:50,200 --> 00:08:54,850
and so using it was three system upgrades
actually fully atomic you can pull the

122
00:08:54,850 --> 00:08:57,720
power well they're running and it's just sort of crucial

123
00:08:59,390 --> 00:09:03,840
so even more interesting there's a lot of tests
that right now so before developers

124
00:09:03,840 --> 00:09:04,940
kind of ran make check

125
00:09:05,420 --> 00:09:12,470
periodically manually now have automated test automated
make checks of a lot of different models

126
00:09:12,470 --> 00:09:14,030
there's

127
00:09:14,560 --> 00:09:19,470
three hundred fifty test binaries which
in turn because of G test are in turn

128
00:09:19,470 --> 00:09:23,310
out a lot depends how you measure but
this takes a couple minutes all talk

129
00:09:23,310 --> 00:09:28,060
about that later another cool thing is that
for a long time unknown would really

130
00:09:28,060 --> 00:09:32,280
test G D M that was kind of ray
would run makes you will make

131
00:09:32,280 --> 00:09:36,710
install in his laptop but it's not something
that fit the J job model right

132
00:09:36,710 --> 00:09:41,740
J scroll only affects your session
and so sometimes G D M well it was

133
00:09:41,740 --> 00:09:46,500
kind of broken but now if G D M
breaks all know in minutes ands

134
00:09:46,500 --> 00:09:47,500
that's been working like

135
00:09:48,870 --> 00:09:53,280
so i want talk a little bit about the always
three system and how its

136
00:09:53,280 --> 00:09:57,090
kind of different from the packaging model because it's

137
00:09:57,760 --> 00:10:00,540
pretty it's pretty crucial to how the system works

138
00:10:01,030 --> 00:10:06,640
so i buster itself is just kind of like
a user space filesystem enter and

139
00:10:06,640 --> 00:10:09,650
i like the term get for operating system binaries

140
00:10:11,070 --> 00:10:16,020
it's misleading in some ways but on the ways
very accurate so what industry does

141
00:10:16,020 --> 00:10:21,530
is it manages to let you have let's you more
parallel blue multiple operating so

142
00:10:21,530 --> 00:10:24,180
multiple versions of multiple operating systems

143
00:10:24,640 --> 00:10:28,670
without affecting the physical root
directory of your operating system

144
00:10:29,260 --> 00:10:30,220
so

145
00:10:30,820 --> 00:10:34,730
it's like get in that it's a content address
system so it naturally to duplicate

146
00:10:34,730 --> 00:10:40,370
so if you have multi same multiple versions
of gnome installed they only use space

147
00:10:40,780 --> 00:10:44,150
a by proportion how many files are different

148
00:10:44,670 --> 00:10:45,310
so

149
00:10:46,530 --> 00:10:50,390
i'll talk a little bit more about that
later to it's different though from a

150
00:10:50,390 --> 00:10:55,230
lot of image based appointed systems that happen
prototype out there like red hat enterprise

151
00:10:55,230 --> 00:11:00,030
linux have this state was project for
a while which was basically a kind of

152
00:11:00,030 --> 00:11:06,410
image of a system where you download new
data to block level and you're at

153
00:11:06,410 --> 00:11:09,650
sea is N F S mounted or something like
that all those trees different from

154
00:11:09,650 --> 00:11:15,260
that because it does operate at the same
level as package mentors do but unlike

155
00:11:15,260 --> 00:11:19,540
package managers it just a done content replication
system in this allows a lot of

156
00:11:19,540 --> 00:11:24,860
neat tricks i'm a show those the next
slide but straight the way to think

157
00:11:24,860 --> 00:11:30,230
of is really am your image of packages are
lots of little filesystems with some

158
00:11:30,230 --> 00:11:33,010
shell scripts that run as root attached
in their upload in the internet and you

159
00:11:33,010 --> 00:11:38,170
assemble them on your client machine string model
you replicate filesystems from a build server

160
00:11:38,170 --> 00:11:40,160
or you can generate them locally

161
00:11:40,840 --> 00:11:47,840
and it is filesystem independent so it does leverage
some butterflies features mostly through G

162
00:11:47,840 --> 00:11:52,940
live you we automatically use the better
fess i aukro for a copy and right

163
00:11:53,470 --> 00:11:58,560
type stuff but i think it's sort of important
for general purpose system to work

164
00:11:58,560 --> 00:12:01,820
on top of plane yet see for and that's
actually what i test on the

165
00:12:01,820 --> 00:12:03,890
most because fifty fours really fast

166
00:12:06,290 --> 00:12:06,940
so

167
00:12:07,390 --> 00:12:11,030
it does have a format for installing
on your local system but it also has

168
00:12:11,030 --> 00:12:14,070
an archive format they can run on a web
server and that's sort of how

169
00:12:14,070 --> 00:12:18,870
this the build system works as there is
than almost resides the build system it

170
00:12:18,870 --> 00:12:24,090
commits to noticed repository and then you
can download it directly from just a plain

171
00:12:24,090 --> 00:12:25,570
old apache

172
00:12:27,030 --> 00:12:31,100
so here's some tricks that i wanna make possible
and i've been protecting this a

173
00:12:31,100 --> 00:12:36,630
little bit with laura is so i run redheaded
present X six on this laptop

174
00:12:36,630 --> 00:12:42,450
because people favour subscriptions any bill fix
it but it's obviously important from able need

175
00:12:42,450 --> 00:12:45,740
to be able to run known get master because
i wanna be able to contribute

176
00:12:45,740 --> 00:12:49,760
to it and make sure that it still
works for the next version so

177
00:12:50,470 --> 00:12:54,620
one the way i plan to have this work is
all just have reading representing

178
00:12:54,620 --> 00:12:59,280
six am i root partition and all street just
sort of installs inside that without

179
00:12:59,280 --> 00:13:03,630
disrupting it so i can have the know most
re what's called build master just

180
00:13:03,630 --> 00:13:08,460
the thing is tracking to get repositories but you
could also parallel install multiple versions

181
00:13:08,460 --> 00:13:09,810
of or a very easily

182
00:13:10,430 --> 00:13:15,540
the hard part about this is fixing
or P M to not be the lowest

183
00:13:15,540 --> 00:13:21,610
level anymore so that's still in progress
but i do have the point where you

184
00:13:21,610 --> 00:13:24,660
can have the base system and then to
the newer one and test it working

185
00:13:24,660 --> 00:13:25,080
fine

186
00:13:25,730 --> 00:13:30,950
and when i say five hundred builds here that's
really possible because it just comes

187
00:13:30,950 --> 00:13:35,530
down to how many files are different and between

188
00:13:36,010 --> 00:13:40,240
things just don't change that much and
there aren't a lot of big binaries so

189
00:13:40,240 --> 00:13:45,330
you really can have five hundred builds installed
in more interest a need or trick

190
00:13:45,330 --> 00:13:50,610
that you could do something like automated
bisection which is where you know you have

191
00:13:50,610 --> 00:13:56,960
your starting point you say okay i get graphics
corruption recently and sort of write

192
00:13:56,960 --> 00:14:00,090
a test binary that maybe just takes a screenshot
what for the corruption and then

193
00:14:00,090 --> 00:14:04,320
just keep booting into all these bills
and so you find the build it's broken

194
00:14:04,320 --> 00:14:08,850
and from there you can from the source
code i really need poster trick in

195
00:14:08,850 --> 00:14:11,560
this is kind of part of how the cork
you a system works as it

196
00:14:11,560 --> 00:14:15,540
can up update virtual machines
while they're entirely offline

197
00:14:16,080 --> 00:14:22,380
and this works basically because it's a don filesystem
replication and not like packages where

198
00:14:22,380 --> 00:14:25,160
you have these ritual scripts attached and what they do

199
00:14:25,820 --> 00:14:31,000
was she has none of that and so that's
this is actually a very useful

200
00:14:31,000 --> 00:14:36,110
trick in general and like i mentioned before
i'd like to see austria eventually slide

201
00:14:36,110 --> 00:14:40,160
underneath these package systems like D
package in our P M and all that stuff

202
00:14:40,160 --> 00:14:45,830
where or she would give the parallel booting
the atomic upgrades that sort of stuff

203
00:14:47,240 --> 00:14:47,790
to them

204
00:14:49,020 --> 00:14:55,620
so know much three is layered on top of austria
and it's very simple there

205
00:14:55,620 --> 00:14:58,920
when i say there are no packages i mean
i went through the entire system

206
00:14:58,920 --> 00:15:03,030
in eliminated the concept at every level
as much as i could to try and

207
00:15:03,030 --> 00:15:07,690
gain reliability and sort of optimised for

208
00:15:08,180 --> 00:15:08,870
automation

209
00:15:09,420 --> 00:15:14,900
so than almost relay or has this thing called
a manifest which is literally just

210
00:15:14,900 --> 00:15:17,060
a list of get repositories to build and work

211
00:15:17,610 --> 00:15:23,150
it's very simple and as a consequence of that
simplicity it has turned out to

212
00:15:23,150 --> 00:15:30,130
be that has six months of and very reliable
promote stories and so if we

213
00:15:30,130 --> 00:15:34,790
look at like example of what the manifest
looks like well that's multi one that's

214
00:15:34,790 --> 00:15:39,130
the entirety of what would be a package
in my model it's just it's just

215
00:15:39,130 --> 00:15:43,980
to get repository insert it'll to build
in this order and that's it that just

216
00:15:43,980 --> 00:15:45,960
means track it master of lib X M L to

217
00:15:46,540 --> 00:15:48,090
and spend enough for quite a while

218
00:15:48,680 --> 00:15:53,530
the component about one i'll talk about this
on the next slide but basically that

219
00:15:53,530 --> 00:15:58,690
means this is only for the developer image
i can also choose any get revision

220
00:15:58,690 --> 00:16:03,470
to build it anytime unlikely package in our
can none of this cares about version

221
00:16:03,470 --> 00:16:07,090
numbers at all so i can be tracking
system to get master and say okay

222
00:16:07,090 --> 00:16:10,220
i can no longer log in and the current
version which has happened so i

223
00:16:10,220 --> 00:16:15,780
say okay all just tag back to the previous
revision builds done like within minutes

224
00:16:15,780 --> 00:16:20,540
it's completely on like the package systems because
they have this deep obsession with version

225
00:16:20,540 --> 00:16:21,160
numbers that

226
00:16:21,720 --> 00:16:26,410
permeates every single layer so none of my
system cares about version numbers all any

227
00:16:26,410 --> 00:16:28,320
get revision at anytime

228
00:16:29,820 --> 00:16:37,330
and is the spice example is just how configure
options and patches work i originally

229
00:16:37,330 --> 00:16:42,750
was trying to only have get repositories
and no patches just to force myself to

230
00:16:42,750 --> 00:16:47,660
feed changes back but i sort it's too
impractical so i ended up having a

231
00:16:47,660 --> 00:16:48,390
couple patches

232
00:16:48,920 --> 00:16:54,230
so this is something i think really illustrates
just how different it was tree model

233
00:16:54,230 --> 00:16:58,270
is from the package thing so on the build
server now it's been doing continuous

234
00:16:58,270 --> 00:17:05,020
integration since december right there is over six
thousand complete filesystem trees like i haven't

235
00:17:05,020 --> 00:17:08,650
lost any history right so

236
00:17:09,370 --> 00:17:14,300
in the only occupies sixty gigabytes and
this is sort of the power T duplication

237
00:17:14,300 --> 00:17:18,750
so in theory again not only can you have
five hundred bills locally you could

238
00:17:18,750 --> 00:17:25,310
download in entire history of all the bills
from the build server and

239
00:17:25,650 --> 00:17:29,900
you know we'll get those all have links
to their sources inside of them

240
00:17:30,670 --> 00:17:31,360
so

241
00:17:32,320 --> 00:17:35,070
i just give a lot of flexibility
right you can have a sort of a

242
00:17:35,070 --> 00:17:40,010
system and then add remove stuff we're supposed
trees all about the files so the

243
00:17:40,010 --> 00:17:43,570
way all history is sort of designed is
that sort of having a bunch little

244
00:17:43,570 --> 00:17:48,740
packages you have full complete systems that
share space and i would you have multiple

245
00:17:48,740 --> 00:17:53,250
versions of say what i call runtime tree
but you have a basic runtime tree

246
00:17:53,250 --> 00:17:56,420
enough to run out and then i have
an image div L with all the

247
00:17:56,420 --> 00:18:02,760
developer tools and these just naturally share
storage so us three let's you switch between

248
00:18:02,760 --> 00:18:08,650
atomic so i can i normally run the developer
imagine my D Ms but you

249
00:18:08,650 --> 00:18:13,050
know sometimes we've had boards where things
because of obscure issues only work in the

250
00:18:13,050 --> 00:18:17,970
developer image like a they in package world they
needed deborah develop package installed i

251
00:18:17,970 --> 00:18:22,330
can easily just switch back to the runtime tree
which effectively hides all the developer

252
00:18:22,330 --> 00:18:23,480
tools so

253
00:18:23,910 --> 00:18:28,910
parallel installing multiple file systems and then
besides all the for variance is actually three

254
00:18:28,910 --> 00:18:32,490
it's a the build system outputs a pipeline
so is what i call build master

255
00:18:32,490 --> 00:18:36,610
which is all these get ready all these get repositories
get bill integrating the build

256
00:18:36,610 --> 00:18:41,070
master all that happens there is there
just build a just take the latest get

257
00:18:41,070 --> 00:18:44,840
run make install duster and it's in the tree
you can download that that's very

258
00:18:44,840 --> 00:18:45,750
useful obviously but

259
00:18:46,480 --> 00:18:50,240
i don't expect many humans to want to run
that directly so there's a secondary

260
00:18:50,240 --> 00:18:55,380
stage which does what i call smoke test
and this just updated disk image puts

261
00:18:55,380 --> 00:18:59,900
it union does this appear to let you
log if it does that gets attacked

262
00:18:59,900 --> 00:19:01,840
just like get repositories get tagged

263
00:19:02,490 --> 00:19:07,430
and there's a secondary stage which is integrated
is that after all the make czech

264
00:19:07,430 --> 00:19:08,750
and stuff like that works but

265
00:19:09,810 --> 00:19:14,600
the way i sort of vision this is there's
a like a long pipeline you

266
00:19:14,600 --> 00:19:17,680
can imagine of the very top we have build
master and then something like red

267
00:19:17,680 --> 00:19:21,850
hat enterprise linux is like way
a down there but it is a sort of

268
00:19:21,850 --> 00:19:25,680
long pipeline of extended increasingly extensive testing

269
00:19:26,240 --> 00:19:31,650
but it still really important to be able to
run the build master because sometimes

270
00:19:31,650 --> 00:19:34,980
things a broken and i wanna be able
to debug it locally so you can

271
00:19:34,980 --> 00:19:38,710
download develop about run gtd on the latest
G D M and see what's going

272
00:19:38,710 --> 00:19:38,840
on

273
00:19:39,590 --> 00:19:43,300
and there's also at a task the generates disk images

274
00:19:43,690 --> 00:19:44,750
after something

275
00:19:45,480 --> 00:19:47,560
so on talk about the story of

276
00:19:48,110 --> 00:19:51,470
after you run get push to run in to get
repositories that are tracked your

277
00:19:51,470 --> 00:19:52,100
what happens

278
00:19:52,610 --> 00:19:56,540
well as far as i know on the first person
ever demand push notification from

279
00:19:56,540 --> 00:20:03,330
don't get so that happens and then
we basically do a copy of the get

280
00:20:03,330 --> 00:20:04,730
repository under the build server

281
00:20:05,160 --> 00:20:10,000
so this bill task though important thing
to understand is be in a feedback is

282
00:20:10,000 --> 00:20:15,150
really important to me versus correctness their
different tradeoffs you can make your so the

283
00:20:15,150 --> 00:20:19,820
bill test only rebuild get repository that change
because concretely i can't rebuild look at

284
00:20:19,820 --> 00:20:24,210
you take a every time G T K changes
it would just massively slow down

285
00:20:24,210 --> 00:20:25,290
the cycle

286
00:20:26,650 --> 00:20:27,530
it does

287
00:20:27,820 --> 00:20:32,760
it assembles a build route which means
it's a clean build in this is actually

288
00:20:32,760 --> 00:20:35,790
really important because some things just

289
00:20:36,320 --> 00:20:40,920
it just really increases reliability but this
part actually really fast compared to the D

290
00:20:40,920 --> 00:20:49,120
package people there and the mocking those sort
of tools it averages anywhere from five

291
00:20:49,120 --> 00:20:55,070
to twenty seconds and that's because it uses
hard links stuff actually building the thing

292
00:20:55,070 --> 00:20:56,780
it starts from a clean get repository

293
00:20:57,050 --> 00:21:01,420
so this is also kind of important because it'll
for example instantly catch a missing

294
00:21:01,420 --> 00:21:02,550
file that you forgot

295
00:21:04,990 --> 00:21:07,840
but for something like to live that's a couple
minutes and that's the same with

296
00:21:07,840 --> 00:21:14,000
change builder can whatever and then the result
of that install gets stored into repository

297
00:21:14,000 --> 00:21:14,800
and

298
00:21:15,330 --> 00:21:17,180
this is kind of like the package that is

299
00:21:19,540 --> 00:21:23,330
this us the string here than almost three
components to of X eighty six sixty

300
00:21:23,330 --> 00:21:29,940
four that's kind of like a again branch
big it's torn repository and then we

301
00:21:29,940 --> 00:21:34,640
assemble all of these it just takes a union
of all the different components so

302
00:21:34,640 --> 00:21:39,830
i have to live i have lived to stored
has their own little filesystem trees

303
00:21:39,830 --> 00:21:41,080
and i just layer them on top

304
00:21:41,620 --> 00:21:47,480
and that's very simple so there's no dependency
resolution there's no packaging here and that

305
00:21:47,480 --> 00:21:51,360
takes a minute right now that's something i
could speed up but there's different trade

306
00:21:51,360 --> 00:21:55,850
offs there and after this again this is just like

307
00:21:56,870 --> 00:22:00,810
for and i know change of for a very
small module this is around two

308
00:22:00,810 --> 00:22:05,740
minutes from get pushed to when you
can actually download it reliably

309
00:22:07,810 --> 00:22:12,580
there used to be the concept is yes
is the short answer and i used

310
00:22:12,580 --> 00:22:15,910
to try and you triggers on the client
side like the idea was that you

311
00:22:15,910 --> 00:22:19,290
download this tree and then afterwards
we would run stuff like T update i can

312
00:22:19,290 --> 00:22:20,280
cache on the client

313
00:22:21,340 --> 00:22:23,900
but it's i moved away from that because

314
00:22:25,300 --> 00:22:28,820
then i couldn't do the offline updates
on of the M and that was really

315
00:22:28,820 --> 00:22:33,380
crucial so i sort of took the hit of having
each multiple versions of the

316
00:22:33,380 --> 00:22:35,460
cached icon caching each tree

317
00:22:36,200 --> 00:22:39,720
it's not that bad and it makes up it's a lot faster

318
00:22:40,250 --> 00:22:43,420
baseball for the client this is one
of the things it does slow down the

319
00:22:43,420 --> 00:22:46,970
build process for example on for some
things i have to rebuild in a drama

320
00:22:46,970 --> 00:22:51,790
fast whereas at least for their and i don't
know about that the end rebuilding

321
00:22:51,790 --> 00:22:55,320
the trim F S on the client every time
you crouching so in some cases

322
00:22:55,320 --> 00:22:58,340
i pay a price on the build server
where is in the package will you

323
00:22:58,340 --> 00:22:59,170
pay and it's client

324
00:23:01,780 --> 00:23:02,470
that again sorry

325
00:23:05,290 --> 00:23:06,480
how many different triggers

326
00:23:06,910 --> 00:23:10,690
seven or something maybe like for hang go free type

327
00:23:11,450 --> 00:23:13,790
i don't know there's not that many L D config

328
00:23:14,560 --> 00:23:18,140
i mean i can look really but those are pretty fast execute

329
00:23:20,340 --> 00:23:21,070
so

330
00:23:21,990 --> 00:23:27,470
this i'm not excited about just building again
i think the passing parts really important

331
00:23:27,470 --> 00:23:32,210
to me so use live guess the vast
amounts the filesystems non root

332
00:23:33,550 --> 00:23:37,950
so the smoke test the way it works
is we have a cash disk image

333
00:23:37,950 --> 00:23:41,780
representing the runtime tree you know without
all the developer tools and then i make

334
00:23:41,780 --> 00:23:45,760
a little copy on write disk and i had some
testing stuff for example there's

335
00:23:45,760 --> 00:23:51,350
this service that runs in the virtual guest
export the system you journal back up

336
00:23:51,350 --> 00:23:55,300
to the host which then looks for stuff
so system he has this nice concept

337
00:23:55,300 --> 00:23:57,120
of message ideas which are

338
00:23:57,740 --> 00:24:03,960
basically Q I Ds universal unique ideas
that some event happened right

339
00:24:04,960 --> 00:24:08,330
so an example would be system D M it's
a message with a particular message

340
00:24:08,330 --> 00:24:09,510
id want something court

341
00:24:10,020 --> 00:24:15,290
so if someone makes a commit to say network
manager that "'cause" it just simply

342
00:24:15,290 --> 00:24:16,460
say for startup

343
00:24:16,760 --> 00:24:18,230
the smoke test will fail

344
00:24:18,590 --> 00:24:23,050
for them are patched gnome session timit
a particular message id of one of the

345
00:24:23,050 --> 00:24:27,500
things get manages fails like so for example
if gnome shell exits with an air

346
00:24:27,500 --> 00:24:31,460
or i know that pretty much instantly
on the hose and i can terminate the

347
00:24:31,460 --> 00:24:36,030
V M and then if you see nair see
the gnome hackers are see a

348
00:24:36,030 --> 00:24:37,720
red line for the smoke test that's what this

349
00:24:38,400 --> 00:24:44,570
so most often it happens when people commit
syntax errors in the norm shell javascript

350
00:24:44,570 --> 00:24:45,020
files

351
00:24:45,530 --> 00:24:48,680
lately anyways and i detect that very quickly

352
00:24:49,260 --> 00:24:54,400
and the integration tasks this is something
that i think is really need to which

353
00:24:54,400 --> 00:24:59,570
is before the gnome release process each
operand make czech kind of periodically

354
00:25:00,560 --> 00:25:01,460
randomly

355
00:25:02,070 --> 00:25:05,970
and then theoretically you ran make just
check before release so in the know most

356
00:25:05,970 --> 00:25:10,140
remodel i have all the tests almost
all the tests that you run and make

357
00:25:10,140 --> 00:25:14,260
czech installed in the system so i go
to virtual machine and then i have

358
00:25:14,260 --> 00:25:19,030
a little testing framework that runs all
of the tests after nes change so it

359
00:25:19,030 --> 00:25:24,020
change translation update an am show
i will rerun all that you a test i

360
00:25:24,020 --> 00:25:29,380
will remind all the clutter test because
honestly have plenty of C P U power

361
00:25:29,380 --> 00:25:30,050
and

362
00:25:30,650 --> 00:25:32,800
why not i mean it actually i wanna have

363
00:25:33,290 --> 00:25:37,580
you know a more interesting test scheduling type system but

364
00:25:39,160 --> 00:25:43,300
the build server has thirty two cores
sixty four gigs of ram in flies of

365
00:25:43,300 --> 00:25:43,710
the stuff

366
00:25:50,440 --> 00:25:54,190
so what that is occupied so my time for
one hours race conditions on the

367
00:25:54,190 --> 00:25:54,790
tests

368
00:25:56,120 --> 00:25:59,640
do you live in particular has a lot
of tests with race conditions and

369
00:26:00,960 --> 00:26:01,640
that's

370
00:26:02,060 --> 00:26:04,910
some of those a bit hard to track but
fortunately most of them are just

371
00:26:04,910 --> 00:26:06,950
bought some the tests and not actual core code

372
00:26:07,520 --> 00:26:12,760
but i didn't i did find one conceptual
issue and you live from tracking down

373
00:26:12,760 --> 00:26:13,080
these

374
00:26:13,610 --> 00:26:18,440
but for the most part most the test did work
already because the developers we're

375
00:26:18,440 --> 00:26:21,470
running just not relied continuously

376
00:26:21,890 --> 00:26:23,020
so just very different

377
00:26:24,560 --> 00:26:28,680
so some things that i'd love to
do with the system kinda have

378
00:26:30,790 --> 00:26:31,940
twenty minutes okay

379
00:26:32,510 --> 00:26:34,450
okay cool so

380
00:26:34,940 --> 00:26:39,530
open sousa has this really well they have
a this thing called open here which

381
00:26:39,530 --> 00:26:43,270
has some really cool features and some kind
of weaker features but they have a

382
00:26:43,270 --> 00:26:48,040
really nice but you and i love to have something
like that another feature that

383
00:26:48,040 --> 00:26:52,560
i wanna add is mostly has try server so i wanna have does

384
00:26:53,230 --> 00:26:57,580
does this patch break known as a service basically where

385
00:26:59,170 --> 00:27:02,670
i mean there's no reason i couldn't just start
building inbound patches and bugs a

386
00:27:02,670 --> 00:27:06,290
lot and testing on so you know one
an optional developers can upload

387
00:27:06,890 --> 00:27:07,690
but

388
00:27:07,990 --> 00:27:11,550
bunch of patches and i just take those
do a smoke test that sort of

389
00:27:11,550 --> 00:27:17,300
thing would honestly be pretty fast is just
the tricky part is sharing stuff between

390
00:27:17,300 --> 00:27:21,140
the different builds like the get all the get
repositories are out four gigabytes and

391
00:27:21,140 --> 00:27:24,660
i don't wanna read clone them for each
bill but making sure like and linking

392
00:27:24,660 --> 00:27:27,660
currency is just what's kind of starting
a little bit from this

393
00:27:29,990 --> 00:27:33,710
and i would love to get into like software
engineering stuff and one thing that

394
00:27:33,710 --> 00:27:37,830
i've always wanted as you know just a graph
of how much memory were using

395
00:27:37,830 --> 00:27:41,710
on the default login how much memory using
one epiphany is and wikipedia i mean

396
00:27:41,710 --> 00:27:42,040
just

397
00:27:42,590 --> 00:27:47,970
also the data there's no reason i can gather
this the virtual machine aspect does

398
00:27:47,970 --> 00:27:51,370
the limit kind of the type of performance
metrics that i can get like i

399
00:27:51,370 --> 00:27:55,450
can really get approach are because there's
all this P N I or activity in

400
00:27:55,450 --> 00:27:59,790
the build server and it would just be
too noisy you really need a nice

401
00:27:59,790 --> 00:28:01,510
dedicated harbour lab

402
00:28:05,190 --> 00:28:05,790
probably

403
00:28:13,450 --> 00:28:15,320
that's true

404
00:28:15,880 --> 00:28:16,730
i think

405
00:28:18,800 --> 00:28:21,990
i mean there's so many different ways
to do it i don't know if you

406
00:28:21,990 --> 00:28:24,950
knew has the hoax i would need for
this i mean that would be a

407
00:28:24,950 --> 00:28:29,160
pretty reliable way to do it i installing
agents in the guest is obviously one

408
00:28:29,160 --> 00:28:31,020
way together a lot of stuff but us

409
00:28:31,450 --> 00:28:36,940
then of course you have the heisenberg effect where
you you're affecting what you're measuring

410
00:28:36,940 --> 00:28:39,100
right like your agent is using memory your agent

411
00:28:39,660 --> 00:28:40,500
so

412
00:28:42,120 --> 00:28:46,960
i would love to have automated bisection
on the build server so you know right

413
00:28:46,960 --> 00:28:51,460
now is if the smoke test fails i
basically just run get log and

414
00:28:52,030 --> 00:28:53,860
you know it's usually pretty obvious

415
00:28:54,150 --> 00:28:59,070
who broke it and why but a lot of times
it's not actually and just

416
00:28:59,070 --> 00:29:02,460
like a try server there's no reason i couldn't
just allocate a builder and say

417
00:29:02,460 --> 00:29:07,030
okay i have this regression range well the know
most remodel it's of course over

418
00:29:07,030 --> 00:29:08,600
two hundred get repositories so

419
00:29:09,270 --> 00:29:14,490
handling the multi repository thing with bisection
is an interesting problem but again there's no

420
00:29:14,490 --> 00:29:16,930
reason i couldn't do it just haven't gotten around to it

421
00:29:17,820 --> 00:29:20,710
another cool thing is a little bit more
blues guys just a sort of live

422
00:29:20,710 --> 00:29:25,770
collaboration setup where the developers actually
running get pushed to a branch and we instantly

423
00:29:25,770 --> 00:29:29,350
build it so you have a some work
and am shell and it designer and

424
00:29:29,350 --> 00:29:32,830
that you know develop design i want to see
the developers doing there's no reason

425
00:29:32,830 --> 00:29:35,930
i can just okay to server that just
sort of tried to do that as

426
00:29:35,930 --> 00:29:38,900
fast as possible let them almost live collaborate

427
00:29:41,080 --> 00:29:41,890
so that's

428
00:29:42,270 --> 00:29:47,080
that is not shows the system but
i have a lot to talk about where

429
00:29:47,080 --> 00:29:51,060
i see the high level future the system so

430
00:29:52,470 --> 00:29:53,430
obviously

431
00:29:54,230 --> 00:29:59,160
okay i guess i didn't mention this but there
is no application installation mechanism in

432
00:29:59,160 --> 00:30:03,670
the system yet because it's a hard problem it's

433
00:30:03,950 --> 00:30:07,410
very hard problem and there's a lot
of prior are in that sort of stuff

434
00:30:07,410 --> 00:30:11,820
there's like most all or have re pronounce
it there's a bunch is click packaging

435
00:30:12,720 --> 00:30:17,140
is all package on the stuff around and
they have different tradeoffs parts

436
00:30:17,690 --> 00:30:19,490
the thing that the thing that

437
00:30:20,390 --> 00:30:25,730
is very important in this discussion i
think is to draw a very strong line

438
00:30:26,150 --> 00:30:32,440
it's very strong distinction between free software applications
proprietary ones because i think that demand

439
00:30:33,080 --> 00:30:34,720
there's some commonality there but

440
00:30:36,370 --> 00:30:41,550
i don't understand why so many people in free
software have this obsession with generating

441
00:30:41,550 --> 00:30:45,980
binaries in caching i mean the most important
thing if you're talking about free software

442
00:30:46,370 --> 00:30:51,830
is the source right and who's committing
to that and why and not this package

443
00:30:51,830 --> 00:30:57,420
stuff so for free software applications i'd
really like to emphasise that sort of stuff

444
00:30:57,420 --> 00:31:02,630
like who's writing this out you know let
you let you run the latest version

445
00:31:02,630 --> 00:31:06,480
help you contribute to it that sort of thing

446
00:31:08,270 --> 00:31:10,140
there is the aspect where

447
00:31:10,780 --> 00:31:15,960
it is important to say who built it because
you do yes you obviously have

448
00:31:15,960 --> 00:31:20,000
to generate binaries to run it but it's
still important to say who built it

449
00:31:20,000 --> 00:31:24,570
so for example if you know if we have
a system for applications we're doing

450
00:31:24,570 --> 00:31:31,040
continuous innovation and fifteen outputting zip files
or something who knows doesn't matter it's still

451
00:31:31,040 --> 00:31:35,640
important say build by know because
you have to trust the builder

452
00:31:36,180 --> 00:31:40,840
and so i think i think the aspect of the intermediary
is still important

453
00:31:42,780 --> 00:31:46,750
again i would love to do continuous integration
for the applications i sort of paved

454
00:31:46,750 --> 00:31:52,030
and added some core apps to the manifest
so you know obviously epiphany is in

455
00:31:52,030 --> 00:31:55,420
their gnome terminal the system would
be completely useless without it

456
00:31:56,730 --> 00:31:57,830
and those are kind of

457
00:31:58,360 --> 00:32:02,060
those are available but the really tried
you wanna get to is where you can

458
00:32:02,060 --> 00:32:03,920
remove the web browser from the operating system

459
00:32:04,490 --> 00:32:10,070
apparently that's important and just you
know peer review i mean this is the same

460
00:32:10,070 --> 00:32:13,830
thing i'd like to see for more for the core
operating system is just emphasising

461
00:32:13,830 --> 00:32:15,750
the peer aspect of free software

462
00:32:17,790 --> 00:32:20,350
you know again who who's doing this and why

463
00:32:22,330 --> 00:32:24,240
okay

464
00:32:25,290 --> 00:32:30,980
so obviously this is gonna kind of controversial
topic throughout norman it really gets to

465
00:32:30,980 --> 00:32:35,200
the heart of the distinction between what an operating
system is and what it distribution

466
00:32:35,200 --> 00:32:37,910
is and that sort of thing which is

467
00:32:38,570 --> 00:32:44,180
where do you draw the line for what lives
where right what might applications have

468
00:32:44,180 --> 00:32:44,780
to bundle

469
00:32:45,240 --> 00:32:49,230
so stuff like the backchannel to i'm
not a big fan of the back small

470
00:32:49,230 --> 00:32:54,330
to i really wish that it'd been but
you will nice to a library before

471
00:32:54,330 --> 00:32:54,990
so i

472
00:32:56,510 --> 00:33:01,620
i you know do we except that is barbora
base platform and it's ugly api

473
00:33:01,620 --> 00:33:06,150
i don't know stuff like hire O
obviously we made the decision

474
00:33:06,840 --> 00:33:11,440
this is par the platform it's part
of G T K spell checking is pretty

475
00:33:11,440 --> 00:33:17,080
much perfect example of something where well
we have some libraries out there may not

476
00:33:17,080 --> 00:33:17,680
be great

477
00:33:18,930 --> 00:33:21,570
whether i could should with the base
system or not i don't know

478
00:33:23,730 --> 00:33:26,860
and of course even if we're just talking
about court know how long do we

479
00:33:26,860 --> 00:33:30,560
should you take a to do we encourage do we allow

480
00:33:31,380 --> 00:33:37,370
allows only should application developers still target
in some circumstances and of course we're talking

481
00:33:37,370 --> 00:33:41,200
to do you for enterprise and how
long would we should G T K three

482
00:33:42,690 --> 00:33:46,820
well so the way i define operating system
is something your application will run on

483
00:33:46,820 --> 00:33:47,520
for ever

484
00:33:47,930 --> 00:33:48,980
and this

485
00:33:49,330 --> 00:33:53,690
if we remove stuff then we're not really an operating
system anymore kind of moving

486
00:33:53,690 --> 00:33:59,070
back towards a distribution model so i
don't have answers to these questions

487
00:34:00,920 --> 00:34:04,740
a sort of punch on it and said okay well i'm just going to

488
00:34:05,900 --> 00:34:10,010
to you know to make an operating system
we need to have basic quality assurance

489
00:34:10,010 --> 00:34:14,450
and so that's what i've been working
on for a while like just fixing race

490
00:34:14,450 --> 00:34:19,650
conditions and the G let us and make sure
making sure that worshipping platform the

491
00:34:19,650 --> 00:34:22,060
can be used to build applications and how all that works

492
00:34:22,710 --> 00:34:26,470
so a lot of questions and so there this

493
00:34:26,860 --> 00:34:32,350
so i think proprietary out the needs a proprietary
applications are totally different

494
00:34:33,830 --> 00:34:34,860
and

495
00:34:36,060 --> 00:34:36,900
i mean

496
00:34:37,400 --> 00:34:39,070
for one thing they

497
00:34:39,600 --> 00:34:43,170
their time to an architecture usually if we're
talking about me to binaries and all

498
00:34:43,170 --> 00:34:45,700
of a sudden you're kind of in the windows
world where you have

499
00:34:46,270 --> 00:34:49,860
applications that were targeting X eighty
six and then if we wanna move to new

500
00:34:49,860 --> 00:34:51,450
hardware platform we can do it

501
00:34:53,140 --> 00:34:56,450
i think that sort of thing are few
icgs can just sort of deal with

502
00:34:56,450 --> 00:35:02,420
it so i'm not too focused again on the proprietary
applications basically what i want

503
00:35:03,260 --> 00:35:06,460
i think it's important to enable people
to run proprietary software

504
00:35:07,110 --> 00:35:10,220
if but not encourage necessarily and so

505
00:35:10,720 --> 00:35:15,590
i'd i'm gonna focus my time and just the core
free software gnome applications because

506
00:35:15,590 --> 00:35:18,120
that's again why i'm here from again that's all

507
00:35:20,140 --> 00:35:22,800
so this is something that i was
actually hacking on the plane

508
00:35:24,370 --> 00:35:28,930
and which is basically just system D
for the user session this is kind of

509
00:35:28,930 --> 00:35:32,230
just a for corporate system feature but

510
00:35:33,450 --> 00:35:37,850
using this we can actually this would be something
that would help enable running proprietary

511
00:35:37,850 --> 00:35:38,980
applications because

512
00:35:39,430 --> 00:35:43,450
for that use we sort of to spend boxing
take mechanism and how that would

513
00:35:43,450 --> 00:35:44,160
work

514
00:35:45,540 --> 00:35:46,560
is pretty interesting

515
00:35:47,820 --> 00:35:50,600
a long time ago i helps port S U X to daddy and so i

516
00:35:50,600 --> 00:35:54,560
have a fair amount of expertise in that
and i think it makes sense to

517
00:35:54,560 --> 00:35:58,870
use the ceilings for part of it but the portals
work is sort of essential

518
00:35:58,870 --> 00:36:04,150
for user interaction pieces so you have a sort
of unchanging applications must never do

519
00:36:04,150 --> 00:36:11,100
this type layer and then sort of maybe
more enjoyed or i was like dynamic

520
00:36:11,100 --> 00:36:14,290
application asks to do this type
of model and that's portals

521
00:36:15,620 --> 00:36:19,630
but i want to do this we really need
system the in the session because

522
00:36:19,630 --> 00:36:26,320
it enables grouping binaries for an application
like right now one things this sort of

523
00:36:26,320 --> 00:36:30,900
core part of the known three model was
it's application focus and the way we

524
00:36:30,900 --> 00:36:31,680
match

525
00:36:32,290 --> 00:36:38,100
the X window created by nap to the process
is actually just really horrible and

526
00:36:38,100 --> 00:36:42,190
like to move away from it so getting applications
inside to see group we just

527
00:36:42,190 --> 00:36:44,740
P a fundamental enabler for moving towards this

528
00:36:45,220 --> 00:36:46,890
O S application split

529
00:36:47,690 --> 00:36:52,750
i love to unify the idea operating system extensions
of stuff like proprietary and video

530
00:36:52,750 --> 00:36:56,280
drivers what i think i was and always extension
the package model socks for this

531
00:36:56,280 --> 00:37:00,320
because obviously what you really want is
you want to have your system and then

532
00:37:00,320 --> 00:37:04,330
you say okay i'm gonna stalin be a driver and
ineffectively rebates whereas right now

533
00:37:04,330 --> 00:37:08,840
the package manager will say okay well this
package needs this and what you upgrade

534
00:37:08,840 --> 00:37:14,280
when with really important is to enable
someone say upgrade the base toss up in

535
00:37:14,280 --> 00:37:19,350
video driver try nouveau does the new version
working not have the package manager you

536
00:37:19,350 --> 00:37:23,300
know complaining over here so that's a know
it's extension fonts that sort of stuff

537
00:37:23,300 --> 00:37:29,110
are you can plug ins or was extensions and
unified those with than so extensions

538
00:37:31,480 --> 00:37:33,330
so in conclusion

539
00:37:33,670 --> 00:37:37,230
core qualities important free software
is very important to me but

540
00:37:37,750 --> 00:37:41,890
quality is basically job one if we don't do that

541
00:37:42,870 --> 00:37:44,550
it's not really doing anything

542
00:37:46,070 --> 00:37:50,340
my provide same application framework
and i there is the science just the

543
00:37:51,790 --> 00:37:56,130
the core how her they distributed just making it easy to

544
00:37:58,210 --> 00:38:02,250
getting exposed to the auto tools really rough
for a lot of application developers and

545
00:38:02,250 --> 00:38:07,880
so i was still allow people a package thing
so concretely applications just still have

546
00:38:07,880 --> 00:38:11,690
a make install type stage i think but it's

547
00:38:12,130 --> 00:38:15,340
the build systems really do need
to of all to the point where

548
00:38:16,040 --> 00:38:22,250
it is possible and easy to read an application
without being exposed to all those

549
00:38:22,250 --> 00:38:22,760
words

550
00:38:23,280 --> 00:38:29,270
and of course absolutely essential to this is
just maintaining our links with the various

551
00:38:29,270 --> 00:38:34,160
downstream projects like that in reference
links i mean all that stuff that was in

552
00:38:34,160 --> 00:38:39,110
the beginning but i have again tried to focus this is

553
00:38:39,480 --> 00:38:43,170
it's not i'm not trying to be daddy
and so it's just focusing on a

554
00:38:43,170 --> 00:38:45,410
quality so making sure that's good

555
00:38:45,870 --> 00:38:47,720
and then feeding changes elsewhere

556
00:38:49,520 --> 00:38:53,180
and then if you wanna know more about the project
these are some knowing less

557
00:38:54,730 --> 00:38:58,910
and i'm usually available on our
see any colours should be a male

558
00:38:59,550 --> 00:39:01,410
so that's it

559
00:39:02,100 --> 00:39:04,870
i know i kind of blew through this but there any questions

560
00:39:16,790 --> 00:39:17,370
okay

561
00:39:19,560 --> 00:39:25,130
sure so the question was about don't reproduce
ability so particularly like are the binaries

562
00:39:25,130 --> 00:39:26,230
identical that so

563
00:39:32,500 --> 00:39:37,630
okay so all the binary stolen use repository
i didn't really answer this question is

564
00:39:37,630 --> 00:39:41,800
probably to talk about what this other
project nix O S does this one ones

565
00:39:41,800 --> 00:39:46,340
i was looking at one as do research for
this project so next does checksums

566
00:39:46,340 --> 00:39:50,410
to but they do they check some
all the input to a bill so for

567
00:39:50,410 --> 00:39:55,090
example if an environment variable changes that outputs
a different checksum obviously and they're obsessed

568
00:39:55,090 --> 00:39:58,470
at the stuff but there's a lot of things
that sabotage that like python P

569
00:39:58,470 --> 00:40:03,110
Y C files have the timestamp of the file
the referencing which is useful useless

570
00:40:03,110 --> 00:40:08,390
my system it hasn't been in important
because i've money a disk space

571
00:40:09,500 --> 00:40:09,970
so

572
00:40:14,650 --> 00:40:21,520
so okay sorry i see we're more as you
know story each generated tree is

573
00:40:21,520 --> 00:40:28,230
the manifest a actually what i call results
manifest so if you remember back is

574
00:40:28,230 --> 00:40:28,880
this

575
00:40:29,620 --> 00:40:34,740
back here so the result manifest is
like the hard but be part of buzz

576
00:40:34,740 --> 00:40:39,800
example word has the exactly provisions of the get
repository that we used to build

577
00:40:39,800 --> 00:40:46,460
the street that doesn't necessarily make it reproduceable
exactly because i'm not putting in the

578
00:40:46,460 --> 00:40:51,650
manifest what the host whole system uses open embedded
is a cross compiler crossed environment

579
00:40:51,650 --> 00:40:55,920
so i start format having for enterprise linux
for which is what spinner that number

580
00:40:55,920 --> 00:40:59,580
are runs and then across builds
G C from that so if you want to

581
00:40:59,580 --> 00:41:05,060
fully reproducible build i'd probably have to
put in the manifest built from whatever and

582
00:41:05,060 --> 00:41:06,200
that's something i can improve

583
00:41:07,610 --> 00:41:08,890
and back on

584
00:41:11,500 --> 00:41:11,850
okay

585
00:41:17,930 --> 00:41:20,010
i still i could be loud enough

586
00:41:21,270 --> 00:41:25,770
so you say you're not rebuilding like when
you rebuild you decay you don't rebuild

587
00:41:25,770 --> 00:41:26,020
web

588
00:41:26,730 --> 00:41:30,870
right exact you have like a stuff throw weight
might be considered of probably method

589
00:41:30,870 --> 00:41:34,450
of doing that of saying you know i'm
not going to keep that will result

590
00:41:34,450 --> 00:41:38,360
from this but i would like now that
i know that i changed you live

591
00:41:38,360 --> 00:41:42,230
and we run integration tests later but that only it says

592
00:41:42,570 --> 00:41:45,180
whether the binaries you produce
this point i'm work against

593
00:41:45,800 --> 00:41:48,810
the current that you would you have installed
not whether they will have and we

594
00:41:48,810 --> 00:41:53,500
build a that's right and i have had problems
with that like a completely right

595
00:41:53,500 --> 00:41:57,530
now so name under a little annoying like
when cargo bonsai name i have to

596
00:41:57,530 --> 00:42:01,000
force a rebuild of things and so the way
that works is at the bottom

597
00:42:01,000 --> 00:42:04,360
i just have this thing i call bill that
thought so if i updated version

598
00:42:04,360 --> 00:42:09,670
and i say nine type and say gee the G T K three here that

599
00:42:09,670 --> 00:42:13,470
will just force to rebuild of those things
a build server will just to me

600
00:42:13,470 --> 00:42:14,160
it's catches

601
00:42:15,000 --> 00:42:19,130
and i do that well as you can see
twenty times in the last six

602
00:42:19,130 --> 00:42:23,910
months which that's pretty reasonable to
be perfectly honest it's worked well

603
00:42:24,950 --> 00:42:25,620
okay

604
00:42:29,260 --> 00:42:34,870
how do you put and it's also am doing
maybe analysis of the point is

605
00:42:34,870 --> 00:42:36,940
to make sure that we're not we can maybe a

606
00:42:37,610 --> 00:42:38,860
for sure

607
00:42:40,410 --> 00:42:44,060
it's kind of helps a lot the integration
test phase helps a lot so the

608
00:42:44,060 --> 00:42:47,930
in the i am to you will broke well
right now we would need though

609
00:42:47,930 --> 00:42:52,270
we would run binaries that you live itself bill but if

610
00:42:52,600 --> 00:42:55,930
for example i would know if you live
broke in the and weighted probe G

611
00:42:55,930 --> 00:42:56,370
T K

612
00:42:56,990 --> 00:43:01,240
as long as they didn't both get rebuild
and but as far as more stack

613
00:43:01,240 --> 00:43:05,660
analysis type stuff like i do your thinking
me like upstream tracker dot org or

614
00:43:05,660 --> 00:43:11,380
whatever it like they have some or and
it this beta the less expose and

615
00:43:11,380 --> 00:43:13,650
you pick a tent it's a be a

616
00:43:14,250 --> 00:43:15,500
being able to not this

617
00:43:15,830 --> 00:43:16,340
okay

618
00:43:17,280 --> 00:43:24,370
i mean even if a test or something but we criminalise
between editions actually idea

619
00:43:24,370 --> 00:43:30,510
of a big difference their previous symbol question
two signatures like right well course

620
00:43:30,820 --> 00:43:35,420
the libraries themselves do have maybe
i mean do you live has a list of

621
00:43:35,420 --> 00:43:39,810
export it simple so it's very difficult
to break you pi thereby

622
00:43:40,240 --> 00:43:43,310
i mean it's a question of what we
do with the data like i could

623
00:43:43,310 --> 00:43:46,090
generate that it but what do we
do with that you know do i try

624
00:43:46,090 --> 00:43:49,890
to go back to you know daniel and say
okay you about you probably decimal

625
00:43:49,890 --> 00:43:53,680
to maybe i don't probably be very useful for bias

626
00:43:53,940 --> 00:43:55,290
i don't know i just haven't

627
00:43:55,690 --> 00:43:57,710
i it hasn't come up i guess they

628
00:43:58,890 --> 00:44:02,850
so that when you know just them so just
when this question and then you

629
00:44:02,850 --> 00:44:05,030
can go and that's your questions if you to quit here

630
00:44:06,700 --> 00:44:11,160
i can build a what's my question which
is weeks scroll i will be break

631
00:44:11,160 --> 00:44:11,630
something

632
00:44:12,050 --> 00:44:16,650
so see you at the moment opinion of ceasing
you bring can exploit so on

633
00:44:16,650 --> 00:44:17,480
a scale

634
00:44:18,010 --> 00:44:18,680
right

635
00:44:20,190 --> 00:44:23,550
i don't know i mean it can obviously big
claw everything jasper watch is the

636
00:44:23,550 --> 00:44:28,350
output to and you know he looks at would
make sense to say it sent

637
00:44:28,350 --> 00:44:29,480
me email

638
00:44:30,480 --> 00:44:31,880
i could well

639
00:44:32,310 --> 00:44:36,560
i think that was potentially come out of automated
bisection because the thing is things

640
00:44:36,560 --> 00:44:41,290
can break for reasons that are not careful
that happens pretty often like system he

641
00:44:41,290 --> 00:44:47,300
has a very complex build system and tool
chain bugs sometimes just bite and

642
00:44:47,860 --> 00:44:52,350
you know is it a tool chain issue "'cause"
they use some F function sections

643
00:44:52,350 --> 00:44:56,180
but it doesn't matter but basically it's
not always there for the be like you

644
00:44:56,180 --> 00:45:00,790
need a human site actually a stipulation i mean

645
00:45:01,590 --> 00:45:05,400
but i certainly could harvest email addresses
from the get repositories and

646
00:45:06,230 --> 00:45:12,650
i mean broken that it doesn't usually
break that off one email that i maybe

647
00:45:12,650 --> 00:45:16,980
it's well it's funny like some days things
just break left and right and other

648
00:45:16,980 --> 00:45:20,910
times it'll go three days and i just
don't even touch it and just finally

649
00:45:23,780 --> 00:45:25,840
right i think that's it right thank you all for coming

