0:00:09 | alright so |
---|
0:00:12 | i'll just get started and what people you felling in if you come so i'm |
---|
0:00:17 | gonna be talking about this project called know mostly it's sort of an awkward name |
---|
0:00:21 | but donna names not too important |
---|
0:00:26 | before i get started here though before talk about what i think it's really important |
---|
0:00:30 | to talk about why am here why i care about what i do and the |
---|
0:00:39 | most important thing that really drives me is free software very passionate about it and |
---|
0:00:46 | i just think it's |
---|
0:00:47 | it's always been important sense ever since |
---|
0:00:51 | which is a men road |
---|
0:00:53 | started the G P L and before that secondarily i just have a lot of |
---|
0:00:58 | fun working in this community and |
---|
0:01:00 | you know hang out with other people in interacting with before the world it's also |
---|
0:01:05 | but fourthly right having a prize linux is very important to me and know was |
---|
0:01:10 | a very important component of that had enterprise linux |
---|
0:01:14 | and so when i ship |
---|
0:01:17 | this product to our enterprise customers i wanna know that known is providing red hat |
---|
0:01:22 | enterprise linux with high quality software |
---|
0:01:24 | so all these things are important all these things drive me |
---|
0:01:31 | so secondarily though it's important is to like restate or assumptions briefly why assume here |
---|
0:01:36 | well this is all from the website obviously the free software the software freedom part |
---|
0:01:41 | is in common with michael's the other ones are important |
---|
0:01:46 | but i wanna dive into this connected aspect "'cause" i think that's really interesting part |
---|
0:01:53 | it's probably the most interesting to me so this is sort of the way i |
---|
0:01:57 | the way i think of it is gnome is in ecosystem and we have our |
---|
0:02:02 | centres of gravity i'll talk about those and then obviously we interact with all different |
---|
0:02:07 | kinds of other ecosystems so greater or lesser degree looking at this list |
---|
0:02:13 | you know obviously we share a lot with the canoe project tries in is there |
---|
0:02:19 | an use this on components right enterprise linux very important to me obviously uses a |
---|
0:02:25 | lot of know and there is there's |
---|
0:02:29 | the programming languages icons for roles monos |
---|
0:02:34 | and other ones like open in embedded which in turn are linked other ecosystems you |
---|
0:02:39 | know open about is going to wind river and all these other embedded devices and |
---|
0:02:43 | stuff like that |
---|
0:02:44 | so |
---|
0:02:46 | it's important is sort of just visualise |
---|
0:02:49 | there's all these ecosystems around the gnome is there around the centre grab these that's |
---|
0:02:54 | the way i think of it |
---|
0:02:57 | so |
---|
0:02:59 | with that background what a minute talk about is just to build system |
---|
0:03:03 | but i'm really excited about it which you guys made notice if you see it |
---|
0:03:09 | online |
---|
0:03:10 | because i just kind of always wanted to send it's the in so successful now |
---|
0:03:16 | so |
---|
0:03:18 | my goal with this bill system is to focus on owns core or centres of |
---|
0:03:23 | gravity and |
---|
0:03:26 | not exclude other things but just make sure that we're doing well what is important |
---|
0:03:33 | to us and all talk about that and the continuous aspect so it is building |
---|
0:03:40 | but it's also testing continuously and i'm i could talk for the rest of this |
---|
0:03:45 | whole session about continuous integration why it's so important but i'm just gonna gloss over |
---|
0:03:50 | that |
---|
0:03:51 | so |
---|
0:03:53 | it's testing |
---|
0:03:55 | a lot of get repositories a lot of the what makes up cornell so kind |
---|
0:04:00 | of when i started this project i start from this is sort of minimal system |
---|
0:04:04 | and build up |
---|
0:04:05 | from scratch and so i got to know him shell like i wanted to just |
---|
0:04:08 | minimise interactions with other things so we can again focus on our core aspects so |
---|
0:04:13 | striking a lot of get repositories for example all hundred and some X or get |
---|
0:04:19 | repositories most of which are basically just the protocols and never change but |
---|
0:04:25 | and of course all the know network the think that are important network manager system |
---|
0:04:29 | do i wanna make sure that known works well with the latest system so tracking |
---|
0:04:34 | system do you get master very important |
---|
0:04:37 | the basis done this is sort of stuff like that i just don't care about |
---|
0:04:41 | like for example an S P R and S open ssl those all come from |
---|
0:04:45 | of an embedded and basically are ran make some binaries popped out if you're to |
---|
0:04:48 | work that's about the level of Q A that i gave to the |
---|
0:04:54 | also crucial is that i have |
---|
0:04:57 | a sort of course focus with this minutes only targeting virtual eyes environments because |
---|
0:05:02 | there's many reasons for this one is that doing testing fertilisation is whole much easier |
---|
0:05:07 | than trying to have like a test lab wired to physical hardware that's a whole |
---|
0:05:11 | other level of management personalisation it's really easy i can script using you make it |
---|
0:05:17 | do a dance when i wanted to it's great and of course |
---|
0:05:22 | there's other aspects of this like there's no security updates because you basically need people |
---|
0:05:27 | there employed and obviously my employer does this |
---|
0:05:31 | i'm not trying to compete with them obviously so these are that's sort of high |
---|
0:05:37 | level summary of what this project is and kind of hopefully just is important what |
---|
0:05:42 | it is not |
---|
0:05:45 | so the core values of known as i see them obviously we have the G |
---|
0:05:49 | T K stacked you live is very important to me because i think it |
---|
0:05:55 | it's a fundamental pieces for writing modern applications it has the event do it has |
---|
0:06:01 | a file system abstraction a bunch of stuff that really is a core part of |
---|
0:06:07 | an operating system and i'd like to see it used more particular in red hat |
---|
0:06:11 | enterprise linux |
---|
0:06:13 | also in known we have accessibility internationalisation also part of our core values and he's |
---|
0:06:20 | the secondary list is kind of my list |
---|
0:06:24 | software engineering very important to me get the all the basics of doing continuous integration |
---|
0:06:30 | you know just are we leaking memory you know just |
---|
0:06:33 | again the basics and i'm trying to sort of push for |
---|
0:06:38 | split between the operating system applications and then always exceptions and i'll talk about this |
---|
0:06:43 | a bit more later but just to repeat again the goal the system is to |
---|
0:06:48 | focus on gnomes core values and feedback code continued a feedback as we have been |
---|
0:06:53 | doing for years back into these other you can systems |
---|
0:06:57 | so |
---|
0:06:58 | the non goals no enterprise features no packaging know enterprise features there's no you know |
---|
0:07:05 | if you want her breast for example that's not something that you know i'm gonna |
---|
0:07:08 | pass |
---|
0:07:09 | and a fast home again not something about it |
---|
0:07:13 | testing G T K G but |
---|
0:07:18 | so what has a system achieved well it's been online deployed in the known data |
---|
0:07:25 | centre since december ish and since then it's been building fairly reliably and very importantly |
---|
0:07:33 | without human intervention i'll talk a little bit about the details of how that works |
---|
0:07:37 | but a lot of times it's just building one off |
---|
0:07:41 | doing something else and it's just working fine |
---|
0:07:44 | but more importantly than the building it's been doing testing and all of talk a |
---|
0:07:48 | little bit about the details of that |
---|
0:07:52 | i have some numbers later so this is something that i'm most proud of is |
---|
0:07:56 | so but i'm from a get pushed or something like do you live in so |
---|
0:08:00 | when i'm booting a virtual machine is down to minutes now and |
---|
0:08:06 | it depending on the type of change |
---|
0:08:10 | like |
---|
0:08:13 | depending on the type of change i think i could get that down the second |
---|
0:08:16 | so that's always been michael |
---|
0:08:18 | it's totally possible the other thing that's really important to me and i talked about |
---|
0:08:24 | this last year a bit but |
---|
0:08:27 | the story for how upgrades works is just crucial for no and |
---|
0:08:33 | something i just find deeply embarrassing about the current red hat enterprise linux six which |
---|
0:08:38 | i run is that the upgrade system just doesn't know anything about the browser in |
---|
0:08:42 | just it's not safe to upgrade it like you know if you're if you lose |
---|
0:08:45 | power halfway so part of this project has actually been redesigning how it this work |
---|
0:08:50 | and so using it was three system upgrades actually fully atomic you can pull the |
---|
0:08:54 | power well they're running and it's just sort of crucial |
---|
0:08:59 | so even more interesting there's a lot of tests that right now so before developers |
---|
0:09:03 | kind of ran make check |
---|
0:09:05 | periodically manually now have automated test automated make checks of a lot of different models |
---|
0:09:12 | there's |
---|
0:09:14 | three hundred fifty test binaries which in turn because of G test are in turn |
---|
0:09:19 | out a lot depends how you measure but this takes a couple minutes all talk |
---|
0:09:23 | about that later another cool thing is that for a long time unknown would really |
---|
0:09:28 | test G D M that was kind of ray would run makes you will make |
---|
0:09:32 | install in his laptop but it's not something that fit the J job model right |
---|
0:09:36 | J scroll only affects your session and so sometimes G D M well it was |
---|
0:09:41 | kind of broken but now if G D M breaks all know in minutes ands |
---|
0:09:46 | that's been working like |
---|
0:09:48 | so i want talk a little bit about the always three system and how its |
---|
0:09:53 | kind of different from the packaging model because it's |
---|
0:09:57 | pretty it's pretty crucial to how the system works |
---|
0:10:01 | so i buster itself is just kind of like a user space filesystem enter and |
---|
0:10:06 | i like the term get for operating system binaries |
---|
0:10:11 | it's misleading in some ways but on the ways very accurate so what industry does |
---|
0:10:16 | is it manages to let you have let's you more parallel blue multiple operating so |
---|
0:10:21 | multiple versions of multiple operating systems |
---|
0:10:24 | without affecting the physical root directory of your operating system |
---|
0:10:29 | so |
---|
0:10:30 | it's like get in that it's a content address system so it naturally to duplicate |
---|
0:10:34 | so if you have multi same multiple versions of gnome installed they only use space |
---|
0:10:40 | a by proportion how many files are different |
---|
0:10:44 | so |
---|
0:10:46 | i'll talk a little bit more about that later to it's different though from a |
---|
0:10:50 | lot of image based appointed systems that happen prototype out there like red hat enterprise |
---|
0:10:55 | linux have this state was project for a while which was basically a kind of |
---|
0:11:00 | image of a system where you download new data to block level and you're at |
---|
0:11:06 | sea is N F S mounted or something like that all those trees different from |
---|
0:11:09 | that because it does operate at the same level as package mentors do but unlike |
---|
0:11:15 | package managers it just a done content replication system in this allows a lot of |
---|
0:11:19 | neat tricks i'm a show those the next slide but straight the way to think |
---|
0:11:24 | of is really am your image of packages are lots of little filesystems with some |
---|
0:11:30 | shell scripts that run as root attached in their upload in the internet and you |
---|
0:11:33 | assemble them on your client machine string model you replicate filesystems from a build server |
---|
0:11:38 | or you can generate them locally |
---|
0:11:40 | and it is filesystem independent so it does leverage some butterflies features mostly through G |
---|
0:11:47 | live you we automatically use the better fess i aukro for a copy and right |
---|
0:11:53 | type stuff but i think it's sort of important for general purpose system to work |
---|
0:11:58 | on top of plane yet see for and that's actually what i test on the |
---|
0:12:01 | most because fifty fours really fast |
---|
0:12:06 | so |
---|
0:12:07 | it does have a format for installing on your local system but it also has |
---|
0:12:11 | an archive format they can run on a web server and that's sort of how |
---|
0:12:14 | this the build system works as there is than almost resides the build system it |
---|
0:12:18 | commits to noticed repository and then you can download it directly from just a plain |
---|
0:12:24 | old apache |
---|
0:12:27 | so here's some tricks that i wanna make possible and i've been protecting this a |
---|
0:12:31 | little bit with laura is so i run redheaded present X six on this laptop |
---|
0:12:36 | because people favour subscriptions any bill fix it but it's obviously important from able need |
---|
0:12:42 | to be able to run known get master because i wanna be able to contribute |
---|
0:12:45 | to it and make sure that it still works for the next version so |
---|
0:12:50 | one the way i plan to have this work is all just have reading representing |
---|
0:12:54 | six am i root partition and all street just sort of installs inside that without |
---|
0:12:59 | disrupting it so i can have the know most re what's called build master just |
---|
0:13:03 | the thing is tracking to get repositories but you could also parallel install multiple versions |
---|
0:13:08 | of or a very easily |
---|
0:13:10 | the hard part about this is fixing or P M to not be the lowest |
---|
0:13:15 | level anymore so that's still in progress but i do have the point where you |
---|
0:13:21 | can have the base system and then to the newer one and test it working |
---|
0:13:24 | fine |
---|
0:13:25 | and when i say five hundred builds here that's really possible because it just comes |
---|
0:13:30 | down to how many files are different and between |
---|
0:13:36 | things just don't change that much and there aren't a lot of big binaries so |
---|
0:13:40 | you really can have five hundred builds installed in more interest a need or trick |
---|
0:13:45 | that you could do something like automated bisection which is where you know you have |
---|
0:13:50 | your starting point you say okay i get graphics corruption recently and sort of write |
---|
0:13:56 | a test binary that maybe just takes a screenshot what for the corruption and then |
---|
0:14:00 | just keep booting into all these bills and so you find the build it's broken |
---|
0:14:04 | and from there you can from the source code i really need poster trick in |
---|
0:14:08 | this is kind of part of how the cork you a system works as it |
---|
0:14:11 | can up update virtual machines while they're entirely offline |
---|
0:14:16 | and this works basically because it's a don filesystem replication and not like packages where |
---|
0:14:22 | you have these ritual scripts attached and what they do |
---|
0:14:25 | was she has none of that and so that's this is actually a very useful |
---|
0:14:31 | trick in general and like i mentioned before i'd like to see austria eventually slide |
---|
0:14:36 | underneath these package systems like D package in our P M and all that stuff |
---|
0:14:40 | where or she would give the parallel booting the atomic upgrades that sort of stuff |
---|
0:14:47 | to them |
---|
0:14:49 | so know much three is layered on top of austria and it's very simple there |
---|
0:14:55 | when i say there are no packages i mean i went through the entire system |
---|
0:14:58 | in eliminated the concept at every level as much as i could to try and |
---|
0:15:03 | gain reliability and sort of optimised for |
---|
0:15:08 | automation |
---|
0:15:09 | so than almost relay or has this thing called a manifest which is literally just |
---|
0:15:14 | a list of get repositories to build and work |
---|
0:15:17 | it's very simple and as a consequence of that simplicity it has turned out to |
---|
0:15:23 | be that has six months of and very reliable promote stories and so if we |
---|
0:15:30 | look at like example of what the manifest looks like well that's multi one that's |
---|
0:15:34 | the entirety of what would be a package in my model it's just it's just |
---|
0:15:39 | to get repository insert it'll to build in this order and that's it that just |
---|
0:15:43 | means track it master of lib X M L to |
---|
0:15:46 | and spend enough for quite a while |
---|
0:15:48 | the component about one i'll talk about this on the next slide but basically that |
---|
0:15:53 | means this is only for the developer image i can also choose any get revision |
---|
0:15:58 | to build it anytime unlikely package in our can none of this cares about version |
---|
0:16:03 | numbers at all so i can be tracking system to get master and say okay |
---|
0:16:07 | i can no longer log in and the current version which has happened so i |
---|
0:16:10 | say okay all just tag back to the previous revision builds done like within minutes |
---|
0:16:15 | it's completely on like the package systems because they have this deep obsession with version |
---|
0:16:20 | numbers that |
---|
0:16:21 | permeates every single layer so none of my system cares about version numbers all any |
---|
0:16:26 | get revision at anytime |
---|
0:16:29 | and is the spice example is just how configure options and patches work i originally |
---|
0:16:37 | was trying to only have get repositories and no patches just to force myself to |
---|
0:16:42 | feed changes back but i sort it's too impractical so i ended up having a |
---|
0:16:47 | couple patches |
---|
0:16:48 | so this is something i think really illustrates just how different it was tree model |
---|
0:16:54 | is from the package thing so on the build server now it's been doing continuous |
---|
0:16:58 | integration since december right there is over six thousand complete filesystem trees like i haven't |
---|
0:17:05 | lost any history right so |
---|
0:17:09 | in the only occupies sixty gigabytes and this is sort of the power T duplication |
---|
0:17:14 | so in theory again not only can you have five hundred bills locally you could |
---|
0:17:18 | download in entire history of all the bills from the build server and |
---|
0:17:25 | you know we'll get those all have links to their sources inside of them |
---|
0:17:30 | so |
---|
0:17:32 | i just give a lot of flexibility right you can have a sort of a |
---|
0:17:35 | system and then add remove stuff we're supposed trees all about the files so the |
---|
0:17:40 | way all history is sort of designed is that sort of having a bunch little |
---|
0:17:43 | packages you have full complete systems that share space and i would you have multiple |
---|
0:17:48 | versions of say what i call runtime tree but you have a basic runtime tree |
---|
0:17:53 | enough to run out and then i have an image div L with all the |
---|
0:17:56 | developer tools and these just naturally share storage so us three let's you switch between |
---|
0:18:02 | atomic so i can i normally run the developer imagine my D Ms but you |
---|
0:18:08 | know sometimes we've had boards where things because of obscure issues only work in the |
---|
0:18:13 | developer image like a they in package world they needed deborah develop package installed i |
---|
0:18:17 | can easily just switch back to the runtime tree which effectively hides all the developer |
---|
0:18:22 | tools so |
---|
0:18:23 | parallel installing multiple file systems and then besides all the for variance is actually three |
---|
0:18:28 | it's a the build system outputs a pipeline so is what i call build master |
---|
0:18:32 | which is all these get ready all these get repositories get bill integrating the build |
---|
0:18:36 | master all that happens there is there just build a just take the latest get |
---|
0:18:41 | run make install duster and it's in the tree you can download that that's very |
---|
0:18:44 | useful obviously but |
---|
0:18:46 | i don't expect many humans to want to run that directly so there's a secondary |
---|
0:18:50 | stage which does what i call smoke test and this just updated disk image puts |
---|
0:18:55 | it union does this appear to let you log if it does that gets attacked |
---|
0:18:59 | just like get repositories get tagged |
---|
0:19:02 | and there's a secondary stage which is integrated is that after all the make czech |
---|
0:19:07 | and stuff like that works but |
---|
0:19:09 | the way i sort of vision this is there's a like a long pipeline you |
---|
0:19:14 | can imagine of the very top we have build master and then something like red |
---|
0:19:17 | hat enterprise linux is like way a down there but it is a sort of |
---|
0:19:21 | long pipeline of extended increasingly extensive testing |
---|
0:19:26 | but it still really important to be able to run the build master because sometimes |
---|
0:19:31 | things a broken and i wanna be able to debug it locally so you can |
---|
0:19:34 | download develop about run gtd on the latest G D M and see what's going |
---|
0:19:38 | on |
---|
0:19:39 | and there's also at a task the generates disk images |
---|
0:19:43 | after something |
---|
0:19:45 | so on talk about the story of |
---|
0:19:48 | after you run get push to run in to get repositories that are tracked your |
---|
0:19:51 | what happens |
---|
0:19:52 | well as far as i know on the first person ever demand push notification from |
---|
0:19:56 | don't get so that happens and then we basically do a copy of the get |
---|
0:20:03 | repository under the build server |
---|
0:20:05 | so this bill task though important thing to understand is be in a feedback is |
---|
0:20:10 | really important to me versus correctness their different tradeoffs you can make your so the |
---|
0:20:15 | bill test only rebuild get repository that change because concretely i can't rebuild look at |
---|
0:20:19 | you take a every time G T K changes it would just massively slow down |
---|
0:20:24 | the cycle |
---|
0:20:26 | it does |
---|
0:20:27 | it assembles a build route which means it's a clean build in this is actually |
---|
0:20:32 | really important because some things just |
---|
0:20:36 | it just really increases reliability but this part actually really fast compared to the D |
---|
0:20:40 | package people there and the mocking those sort of tools it averages anywhere from five |
---|
0:20:49 | to twenty seconds and that's because it uses hard links stuff actually building the thing |
---|
0:20:55 | it starts from a clean get repository |
---|
0:20:57 | so this is also kind of important because it'll for example instantly catch a missing |
---|
0:21:01 | file that you forgot |
---|
0:21:04 | but for something like to live that's a couple minutes and that's the same with |
---|
0:21:07 | change builder can whatever and then the result of that install gets stored into repository |
---|
0:21:14 | and |
---|
0:21:15 | this is kind of like the package that is |
---|
0:21:19 | this us the string here than almost three components to of X eighty six sixty |
---|
0:21:23 | four that's kind of like a again branch big it's torn repository and then we |
---|
0:21:29 | assemble all of these it just takes a union of all the different components so |
---|
0:21:34 | i have to live i have lived to stored has their own little filesystem trees |
---|
0:21:39 | and i just layer them on top |
---|
0:21:41 | and that's very simple so there's no dependency resolution there's no packaging here and that |
---|
0:21:47 | takes a minute right now that's something i could speed up but there's different trade |
---|
0:21:51 | offs there and after this again this is just like |
---|
0:21:56 | for and i know change of for a very small module this is around two |
---|
0:22:00 | minutes from get pushed to when you can actually download it reliably |
---|
0:22:07 | there used to be the concept is yes is the short answer and i used |
---|
0:22:12 | to try and you triggers on the client side like the idea was that you |
---|
0:22:15 | download this tree and then afterwards we would run stuff like T update i can |
---|
0:22:19 | cache on the client |
---|
0:22:21 | but it's i moved away from that because |
---|
0:22:25 | then i couldn't do the offline updates on of the M and that was really |
---|
0:22:28 | crucial so i sort of took the hit of having each multiple versions of the |
---|
0:22:33 | cached icon caching each tree |
---|
0:22:36 | it's not that bad and it makes up it's a lot faster |
---|
0:22:40 | baseball for the client this is one of the things it does slow down the |
---|
0:22:43 | build process for example on for some things i have to rebuild in a drama |
---|
0:22:46 | fast whereas at least for their and i don't know about that the end rebuilding |
---|
0:22:51 | the trim F S on the client every time you crouching so in some cases |
---|
0:22:55 | i pay a price on the build server where is in the package will you |
---|
0:22:58 | pay and it's client |
---|
0:23:01 | that again sorry |
---|
0:23:05 | how many different triggers |
---|
0:23:06 | seven or something maybe like for hang go free type |
---|
0:23:11 | i don't know there's not that many L D config |
---|
0:23:14 | i mean i can look really but those are pretty fast execute |
---|
0:23:20 | so |
---|
0:23:21 | this i'm not excited about just building again i think the passing parts really important |
---|
0:23:27 | to me so use live guess the vast amounts the filesystems non root |
---|
0:23:33 | so the smoke test the way it works is we have a cash disk image |
---|
0:23:37 | representing the runtime tree you know without all the developer tools and then i make |
---|
0:23:41 | a little copy on write disk and i had some testing stuff for example there's |
---|
0:23:45 | this service that runs in the virtual guest export the system you journal back up |
---|
0:23:51 | to the host which then looks for stuff so system he has this nice concept |
---|
0:23:55 | of message ideas which are |
---|
0:23:57 | basically Q I Ds universal unique ideas that some event happened right |
---|
0:24:04 | so an example would be system D M it's a message with a particular message |
---|
0:24:08 | id want something court |
---|
0:24:10 | so if someone makes a commit to say network manager that "'cause" it just simply |
---|
0:24:15 | say for startup |
---|
0:24:16 | the smoke test will fail |
---|
0:24:18 | for them are patched gnome session timit a particular message id of one of the |
---|
0:24:23 | things get manages fails like so for example if gnome shell exits with an air |
---|
0:24:27 | or i know that pretty much instantly on the hose and i can terminate the |
---|
0:24:31 | V M and then if you see nair see the gnome hackers are see a |
---|
0:24:36 | red line for the smoke test that's what this |
---|
0:24:38 | so most often it happens when people commit syntax errors in the norm shell javascript |
---|
0:24:44 | files |
---|
0:24:45 | lately anyways and i detect that very quickly |
---|
0:24:49 | and the integration tasks this is something that i think is really need to which |
---|
0:24:54 | is before the gnome release process each operand make czech kind of periodically |
---|
0:25:00 | randomly |
---|
0:25:02 | and then theoretically you ran make just check before release so in the know most |
---|
0:25:05 | remodel i have all the tests almost all the tests that you run and make |
---|
0:25:10 | czech installed in the system so i go to virtual machine and then i have |
---|
0:25:14 | a little testing framework that runs all of the tests after nes change so it |
---|
0:25:19 | change translation update an am show i will rerun all that you a test i |
---|
0:25:24 | will remind all the clutter test because honestly have plenty of C P U power |
---|
0:25:29 | and |
---|
0:25:30 | why not i mean it actually i wanna have |
---|
0:25:33 | you know a more interesting test scheduling type system but |
---|
0:25:39 | the build server has thirty two cores sixty four gigs of ram in flies of |
---|
0:25:43 | the stuff |
---|
0:25:50 | so what that is occupied so my time for one hours race conditions on the |
---|
0:25:54 | tests |
---|
0:25:56 | do you live in particular has a lot of tests with race conditions and |
---|
0:26:00 | that's |
---|
0:26:02 | some of those a bit hard to track but fortunately most of them are just |
---|
0:26:04 | bought some the tests and not actual core code |
---|
0:26:07 | but i didn't i did find one conceptual issue and you live from tracking down |
---|
0:26:12 | these |
---|
0:26:13 | but for the most part most the test did work already because the developers we're |
---|
0:26:18 | running just not relied continuously |
---|
0:26:21 | so just very different |
---|
0:26:24 | so some things that i'd love to do with the system kinda have |
---|
0:26:30 | twenty minutes okay |
---|
0:26:32 | okay cool so |
---|
0:26:34 | open sousa has this really well they have a this thing called open here which |
---|
0:26:39 | has some really cool features and some kind of weaker features but they have a |
---|
0:26:43 | really nice but you and i love to have something like that another feature that |
---|
0:26:48 | i wanna add is mostly has try server so i wanna have does |
---|
0:26:53 | does this patch break known as a service basically where |
---|
0:26:59 | i mean there's no reason i couldn't just start building inbound patches and bugs a |
---|
0:27:02 | lot and testing on so you know one an optional developers can upload |
---|
0:27:06 | but |
---|
0:27:07 | bunch of patches and i just take those do a smoke test that sort of |
---|
0:27:11 | thing would honestly be pretty fast is just the tricky part is sharing stuff between |
---|
0:27:17 | the different builds like the get all the get repositories are out four gigabytes and |
---|
0:27:21 | i don't wanna read clone them for each bill but making sure like and linking |
---|
0:27:24 | currency is just what's kind of starting a little bit from this |
---|
0:27:29 | and i would love to get into like software engineering stuff and one thing that |
---|
0:27:33 | i've always wanted as you know just a graph of how much memory were using |
---|
0:27:37 | on the default login how much memory using one epiphany is and wikipedia i mean |
---|
0:27:41 | just |
---|
0:27:42 | also the data there's no reason i can gather this the virtual machine aspect does |
---|
0:27:47 | the limit kind of the type of performance metrics that i can get like i |
---|
0:27:51 | can really get approach are because there's all this P N I or activity in |
---|
0:27:55 | the build server and it would just be too noisy you really need a nice |
---|
0:27:59 | dedicated harbour lab |
---|
0:28:05 | probably |
---|
0:28:13 | that's true |
---|
0:28:15 | i think |
---|
0:28:18 | i mean there's so many different ways to do it i don't know if you |
---|
0:28:21 | knew has the hoax i would need for this i mean that would be a |
---|
0:28:24 | pretty reliable way to do it i installing agents in the guest is obviously one |
---|
0:28:29 | way together a lot of stuff but us |
---|
0:28:31 | then of course you have the heisenberg effect where you you're affecting what you're measuring |
---|
0:28:36 | right like your agent is using memory your agent |
---|
0:28:39 | so |
---|
0:28:42 | i would love to have automated bisection on the build server so you know right |
---|
0:28:46 | now is if the smoke test fails i basically just run get log and |
---|
0:28:52 | you know it's usually pretty obvious |
---|
0:28:54 | who broke it and why but a lot of times it's not actually and just |
---|
0:28:59 | like a try server there's no reason i couldn't just allocate a builder and say |
---|
0:29:02 | okay i have this regression range well the know most remodel it's of course over |
---|
0:29:07 | two hundred get repositories so |
---|
0:29:09 | handling the multi repository thing with bisection is an interesting problem but again there's no |
---|
0:29:14 | reason i couldn't do it just haven't gotten around to it |
---|
0:29:17 | another cool thing is a little bit more blues guys just a sort of live |
---|
0:29:20 | collaboration setup where the developers actually running get pushed to a branch and we instantly |
---|
0:29:25 | build it so you have a some work and am shell and it designer and |
---|
0:29:29 | that you know develop design i want to see the developers doing there's no reason |
---|
0:29:32 | i can just okay to server that just sort of tried to do that as |
---|
0:29:35 | fast as possible let them almost live collaborate |
---|
0:29:41 | so that's |
---|
0:29:42 | that is not shows the system but i have a lot to talk about where |
---|
0:29:47 | i see the high level future the system so |
---|
0:29:52 | obviously |
---|
0:29:54 | okay i guess i didn't mention this but there is no application installation mechanism in |
---|
0:29:59 | the system yet because it's a hard problem it's |
---|
0:30:03 | very hard problem and there's a lot of prior are in that sort of stuff |
---|
0:30:07 | there's like most all or have re pronounce it there's a bunch is click packaging |
---|
0:30:12 | is all package on the stuff around and they have different tradeoffs parts |
---|
0:30:17 | the thing that the thing that |
---|
0:30:20 | is very important in this discussion i think is to draw a very strong line |
---|
0:30:26 | it's very strong distinction between free software applications proprietary ones because i think that demand |
---|
0:30:33 | there's some commonality there but |
---|
0:30:36 | i don't understand why so many people in free software have this obsession with generating |
---|
0:30:41 | binaries in caching i mean the most important thing if you're talking about free software |
---|
0:30:46 | is the source right and who's committing to that and why and not this package |
---|
0:30:51 | stuff so for free software applications i'd really like to emphasise that sort of stuff |
---|
0:30:57 | like who's writing this out you know let you let you run the latest version |
---|
0:31:02 | help you contribute to it that sort of thing |
---|
0:31:08 | there is the aspect where |
---|
0:31:10 | it is important to say who built it because you do yes you obviously have |
---|
0:31:15 | to generate binaries to run it but it's still important to say who built it |
---|
0:31:20 | so for example if you know if we have a system for applications we're doing |
---|
0:31:24 | continuous innovation and fifteen outputting zip files or something who knows doesn't matter it's still |
---|
0:31:31 | important say build by know because you have to trust the builder |
---|
0:31:36 | and so i think i think the aspect of the intermediary is still important |
---|
0:31:42 | again i would love to do continuous integration for the applications i sort of paved |
---|
0:31:46 | and added some core apps to the manifest so you know obviously epiphany is in |
---|
0:31:52 | their gnome terminal the system would be completely useless without it |
---|
0:31:56 | and those are kind of |
---|
0:31:58 | those are available but the really tried you wanna get to is where you can |
---|
0:32:02 | remove the web browser from the operating system |
---|
0:32:04 | apparently that's important and just you know peer review i mean this is the same |
---|
0:32:10 | thing i'd like to see for more for the core operating system is just emphasising |
---|
0:32:13 | the peer aspect of free software |
---|
0:32:17 | you know again who who's doing this and why |
---|
0:32:22 | okay |
---|
0:32:25 | so obviously this is gonna kind of controversial topic throughout norman it really gets to |
---|
0:32:30 | the heart of the distinction between what an operating system is and what it distribution |
---|
0:32:35 | is and that sort of thing which is |
---|
0:32:38 | where do you draw the line for what lives where right what might applications have |
---|
0:32:44 | to bundle |
---|
0:32:45 | so stuff like the backchannel to i'm not a big fan of the back small |
---|
0:32:49 | to i really wish that it'd been but you will nice to a library before |
---|
0:32:54 | so i |
---|
0:32:56 | i you know do we except that is barbora base platform and it's ugly api |
---|
0:33:01 | i don't know stuff like hire O obviously we made the decision |
---|
0:33:06 | this is par the platform it's part of G T K spell checking is pretty |
---|
0:33:11 | much perfect example of something where well we have some libraries out there may not |
---|
0:33:17 | be great |
---|
0:33:18 | whether i could should with the base system or not i don't know |
---|
0:33:23 | and of course even if we're just talking about court know how long do we |
---|
0:33:26 | should you take a to do we encourage do we allow |
---|
0:33:31 | allows only should application developers still target in some circumstances and of course we're talking |
---|
0:33:37 | to do you for enterprise and how long would we should G T K three |
---|
0:33:42 | well so the way i define operating system is something your application will run on |
---|
0:33:46 | for ever |
---|
0:33:47 | and this |
---|
0:33:49 | if we remove stuff then we're not really an operating system anymore kind of moving |
---|
0:33:53 | back towards a distribution model so i don't have answers to these questions |
---|
0:34:00 | a sort of punch on it and said okay well i'm just going to |
---|
0:34:05 | to you know to make an operating system we need to have basic quality assurance |
---|
0:34:10 | and so that's what i've been working on for a while like just fixing race |
---|
0:34:14 | conditions and the G let us and make sure making sure that worshipping platform the |
---|
0:34:19 | can be used to build applications and how all that works |
---|
0:34:22 | so a lot of questions and so there this |
---|
0:34:26 | so i think proprietary out the needs a proprietary applications are totally different |
---|
0:34:33 | and |
---|
0:34:36 | i mean |
---|
0:34:37 | for one thing they |
---|
0:34:39 | their time to an architecture usually if we're talking about me to binaries and all |
---|
0:34:43 | of a sudden you're kind of in the windows world where you have |
---|
0:34:46 | applications that were targeting X eighty six and then if we wanna move to new |
---|
0:34:49 | hardware platform we can do it |
---|
0:34:53 | i think that sort of thing are few icgs can just sort of deal with |
---|
0:34:56 | it so i'm not too focused again on the proprietary applications basically what i want |
---|
0:35:03 | i think it's important to enable people to run proprietary software |
---|
0:35:07 | if but not encourage necessarily and so |
---|
0:35:10 | i'd i'm gonna focus my time and just the core free software gnome applications because |
---|
0:35:15 | that's again why i'm here from again that's all |
---|
0:35:20 | so this is something that i was actually hacking on the plane |
---|
0:35:24 | and which is basically just system D for the user session this is kind of |
---|
0:35:28 | just a for corporate system feature but |
---|
0:35:33 | using this we can actually this would be something that would help enable running proprietary |
---|
0:35:37 | applications because |
---|
0:35:39 | for that use we sort of to spend boxing take mechanism and how that would |
---|
0:35:43 | work |
---|
0:35:45 | is pretty interesting |
---|
0:35:47 | a long time ago i helps port S U X to daddy and so i |
---|
0:35:50 | have a fair amount of expertise in that and i think it makes sense to |
---|
0:35:54 | use the ceilings for part of it but the portals work is sort of essential |
---|
0:35:58 | for user interaction pieces so you have a sort of unchanging applications must never do |
---|
0:36:04 | this type layer and then sort of maybe more enjoyed or i was like dynamic |
---|
0:36:11 | application asks to do this type of model and that's portals |
---|
0:36:15 | but i want to do this we really need system the in the session because |
---|
0:36:19 | it enables grouping binaries for an application like right now one things this sort of |
---|
0:36:26 | core part of the known three model was it's application focus and the way we |
---|
0:36:30 | match |
---|
0:36:32 | the X window created by nap to the process is actually just really horrible and |
---|
0:36:38 | like to move away from it so getting applications inside to see group we just |
---|
0:36:42 | P a fundamental enabler for moving towards this |
---|
0:36:45 | O S application split |
---|
0:36:47 | i love to unify the idea operating system extensions of stuff like proprietary and video |
---|
0:36:52 | drivers what i think i was and always extension the package model socks for this |
---|
0:36:56 | because obviously what you really want is you want to have your system and then |
---|
0:37:00 | you say okay i'm gonna stalin be a driver and ineffectively rebates whereas right now |
---|
0:37:04 | the package manager will say okay well this package needs this and what you upgrade |
---|
0:37:08 | when with really important is to enable someone say upgrade the base toss up in |
---|
0:37:14 | video driver try nouveau does the new version working not have the package manager you |
---|
0:37:19 | know complaining over here so that's a know it's extension fonts that sort of stuff |
---|
0:37:23 | are you can plug ins or was extensions and unified those with than so extensions |
---|
0:37:31 | so in conclusion |
---|
0:37:33 | core qualities important free software is very important to me but |
---|
0:37:37 | quality is basically job one if we don't do that |
---|
0:37:42 | it's not really doing anything |
---|
0:37:46 | my provide same application framework and i there is the science just the |
---|
0:37:51 | the core how her they distributed just making it easy to |
---|
0:37:58 | getting exposed to the auto tools really rough for a lot of application developers and |
---|
0:38:02 | so i was still allow people a package thing so concretely applications just still have |
---|
0:38:07 | a make install type stage i think but it's |
---|
0:38:12 | the build systems really do need to of all to the point where |
---|
0:38:16 | it is possible and easy to read an application without being exposed to all those |
---|
0:38:22 | words |
---|
0:38:23 | and of course absolutely essential to this is just maintaining our links with the various |
---|
0:38:29 | downstream projects like that in reference links i mean all that stuff that was in |
---|
0:38:34 | the beginning but i have again tried to focus this is |
---|
0:38:39 | it's not i'm not trying to be daddy and so it's just focusing on a |
---|
0:38:43 | quality so making sure that's good |
---|
0:38:45 | and then feeding changes elsewhere |
---|
0:38:49 | and then if you wanna know more about the project these are some knowing less |
---|
0:38:54 | and i'm usually available on our see any colours should be a male |
---|
0:38:59 | so that's it |
---|
0:39:02 | i know i kind of blew through this but there any questions |
---|
0:39:16 | okay |
---|
0:39:19 | sure so the question was about don't reproduce ability so particularly like are the binaries |
---|
0:39:25 | identical that so |
---|
0:39:32 | okay so all the binary stolen use repository i didn't really answer this question is |
---|
0:39:37 | probably to talk about what this other project nix O S does this one ones |
---|
0:39:41 | i was looking at one as do research for this project so next does checksums |
---|
0:39:46 | to but they do they check some all the input to a bill so for |
---|
0:39:50 | example if an environment variable changes that outputs a different checksum obviously and they're obsessed |
---|
0:39:55 | at the stuff but there's a lot of things that sabotage that like python P |
---|
0:39:58 | Y C files have the timestamp of the file the referencing which is useful useless |
---|
0:40:03 | my system it hasn't been in important because i've money a disk space |
---|
0:40:09 | so |
---|
0:40:14 | so okay sorry i see we're more as you know story each generated tree is |
---|
0:40:21 | the manifest a actually what i call results manifest so if you remember back is |
---|
0:40:28 | this |
---|
0:40:29 | back here so the result manifest is like the hard but be part of buzz |
---|
0:40:34 | example word has the exactly provisions of the get repository that we used to build |
---|
0:40:39 | the street that doesn't necessarily make it reproduceable exactly because i'm not putting in the |
---|
0:40:46 | manifest what the host whole system uses open embedded is a cross compiler crossed environment |
---|
0:40:51 | so i start format having for enterprise linux for which is what spinner that number |
---|
0:40:55 | are runs and then across builds G C from that so if you want to |
---|
0:40:59 | fully reproducible build i'd probably have to put in the manifest built from whatever and |
---|
0:41:05 | that's something i can improve |
---|
0:41:07 | and back on |
---|
0:41:11 | okay |
---|
0:41:17 | i still i could be loud enough |
---|
0:41:21 | so you say you're not rebuilding like when you rebuild you decay you don't rebuild |
---|
0:41:25 | web |
---|
0:41:26 | right exact you have like a stuff throw weight might be considered of probably method |
---|
0:41:30 | of doing that of saying you know i'm not going to keep that will result |
---|
0:41:34 | from this but i would like now that i know that i changed you live |
---|
0:41:38 | and we run integration tests later but that only it says |
---|
0:41:42 | whether the binaries you produce this point i'm work against |
---|
0:41:45 | the current that you would you have installed not whether they will have and we |
---|
0:41:48 | build a that's right and i have had problems with that like a completely right |
---|
0:41:53 | now so name under a little annoying like when cargo bonsai name i have to |
---|
0:41:57 | force a rebuild of things and so the way that works is at the bottom |
---|
0:42:01 | i just have this thing i call bill that thought so if i updated version |
---|
0:42:04 | and i say nine type and say gee the G T K three here that |
---|
0:42:09 | will just force to rebuild of those things a build server will just to me |
---|
0:42:13 | it's catches |
---|
0:42:15 | and i do that well as you can see twenty times in the last six |
---|
0:42:19 | months which that's pretty reasonable to be perfectly honest it's worked well |
---|
0:42:24 | okay |
---|
0:42:29 | how do you put and it's also am doing maybe analysis of the point is |
---|
0:42:34 | to make sure that we're not we can maybe a |
---|
0:42:37 | for sure |
---|
0:42:40 | it's kind of helps a lot the integration test phase helps a lot so the |
---|
0:42:44 | in the i am to you will broke well right now we would need though |
---|
0:42:47 | we would run binaries that you live itself bill but if |
---|
0:42:52 | for example i would know if you live broke in the and weighted probe G |
---|
0:42:55 | T K |
---|
0:42:56 | as long as they didn't both get rebuild and but as far as more stack |
---|
0:43:01 | analysis type stuff like i do your thinking me like upstream tracker dot org or |
---|
0:43:05 | whatever it like they have some or and it this beta the less expose and |
---|
0:43:11 | you pick a tent it's a be a |
---|
0:43:14 | being able to not this |
---|
0:43:15 | okay |
---|
0:43:17 | i mean even if a test or something but we criminalise between editions actually idea |
---|
0:43:24 | of a big difference their previous symbol question two signatures like right well course |
---|
0:43:30 | the libraries themselves do have maybe i mean do you live has a list of |
---|
0:43:35 | export it simple so it's very difficult to break you pi thereby |
---|
0:43:40 | i mean it's a question of what we do with the data like i could |
---|
0:43:43 | generate that it but what do we do with that you know do i try |
---|
0:43:46 | to go back to you know daniel and say okay you about you probably decimal |
---|
0:43:49 | to maybe i don't probably be very useful for bias |
---|
0:43:53 | i don't know i just haven't |
---|
0:43:55 | i it hasn't come up i guess they |
---|
0:43:58 | so that when you know just them so just when this question and then you |
---|
0:44:02 | can go and that's your questions if you to quit here |
---|
0:44:06 | i can build a what's my question which is weeks scroll i will be break |
---|
0:44:11 | something |
---|
0:44:12 | so see you at the moment opinion of ceasing you bring can exploit so on |
---|
0:44:16 | a scale |
---|
0:44:18 | right |
---|
0:44:20 | i don't know i mean it can obviously big claw everything jasper watch is the |
---|
0:44:23 | output to and you know he looks at would make sense to say it sent |
---|
0:44:28 | me email |
---|
0:44:30 | i could well |
---|
0:44:32 | i think that was potentially come out of automated bisection because the thing is things |
---|
0:44:36 | can break for reasons that are not careful that happens pretty often like system he |
---|
0:44:41 | has a very complex build system and tool chain bugs sometimes just bite and |
---|
0:44:47 | you know is it a tool chain issue "'cause" they use some F function sections |
---|
0:44:52 | but it doesn't matter but basically it's not always there for the be like you |
---|
0:44:56 | need a human site actually a stipulation i mean |
---|
0:45:01 | but i certainly could harvest email addresses from the get repositories and |
---|
0:45:06 | i mean broken that it doesn't usually break that off one email that i maybe |
---|
0:45:12 | it's well it's funny like some days things just break left and right and other |
---|
0:45:16 | times it'll go three days and i just don't even touch it and just finally |
---|
0:45:23 | right i think that's it right thank you all for coming |
---|