<?xml version="1.0" encoding="utf-8"?>
<data>
<r t="9.93">alright so</r>
<r t="12.12">i'll just get started and what people you felling in if you come so i'm</r>
<r t="17.38">gonna be talking about this project called know mostly it's sort of an awkward name</r>
<r t="21.44">but donna names not too important</r>
<r t="26.09">before i get started here though before talk about what i think it's really important</r>
<r t="30.86">to talk about why am here why i care about what i do and the</r>
<r t="39.04">most important thing that really drives me is free software very passionate about it and</r>
<r t="46.66">i just think it's</r>
<r t="47.88">it's always been important sense ever since</r>
<r t="51.09">which is a men road</r>
<r t="53.11">started the G P L and before that secondarily i just have a lot of</r>
<r t="58.32">fun working in this community and</r>
<r t="60.74">you know hang out with other people in interacting with before the world it's also</r>
<r t="65.2">but fourthly right having a prize linux is very important to me and know was</r>
<r t="70.93">a very important component of that had enterprise linux</r>
<r t="74.89">and so when i ship</r>
<r t="77.48">this product to our enterprise customers i wanna know that known is providing red hat</r>
<r t="82.5">enterprise linux with high quality software</r>
<r t="84.9">so all these things are important all these things drive me</r>
<r t="91.37">so secondarily though it's important is to like restate or assumptions briefly why assume here</r>
<r t="96.2">well this is all from the website obviously the free software the software freedom part</r>
<r t="101.67">is in common with michael's the other ones are important</r>
<r t="106.5">but i wanna dive into this connected aspect "'cause" i think that's really interesting part</r>
<r t="113.44">it's probably the most interesting to me so this is sort of the way i</r>
<r t="117.25">the way i think of it is gnome is in ecosystem and we have our</r>
<r t="122.06">centres of gravity i'll talk about those and then obviously we interact with all different</r>
<r t="127.27">kinds of other ecosystems so greater or lesser degree looking at this list</r>
<r t="133.67">you know obviously we share a lot with the canoe project tries in is there</r>
<r t="139.35">an use this on components right enterprise linux very important to me obviously uses a</r>
<r t="145.08">lot of know and there is there's</r>
<r t="149.46">the programming languages icons for roles monos</r>
<r t="154.07">and other ones like open in embedded which in turn are linked other ecosystems you</r>
<r t="159.25">know open about is going to wind river and all these other embedded devices and</r>
<r t="163.3">stuff like that</r>
<r t="164.68">so</r>
<r t="166.83">it's important is sort of just visualise</r>
<r t="169.49">there's all these ecosystems around the gnome is there around the centre grab these that's</r>
<r t="174.02">the way i think of it</r>
<r t="177.7">so</r>
<r t="179.69">with that background what a minute talk about is just to build system</r>
<r t="183.68">but i'm really excited about it which you guys made notice if you see it</r>
<r t="189.12">online</r>
<r t="190.43">because i just kind of always wanted to send it's the in so successful now</r>
<r t="196.95">so</r>
<r t="198.28">my goal with this bill system is to focus on owns core or centres of</r>
<r t="203.98">gravity and</r>
<r t="206.84">not exclude other things but just make sure that we're doing well what is important</r>
<r t="213.19">to us and all talk about that and the continuous aspect so it is building</r>
<r t="220.89">but it's also testing continuously and i'm i could talk for the rest of this</r>
<r t="225.65">whole session about continuous integration why it's so important but i'm just gonna gloss over</r>
<r t="230.13">that</r>
<r t="231.84">so</r>
<r t="233.26">it's testing</r>
<r t="235.12">a lot of get repositories a lot of the what makes up cornell so kind</r>
<r t="240.1">of when i started this project i start from this is sort of minimal system</r>
<r t="244.17">and build up</r>
<r t="245.51">from scratch and so i got to know him shell like i wanted to just</r>
<r t="248.56">minimise interactions with other things so we can again focus on our core aspects so</r>
<r t="253.91">striking a lot of get repositories for example all hundred and some X or get</r>
<r t="259.52">repositories most of which are basically just the protocols and never change but</r>
<r t="265.48">and of course all the know network the think that are important network manager system</r>
<r t="269.41">do i wanna make sure that known works well with the latest system so tracking</r>
<r t="274.41">system do you get master very important</r>
<r t="277.56">the basis done this is sort of stuff like that i just don't care about</r>
<r t="281.13">like for example an S P R and S open ssl those all come from</r>
<r t="285.07">of an embedded and basically are ran make some binaries popped out if you're to</r>
<r t="288.97">work that's about the level of Q A that i gave to the</r>
<r t="294.5">also crucial is that i have</r>
<r t="297.37">a sort of course focus with this minutes only targeting virtual eyes environments because</r>
<r t="302.51">there's many reasons for this one is that doing testing fertilisation is whole much easier</r>
<r t="307.81">than trying to have like a test lab wired to physical hardware that's a whole</r>
<r t="311.71">other level of management personalisation it's really easy i can script using you make it</r>
<r t="317">do a dance when i wanted to it's great and of course</r>
<r t="322.05">there's other aspects of this like there's no security updates because you basically need people</r>
<r t="327.37">there employed and obviously my employer does this</r>
<r t="331.35">i'm not trying to compete with them obviously so these are that's sort of high</r>
<r t="337.31">level summary of what this project is and kind of hopefully just is important what</r>
<r t="342.93">it is not</r>
<r t="345.19">so the core values of known as i see them obviously we have the G</r>
<r t="349.45">T K stacked you live is very important to me because i think it</r>
<r t="355.28">it's a fundamental pieces for writing modern applications it has the event do it has</r>
<r t="361.61">a file system abstraction a bunch of stuff that really is a core part of</r>
<r t="367">an operating system and i'd like to see it used more particular in red hat</r>
<r t="371.79">enterprise linux</r>
<r t="373.05">also in known we have accessibility internationalisation also part of our core values and he's</r>
<r t="380.68">the secondary list is kind of my list</r>
<r t="384.86">software engineering very important to me get the all the basics of doing continuous integration</r>
<r t="390.49">you know just are we leaking memory you know just</r>
<r t="393.75">again the basics and i'm trying to sort of push for</r>
<r t="398.34">split between the operating system applications and then always exceptions and i'll talk about this</r>
<r t="403.1">a bit more later but just to repeat again the goal the system is to</r>
<r t="408.34">focus on gnomes core values and feedback code continued a feedback as we have been</r>
<r t="413.45">doing for years back into these other you can systems</r>
<r t="417.08">so</r>
<r t="418.31">the non goals no enterprise features no packaging know enterprise features there's no you know</r>
<r t="425.21">if you want her breast for example that's not something that you know i'm gonna</r>
<r t="428.86">pass</r>
<r t="429.53">and a fast home again not something about it</r>
<r t="433.2">testing G T K G but</r>
<r t="438.32">so what has a system achieved well it's been online deployed in the known data</r>
<r t="445.03">centre since december ish and since then it's been building fairly reliably and very importantly</r>
<r t="453.57">without human intervention i'll talk a little bit about the details of how that works</r>
<r t="457.88">but a lot of times it's just building one off</r>
<r t="461.86">doing something else and it's just working fine</r>
<r t="464.79">but more importantly than the building it's been doing testing and all of talk a</r>
<r t="468.83">little bit about the details of that</r>
<r t="472.25">i have some numbers later so this is something that i'm most proud of is</r>
<r t="476.53">so but i'm from a get pushed or something like do you live in so</r>
<r t="480.62">when i'm booting a virtual machine is down to minutes now and</r>
<r t="486.99">it depending on the type of change</r>
<r t="490.92">like</r>
<r t="493.06">depending on the type of change i think i could get that down the second</r>
<r t="496.23">so that's always been michael</r>
<r t="498.57">it's totally possible the other thing that's really important to me and i talked about</r>
<r t="504.4">this last year a bit but</r>
<r t="507.2">the story for how upgrades works is just crucial for no and</r>
<r t="513.41">something i just find deeply embarrassing about the current red hat enterprise linux six which</r>
<r t="518.23">i run is that the upgrade system just doesn't know anything about the browser in</r>
<r t="522.28">just it's not safe to upgrade it like you know if you're if you lose</r>
<r t="525.9">power halfway so part of this project has actually been redesigning how it this work</r>
<r t="530.2">and so using it was three system upgrades actually fully atomic you can pull the</r>
<r t="534.85">power well they're running and it's just sort of crucial</r>
<r t="539.39">so even more interesting there's a lot of tests that right now so before developers</r>
<r t="543.84">kind of ran make check</r>
<r t="545.42">periodically manually now have automated test automated make checks of a lot of different models</r>
<r t="552.47">there's</r>
<r t="554.56">three hundred fifty test binaries which in turn because of G test are in turn</r>
<r t="559.47">out a lot depends how you measure but this takes a couple minutes all talk</r>
<r t="563.31">about that later another cool thing is that for a long time unknown would really</r>
<r t="568.06">test G D M that was kind of ray would run makes you will make</r>
<r t="572.28">install in his laptop but it's not something that fit the J job model right</r>
<r t="576.71">J scroll only affects your session and so sometimes G D M well it was</r>
<r t="581.74">kind of broken but now if G D M breaks all know in minutes ands</r>
<r t="586.5">that's been working like</r>
<r t="588.87">so i want talk a little bit about the always three system and how its</r>
<r t="593.28">kind of different from the packaging model because it's</r>
<r t="597.76">pretty it's pretty crucial to how the system works</r>
<r t="601.03">so i buster itself is just kind of like a user space filesystem enter and</r>
<r t="606.64">i like the term get for operating system binaries</r>
<r t="611.07">it's misleading in some ways but on the ways very accurate so what industry does</r>
<r t="616.02">is it manages to let you have let's you more parallel blue multiple operating so</r>
<r t="621.53">multiple versions of multiple operating systems</r>
<r t="624.64">without affecting the physical root directory of your operating system</r>
<r t="629.26">so</r>
<r t="630.82">it's like get in that it's a content address system so it naturally to duplicate</r>
<r t="634.73">so if you have multi same multiple versions of gnome installed they only use space</r>
<r t="640.78">a by proportion how many files are different</r>
<r t="644.67">so</r>
<r t="646.53">i'll talk a little bit more about that later to it's different though from a</r>
<r t="650.39">lot of image based appointed systems that happen prototype out there like red hat enterprise</r>
<r t="655.23">linux have this state was project for a while which was basically a kind of</r>
<r t="660.03">image of a system where you download new data to block level and you're at</r>
<r t="666.41">sea is N F S mounted or something like that all those trees different from</r>
<r t="669.65">that because it does operate at the same level as package mentors do but unlike</r>
<r t="675.26">package managers it just a done content replication system in this allows a lot of</r>
<r t="679.54">neat tricks i'm a show those the next slide but straight the way to think</r>
<r t="684.86">of is really am your image of packages are lots of little filesystems with some</r>
<r t="690.23">shell scripts that run as root attached in their upload in the internet and you</r>
<r t="693.01">assemble them on your client machine string model you replicate filesystems from a build server</r>
<r t="698.17">or you can generate them locally</r>
<r t="700.84">and it is filesystem independent so it does leverage some butterflies features mostly through G</r>
<r t="707.84">live you we automatically use the better fess i aukro for a copy and right</r>
<r t="713.47">type stuff but i think it's sort of important for general purpose system to work</r>
<r t="718.56">on top of plane yet see for and that's actually what i test on the</r>
<r t="721.82">most because fifty fours really fast</r>
<r t="726.29">so</r>
<r t="727.39">it does have a format for installing on your local system but it also has</r>
<r t="731.03">an archive format they can run on a web server and that's sort of how</r>
<r t="734.07">this the build system works as there is than almost resides the build system it</r>
<r t="738.87">commits to noticed repository and then you can download it directly from just a plain</r>
<r t="744.09">old apache</r>
<r t="747.03">so here's some tricks that i wanna make possible and i've been protecting this a</r>
<r t="751.1">little bit with laura is so i run redheaded present X six on this laptop</r>
<r t="756.63">because people favour subscriptions any bill fix it but it's obviously important from able need</r>
<r t="762.45">to be able to run known get master because i wanna be able to contribute</r>
<r t="765.74">to it and make sure that it still works for the next version so</r>
<r t="770.47">one the way i plan to have this work is all just have reading representing</r>
<r t="774.62">six am i root partition and all street just sort of installs inside that without</r>
<r t="779.28">disrupting it so i can have the know most re what's called build master just</r>
<r t="783.63">the thing is tracking to get repositories but you could also parallel install multiple versions</r>
<r t="788.46">of or a very easily</r>
<r t="790.43">the hard part about this is fixing or P M to not be the lowest</r>
<r t="795.54">level anymore so that's still in progress but i do have the point where you</r>
<r t="801.61">can have the base system and then to the newer one and test it working</r>
<r t="804.66">fine</r>
<r t="805.73">and when i say five hundred builds here that's really possible because it just comes</r>
<r t="810.95">down to how many files are different and between</r>
<r t="816.01">things just don't change that much and there aren't a lot of big binaries so</r>
<r t="820.24">you really can have five hundred builds installed in more interest a need or trick</r>
<r t="825.33">that you could do something like automated bisection which is where you know you have</r>
<r t="830.61">your starting point you say okay i get graphics corruption recently and sort of write</r>
<r t="836.96">a test binary that maybe just takes a screenshot what for the corruption and then</r>
<r t="840.09">just keep booting into all these bills and so you find the build it's broken</r>
<r t="844.32">and from there you can from the source code i really need poster trick in</r>
<r t="848.85">this is kind of part of how the cork you a system works as it</r>
<r t="851.56">can up update virtual machines while they're entirely offline</r>
<r t="856.08">and this works basically because it's a don filesystem replication and not like packages where</r>
<r t="862.38">you have these ritual scripts attached and what they do</r>
<r t="865.82">was she has none of that and so that's this is actually a very useful</r>
<r t="871">trick in general and like i mentioned before i'd like to see austria eventually slide</r>
<r t="876.11">underneath these package systems like D package in our P M and all that stuff</r>
<r t="880.16">where or she would give the parallel booting the atomic upgrades that sort of stuff</r>
<r t="887.24">to them</r>
<r t="889.02">so know much three is layered on top of austria and it's very simple there</r>
<r t="895.62">when i say there are no packages i mean i went through the entire system</r>
<r t="898.92">in eliminated the concept at every level as much as i could to try and</r>
<r t="903.03">gain reliability and sort of optimised for</r>
<r t="908.18">automation</r>
<r t="909.42">so than almost relay or has this thing called a manifest which is literally just</r>
<r t="914.9">a list of get repositories to build and work</r>
<r t="917.61">it's very simple and as a consequence of that simplicity it has turned out to</r>
<r t="923.15">be that has six months of and very reliable promote stories and so if we</r>
<r t="930.13">look at like example of what the manifest looks like well that's multi one that's</r>
<r t="934.79">the entirety of what would be a package in my model it's just it's just</r>
<r t="939.13">to get repository insert it'll to build in this order and that's it that just</r>
<r t="943.98">means track it master of lib X M L to</r>
<r t="946.54">and spend enough for quite a while</r>
<r t="948.68">the component about one i'll talk about this on the next slide but basically that</r>
<r t="953.53">means this is only for the developer image i can also choose any get revision</r>
<r t="958.69">to build it anytime unlikely package in our can none of this cares about version</r>
<r t="963.47">numbers at all so i can be tracking system to get master and say okay</r>
<r t="967.09">i can no longer log in and the current version which has happened so i</r>
<r t="970.22">say okay all just tag back to the previous revision builds done like within minutes</r>
<r t="975.78">it's completely on like the package systems because they have this deep obsession with version</r>
<r t="980.54">numbers that</r>
<r t="981.72">permeates every single layer so none of my system cares about version numbers all any</r>
<r t="986.41">get revision at anytime</r>
<r t="989.82">and is the spice example is just how configure options and patches work i originally</r>
<r t="997.33">was trying to only have get repositories and no patches just to force myself to</r>
<r t="1002.75">feed changes back but i sort it's too impractical so i ended up having a</r>
<r t="1007.66">couple patches</r>
<r t="1008.92">so this is something i think really illustrates just how different it was tree model</r>
<r t="1014.23">is from the package thing so on the build server now it's been doing continuous</r>
<r t="1018.27">integration since december right there is over six thousand complete filesystem trees like i haven't</r>
<r t="1025.02">lost any history right so</r>
<r t="1029.37">in the only occupies sixty gigabytes and this is sort of the power T duplication</r>
<r t="1034.3">so in theory again not only can you have five hundred bills locally you could</r>
<r t="1038.75">download in entire history of all the bills from the build server and</r>
<r t="1045.65">you know we'll get those all have links to their sources inside of them</r>
<r t="1050.67">so</r>
<r t="1052.32">i just give a lot of flexibility right you can have a sort of a</r>
<r t="1055.07">system and then add remove stuff we're supposed trees all about the files so the</r>
<r t="1060.01">way all history is sort of designed is that sort of having a bunch little</r>
<r t="1063.57">packages you have full complete systems that share space and i would you have multiple</r>
<r t="1068.74">versions of say what i call runtime tree but you have a basic runtime tree</r>
<r t="1073.25">enough to run out and then i have an image div L with all the</r>
<r t="1076.42">developer tools and these just naturally share storage so us three let's you switch between</r>
<r t="1082.76">atomic so i can i normally run the developer imagine my D Ms but you</r>
<r t="1088.65">know sometimes we've had boards where things because of obscure issues only work in the</r>
<r t="1093.05">developer image like a they in package world they needed deborah develop package installed i</r>
<r t="1097.97">can easily just switch back to the runtime tree which effectively hides all the developer</r>
<r t="1102.33">tools so</r>
<r t="1103.91">parallel installing multiple file systems and then besides all the for variance is actually three</r>
<r t="1108.91">it's a the build system outputs a pipeline so is what i call build master</r>
<r t="1112.49">which is all these get ready all these get repositories get bill integrating the build</r>
<r t="1116.61">master all that happens there is there just build a just take the latest get</r>
<r t="1121.07">run make install duster and it's in the tree you can download that that's very</r>
<r t="1124.84">useful obviously but</r>
<r t="1126.48">i don't expect many humans to want to run that directly so there's a secondary</r>
<r t="1130.24">stage which does what i call smoke test and this just updated disk image puts</r>
<r t="1135.38">it union does this appear to let you log if it does that gets attacked</r>
<r t="1139.9">just like get repositories get tagged</r>
<r t="1142.49">and there's a secondary stage which is integrated is that after all the make czech</r>
<r t="1147.43">and stuff like that works but</r>
<r t="1149.81">the way i sort of vision this is there's a like a long pipeline you</r>
<r t="1154.6">can imagine of the very top we have build master and then something like red</r>
<r t="1157.68">hat enterprise linux is like way a down there but it is a sort of</r>
<r t="1161.85">long pipeline of extended increasingly extensive testing</r>
<r t="1166.24">but it still really important to be able to run the build master because sometimes</r>
<r t="1171.65">things a broken and i wanna be able to debug it locally so you can</r>
<r t="1174.98">download develop about run gtd on the latest G D M and see what's going</r>
<r t="1178.71">on</r>
<r t="1179.59">and there's also at a task the generates disk images</r>
<r t="1183.69">after something</r>
<r t="1185.48">so on talk about the story of</r>
<r t="1188.11">after you run get push to run in to get repositories that are tracked your</r>
<r t="1191.47">what happens</r>
<r t="1192.61">well as far as i know on the first person ever demand push notification from</r>
<r t="1196.54">don't get so that happens and then we basically do a copy of the get</r>
<r t="1203.33">repository under the build server</r>
<r t="1205.16">so this bill task though important thing to understand is be in a feedback is</r>
<r t="1210">really important to me versus correctness their different tradeoffs you can make your so the</r>
<r t="1215.15">bill test only rebuild get repository that change because concretely i can't rebuild look at</r>
<r t="1219.82">you take a every time G T K changes it would just massively slow down</r>
<r t="1224.21">the cycle</r>
<r t="1226.65">it does</r>
<r t="1227.82">it assembles a build route which means it's a clean build in this is actually</r>
<r t="1232.76">really important because some things just</r>
<r t="1236.32">it just really increases reliability but this part actually really fast compared to the D</r>
<r t="1240.92">package people there and the mocking those sort of tools it averages anywhere from five</r>
<r t="1249.12">to twenty seconds and that's because it uses hard links stuff actually building the thing</r>
<r t="1255.07">it starts from a clean get repository</r>
<r t="1257.05">so this is also kind of important because it'll for example instantly catch a missing</r>
<r t="1261.42">file that you forgot</r>
<r t="1264.99">but for something like to live that's a couple minutes and that's the same with</r>
<r t="1267.84">change builder can whatever and then the result of that install gets stored into repository</r>
<r t="1274">and</r>
<r t="1275.33">this is kind of like the package that is</r>
<r t="1279.54">this us the string here than almost three components to of X eighty six sixty</r>
<r t="1283.33">four that's kind of like a again branch big it's torn repository and then we</r>
<r t="1289.94">assemble all of these it just takes a union of all the different components so</r>
<r t="1294.64">i have to live i have lived to stored has their own little filesystem trees</r>
<r t="1299.83">and i just layer them on top</r>
<r t="1301.62">and that's very simple so there's no dependency resolution there's no packaging here and that</r>
<r t="1307.48">takes a minute right now that's something i could speed up but there's different trade</r>
<r t="1311.36">offs there and after this again this is just like</r>
<r t="1316.87">for and i know change of for a very small module this is around two</r>
<r t="1320.81">minutes from get pushed to when you can actually download it reliably</r>
<r t="1327.81">there used to be the concept is yes is the short answer and i used</r>
<r t="1332.58">to try and you triggers on the client side like the idea was that you</r>
<r t="1335.91">download this tree and then afterwards we would run stuff like T update i can</r>
<r t="1339.29">cache on the client</r>
<r t="1341.34">but it's i moved away from that because</r>
<r t="1345.3">then i couldn't do the offline updates on of the M and that was really</r>
<r t="1348.82">crucial so i sort of took the hit of having each multiple versions of the</r>
<r t="1353.38">cached icon caching each tree</r>
<r t="1356.2">it's not that bad and it makes up it's a lot faster</r>
<r t="1360.25">baseball for the client this is one of the things it does slow down the</r>
<r t="1363.42">build process for example on for some things i have to rebuild in a drama</r>
<r t="1366.97">fast whereas at least for their and i don't know about that the end rebuilding</r>
<r t="1371.79">the trim F S on the client every time you crouching so in some cases</r>
<r t="1375.32">i pay a price on the build server where is in the package will you</r>
<r t="1378.34">pay and it's client</r>
<r t="1381.78">that again sorry</r>
<r t="1385.29">how many different triggers</r>
<r t="1386.91">seven or something maybe like for hang go free type</r>
<r t="1391.45">i don't know there's not that many L D config</r>
<r t="1394.56">i mean i can look really but those are pretty fast execute</r>
<r t="1400.34">so</r>
<r t="1401.99">this i'm not excited about just building again i think the passing parts really important</r>
<r t="1407.47">to me so use live guess the vast amounts the filesystems non root</r>
<r t="1413.55">so the smoke test the way it works is we have a cash disk image</r>
<r t="1417.95">representing the runtime tree you know without all the developer tools and then i make</r>
<r t="1421.78">a little copy on write disk and i had some testing stuff for example there's</r>
<r t="1425.76">this service that runs in the virtual guest export the system you journal back up</r>
<r t="1431.35">to the host which then looks for stuff so system he has this nice concept</r>
<r t="1435.3">of message ideas which are</r>
<r t="1437.74">basically Q I Ds universal unique ideas that some event happened right</r>
<r t="1444.96">so an example would be system D M it's a message with a particular message</r>
<r t="1448.33">id want something court</r>
<r t="1450.02">so if someone makes a commit to say network manager that "'cause" it just simply</r>
<r t="1455.29">say for startup</r>
<r t="1456.76">the smoke test will fail</r>
<r t="1458.59">for them are patched gnome session timit a particular message id of one of the</r>
<r t="1463.05">things get manages fails like so for example if gnome shell exits with an air</r>
<r t="1467.5">or i know that pretty much instantly on the hose and i can terminate the</r>
<r t="1471.46">V M and then if you see nair see the gnome hackers are see a</r>
<r t="1476.03">red line for the smoke test that's what this</r>
<r t="1478.4">so most often it happens when people commit syntax errors in the norm shell javascript</r>
<r t="1484.57">files</r>
<r t="1485.53">lately anyways and i detect that very quickly</r>
<r t="1489.26">and the integration tasks this is something that i think is really need to which</r>
<r t="1494.4">is before the gnome release process each operand make czech kind of periodically</r>
<r t="1500.56">randomly</r>
<r t="1502.07">and then theoretically you ran make just check before release so in the know most</r>
<r t="1505.97">remodel i have all the tests almost all the tests that you run and make</r>
<r t="1510.14">czech installed in the system so i go to virtual machine and then i have</r>
<r t="1514.26">a little testing framework that runs all of the tests after nes change so it</r>
<r t="1519.03">change translation update an am show i will rerun all that you a test i</r>
<r t="1524.02">will remind all the clutter test because honestly have plenty of C P U power</r>
<r t="1529.38">and</r>
<r t="1530.65">why not i mean it actually i wanna have</r>
<r t="1533.29">you know a more interesting test scheduling type system but</r>
<r t="1539.16">the build server has thirty two cores sixty four gigs of ram in flies of</r>
<r t="1543.3">the stuff</r>
<r t="1550.44">so what that is occupied so my time for one hours race conditions on the</r>
<r t="1554.19">tests</r>
<r t="1556.12">do you live in particular has a lot of tests with race conditions and</r>
<r t="1560.96">that's</r>
<r t="1562.06">some of those a bit hard to track but fortunately most of them are just</r>
<r t="1564.91">bought some the tests and not actual core code</r>
<r t="1567.52">but i didn't i did find one conceptual issue and you live from tracking down</r>
<r t="1572.76">these</r>
<r t="1573.61">but for the most part most the test did work already because the developers we're</r>
<r t="1578.44">running just not relied continuously</r>
<r t="1581.89">so just very different</r>
<r t="1584.56">so some things that i'd love to do with the system kinda have</r>
<r t="1590.79">twenty minutes okay</r>
<r t="1592.51">okay cool so</r>
<r t="1594.94">open sousa has this really well they have a this thing called open here which</r>
<r t="1599.53">has some really cool features and some kind of weaker features but they have a</r>
<r t="1603.27">really nice but you and i love to have something like that another feature that</r>
<r t="1608.04">i wanna add is mostly has try server so i wanna have does</r>
<r t="1613.23">does this patch break known as a service basically where</r>
<r t="1619.17">i mean there's no reason i couldn't just start building inbound patches and bugs a</r>
<r t="1622.67">lot and testing on so you know one an optional developers can upload</r>
<r t="1626.89">but</r>
<r t="1627.99">bunch of patches and i just take those do a smoke test that sort of</r>
<r t="1631.55">thing would honestly be pretty fast is just the tricky part is sharing stuff between</r>
<r t="1637.3">the different builds like the get all the get repositories are out four gigabytes and</r>
<r t="1641.14">i don't wanna read clone them for each bill but making sure like and linking</r>
<r t="1644.66">currency is just what's kind of starting a little bit from this</r>
<r t="1649.99">and i would love to get into like software engineering stuff and one thing that</r>
<r t="1653.71">i've always wanted as you know just a graph of how much memory were using</r>
<r t="1657.83">on the default login how much memory using one epiphany is and wikipedia i mean</r>
<r t="1661.71">just</r>
<r t="1662.59">also the data there's no reason i can gather this the virtual machine aspect does</r>
<r t="1667.97">the limit kind of the type of performance metrics that i can get like i</r>
<r t="1671.37">can really get approach are because there's all this P N I or activity in</r>
<r t="1675.45">the build server and it would just be too noisy you really need a nice</r>
<r t="1679.79">dedicated harbour lab</r>
<r t="1685.19">probably</r>
<r t="1693.45">that's true</r>
<r t="1695.88">i think</r>
<r t="1698.8">i mean there's so many different ways to do it i don't know if you</r>
<r t="1701.99">knew has the hoax i would need for this i mean that would be a</r>
<r t="1704.95">pretty reliable way to do it i installing agents in the guest is obviously one</r>
<r t="1709.16">way together a lot of stuff but us</r>
<r t="1711.45">then of course you have the heisenberg effect where you you're affecting what you're measuring</r>
<r t="1716.94">right like your agent is using memory your agent</r>
<r t="1719.66">so</r>
<r t="1722.12">i would love to have automated bisection on the build server so you know right</r>
<r t="1726.96">now is if the smoke test fails i basically just run get log and</r>
<r t="1732.03">you know it's usually pretty obvious</r>
<r t="1734.15">who broke it and why but a lot of times it's not actually and just</r>
<r t="1739.07">like a try server there's no reason i couldn't just allocate a builder and say</r>
<r t="1742.46">okay i have this regression range well the know most remodel it's of course over</r>
<r t="1747.03">two hundred get repositories so</r>
<r t="1749.27">handling the multi repository thing with bisection is an interesting problem but again there's no</r>
<r t="1754.49">reason i couldn't do it just haven't gotten around to it</r>
<r t="1757.82">another cool thing is a little bit more blues guys just a sort of live</r>
<r t="1760.71">collaboration setup where the developers actually running get pushed to a branch and we instantly</r>
<r t="1765.77">build it so you have a some work and am shell and it designer and</r>
<r t="1769.35">that you know develop design i want to see the developers doing there's no reason</r>
<r t="1772.83">i can just okay to server that just sort of tried to do that as</r>
<r t="1775.93">fast as possible let them almost live collaborate</r>
<r t="1781.08">so that's</r>
<r t="1782.27">that is not shows the system but i have a lot to talk about where</r>
<r t="1787.08">i see the high level future the system so</r>
<r t="1792.47">obviously</r>
<r t="1794.23">okay i guess i didn't mention this but there is no application installation mechanism in</r>
<r t="1799.16">the system yet because it's a hard problem it's</r>
<r t="1803.95">very hard problem and there's a lot of prior are in that sort of stuff</r>
<r t="1807.41">there's like most all or have re pronounce it there's a bunch is click packaging</r>
<r t="1812.72">is all package on the stuff around and they have different tradeoffs parts</r>
<r t="1817.69">the thing that the thing that</r>
<r t="1820.39">is very important in this discussion i think is to draw a very strong line</r>
<r t="1826.15">it's very strong distinction between free software applications proprietary ones because i think that demand</r>
<r t="1833.08">there's some commonality there but</r>
<r t="1836.37">i don't understand why so many people in free software have this obsession with generating</r>
<r t="1841.55">binaries in caching i mean the most important thing if you're talking about free software</r>
<r t="1846.37">is the source right and who's committing to that and why and not this package</r>
<r t="1851.83">stuff so for free software applications i'd really like to emphasise that sort of stuff</r>
<r t="1857.42">like who's writing this out you know let you let you run the latest version</r>
<r t="1862.63">help you contribute to it that sort of thing</r>
<r t="1868.27">there is the aspect where</r>
<r t="1870.78">it is important to say who built it because you do yes you obviously have</r>
<r t="1875.96">to generate binaries to run it but it's still important to say who built it</r>
<r t="1880">so for example if you know if we have a system for applications we're doing</r>
<r t="1884.57">continuous innovation and fifteen outputting zip files or something who knows doesn't matter it's still</r>
<r t="1891.04">important say build by know because you have to trust the builder</r>
<r t="1896.18">and so i think i think the aspect of the intermediary is still important</r>
<r t="1902.78">again i would love to do continuous integration for the applications i sort of paved</r>
<r t="1906.75">and added some core apps to the manifest so you know obviously epiphany is in</r>
<r t="1912.03">their gnome terminal the system would be completely useless without it</r>
<r t="1916.73">and those are kind of</r>
<r t="1918.36">those are available but the really tried you wanna get to is where you can</r>
<r t="1922.06">remove the web browser from the operating system</r>
<r t="1924.49">apparently that's important and just you know peer review i mean this is the same</r>
<r t="1930.07">thing i'd like to see for more for the core operating system is just emphasising</r>
<r t="1933.83">the peer aspect of free software</r>
<r t="1937.79">you know again who who's doing this and why</r>
<r t="1942.33">okay</r>
<r t="1945.29">so obviously this is gonna kind of controversial topic throughout norman it really gets to</r>
<r t="1950.98">the heart of the distinction between what an operating system is and what it distribution</r>
<r t="1955.2">is and that sort of thing which is</r>
<r t="1958.57">where do you draw the line for what lives where right what might applications have</r>
<r t="1964.18">to bundle</r>
<r t="1965.24">so stuff like the backchannel to i'm not a big fan of the back small</r>
<r t="1969.23">to i really wish that it'd been but you will nice to a library before</r>
<r t="1974.33">so i</r>
<r t="1976.51">i you know do we except that is barbora base platform and it's ugly api</r>
<r t="1981.62">i don't know stuff like hire O obviously we made the decision</r>
<r t="1986.84">this is par the platform it's part of G T K spell checking is pretty</r>
<r t="1991.44">much perfect example of something where well we have some libraries out there may not</r>
<r t="1997.08">be great</r>
<r t="1998.93">whether i could should with the base system or not i don't know</r>
<r t="2003.73">and of course even if we're just talking about court know how long do we</r>
<r t="2006.86">should you take a to do we encourage do we allow</r>
<r t="2011.38">allows only should application developers still target in some circumstances and of course we're talking</r>
<r t="2017.37">to do you for enterprise and how long would we should G T K three</r>
<r t="2022.69">well so the way i define operating system is something your application will run on</r>
<r t="2026.82">for ever</r>
<r t="2027.93">and this</r>
<r t="2029.33">if we remove stuff then we're not really an operating system anymore kind of moving</r>
<r t="2033.69">back towards a distribution model so i don't have answers to these questions</r>
<r t="2040.92">a sort of punch on it and said okay well i'm just going to</r>
<r t="2045.9">to you know to make an operating system we need to have basic quality assurance</r>
<r t="2050.01">and so that's what i've been working on for a while like just fixing race</r>
<r t="2054.45">conditions and the G let us and make sure making sure that worshipping platform the</r>
<r t="2059.65">can be used to build applications and how all that works</r>
<r t="2062.71">so a lot of questions and so there this</r>
<r t="2066.86">so i think proprietary out the needs a proprietary applications are totally different</r>
<r t="2073.83">and</r>
<r t="2076.06">i mean</r>
<r t="2077.4">for one thing they</r>
<r t="2079.6">their time to an architecture usually if we're talking about me to binaries and all</r>
<r t="2083.17">of a sudden you're kind of in the windows world where you have</r>
<r t="2086.27">applications that were targeting X eighty six and then if we wanna move to new</r>
<r t="2089.86">hardware platform we can do it</r>
<r t="2093.14">i think that sort of thing are few icgs can just sort of deal with</r>
<r t="2096.45">it so i'm not too focused again on the proprietary applications basically what i want</r>
<r t="2103.26">i think it's important to enable people to run proprietary software</r>
<r t="2107.11">if but not encourage necessarily and so</r>
<r t="2110.72">i'd i'm gonna focus my time and just the core free software gnome applications because</r>
<r t="2115.59">that's again why i'm here from again that's all</r>
<r t="2120.14">so this is something that i was actually hacking on the plane</r>
<r t="2124.37">and which is basically just system D for the user session this is kind of</r>
<r t="2128.93">just a for corporate system feature but</r>
<r t="2133.45">using this we can actually this would be something that would help enable running proprietary</r>
<r t="2137.85">applications because</r>
<r t="2139.43">for that use we sort of to spend boxing take mechanism and how that would</r>
<r t="2143.45">work</r>
<r t="2145.54">is pretty interesting</r>
<r t="2147.82">a long time ago i helps port S U X to daddy and so i</r>
<r t="2150.6">have a fair amount of expertise in that and i think it makes sense to</r>
<r t="2154.56">use the ceilings for part of it but the portals work is sort of essential</r>
<r t="2158.87">for user interaction pieces so you have a sort of unchanging applications must never do</r>
<r t="2164.15">this type layer and then sort of maybe more enjoyed or i was like dynamic</r>
<r t="2171.1">application asks to do this type of model and that's portals</r>
<r t="2175.62">but i want to do this we really need system the in the session because</r>
<r t="2179.63">it enables grouping binaries for an application like right now one things this sort of</r>
<r t="2186.32">core part of the known three model was it's application focus and the way we</r>
<r t="2190.9">match</r>
<r t="2192.29">the X window created by nap to the process is actually just really horrible and</r>
<r t="2198.1">like to move away from it so getting applications inside to see group we just</r>
<r t="2202.19">P a fundamental enabler for moving towards this</r>
<r t="2205.22">O S application split</r>
<r t="2207.69">i love to unify the idea operating system extensions of stuff like proprietary and video</r>
<r t="2212.75">drivers what i think i was and always extension the package model socks for this</r>
<r t="2216.28">because obviously what you really want is you want to have your system and then</r>
<r t="2220.32">you say okay i'm gonna stalin be a driver and ineffectively rebates whereas right now</r>
<r t="2224.33">the package manager will say okay well this package needs this and what you upgrade</r>
<r t="2228.84">when with really important is to enable someone say upgrade the base toss up in</r>
<r t="2234.28">video driver try nouveau does the new version working not have the package manager you</r>
<r t="2239.35">know complaining over here so that's a know it's extension fonts that sort of stuff</r>
<r t="2243.3">are you can plug ins or was extensions and unified those with than so extensions</r>
<r t="2251.48">so in conclusion</r>
<r t="2253.67">core qualities important free software is very important to me but</r>
<r t="2257.75">quality is basically job one if we don't do that</r>
<r t="2262.87">it's not really doing anything</r>
<r t="2266.07">my provide same application framework and i there is the science just the</r>
<r t="2271.79">the core how her they distributed just making it easy to</r>
<r t="2278.21">getting exposed to the auto tools really rough for a lot of application developers and</r>
<r t="2282.25">so i was still allow people a package thing so concretely applications just still have</r>
<r t="2287.88">a make install type stage i think but it's</r>
<r t="2292.13">the build systems really do need to of all to the point where</r>
<r t="2296.04">it is possible and easy to read an application without being exposed to all those</r>
<r t="2302.25">words</r>
<r t="2303.28">and of course absolutely essential to this is just maintaining our links with the various</r>
<r t="2309.27">downstream projects like that in reference links i mean all that stuff that was in</r>
<r t="2314.16">the beginning but i have again tried to focus this is</r>
<r t="2319.48">it's not i'm not trying to be daddy and so it's just focusing on a</r>
<r t="2323.17">quality so making sure that's good</r>
<r t="2325.87">and then feeding changes elsewhere</r>
<r t="2329.52">and then if you wanna know more about the project these are some knowing less</r>
<r t="2334.73">and i'm usually available on our see any colours should be a male</r>
<r t="2339.55">so that's it</r>
<r t="2342.1">i know i kind of blew through this but there any questions</r>
<r t="2356.79">okay</r>
<r t="2359.56">sure so the question was about don't reproduce ability so particularly like are the binaries</r>
<r t="2365.13">identical that so</r>
<r t="2372.5">okay so all the binary stolen use repository i didn't really answer this question is</r>
<r t="2377.63">probably to talk about what this other project nix O S does this one ones</r>
<r t="2381.8">i was looking at one as do research for this project so next does checksums</r>
<r t="2386.34">to but they do they check some all the input to a bill so for</r>
<r t="2390.41">example if an environment variable changes that outputs a different checksum obviously and they're obsessed</r>
<r t="2395.09">at the stuff but there's a lot of things that sabotage that like python P</r>
<r t="2398.47">Y C files have the timestamp of the file the referencing which is useful useless</r>
<r t="2403.11">my system it hasn't been in important because i've money a disk space</r>
<r t="2409.5">so</r>
<r t="2414.65">so okay sorry i see we're more as you know story each generated tree is</r>
<r t="2421.52">the manifest a actually what i call results manifest so if you remember back is</r>
<r t="2428.23">this</r>
<r t="2429.62">back here so the result manifest is like the hard but be part of buzz</r>
<r t="2434.74">example word has the exactly provisions of the get repository that we used to build</r>
<r t="2439.8">the street that doesn't necessarily make it reproduceable exactly because i'm not putting in the</r>
<r t="2446.46">manifest what the host whole system uses open embedded is a cross compiler crossed environment</r>
<r t="2451.65">so i start format having for enterprise linux for which is what spinner that number</r>
<r t="2455.92">are runs and then across builds G C from that so if you want to</r>
<r t="2459.58">fully reproducible build i'd probably have to put in the manifest built from whatever and</r>
<r t="2465.06">that's something i can improve</r>
<r t="2467.61">and back on</r>
<r t="2471.5">okay</r>
<r t="2477.93">i still i could be loud enough</r>
<r t="2481.27">so you say you're not rebuilding like when you rebuild you decay you don't rebuild</r>
<r t="2485.77">web</r>
<r t="2486.73">right exact you have like a stuff throw weight might be considered of probably method</r>
<r t="2490.87">of doing that of saying you know i'm not going to keep that will result</r>
<r t="2494.45">from this but i would like now that i know that i changed you live</r>
<r t="2498.36">and we run integration tests later but that only it says</r>
<r t="2502.57">whether the binaries you produce this point i'm work against</r>
<r t="2505.8">the current that you would you have installed not whether they will have and we</r>
<r t="2508.81">build a that's right and i have had problems with that like a completely right</r>
<r t="2513.5">now so name under a little annoying like when cargo bonsai name i have to</r>
<r t="2517.53">force a rebuild of things and so the way that works is at the bottom</r>
<r t="2521">i just have this thing i call bill that thought so if i updated version</r>
<r t="2524.36">and i say nine type and say gee the G T K three here that</r>
<r t="2529.67">will just force to rebuild of those things a build server will just to me</r>
<r t="2533.47">it's catches</r>
<r t="2535">and i do that well as you can see twenty times in the last six</r>
<r t="2539.13">months which that's pretty reasonable to be perfectly honest it's worked well</r>
<r t="2544.95">okay</r>
<r t="2549.26">how do you put and it's also am doing maybe analysis of the point is</r>
<r t="2554.87">to make sure that we're not we can maybe a</r>
<r t="2557.61">for sure</r>
<r t="2560.41">it's kind of helps a lot the integration test phase helps a lot so the</r>
<r t="2564.06">in the i am to you will broke well right now we would need though</r>
<r t="2567.93">we would run binaries that you live itself bill but if</r>
<r t="2572.6">for example i would know if you live broke in the and weighted probe G</r>
<r t="2575.93">T K</r>
<r t="2576.99">as long as they didn't both get rebuild and but as far as more stack</r>
<r t="2581.24">analysis type stuff like i do your thinking me like upstream tracker dot org or</r>
<r t="2585.66">whatever it like they have some or and it this beta the less expose and</r>
<r t="2591.38">you pick a tent it's a be a</r>
<r t="2594.25">being able to not this</r>
<r t="2595.83">okay</r>
<r t="2597.28">i mean even if a test or something but we criminalise between editions actually idea</r>
<r t="2604.37">of a big difference their previous symbol question two signatures like right well course</r>
<r t="2610.82">the libraries themselves do have maybe i mean do you live has a list of</r>
<r t="2615.42">export it simple so it's very difficult to break you pi thereby</r>
<r t="2620.24">i mean it's a question of what we do with the data like i could</r>
<r t="2623.31">generate that it but what do we do with that you know do i try</r>
<r t="2626.09">to go back to you know daniel and say okay you about you probably decimal</r>
<r t="2629.89">to maybe i don't probably be very useful for bias</r>
<r t="2633.94">i don't know i just haven't</r>
<r t="2635.69">i it hasn't come up i guess they</r>
<r t="2638.89">so that when you know just them so just when this question and then you</r>
<r t="2642.85">can go and that's your questions if you to quit here</r>
<r t="2646.7">i can build a what's my question which is weeks scroll i will be break</r>
<r t="2651.16">something</r>
<r t="2652.05">so see you at the moment opinion of ceasing you bring can exploit so on</r>
<r t="2656.65">a scale</r>
<r t="2658.01">right</r>
<r t="2660.19">i don't know i mean it can obviously big claw everything jasper watch is the</r>
<r t="2663.55">output to and you know he looks at would make sense to say it sent</r>
<r t="2668.35">me email</r>
<r t="2670.48">i could well</r>
<r t="2672.31">i think that was potentially come out of automated bisection because the thing is things</r>
<r t="2676.56">can break for reasons that are not careful that happens pretty often like system he</r>
<r t="2681.29">has a very complex build system and tool chain bugs sometimes just bite and</r>
<r t="2687.86">you know is it a tool chain issue "'cause" they use some F function sections</r>
<r t="2692.35">but it doesn't matter but basically it's not always there for the be like you</r>
<r t="2696.18">need a human site actually a stipulation i mean</r>
<r t="2701.59">but i certainly could harvest email addresses from the get repositories and</r>
<r t="2706.23">i mean broken that it doesn't usually break that off one email that i maybe</r>
<r t="2712.65">it's well it's funny like some days things just break left and right and other</r>
<r t="2716.98">times it'll go three days and i just don't even touch it and just finally</r>
<r t="2723.78">right i think that's it right thank you all for coming</r>
</data>
