<tt xml:lang="en" xmlns="http://www.w3.org/2006/10/ttaf1" xmlns:tts="http://www.w3.org/2006/10/ttaf1#style">
<head><layout /></head>
<body>
<div xml:id="captions">
<p begin="00:00:09.93" end="00:00:11.26">alright so</p>
<p begin="00:00:12.12" end="00:00:17.38">i'll just get started and what people you felling in if you come so i'm</p>
<p begin="00:00:17.38" end="00:00:21.44">gonna be talking about this project called know mostly it's sort of an awkward name</p>
<p begin="00:00:21.44" end="00:00:24.76">but donna names not too important</p>
<p begin="00:00:26.09" end="00:00:30.86">before i get started here though before talk about what i think it's really important</p>
<p begin="00:00:30.86" end="00:00:39.04">to talk about why am here why i care about what i do and the</p>
<p begin="00:00:39.04" end="00:00:45.92">most important thing that really drives me is free software very passionate about it and</p>
<p begin="00:00:46.66" end="00:00:47.44">i just think it's</p>
<p begin="00:00:47.88" end="00:00:50.52">it's always been important sense ever since</p>
<p begin="00:00:51.09" end="00:00:52.12">which is a men road</p>
<p begin="00:00:53.11" end="00:00:58.32">started the G P L and before that secondarily i just have a lot of</p>
<p begin="00:00:58.32" end="00:01:00.41">fun working in this community and</p>
<p begin="00:01:00.74" end="00:01:04.55">you know hang out with other people in interacting with before the world it's also</p>
<p begin="00:01:05.20" end="00:01:10.93">but fourthly right having a prize linux is very important to me and know was</p>
<p begin="00:01:10.93" end="00:01:14.37">a very important component of that had enterprise linux</p>
<p begin="00:01:14.89" end="00:01:16.98">and so when i ship</p>
<p begin="00:01:17.48" end="00:01:22.50">this product to our enterprise customers i wanna know that known is providing red hat</p>
<p begin="00:01:22.50" end="00:01:24.46">enterprise linux with high quality software</p>
<p begin="00:01:24.90" end="00:01:28.73">so all these things are important all these things drive me</p>
<p begin="00:01:31.37" end="00:01:36.20">so secondarily though it's important is to like restate or assumptions briefly why assume here</p>
<p begin="00:01:36.20" end="00:01:41.67">well this is all from the website obviously the free software the software freedom part</p>
<p begin="00:01:41.67" end="00:01:45.86">is in common with michael's the other ones are important</p>
<p begin="00:01:46.50" end="00:01:53.44">but i wanna dive into this connected aspect "'cause" i think that's really interesting part</p>
<p begin="00:01:53.44" end="00:01:57.25">it's probably the most interesting to me so this is sort of the way i</p>
<p begin="00:01:57.25" end="00:02:02.06">the way i think of it is gnome is in ecosystem and we have our</p>
<p begin="00:02:02.06" end="00:02:07.27">centres of gravity i'll talk about those and then obviously we interact with all different</p>
<p begin="00:02:07.27" end="00:02:13.12">kinds of other ecosystems so greater or lesser degree looking at this list</p>
<p begin="00:02:13.67" end="00:02:19.35">you know obviously we share a lot with the canoe project tries in is there</p>
<p begin="00:02:19.35" end="00:02:25.08">an use this on components right enterprise linux very important to me obviously uses a</p>
<p begin="00:02:25.08" end="00:02:28.96">lot of know and there is there's</p>
<p begin="00:02:29.46" end="00:02:33.73">the programming languages icons for roles monos</p>
<p begin="00:02:34.07" end="00:02:39.25">and other ones like open in embedded which in turn are linked other ecosystems you</p>
<p begin="00:02:39.25" end="00:02:43.30">know open about is going to wind river and all these other embedded devices and</p>
<p begin="00:02:43.30" end="00:02:44.11">stuff like that</p>
<p begin="00:02:44.68" end="00:02:46.15">so</p>
<p begin="00:02:46.83" end="00:02:49.02">it's important is sort of just visualise</p>
<p begin="00:02:49.49" end="00:02:54.02">there's all these ecosystems around the gnome is there around the centre grab these that's</p>
<p begin="00:02:54.02" end="00:02:55.56">the way i think of it</p>
<p begin="00:02:57.70" end="00:02:58.59">so</p>
<p begin="00:02:59.69" end="00:03:03.14">with that background what a minute talk about is just to build system</p>
<p begin="00:03:03.68" end="00:03:09.12">but i'm really excited about it which you guys made notice if you see it</p>
<p begin="00:03:09.12" end="00:03:09.70">online</p>
<p begin="00:03:10.43" end="00:03:15.81">because i just kind of always wanted to send it's the in so successful now</p>
<p begin="00:03:16.95" end="00:03:17.73">so</p>
<p begin="00:03:18.28" end="00:03:23.98">my goal with this bill system is to focus on owns core or centres of</p>
<p begin="00:03:23.98" end="00:03:25.49">gravity and</p>
<p begin="00:03:26.84" end="00:03:33.19">not exclude other things but just make sure that we're doing well what is important</p>
<p begin="00:03:33.19" end="00:03:40.89">to us and all talk about that and the continuous aspect so it is building</p>
<p begin="00:03:40.89" end="00:03:45.65">but it's also testing continuously and i'm i could talk for the rest of this</p>
<p begin="00:03:45.65" end="00:03:50.13">whole session about continuous integration why it's so important but i'm just gonna gloss over</p>
<p begin="00:03:50.13" end="00:03:50.56">that</p>
<p begin="00:03:51.84" end="00:03:52.50">so</p>
<p begin="00:03:53.26" end="00:03:54.65">it's testing</p>
<p begin="00:03:55.12" end="00:04:00.10">a lot of get repositories a lot of the what makes up cornell so kind</p>
<p begin="00:04:00.10" end="00:04:04.17">of when i started this project i start from this is sort of minimal system</p>
<p begin="00:04:04.17" end="00:04:04.90">and build up</p>
<p begin="00:04:05.51" end="00:04:08.56">from scratch and so i got to know him shell like i wanted to just</p>
<p begin="00:04:08.56" end="00:04:13.91">minimise interactions with other things so we can again focus on our core aspects so</p>
<p begin="00:04:13.91" end="00:04:19.52">striking a lot of get repositories for example all hundred and some X or get</p>
<p begin="00:04:19.52" end="00:04:23.87">repositories most of which are basically just the protocols and never change but</p>
<p begin="00:04:25.48" end="00:04:29.41">and of course all the know network the think that are important network manager system</p>
<p begin="00:04:29.41" end="00:04:34.41">do i wanna make sure that known works well with the latest system so tracking</p>
<p begin="00:04:34.41" end="00:04:36.25">system do you get master very important</p>
<p begin="00:04:37.56" end="00:04:41.13">the basis done this is sort of stuff like that i just don't care about</p>
<p begin="00:04:41.13" end="00:04:45.07">like for example an S P R and S open ssl those all come from</p>
<p begin="00:04:45.07" end="00:04:48.97">of an embedded and basically are ran make some binaries popped out if you're to</p>
<p begin="00:04:48.97" end="00:04:52.74">work that's about the level of Q A that i gave to the</p>
<p begin="00:04:54.50" end="00:04:56.91">also crucial is that i have</p>
<p begin="00:04:57.37" end="00:05:01.91">a sort of course focus with this minutes only targeting virtual eyes environments because</p>
<p begin="00:05:02.51" end="00:05:07.81">there's many reasons for this one is that doing testing fertilisation is whole much easier</p>
<p begin="00:05:07.81" end="00:05:11.71">than trying to have like a test lab wired to physical hardware that's a whole</p>
<p begin="00:05:11.71" end="00:05:17.00">other level of management personalisation it's really easy i can script using you make it</p>
<p begin="00:05:17.00" end="00:05:21.57">do a dance when i wanted to it's great and of course</p>
<p begin="00:05:22.05" end="00:05:27.37">there's other aspects of this like there's no security updates because you basically need people</p>
<p begin="00:05:27.37" end="00:05:30.92">there employed and obviously my employer does this</p>
<p begin="00:05:31.35" end="00:05:37.31">i'm not trying to compete with them obviously so these are that's sort of high</p>
<p begin="00:05:37.31" end="00:05:42.93">level summary of what this project is and kind of hopefully just is important what</p>
<p begin="00:05:42.93" end="00:05:43.45">it is not</p>
<p begin="00:05:45.19" end="00:05:49.45">so the core values of known as i see them obviously we have the G</p>
<p begin="00:05:49.45" end="00:05:54.00">T K stacked you live is very important to me because i think it</p>
<p begin="00:05:55.28" end="00:06:01.61">it's a fundamental pieces for writing modern applications it has the event do it has</p>
<p begin="00:06:01.61" end="00:06:07.00">a file system abstraction a bunch of stuff that really is a core part of</p>
<p begin="00:06:07.00" end="00:06:11.79">an operating system and i'd like to see it used more particular in red hat</p>
<p begin="00:06:11.79" end="00:06:12.61">enterprise linux</p>
<p begin="00:06:13.05" end="00:06:20.68">also in known we have accessibility internationalisation also part of our core values and he's</p>
<p begin="00:06:20.68" end="00:06:23.25">the secondary list is kind of my list</p>
<p begin="00:06:24.86" end="00:06:30.49">software engineering very important to me get the all the basics of doing continuous integration</p>
<p begin="00:06:30.49" end="00:06:33.30">you know just are we leaking memory you know just</p>
<p begin="00:06:33.75" end="00:06:37.77">again the basics and i'm trying to sort of push for</p>
<p begin="00:06:38.34" end="00:06:43.10">split between the operating system applications and then always exceptions and i'll talk about this</p>
<p begin="00:06:43.10" end="00:06:48.34">a bit more later but just to repeat again the goal the system is to</p>
<p begin="00:06:48.34" end="00:06:53.45">focus on gnomes core values and feedback code continued a feedback as we have been</p>
<p begin="00:06:53.45" end="00:06:55.99">doing for years back into these other you can systems</p>
<p begin="00:06:57.08" end="00:06:57.63">so</p>
<p begin="00:06:58.31" end="00:07:05.21">the non goals no enterprise features no packaging know enterprise features there's no you know</p>
<p begin="00:07:05.21" end="00:07:08.86">if you want her breast for example that's not something that you know i'm gonna</p>
<p begin="00:07:08.86" end="00:07:09.17">pass</p>
<p begin="00:07:09.53" end="00:07:12.45">and a fast home again not something about it</p>
<p begin="00:07:13.20" end="00:07:15.63">testing G T K G but</p>
<p begin="00:07:18.32" end="00:07:25.03">so what has a system achieved well it's been online deployed in the known data</p>
<p begin="00:07:25.03" end="00:07:33.57">centre since december ish and since then it's been building fairly reliably and very importantly</p>
<p begin="00:07:33.57" end="00:07:37.88">without human intervention i'll talk a little bit about the details of how that works</p>
<p begin="00:07:37.88" end="00:07:41.49">but a lot of times it's just building one off</p>
<p begin="00:07:41.86" end="00:07:44.15">doing something else and it's just working fine</p>
<p begin="00:07:44.79" end="00:07:48.83">but more importantly than the building it's been doing testing and all of talk a</p>
<p begin="00:07:48.83" end="00:07:50.19">little bit about the details of that</p>
<p begin="00:07:52.25" end="00:07:56.53">i have some numbers later so this is something that i'm most proud of is</p>
<p begin="00:07:56.53" end="00:08:00.62">so but i'm from a get pushed or something like do you live in so</p>
<p begin="00:08:00.62" end="00:08:05.20">when i'm booting a virtual machine is down to minutes now and</p>
<p begin="00:08:06.99" end="00:08:08.81">it depending on the type of change</p>
<p begin="00:08:10.92" end="00:08:11.06">like</p>
<p begin="00:08:13.06" end="00:08:16.23">depending on the type of change i think i could get that down the second</p>
<p begin="00:08:16.23" end="00:08:18.07">so that's always been michael</p>
<p begin="00:08:18.57" end="00:08:24.40">it's totally possible the other thing that's really important to me and i talked about</p>
<p begin="00:08:24.40" end="00:08:25.95">this last year a bit but</p>
<p begin="00:08:27.20" end="00:08:32.59">the story for how upgrades works is just crucial for no and</p>
<p begin="00:08:33.41" end="00:08:38.23">something i just find deeply embarrassing about the current red hat enterprise linux six which</p>
<p begin="00:08:38.23" end="00:08:42.28">i run is that the upgrade system just doesn't know anything about the browser in</p>
<p begin="00:08:42.28" end="00:08:45.90">just it's not safe to upgrade it like you know if you're if you lose</p>
<p begin="00:08:45.90" end="00:08:50.20">power halfway so part of this project has actually been redesigning how it this work</p>
<p begin="00:08:50.20" end="00:08:54.85">and so using it was three system upgrades actually fully atomic you can pull the</p>
<p begin="00:08:54.85" end="00:08:57.72">power well they're running and it's just sort of crucial</p>
<p begin="00:08:59.39" end="00:09:03.84">so even more interesting there's a lot of tests that right now so before developers</p>
<p begin="00:09:03.84" end="00:09:04.94">kind of ran make check</p>
<p begin="00:09:05.42" end="00:09:12.47">periodically manually now have automated test automated make checks of a lot of different models</p>
<p begin="00:09:12.47" end="00:09:14.03">there's</p>
<p begin="00:09:14.56" end="00:09:19.47">three hundred fifty test binaries which in turn because of G test are in turn</p>
<p begin="00:09:19.47" end="00:09:23.31">out a lot depends how you measure but this takes a couple minutes all talk</p>
<p begin="00:09:23.31" end="00:09:28.06">about that later another cool thing is that for a long time unknown would really</p>
<p begin="00:09:28.06" end="00:09:32.28">test G D M that was kind of ray would run makes you will make</p>
<p begin="00:09:32.28" end="00:09:36.71">install in his laptop but it's not something that fit the J job model right</p>
<p begin="00:09:36.71" end="00:09:41.74">J scroll only affects your session and so sometimes G D M well it was</p>
<p begin="00:09:41.74" end="00:09:46.50">kind of broken but now if G D M breaks all know in minutes ands</p>
<p begin="00:09:46.50" end="00:09:47.50">that's been working like</p>
<p begin="00:09:48.87" end="00:09:53.28">so i want talk a little bit about the always three system and how its</p>
<p begin="00:09:53.28" end="00:09:57.09">kind of different from the packaging model because it's</p>
<p begin="00:09:57.76" end="00:10:00.54">pretty it's pretty crucial to how the system works</p>
<p begin="00:10:01.03" end="00:10:06.64">so i buster itself is just kind of like a user space filesystem enter and</p>
<p begin="00:10:06.64" end="00:10:09.65">i like the term get for operating system binaries</p>
<p begin="00:10:11.07" end="00:10:16.02">it's misleading in some ways but on the ways very accurate so what industry does</p>
<p begin="00:10:16.02" end="00:10:21.53">is it manages to let you have let's you more parallel blue multiple operating so</p>
<p begin="00:10:21.53" end="00:10:24.18">multiple versions of multiple operating systems</p>
<p begin="00:10:24.64" end="00:10:28.67">without affecting the physical root directory of your operating system</p>
<p begin="00:10:29.26" end="00:10:30.22">so</p>
<p begin="00:10:30.82" end="00:10:34.73">it's like get in that it's a content address system so it naturally to duplicate</p>
<p begin="00:10:34.73" end="00:10:40.37">so if you have multi same multiple versions of gnome installed they only use space</p>
<p begin="00:10:40.78" end="00:10:44.15">a by proportion how many files are different</p>
<p begin="00:10:44.67" end="00:10:45.31">so</p>
<p begin="00:10:46.53" end="00:10:50.39">i'll talk a little bit more about that later to it's different though from a</p>
<p begin="00:10:50.39" end="00:10:55.23">lot of image based appointed systems that happen prototype out there like red hat enterprise</p>
<p begin="00:10:55.23" end="00:11:00.03">linux have this state was project for a while which was basically a kind of</p>
<p begin="00:11:00.03" end="00:11:06.41">image of a system where you download new data to block level and you're at</p>
<p begin="00:11:06.41" end="00:11:09.65">sea is N F S mounted or something like that all those trees different from</p>
<p begin="00:11:09.65" end="00:11:15.26">that because it does operate at the same level as package mentors do but unlike</p>
<p begin="00:11:15.26" end="00:11:19.54">package managers it just a done content replication system in this allows a lot of</p>
<p begin="00:11:19.54" end="00:11:24.86">neat tricks i'm a show those the next slide but straight the way to think</p>
<p begin="00:11:24.86" end="00:11:30.23">of is really am your image of packages are lots of little filesystems with some</p>
<p begin="00:11:30.23" end="00:11:33.01">shell scripts that run as root attached in their upload in the internet and you</p>
<p begin="00:11:33.01" end="00:11:38.17">assemble them on your client machine string model you replicate filesystems from a build server</p>
<p begin="00:11:38.17" end="00:11:40.16">or you can generate them locally</p>
<p begin="00:11:40.84" end="00:11:47.84">and it is filesystem independent so it does leverage some butterflies features mostly through G</p>
<p begin="00:11:47.84" end="00:11:52.94">live you we automatically use the better fess i aukro for a copy and right</p>
<p begin="00:11:53.47" end="00:11:58.56">type stuff but i think it's sort of important for general purpose system to work</p>
<p begin="00:11:58.56" end="00:12:01.82">on top of plane yet see for and that's actually what i test on the</p>
<p begin="00:12:01.82" end="00:12:03.89">most because fifty fours really fast</p>
<p begin="00:12:06.29" end="00:12:06.94">so</p>
<p begin="00:12:07.39" end="00:12:11.03">it does have a format for installing on your local system but it also has</p>
<p begin="00:12:11.03" end="00:12:14.07">an archive format they can run on a web server and that's sort of how</p>
<p begin="00:12:14.07" end="00:12:18.87">this the build system works as there is than almost resides the build system it</p>
<p begin="00:12:18.87" end="00:12:24.09">commits to noticed repository and then you can download it directly from just a plain</p>
<p begin="00:12:24.09" end="00:12:25.57">old apache</p>
<p begin="00:12:27.03" end="00:12:31.10">so here's some tricks that i wanna make possible and i've been protecting this a</p>
<p begin="00:12:31.10" end="00:12:36.63">little bit with laura is so i run redheaded present X six on this laptop</p>
<p begin="00:12:36.63" end="00:12:42.45">because people favour subscriptions any bill fix it but it's obviously important from able need</p>
<p begin="00:12:42.45" end="00:12:45.74">to be able to run known get master because i wanna be able to contribute</p>
<p begin="00:12:45.74" end="00:12:49.76">to it and make sure that it still works for the next version so</p>
<p begin="00:12:50.47" end="00:12:54.62">one the way i plan to have this work is all just have reading representing</p>
<p begin="00:12:54.62" end="00:12:59.28">six am i root partition and all street just sort of installs inside that without</p>
<p begin="00:12:59.28" end="00:13:03.63">disrupting it so i can have the know most re what's called build master just</p>
<p begin="00:13:03.63" end="00:13:08.46">the thing is tracking to get repositories but you could also parallel install multiple versions</p>
<p begin="00:13:08.46" end="00:13:09.81">of or a very easily</p>
<p begin="00:13:10.43" end="00:13:15.54">the hard part about this is fixing or P M to not be the lowest</p>
<p begin="00:13:15.54" end="00:13:21.61">level anymore so that's still in progress but i do have the point where you</p>
<p begin="00:13:21.61" end="00:13:24.66">can have the base system and then to the newer one and test it working</p>
<p begin="00:13:24.66" end="00:13:25.08">fine</p>
<p begin="00:13:25.73" end="00:13:30.95">and when i say five hundred builds here that's really possible because it just comes</p>
<p begin="00:13:30.95" end="00:13:35.53">down to how many files are different and between</p>
<p begin="00:13:36.01" end="00:13:40.24">things just don't change that much and there aren't a lot of big binaries so</p>
<p begin="00:13:40.24" end="00:13:45.33">you really can have five hundred builds installed in more interest a need or trick</p>
<p begin="00:13:45.33" end="00:13:50.61">that you could do something like automated bisection which is where you know you have</p>
<p begin="00:13:50.61" end="00:13:56.96">your starting point you say okay i get graphics corruption recently and sort of write</p>
<p begin="00:13:56.96" end="00:14:00.09">a test binary that maybe just takes a screenshot what for the corruption and then</p>
<p begin="00:14:00.09" end="00:14:04.32">just keep booting into all these bills and so you find the build it's broken</p>
<p begin="00:14:04.32" end="00:14:08.85">and from there you can from the source code i really need poster trick in</p>
<p begin="00:14:08.85" end="00:14:11.56">this is kind of part of how the cork you a system works as it</p>
<p begin="00:14:11.56" end="00:14:15.54">can up update virtual machines while they're entirely offline</p>
<p begin="00:14:16.08" end="00:14:22.38">and this works basically because it's a don filesystem replication and not like packages where</p>
<p begin="00:14:22.38" end="00:14:25.16">you have these ritual scripts attached and what they do</p>
<p begin="00:14:25.82" end="00:14:31.00">was she has none of that and so that's this is actually a very useful</p>
<p begin="00:14:31.00" end="00:14:36.11">trick in general and like i mentioned before i'd like to see austria eventually slide</p>
<p begin="00:14:36.11" end="00:14:40.16">underneath these package systems like D package in our P M and all that stuff</p>
<p begin="00:14:40.16" end="00:14:45.83">where or she would give the parallel booting the atomic upgrades that sort of stuff</p>
<p begin="00:14:47.24" end="00:14:47.79">to them</p>
<p begin="00:14:49.02" end="00:14:55.62">so know much three is layered on top of austria and it's very simple there</p>
<p begin="00:14:55.62" end="00:14:58.92">when i say there are no packages i mean i went through the entire system</p>
<p begin="00:14:58.92" end="00:15:03.03">in eliminated the concept at every level as much as i could to try and</p>
<p begin="00:15:03.03" end="00:15:07.69">gain reliability and sort of optimised for</p>
<p begin="00:15:08.18" end="00:15:08.87">automation</p>
<p begin="00:15:09.42" end="00:15:14.90">so than almost relay or has this thing called a manifest which is literally just</p>
<p begin="00:15:14.90" end="00:15:17.06">a list of get repositories to build and work</p>
<p begin="00:15:17.61" end="00:15:23.15">it's very simple and as a consequence of that simplicity it has turned out to</p>
<p begin="00:15:23.15" end="00:15:30.13">be that has six months of and very reliable promote stories and so if we</p>
<p begin="00:15:30.13" end="00:15:34.79">look at like example of what the manifest looks like well that's multi one that's</p>
<p begin="00:15:34.79" end="00:15:39.13">the entirety of what would be a package in my model it's just it's just</p>
<p begin="00:15:39.13" end="00:15:43.98">to get repository insert it'll to build in this order and that's it that just</p>
<p begin="00:15:43.98" end="00:15:45.96">means track it master of lib X M L to</p>
<p begin="00:15:46.54" end="00:15:48.09">and spend enough for quite a while</p>
<p begin="00:15:48.68" end="00:15:53.53">the component about one i'll talk about this on the next slide but basically that</p>
<p begin="00:15:53.53" end="00:15:58.69">means this is only for the developer image i can also choose any get revision</p>
<p begin="00:15:58.69" end="00:16:03.47">to build it anytime unlikely package in our can none of this cares about version</p>
<p begin="00:16:03.47" end="00:16:07.09">numbers at all so i can be tracking system to get master and say okay</p>
<p begin="00:16:07.09" end="00:16:10.22">i can no longer log in and the current version which has happened so i</p>
<p begin="00:16:10.22" end="00:16:15.78">say okay all just tag back to the previous revision builds done like within minutes</p>
<p begin="00:16:15.78" end="00:16:20.54">it's completely on like the package systems because they have this deep obsession with version</p>
<p begin="00:16:20.54" end="00:16:21.16">numbers that</p>
<p begin="00:16:21.72" end="00:16:26.41">permeates every single layer so none of my system cares about version numbers all any</p>
<p begin="00:16:26.41" end="00:16:28.32">get revision at anytime</p>
<p begin="00:16:29.82" end="00:16:37.33">and is the spice example is just how configure options and patches work i originally</p>
<p begin="00:16:37.33" end="00:16:42.75">was trying to only have get repositories and no patches just to force myself to</p>
<p begin="00:16:42.75" end="00:16:47.66">feed changes back but i sort it's too impractical so i ended up having a</p>
<p begin="00:16:47.66" end="00:16:48.39">couple patches</p>
<p begin="00:16:48.92" end="00:16:54.23">so this is something i think really illustrates just how different it was tree model</p>
<p begin="00:16:54.23" end="00:16:58.27">is from the package thing so on the build server now it's been doing continuous</p>
<p begin="00:16:58.27" end="00:17:05.02">integration since december right there is over six thousand complete filesystem trees like i haven't</p>
<p begin="00:17:05.02" end="00:17:08.65">lost any history right so</p>
<p begin="00:17:09.37" end="00:17:14.30">in the only occupies sixty gigabytes and this is sort of the power T duplication</p>
<p begin="00:17:14.30" end="00:17:18.75">so in theory again not only can you have five hundred bills locally you could</p>
<p begin="00:17:18.75" end="00:17:25.31">download in entire history of all the bills from the build server and</p>
<p begin="00:17:25.65" end="00:17:29.90">you know we'll get those all have links to their sources inside of them</p>
<p begin="00:17:30.67" end="00:17:31.36">so</p>
<p begin="00:17:32.32" end="00:17:35.07">i just give a lot of flexibility right you can have a sort of a</p>
<p begin="00:17:35.07" end="00:17:40.01">system and then add remove stuff we're supposed trees all about the files so the</p>
<p begin="00:17:40.01" end="00:17:43.57">way all history is sort of designed is that sort of having a bunch little</p>
<p begin="00:17:43.57" end="00:17:48.74">packages you have full complete systems that share space and i would you have multiple</p>
<p begin="00:17:48.74" end="00:17:53.25">versions of say what i call runtime tree but you have a basic runtime tree</p>
<p begin="00:17:53.25" end="00:17:56.42">enough to run out and then i have an image div L with all the</p>
<p begin="00:17:56.42" end="00:18:02.76">developer tools and these just naturally share storage so us three let's you switch between</p>
<p begin="00:18:02.76" end="00:18:08.65">atomic so i can i normally run the developer imagine my D Ms but you</p>
<p begin="00:18:08.65" end="00:18:13.05">know sometimes we've had boards where things because of obscure issues only work in the</p>
<p begin="00:18:13.05" end="00:18:17.97">developer image like a they in package world they needed deborah develop package installed i</p>
<p begin="00:18:17.97" end="00:18:22.33">can easily just switch back to the runtime tree which effectively hides all the developer</p>
<p begin="00:18:22.33" end="00:18:23.48">tools so</p>
<p begin="00:18:23.91" end="00:18:28.91">parallel installing multiple file systems and then besides all the for variance is actually three</p>
<p begin="00:18:28.91" end="00:18:32.49">it's a the build system outputs a pipeline so is what i call build master</p>
<p begin="00:18:32.49" end="00:18:36.61">which is all these get ready all these get repositories get bill integrating the build</p>
<p begin="00:18:36.61" end="00:18:41.07">master all that happens there is there just build a just take the latest get</p>
<p begin="00:18:41.07" end="00:18:44.84">run make install duster and it's in the tree you can download that that's very</p>
<p begin="00:18:44.84" end="00:18:45.75">useful obviously but</p>
<p begin="00:18:46.48" end="00:18:50.24">i don't expect many humans to want to run that directly so there's a secondary</p>
<p begin="00:18:50.24" end="00:18:55.38">stage which does what i call smoke test and this just updated disk image puts</p>
<p begin="00:18:55.38" end="00:18:59.90">it union does this appear to let you log if it does that gets attacked</p>
<p begin="00:18:59.90" end="00:19:01.84">just like get repositories get tagged</p>
<p begin="00:19:02.49" end="00:19:07.43">and there's a secondary stage which is integrated is that after all the make czech</p>
<p begin="00:19:07.43" end="00:19:08.75">and stuff like that works but</p>
<p begin="00:19:09.81" end="00:19:14.60">the way i sort of vision this is there's a like a long pipeline you</p>
<p begin="00:19:14.60" end="00:19:17.68">can imagine of the very top we have build master and then something like red</p>
<p begin="00:19:17.68" end="00:19:21.85">hat enterprise linux is like way a down there but it is a sort of</p>
<p begin="00:19:21.85" end="00:19:25.68">long pipeline of extended increasingly extensive testing</p>
<p begin="00:19:26.24" end="00:19:31.65">but it still really important to be able to run the build master because sometimes</p>
<p begin="00:19:31.65" end="00:19:34.98">things a broken and i wanna be able to debug it locally so you can</p>
<p begin="00:19:34.98" end="00:19:38.71">download develop about run gtd on the latest G D M and see what's going</p>
<p begin="00:19:38.71" end="00:19:38.84">on</p>
<p begin="00:19:39.59" end="00:19:43.30">and there's also at a task the generates disk images</p>
<p begin="00:19:43.69" end="00:19:44.75">after something</p>
<p begin="00:19:45.48" end="00:19:47.56">so on talk about the story of</p>
<p begin="00:19:48.11" end="00:19:51.47">after you run get push to run in to get repositories that are tracked your</p>
<p begin="00:19:51.47" end="00:19:52.10">what happens</p>
<p begin="00:19:52.61" end="00:19:56.54">well as far as i know on the first person ever demand push notification from</p>
<p begin="00:19:56.54" end="00:20:03.33">don't get so that happens and then we basically do a copy of the get</p>
<p begin="00:20:03.33" end="00:20:04.73">repository under the build server</p>
<p begin="00:20:05.16" end="00:20:10.00">so this bill task though important thing to understand is be in a feedback is</p>
<p begin="00:20:10.00" end="00:20:15.15">really important to me versus correctness their different tradeoffs you can make your so the</p>
<p begin="00:20:15.15" end="00:20:19.82">bill test only rebuild get repository that change because concretely i can't rebuild look at</p>
<p begin="00:20:19.82" end="00:20:24.21">you take a every time G T K changes it would just massively slow down</p>
<p begin="00:20:24.21" end="00:20:25.29">the cycle</p>
<p begin="00:20:26.65" end="00:20:27.53">it does</p>
<p begin="00:20:27.82" end="00:20:32.76">it assembles a build route which means it's a clean build in this is actually</p>
<p begin="00:20:32.76" end="00:20:35.79">really important because some things just</p>
<p begin="00:20:36.32" end="00:20:40.92">it just really increases reliability but this part actually really fast compared to the D</p>
<p begin="00:20:40.92" end="00:20:49.12">package people there and the mocking those sort of tools it averages anywhere from five</p>
<p begin="00:20:49.12" end="00:20:55.07">to twenty seconds and that's because it uses hard links stuff actually building the thing</p>
<p begin="00:20:55.07" end="00:20:56.78">it starts from a clean get repository</p>
<p begin="00:20:57.05" end="00:21:01.42">so this is also kind of important because it'll for example instantly catch a missing</p>
<p begin="00:21:01.42" end="00:21:02.55">file that you forgot</p>
<p begin="00:21:04.99" end="00:21:07.84">but for something like to live that's a couple minutes and that's the same with</p>
<p begin="00:21:07.84" end="00:21:14.00">change builder can whatever and then the result of that install gets stored into repository</p>
<p begin="00:21:14.00" end="00:21:14.80">and</p>
<p begin="00:21:15.33" end="00:21:17.18">this is kind of like the package that is</p>
<p begin="00:21:19.54" end="00:21:23.33">this us the string here than almost three components to of X eighty six sixty</p>
<p begin="00:21:23.33" end="00:21:29.94">four that's kind of like a again branch big it's torn repository and then we</p>
<p begin="00:21:29.94" end="00:21:34.64">assemble all of these it just takes a union of all the different components so</p>
<p begin="00:21:34.64" end="00:21:39.83">i have to live i have lived to stored has their own little filesystem trees</p>
<p begin="00:21:39.83" end="00:21:41.08">and i just layer them on top</p>
<p begin="00:21:41.62" end="00:21:47.48">and that's very simple so there's no dependency resolution there's no packaging here and that</p>
<p begin="00:21:47.48" end="00:21:51.36">takes a minute right now that's something i could speed up but there's different trade</p>
<p begin="00:21:51.36" end="00:21:55.85">offs there and after this again this is just like</p>
<p begin="00:21:56.87" end="00:22:00.81">for and i know change of for a very small module this is around two</p>
<p begin="00:22:00.81" end="00:22:05.74">minutes from get pushed to when you can actually download it reliably</p>
<p begin="00:22:07.81" end="00:22:12.58">there used to be the concept is yes is the short answer and i used</p>
<p begin="00:22:12.58" end="00:22:15.91">to try and you triggers on the client side like the idea was that you</p>
<p begin="00:22:15.91" end="00:22:19.29">download this tree and then afterwards we would run stuff like T update i can</p>
<p begin="00:22:19.29" end="00:22:20.28">cache on the client</p>
<p begin="00:22:21.34" end="00:22:23.90">but it's i moved away from that because</p>
<p begin="00:22:25.30" end="00:22:28.82">then i couldn't do the offline updates on of the M and that was really</p>
<p begin="00:22:28.82" end="00:22:33.38">crucial so i sort of took the hit of having each multiple versions of the</p>
<p begin="00:22:33.38" end="00:22:35.46">cached icon caching each tree</p>
<p begin="00:22:36.20" end="00:22:39.72">it's not that bad and it makes up it's a lot faster</p>
<p begin="00:22:40.25" end="00:22:43.42">baseball for the client this is one of the things it does slow down the</p>
<p begin="00:22:43.42" end="00:22:46.97">build process for example on for some things i have to rebuild in a drama</p>
<p begin="00:22:46.97" end="00:22:51.79">fast whereas at least for their and i don't know about that the end rebuilding</p>
<p begin="00:22:51.79" end="00:22:55.32">the trim F S on the client every time you crouching so in some cases</p>
<p begin="00:22:55.32" end="00:22:58.34">i pay a price on the build server where is in the package will you</p>
<p begin="00:22:58.34" end="00:22:59.17">pay and it's client</p>
<p begin="00:23:01.78" end="00:23:02.47">that again sorry</p>
<p begin="00:23:05.29" end="00:23:06.48">how many different triggers</p>
<p begin="00:23:06.91" end="00:23:10.69">seven or something maybe like for hang go free type</p>
<p begin="00:23:11.45" end="00:23:13.79">i don't know there's not that many L D config</p>
<p begin="00:23:14.56" end="00:23:18.14">i mean i can look really but those are pretty fast execute</p>
<p begin="00:23:20.34" end="00:23:21.07">so</p>
<p begin="00:23:21.99" end="00:23:27.47">this i'm not excited about just building again i think the passing parts really important</p>
<p begin="00:23:27.47" end="00:23:32.21">to me so use live guess the vast amounts the filesystems non root</p>
<p begin="00:23:33.55" end="00:23:37.95">so the smoke test the way it works is we have a cash disk image</p>
<p begin="00:23:37.95" end="00:23:41.78">representing the runtime tree you know without all the developer tools and then i make</p>
<p begin="00:23:41.78" end="00:23:45.76">a little copy on write disk and i had some testing stuff for example there's</p>
<p begin="00:23:45.76" end="00:23:51.35">this service that runs in the virtual guest export the system you journal back up</p>
<p begin="00:23:51.35" end="00:23:55.30">to the host which then looks for stuff so system he has this nice concept</p>
<p begin="00:23:55.30" end="00:23:57.12">of message ideas which are</p>
<p begin="00:23:57.74" end="00:24:03.96">basically Q I Ds universal unique ideas that some event happened right</p>
<p begin="00:24:04.96" end="00:24:08.33">so an example would be system D M it's a message with a particular message</p>
<p begin="00:24:08.33" end="00:24:09.51">id want something court</p>
<p begin="00:24:10.02" end="00:24:15.29">so if someone makes a commit to say network manager that "'cause" it just simply</p>
<p begin="00:24:15.29" end="00:24:16.46">say for startup</p>
<p begin="00:24:16.76" end="00:24:18.23">the smoke test will fail</p>
<p begin="00:24:18.59" end="00:24:23.05">for them are patched gnome session timit a particular message id of one of the</p>
<p begin="00:24:23.05" end="00:24:27.50">things get manages fails like so for example if gnome shell exits with an air</p>
<p begin="00:24:27.50" end="00:24:31.46">or i know that pretty much instantly on the hose and i can terminate the</p>
<p begin="00:24:31.46" end="00:24:36.03">V M and then if you see nair see the gnome hackers are see a</p>
<p begin="00:24:36.03" end="00:24:37.72">red line for the smoke test that's what this</p>
<p begin="00:24:38.40" end="00:24:44.57">so most often it happens when people commit syntax errors in the norm shell javascript</p>
<p begin="00:24:44.57" end="00:24:45.02">files</p>
<p begin="00:24:45.53" end="00:24:48.68">lately anyways and i detect that very quickly</p>
<p begin="00:24:49.26" end="00:24:54.40">and the integration tasks this is something that i think is really need to which</p>
<p begin="00:24:54.40" end="00:24:59.57">is before the gnome release process each operand make czech kind of periodically</p>
<p begin="00:25:00.56" end="00:25:01.46">randomly</p>
<p begin="00:25:02.07" end="00:25:05.97">and then theoretically you ran make just check before release so in the know most</p>
<p begin="00:25:05.97" end="00:25:10.14">remodel i have all the tests almost all the tests that you run and make</p>
<p begin="00:25:10.14" end="00:25:14.26">czech installed in the system so i go to virtual machine and then i have</p>
<p begin="00:25:14.26" end="00:25:19.03">a little testing framework that runs all of the tests after nes change so it</p>
<p begin="00:25:19.03" end="00:25:24.02">change translation update an am show i will rerun all that you a test i</p>
<p begin="00:25:24.02" end="00:25:29.38">will remind all the clutter test because honestly have plenty of C P U power</p>
<p begin="00:25:29.38" end="00:25:30.05">and</p>
<p begin="00:25:30.65" end="00:25:32.80">why not i mean it actually i wanna have</p>
<p begin="00:25:33.29" end="00:25:37.58">you know a more interesting test scheduling type system but</p>
<p begin="00:25:39.16" end="00:25:43.30">the build server has thirty two cores sixty four gigs of ram in flies of</p>
<p begin="00:25:43.30" end="00:25:43.71">the stuff</p>
<p begin="00:25:50.44" end="00:25:54.19">so what that is occupied so my time for one hours race conditions on the</p>
<p begin="00:25:54.19" end="00:25:54.79">tests</p>
<p begin="00:25:56.12" end="00:25:59.64">do you live in particular has a lot of tests with race conditions and</p>
<p begin="00:26:00.96" end="00:26:01.64">that's</p>
<p begin="00:26:02.06" end="00:26:04.91">some of those a bit hard to track but fortunately most of them are just</p>
<p begin="00:26:04.91" end="00:26:06.95">bought some the tests and not actual core code</p>
<p begin="00:26:07.52" end="00:26:12.76">but i didn't i did find one conceptual issue and you live from tracking down</p>
<p begin="00:26:12.76" end="00:26:13.08">these</p>
<p begin="00:26:13.61" end="00:26:18.44">but for the most part most the test did work already because the developers we're</p>
<p begin="00:26:18.44" end="00:26:21.47">running just not relied continuously</p>
<p begin="00:26:21.89" end="00:26:23.02">so just very different</p>
<p begin="00:26:24.56" end="00:26:28.68">so some things that i'd love to do with the system kinda have</p>
<p begin="00:26:30.79" end="00:26:31.94">twenty minutes okay</p>
<p begin="00:26:32.51" end="00:26:34.45">okay cool so</p>
<p begin="00:26:34.94" end="00:26:39.53">open sousa has this really well they have a this thing called open here which</p>
<p begin="00:26:39.53" end="00:26:43.27">has some really cool features and some kind of weaker features but they have a</p>
<p begin="00:26:43.27" end="00:26:48.04">really nice but you and i love to have something like that another feature that</p>
<p begin="00:26:48.04" end="00:26:52.56">i wanna add is mostly has try server so i wanna have does</p>
<p begin="00:26:53.23" end="00:26:57.58">does this patch break known as a service basically where</p>
<p begin="00:26:59.17" end="00:27:02.67">i mean there's no reason i couldn't just start building inbound patches and bugs a</p>
<p begin="00:27:02.67" end="00:27:06.29">lot and testing on so you know one an optional developers can upload</p>
<p begin="00:27:06.89" end="00:27:07.69">but</p>
<p begin="00:27:07.99" end="00:27:11.55">bunch of patches and i just take those do a smoke test that sort of</p>
<p begin="00:27:11.55" end="00:27:17.30">thing would honestly be pretty fast is just the tricky part is sharing stuff between</p>
<p begin="00:27:17.30" end="00:27:21.14">the different builds like the get all the get repositories are out four gigabytes and</p>
<p begin="00:27:21.14" end="00:27:24.66">i don't wanna read clone them for each bill but making sure like and linking</p>
<p begin="00:27:24.66" end="00:27:27.66">currency is just what's kind of starting a little bit from this</p>
<p begin="00:27:29.99" end="00:27:33.71">and i would love to get into like software engineering stuff and one thing that</p>
<p begin="00:27:33.71" end="00:27:37.83">i've always wanted as you know just a graph of how much memory were using</p>
<p begin="00:27:37.83" end="00:27:41.71">on the default login how much memory using one epiphany is and wikipedia i mean</p>
<p begin="00:27:41.71" end="00:27:42.04">just</p>
<p begin="00:27:42.59" end="00:27:47.97">also the data there's no reason i can gather this the virtual machine aspect does</p>
<p begin="00:27:47.97" end="00:27:51.37">the limit kind of the type of performance metrics that i can get like i</p>
<p begin="00:27:51.37" end="00:27:55.45">can really get approach are because there's all this P N I or activity in</p>
<p begin="00:27:55.45" end="00:27:59.79">the build server and it would just be too noisy you really need a nice</p>
<p begin="00:27:59.79" end="00:28:01.51">dedicated harbour lab</p>
<p begin="00:28:05.19" end="00:28:05.79">probably</p>
<p begin="00:28:13.45" end="00:28:15.32">that's true</p>
<p begin="00:28:15.88" end="00:28:16.73">i think</p>
<p begin="00:28:18.80" end="00:28:21.99">i mean there's so many different ways to do it i don't know if you</p>
<p begin="00:28:21.99" end="00:28:24.95">knew has the hoax i would need for this i mean that would be a</p>
<p begin="00:28:24.95" end="00:28:29.16">pretty reliable way to do it i installing agents in the guest is obviously one</p>
<p begin="00:28:29.16" end="00:28:31.02">way together a lot of stuff but us</p>
<p begin="00:28:31.45" end="00:28:36.94">then of course you have the heisenberg effect where you you're affecting what you're measuring</p>
<p begin="00:28:36.94" end="00:28:39.10">right like your agent is using memory your agent</p>
<p begin="00:28:39.66" end="00:28:40.50">so</p>
<p begin="00:28:42.12" end="00:28:46.96">i would love to have automated bisection on the build server so you know right</p>
<p begin="00:28:46.96" end="00:28:51.46">now is if the smoke test fails i basically just run get log and</p>
<p begin="00:28:52.03" end="00:28:53.86">you know it's usually pretty obvious</p>
<p begin="00:28:54.15" end="00:28:59.07">who broke it and why but a lot of times it's not actually and just</p>
<p begin="00:28:59.07" end="00:29:02.46">like a try server there's no reason i couldn't just allocate a builder and say</p>
<p begin="00:29:02.46" end="00:29:07.03">okay i have this regression range well the know most remodel it's of course over</p>
<p begin="00:29:07.03" end="00:29:08.60">two hundred get repositories so</p>
<p begin="00:29:09.27" end="00:29:14.49">handling the multi repository thing with bisection is an interesting problem but again there's no</p>
<p begin="00:29:14.49" end="00:29:16.93">reason i couldn't do it just haven't gotten around to it</p>
<p begin="00:29:17.82" end="00:29:20.71">another cool thing is a little bit more blues guys just a sort of live</p>
<p begin="00:29:20.71" end="00:29:25.77">collaboration setup where the developers actually running get pushed to a branch and we instantly</p>
<p begin="00:29:25.77" end="00:29:29.35">build it so you have a some work and am shell and it designer and</p>
<p begin="00:29:29.35" end="00:29:32.83">that you know develop design i want to see the developers doing there's no reason</p>
<p begin="00:29:32.83" end="00:29:35.93">i can just okay to server that just sort of tried to do that as</p>
<p begin="00:29:35.93" end="00:29:38.90">fast as possible let them almost live collaborate</p>
<p begin="00:29:41.08" end="00:29:41.89">so that's</p>
<p begin="00:29:42.27" end="00:29:47.08">that is not shows the system but i have a lot to talk about where</p>
<p begin="00:29:47.08" end="00:29:51.06">i see the high level future the system so</p>
<p begin="00:29:52.47" end="00:29:53.43">obviously</p>
<p begin="00:29:54.23" end="00:29:59.16">okay i guess i didn't mention this but there is no application installation mechanism in</p>
<p begin="00:29:59.16" end="00:30:03.67">the system yet because it's a hard problem it's</p>
<p begin="00:30:03.95" end="00:30:07.41">very hard problem and there's a lot of prior are in that sort of stuff</p>
<p begin="00:30:07.41" end="00:30:11.82">there's like most all or have re pronounce it there's a bunch is click packaging</p>
<p begin="00:30:12.72" end="00:30:17.14">is all package on the stuff around and they have different tradeoffs parts</p>
<p begin="00:30:17.69" end="00:30:19.49">the thing that the thing that</p>
<p begin="00:30:20.39" end="00:30:25.73">is very important in this discussion i think is to draw a very strong line</p>
<p begin="00:30:26.15" end="00:30:32.44">it's very strong distinction between free software applications proprietary ones because i think that demand</p>
<p begin="00:30:33.08" end="00:30:34.72">there's some commonality there but</p>
<p begin="00:30:36.37" end="00:30:41.55">i don't understand why so many people in free software have this obsession with generating</p>
<p begin="00:30:41.55" end="00:30:45.98">binaries in caching i mean the most important thing if you're talking about free software</p>
<p begin="00:30:46.37" end="00:30:51.83">is the source right and who's committing to that and why and not this package</p>
<p begin="00:30:51.83" end="00:30:57.42">stuff so for free software applications i'd really like to emphasise that sort of stuff</p>
<p begin="00:30:57.42" end="00:31:02.63">like who's writing this out you know let you let you run the latest version</p>
<p begin="00:31:02.63" end="00:31:06.48">help you contribute to it that sort of thing</p>
<p begin="00:31:08.27" end="00:31:10.14">there is the aspect where</p>
<p begin="00:31:10.78" end="00:31:15.96">it is important to say who built it because you do yes you obviously have</p>
<p begin="00:31:15.96" end="00:31:20.00">to generate binaries to run it but it's still important to say who built it</p>
<p begin="00:31:20.00" end="00:31:24.57">so for example if you know if we have a system for applications we're doing</p>
<p begin="00:31:24.57" end="00:31:31.04">continuous innovation and fifteen outputting zip files or something who knows doesn't matter it's still</p>
<p begin="00:31:31.04" end="00:31:35.64">important say build by know because you have to trust the builder</p>
<p begin="00:31:36.18" end="00:31:40.84">and so i think i think the aspect of the intermediary is still important</p>
<p begin="00:31:42.78" end="00:31:46.75">again i would love to do continuous integration for the applications i sort of paved</p>
<p begin="00:31:46.75" end="00:31:52.03">and added some core apps to the manifest so you know obviously epiphany is in</p>
<p begin="00:31:52.03" end="00:31:55.42">their gnome terminal the system would be completely useless without it</p>
<p begin="00:31:56.73" end="00:31:57.83">and those are kind of</p>
<p begin="00:31:58.36" end="00:32:02.06">those are available but the really tried you wanna get to is where you can</p>
<p begin="00:32:02.06" end="00:32:03.92">remove the web browser from the operating system</p>
<p begin="00:32:04.49" end="00:32:10.07">apparently that's important and just you know peer review i mean this is the same</p>
<p begin="00:32:10.07" end="00:32:13.83">thing i'd like to see for more for the core operating system is just emphasising</p>
<p begin="00:32:13.83" end="00:32:15.75">the peer aspect of free software</p>
<p begin="00:32:17.79" end="00:32:20.35">you know again who who's doing this and why</p>
<p begin="00:32:22.33" end="00:32:24.24">okay</p>
<p begin="00:32:25.29" end="00:32:30.98">so obviously this is gonna kind of controversial topic throughout norman it really gets to</p>
<p begin="00:32:30.98" end="00:32:35.20">the heart of the distinction between what an operating system is and what it distribution</p>
<p begin="00:32:35.20" end="00:32:37.91">is and that sort of thing which is</p>
<p begin="00:32:38.57" end="00:32:44.18">where do you draw the line for what lives where right what might applications have</p>
<p begin="00:32:44.18" end="00:32:44.78">to bundle</p>
<p begin="00:32:45.24" end="00:32:49.23">so stuff like the backchannel to i'm not a big fan of the back small</p>
<p begin="00:32:49.23" end="00:32:54.33">to i really wish that it'd been but you will nice to a library before</p>
<p begin="00:32:54.33" end="00:32:54.99">so i</p>
<p begin="00:32:56.51" end="00:33:01.62">i you know do we except that is barbora base platform and it's ugly api</p>
<p begin="00:33:01.62" end="00:33:06.15">i don't know stuff like hire O obviously we made the decision</p>
<p begin="00:33:06.84" end="00:33:11.44">this is par the platform it's part of G T K spell checking is pretty</p>
<p begin="00:33:11.44" end="00:33:17.08">much perfect example of something where well we have some libraries out there may not</p>
<p begin="00:33:17.08" end="00:33:17.68">be great</p>
<p begin="00:33:18.93" end="00:33:21.57">whether i could should with the base system or not i don't know</p>
<p begin="00:33:23.73" end="00:33:26.86">and of course even if we're just talking about court know how long do we</p>
<p begin="00:33:26.86" end="00:33:30.56">should you take a to do we encourage do we allow</p>
<p begin="00:33:31.38" end="00:33:37.37">allows only should application developers still target in some circumstances and of course we're talking</p>
<p begin="00:33:37.37" end="00:33:41.20">to do you for enterprise and how long would we should G T K three</p>
<p begin="00:33:42.69" end="00:33:46.82">well so the way i define operating system is something your application will run on</p>
<p begin="00:33:46.82" end="00:33:47.52">for ever</p>
<p begin="00:33:47.93" end="00:33:48.98">and this</p>
<p begin="00:33:49.33" end="00:33:53.69">if we remove stuff then we're not really an operating system anymore kind of moving</p>
<p begin="00:33:53.69" end="00:33:59.07">back towards a distribution model so i don't have answers to these questions</p>
<p begin="00:34:00.92" end="00:34:04.74">a sort of punch on it and said okay well i'm just going to</p>
<p begin="00:34:05.90" end="00:34:10.01">to you know to make an operating system we need to have basic quality assurance</p>
<p begin="00:34:10.01" end="00:34:14.45">and so that's what i've been working on for a while like just fixing race</p>
<p begin="00:34:14.45" end="00:34:19.65">conditions and the G let us and make sure making sure that worshipping platform the</p>
<p begin="00:34:19.65" end="00:34:22.06">can be used to build applications and how all that works</p>
<p begin="00:34:22.71" end="00:34:26.47">so a lot of questions and so there this</p>
<p begin="00:34:26.86" end="00:34:32.35">so i think proprietary out the needs a proprietary applications are totally different</p>
<p begin="00:34:33.83" end="00:34:34.86">and</p>
<p begin="00:34:36.06" end="00:34:36.90">i mean</p>
<p begin="00:34:37.40" end="00:34:39.07">for one thing they</p>
<p begin="00:34:39.60" end="00:34:43.17">their time to an architecture usually if we're talking about me to binaries and all</p>
<p begin="00:34:43.17" end="00:34:45.70">of a sudden you're kind of in the windows world where you have</p>
<p begin="00:34:46.27" end="00:34:49.86">applications that were targeting X eighty six and then if we wanna move to new</p>
<p begin="00:34:49.86" end="00:34:51.45">hardware platform we can do it</p>
<p begin="00:34:53.14" end="00:34:56.45">i think that sort of thing are few icgs can just sort of deal with</p>
<p begin="00:34:56.45" end="00:35:02.42">it so i'm not too focused again on the proprietary applications basically what i want</p>
<p begin="00:35:03.26" end="00:35:06.46">i think it's important to enable people to run proprietary software</p>
<p begin="00:35:07.11" end="00:35:10.22">if but not encourage necessarily and so</p>
<p begin="00:35:10.72" end="00:35:15.59">i'd i'm gonna focus my time and just the core free software gnome applications because</p>
<p begin="00:35:15.59" end="00:35:18.12">that's again why i'm here from again that's all</p>
<p begin="00:35:20.14" end="00:35:22.80">so this is something that i was actually hacking on the plane</p>
<p begin="00:35:24.37" end="00:35:28.93">and which is basically just system D for the user session this is kind of</p>
<p begin="00:35:28.93" end="00:35:32.23">just a for corporate system feature but</p>
<p begin="00:35:33.45" end="00:35:37.85">using this we can actually this would be something that would help enable running proprietary</p>
<p begin="00:35:37.85" end="00:35:38.98">applications because</p>
<p begin="00:35:39.43" end="00:35:43.45">for that use we sort of to spend boxing take mechanism and how that would</p>
<p begin="00:35:43.45" end="00:35:44.16">work</p>
<p begin="00:35:45.54" end="00:35:46.56">is pretty interesting</p>
<p begin="00:35:47.82" end="00:35:50.60">a long time ago i helps port S U X to daddy and so i</p>
<p begin="00:35:50.60" end="00:35:54.56">have a fair amount of expertise in that and i think it makes sense to</p>
<p begin="00:35:54.56" end="00:35:58.87">use the ceilings for part of it but the portals work is sort of essential</p>
<p begin="00:35:58.87" end="00:36:04.15">for user interaction pieces so you have a sort of unchanging applications must never do</p>
<p begin="00:36:04.15" end="00:36:11.10">this type layer and then sort of maybe more enjoyed or i was like dynamic</p>
<p begin="00:36:11.10" end="00:36:14.29">application asks to do this type of model and that's portals</p>
<p begin="00:36:15.62" end="00:36:19.63">but i want to do this we really need system the in the session because</p>
<p begin="00:36:19.63" end="00:36:26.32">it enables grouping binaries for an application like right now one things this sort of</p>
<p begin="00:36:26.32" end="00:36:30.90">core part of the known three model was it's application focus and the way we</p>
<p begin="00:36:30.90" end="00:36:31.68">match</p>
<p begin="00:36:32.29" end="00:36:38.10">the X window created by nap to the process is actually just really horrible and</p>
<p begin="00:36:38.10" end="00:36:42.19">like to move away from it so getting applications inside to see group we just</p>
<p begin="00:36:42.19" end="00:36:44.74">P a fundamental enabler for moving towards this</p>
<p begin="00:36:45.22" end="00:36:46.89">O S application split</p>
<p begin="00:36:47.69" end="00:36:52.75">i love to unify the idea operating system extensions of stuff like proprietary and video</p>
<p begin="00:36:52.75" end="00:36:56.28">drivers what i think i was and always extension the package model socks for this</p>
<p begin="00:36:56.28" end="00:37:00.32">because obviously what you really want is you want to have your system and then</p>
<p begin="00:37:00.32" end="00:37:04.33">you say okay i'm gonna stalin be a driver and ineffectively rebates whereas right now</p>
<p begin="00:37:04.33" end="00:37:08.84">the package manager will say okay well this package needs this and what you upgrade</p>
<p begin="00:37:08.84" end="00:37:14.28">when with really important is to enable someone say upgrade the base toss up in</p>
<p begin="00:37:14.28" end="00:37:19.35">video driver try nouveau does the new version working not have the package manager you</p>
<p begin="00:37:19.35" end="00:37:23.30">know complaining over here so that's a know it's extension fonts that sort of stuff</p>
<p begin="00:37:23.30" end="00:37:29.11">are you can plug ins or was extensions and unified those with than so extensions</p>
<p begin="00:37:31.48" end="00:37:33.33">so in conclusion</p>
<p begin="00:37:33.67" end="00:37:37.23">core qualities important free software is very important to me but</p>
<p begin="00:37:37.75" end="00:37:41.89">quality is basically job one if we don't do that</p>
<p begin="00:37:42.87" end="00:37:44.55">it's not really doing anything</p>
<p begin="00:37:46.07" end="00:37:50.34">my provide same application framework and i there is the science just the</p>
<p begin="00:37:51.79" end="00:37:56.13">the core how her they distributed just making it easy to</p>
<p begin="00:37:58.21" end="00:38:02.25">getting exposed to the auto tools really rough for a lot of application developers and</p>
<p begin="00:38:02.25" end="00:38:07.88">so i was still allow people a package thing so concretely applications just still have</p>
<p begin="00:38:07.88" end="00:38:11.69">a make install type stage i think but it's</p>
<p begin="00:38:12.13" end="00:38:15.34">the build systems really do need to of all to the point where</p>
<p begin="00:38:16.04" end="00:38:22.25">it is possible and easy to read an application without being exposed to all those</p>
<p begin="00:38:22.25" end="00:38:22.76">words</p>
<p begin="00:38:23.28" end="00:38:29.27">and of course absolutely essential to this is just maintaining our links with the various</p>
<p begin="00:38:29.27" end="00:38:34.16">downstream projects like that in reference links i mean all that stuff that was in</p>
<p begin="00:38:34.16" end="00:38:39.11">the beginning but i have again tried to focus this is</p>
<p begin="00:38:39.48" end="00:38:43.17">it's not i'm not trying to be daddy and so it's just focusing on a</p>
<p begin="00:38:43.17" end="00:38:45.41">quality so making sure that's good</p>
<p begin="00:38:45.87" end="00:38:47.72">and then feeding changes elsewhere</p>
<p begin="00:38:49.52" end="00:38:53.18">and then if you wanna know more about the project these are some knowing less</p>
<p begin="00:38:54.73" end="00:38:58.91">and i'm usually available on our see any colours should be a male</p>
<p begin="00:38:59.55" end="00:39:01.41">so that's it</p>
<p begin="00:39:02.10" end="00:39:04.87">i know i kind of blew through this but there any questions</p>
<p begin="00:39:16.79" end="00:39:17.37">okay</p>
<p begin="00:39:19.56" end="00:39:25.13">sure so the question was about don't reproduce ability so particularly like are the binaries</p>
<p begin="00:39:25.13" end="00:39:26.23">identical that so</p>
<p begin="00:39:32.50" end="00:39:37.63">okay so all the binary stolen use repository i didn't really answer this question is</p>
<p begin="00:39:37.63" end="00:39:41.80">probably to talk about what this other project nix O S does this one ones</p>
<p begin="00:39:41.80" end="00:39:46.34">i was looking at one as do research for this project so next does checksums</p>
<p begin="00:39:46.34" end="00:39:50.41">to but they do they check some all the input to a bill so for</p>
<p begin="00:39:50.41" end="00:39:55.09">example if an environment variable changes that outputs a different checksum obviously and they're obsessed</p>
<p begin="00:39:55.09" end="00:39:58.47">at the stuff but there's a lot of things that sabotage that like python P</p>
<p begin="00:39:58.47" end="00:40:03.11">Y C files have the timestamp of the file the referencing which is useful useless</p>
<p begin="00:40:03.11" end="00:40:08.39">my system it hasn't been in important because i've money a disk space</p>
<p begin="00:40:09.50" end="00:40:09.97">so</p>
<p begin="00:40:14.65" end="00:40:21.52">so okay sorry i see we're more as you know story each generated tree is</p>
<p begin="00:40:21.52" end="00:40:28.23">the manifest a actually what i call results manifest so if you remember back is</p>
<p begin="00:40:28.23" end="00:40:28.88">this</p>
<p begin="00:40:29.62" end="00:40:34.74">back here so the result manifest is like the hard but be part of buzz</p>
<p begin="00:40:34.74" end="00:40:39.80">example word has the exactly provisions of the get repository that we used to build</p>
<p begin="00:40:39.80" end="00:40:46.46">the street that doesn't necessarily make it reproduceable exactly because i'm not putting in the</p>
<p begin="00:40:46.46" end="00:40:51.65">manifest what the host whole system uses open embedded is a cross compiler crossed environment</p>
<p begin="00:40:51.65" end="00:40:55.92">so i start format having for enterprise linux for which is what spinner that number</p>
<p begin="00:40:55.92" end="00:40:59.58">are runs and then across builds G C from that so if you want to</p>
<p begin="00:40:59.58" end="00:41:05.06">fully reproducible build i'd probably have to put in the manifest built from whatever and</p>
<p begin="00:41:05.06" end="00:41:06.20">that's something i can improve</p>
<p begin="00:41:07.61" end="00:41:08.89">and back on</p>
<p begin="00:41:11.50" end="00:41:11.85">okay</p>
<p begin="00:41:17.93" end="00:41:20.01">i still i could be loud enough</p>
<p begin="00:41:21.27" end="00:41:25.77">so you say you're not rebuilding like when you rebuild you decay you don't rebuild</p>
<p begin="00:41:25.77" end="00:41:26.02">web</p>
<p begin="00:41:26.73" end="00:41:30.87">right exact you have like a stuff throw weight might be considered of probably method</p>
<p begin="00:41:30.87" end="00:41:34.45">of doing that of saying you know i'm not going to keep that will result</p>
<p begin="00:41:34.45" end="00:41:38.36">from this but i would like now that i know that i changed you live</p>
<p begin="00:41:38.36" end="00:41:42.23">and we run integration tests later but that only it says</p>
<p begin="00:41:42.57" end="00:41:45.18">whether the binaries you produce this point i'm work against</p>
<p begin="00:41:45.80" end="00:41:48.81">the current that you would you have installed not whether they will have and we</p>
<p begin="00:41:48.81" end="00:41:53.50">build a that's right and i have had problems with that like a completely right</p>
<p begin="00:41:53.50" end="00:41:57.53">now so name under a little annoying like when cargo bonsai name i have to</p>
<p begin="00:41:57.53" end="00:42:01.00">force a rebuild of things and so the way that works is at the bottom</p>
<p begin="00:42:01.00" end="00:42:04.36">i just have this thing i call bill that thought so if i updated version</p>
<p begin="00:42:04.36" end="00:42:09.67">and i say nine type and say gee the G T K three here that</p>
<p begin="00:42:09.67" end="00:42:13.47">will just force to rebuild of those things a build server will just to me</p>
<p begin="00:42:13.47" end="00:42:14.16">it's catches</p>
<p begin="00:42:15.00" end="00:42:19.13">and i do that well as you can see twenty times in the last six</p>
<p begin="00:42:19.13" end="00:42:23.91">months which that's pretty reasonable to be perfectly honest it's worked well</p>
<p begin="00:42:24.95" end="00:42:25.62">okay</p>
<p begin="00:42:29.26" end="00:42:34.87">how do you put and it's also am doing maybe analysis of the point is</p>
<p begin="00:42:34.87" end="00:42:36.94">to make sure that we're not we can maybe a</p>
<p begin="00:42:37.61" end="00:42:38.86">for sure</p>
<p begin="00:42:40.41" end="00:42:44.06">it's kind of helps a lot the integration test phase helps a lot so the</p>
<p begin="00:42:44.06" end="00:42:47.93">in the i am to you will broke well right now we would need though</p>
<p begin="00:42:47.93" end="00:42:52.27">we would run binaries that you live itself bill but if</p>
<p begin="00:42:52.60" end="00:42:55.93">for example i would know if you live broke in the and weighted probe G</p>
<p begin="00:42:55.93" end="00:42:56.37">T K</p>
<p begin="00:42:56.99" end="00:43:01.24">as long as they didn't both get rebuild and but as far as more stack</p>
<p begin="00:43:01.24" end="00:43:05.66">analysis type stuff like i do your thinking me like upstream tracker dot org or</p>
<p begin="00:43:05.66" end="00:43:11.38">whatever it like they have some or and it this beta the less expose and</p>
<p begin="00:43:11.38" end="00:43:13.65">you pick a tent it's a be a</p>
<p begin="00:43:14.25" end="00:43:15.50">being able to not this</p>
<p begin="00:43:15.83" end="00:43:16.34">okay</p>
<p begin="00:43:17.28" end="00:43:24.37">i mean even if a test or something but we criminalise between editions actually idea</p>
<p begin="00:43:24.37" end="00:43:30.51">of a big difference their previous symbol question two signatures like right well course</p>
<p begin="00:43:30.82" end="00:43:35.42">the libraries themselves do have maybe i mean do you live has a list of</p>
<p begin="00:43:35.42" end="00:43:39.81">export it simple so it's very difficult to break you pi thereby</p>
<p begin="00:43:40.24" end="00:43:43.31">i mean it's a question of what we do with the data like i could</p>
<p begin="00:43:43.31" end="00:43:46.09">generate that it but what do we do with that you know do i try</p>
<p begin="00:43:46.09" end="00:43:49.89">to go back to you know daniel and say okay you about you probably decimal</p>
<p begin="00:43:49.89" end="00:43:53.68">to maybe i don't probably be very useful for bias</p>
<p begin="00:43:53.94" end="00:43:55.29">i don't know i just haven't</p>
<p begin="00:43:55.69" end="00:43:57.71">i it hasn't come up i guess they</p>
<p begin="00:43:58.89" end="00:44:02.85">so that when you know just them so just when this question and then you</p>
<p begin="00:44:02.85" end="00:44:05.03">can go and that's your questions if you to quit here</p>
<p begin="00:44:06.70" end="00:44:11.16">i can build a what's my question which is weeks scroll i will be break</p>
<p begin="00:44:11.16" end="00:44:11.63">something</p>
<p begin="00:44:12.05" end="00:44:16.65">so see you at the moment opinion of ceasing you bring can exploit so on</p>
<p begin="00:44:16.65" end="00:44:17.48">a scale</p>
<p begin="00:44:18.01" end="00:44:18.68">right</p>
<p begin="00:44:20.19" end="00:44:23.55">i don't know i mean it can obviously big claw everything jasper watch is the</p>
<p begin="00:44:23.55" end="00:44:28.35">output to and you know he looks at would make sense to say it sent</p>
<p begin="00:44:28.35" end="00:44:29.48">me email</p>
<p begin="00:44:30.48" end="00:44:31.88">i could well</p>
<p begin="00:44:32.31" end="00:44:36.56">i think that was potentially come out of automated bisection because the thing is things</p>
<p begin="00:44:36.56" end="00:44:41.29">can break for reasons that are not careful that happens pretty often like system he</p>
<p begin="00:44:41.29" end="00:44:47.30">has a very complex build system and tool chain bugs sometimes just bite and</p>
<p begin="00:44:47.86" end="00:44:52.35">you know is it a tool chain issue "'cause" they use some F function sections</p>
<p begin="00:44:52.35" end="00:44:56.18">but it doesn't matter but basically it's not always there for the be like you</p>
<p begin="00:44:56.18" end="00:45:00.79">need a human site actually a stipulation i mean</p>
<p begin="00:45:01.59" end="00:45:05.40">but i certainly could harvest email addresses from the get repositories and</p>
<p begin="00:45:06.23" end="00:45:12.65">i mean broken that it doesn't usually break that off one email that i maybe</p>
<p begin="00:45:12.65" end="00:45:16.98">it's well it's funny like some days things just break left and right and other</p>
<p begin="00:45:16.98" end="00:45:20.91">times it'll go three days and i just don't even touch it and just finally</p>
<p begin="00:45:23.78" end="00:45:25.84">right i think that's it right thank you all for coming</p>
</div>
</body>
</tt>