Video in TIB AV-Portal: NixOS

Formal Metadata

Title of Series
CC Attribution 3.0 Unported:
You are free to use, adapt and copy, distribute and transmit the work or content in adapted or unchanged form for any legal purpose as long as the work is attributed to the author in the manner specified by the author or licensor.
Release Date

Content Metadata

Subject Area
Popular configuration management systems have come a long way transforming imperative to declarative configuration. Rather than relying on extra tools that support a multitude of operating systems, NixOS is a GNU/Linux distribution with a novel take on both package and configuration management to achieve declarative and stateless service configurations on the operating system level.
Web page Word Data management Message passing Computer animation Spherical cap Projective plane Maxima and minima Quicksort Configuration management Sinc function Product (business)
Scripting language Authentication Metre Personal identification number Building Functional (mathematics) Code INTEGRAL Binary code Source code Function (mathematics) Revision control Data management Process (computing) Hash function Software repository Bus (computing) Video game Remote procedure call Cycle (graph theory) Local ring Physical system Library (computing)
Standard deviation Computer file State of matter Projective plane Moment (mathematics) Data storage device Virtual machine Set (mathematics) Sound effect Function (mathematics) Revision control Uniform resource locator Voting Process (computing) Computer animation Integrated development environment Bridging (networking) Core dump File system output Resultant Descriptive statistics Physical system Library (computing)
Scripting language Computer file Interface (computing) Patch (Unix) Binary code Design by contract Cartesian coordinate system Computer programming Revision control Data management Enumerated type Phase transition Resultant Physical system Library (computing)
Functional programming Functional (mathematics) Computer file State of matter Code Function (mathematics) Regular graph Metadata Revision control Mathematics Operator (mathematics) File system Physical system Standard deviation Inheritance (object-oriented programming) Constructor (object-oriented programming) Sound effect Bit Directory service Variable (mathematics) Performance appraisal Category of being Data management Uniform resource locator Process (computing) Computer animation Integrated development environment Personal digital assistant Linearization output Resultant Library (computing)
Data management Functional (mathematics) Group action Computer animation Software Model theory output Resultant Reading (process) Hypothesis Formal language
Classical physics Building Mehrplatzsystem Source code Regular graph Software bug Formal language Revision control Atomic number Operator (mathematics) Information security Physical system Scripting language Standard deviation Key (cryptography) Expression Binary code Model theory Data storage device Type theory Cache (computing) Data management Computer animation Integrated development environment Problemorientierte Programmiersprache
Programming language Open source Projective plane Set (mathematics) Bit Formal language Revision control Data management Computer animation Integrated development environment Repository (publishing) Bus (computing) Quicksort Descriptive statistics Abstraction
Standard deviation Model theory Planning Bit Modulare Programmierung Mass Rule of inference Formal language Revision control Computer animation Integrated development environment Repository (publishing) Abstraction Physical system
Web page Functional programming Slide rule Functional (mathematics) Run time (program lifecycle phase) Computer file View (database) Patch (Unix) Set (mathematics) Branch (computer science) Function (mathematics) Mass Open set Mereology Formal language Revision control Derivation (linguistics) Mathematics Linker (computing) Traffic reporting Metropolitan area network Exception handling Matching (graph theory) Electronic mailing list Sound effect Demoscene Compiler Message passing Arithmetic mean Process (computing) Computer animation Hash function Integrated development environment Algebraic closure Interpreter (computing) output Whiteboard
Web page Standard deviation Data management Computer animation Personal digital assistant Linker (computing) Binary code Data storage device Shared memory Mass Directory service
Scripting language Computer virus Revision control Data management Process (computing) Computer animation Personal digital assistant Linker (computing) Wrapper (data mining) Gene cluster Quicksort Library (computing)
Web page Functional (mathematics) Code Confidence interval Plotter Real number Source code Set (mathematics) Open set Revision control Derivation (linguistics) Component-based software engineering Operator (mathematics) Computing platform Physical system Personal area network Home page Graph (mathematics) Matching (graph theory) Key (cryptography) Model theory Expression Electronic mailing list Bit Special unitary group Line (geometry) Software maintenance Arithmetic mean Message passing Word Computer animation Integrated development environment Personal digital assistant output
Performance appraisal Scripting language Revision control Derivation (linguistics) Computer animation Personal digital assistant Multiplication sign Patch (Unix) Phase transition Bit Parameter (computer programming) Disk read-and-write head
Computer chess Slide rule Run time (program lifecycle phase) Euler angles Code Ferry Corsten Multiplication sign Source code Set (mathematics) Mass Open set Disk read-and-write head Rule of inference Public key certificate Event horizon Attribute grammar Twitter Power (physics) Revision control Derivation (linguistics) Latent heat Profil (magazine) Arrow of time Utility software Metropolitan area network Physical system God Joystick Standard deviation Key (cryptography) Weight Data storage device Bit Directory service Subgroup Message passing Arithmetic mean Data management Integrated development environment Personal digital assistant Software repository Mixed reality Pattern language Quicksort Writing Library (computing)
Module (mathematics) Group action Arm Computer file Fitness function Wave packet Mixture model Integrated development environment Natural number output Pattern language Address space Form (programming)
Default (computer science) Subject indexing Computer animation Root Projective plane Set (mathematics)
Data management Computer animation Machine vision Right angle Bit Data structure Mass Configuration management Declarative programming Power (physics) Spacetime Physical system
Covering space Service (economics) Observational study State of matter Consistency Multiplication sign Virtual machine Directory service Client (computing) Configuration management Complete metric space Measurement Category of being Data management Personal digital assistant Operating system Pattern language Computer-assisted translation Error message Physical system
Data management Kernel (computing) Process (computing) Computer animation State of matter Operating system Einbettung <Mathematik> output Bit Configuration management Complete metric space Physical system
Service (economics) Digital electronics Plotter Multiplication sign 1 (number) Coma Berenices Drop (liquid) Open set Public key certificate Front and back ends Revision control Root Natural number Authorization File system Data structure Proxy server Physical system Authentication Forcing (mathematics) Cartesian coordinate system Process (computing) Computer animation Integrated development environment Video game
Building State of matter Code Multiplication sign 1 (number) Set (mathematics) Function (mathematics) Mereology Subset Medical imaging Mathematics Cuboid Information security Physical system Stability theory Oracle Block (periodic table) Data storage device Complete metric space Tablet computer Message passing Arithmetic mean Data management Process (computing) Repository (publishing) Right angle Service (economics) Computer file Link (knot theory) Ultraviolet photoelectron spectroscopy Branch (computer science) Binary file Revision control Authorization Software testing Traffic reporting Proxy server Metropolitan area network Mathematical optimization Module (mathematics) Distribution (mathematics) Key (cryptography) Model theory Cartesian coordinate system Kernel (computing) Computer animation Integrated development environment Personal digital assistant Point cloud Natural language
Module (mathematics) Multiplication sign Instance (computer science) IP address Rule of inference Revision control Computer animation Integrated development environment Mixed reality Point cloud Local ring Computing platform Physical system
Functional programming Slide rule Distribution (mathematics) Multiplication Service (economics) Link (knot theory) Computer file Cone penetration test State of matter Multiplication sign Set (mathematics) Bit Cartesian coordinate system Formal language Product (business) Revision control Semiconductor memory Different (Kate Ryan album) Operator (mathematics) MiniDisc Right angle Determinant Physical system Spacetime
Laptop Ocean current Server (computing) Service (economics) INTEGRAL Java applet Code Image resolution Multiplication sign System administrator Source code Computer programming Number 2 (number) Revision control Medical imaging Semiconductor memory Operator (mathematics) Speicherbereinigung Data conversion Physical system Default (computer science) Pairwise comparison Standard deviation Distribution (mathematics) Linear regression Software developer Cellular automaton Binary code Bit Library catalog Cartesian coordinate system Benchmark Category of being Process (computing) Film editing Computer animation Integrated development environment Order (biology) Natural language Figurate number Game theory Library (computing)
Computer animation
but OK welcome to frost come and runs that's the talk today is about makes so as an attachment and minimization next uh and our approach to both package management and configuration management 1st a few words about myself I thought the easiest way would be to present negative page so I'm very active in the community cares commit cap
and was running the triphone communicate infrastructure with makes was of course and and working for Mayflower it's a smaller workshop based in Munich the we
already already using mixed and production the and that's why I'm here to spread the message also uh I'm probably using makes or West for about 2 and a half years and since about a a half a year I am contributed to mix us sort of commit excesses and I remember after project
so I'm kind of qualified to speak you so that's not the 1st thing I want to talk about today is package management and think about package management what are the typical features of a package manager so the basic thing a package manager bus is it codifies the package building process so if you have a bunch of code that you can run and that will guarantee that you package gets rid somehow that so that you have an output runnable binary a script or a library that you can use in your system the other thing is it creates a package that can be distributed across multiple systems installed and uninstalled it matches the whole package life cycle so it also takes care of upgrades and downgrades install uninstall it's and and it maintains even on local package re-poll but know which packages are available for installing and which packages are installed all you can maintain a whole package repo bail can fetch packages from remote destinations also a package
manager to big only ensures that the the package integrity so it's guarded by the cryptographic hash the hash sums and its guarantees the authenticity of intensity of the package that means that you can be sure that the package comes from a trusted source like the the that of repose and you can be sure that that should be trusted the other thing is version and dependency management so a package manager usually has a concept of of the of a version of a package that you can use tool a pin functionality or a specific and compatibility version to a package but it also takes care of dependencies so if 1 package depends on other package for example a library this library has also to be installed the so when we look at typical package managers today therefore wrote a classic procedural approach the so you get then the package instructions and the meter that also the instructions how to but the package and some data
that are around it like what version that's the whole bridge after project was the description of the package and other things this is 1 of the inputs the other input is the environment you build the package and this is typically a standard Unix prizes them but you have something that can libraries or other files that are necessary for the bid that those this both inputs you invoke the belief system uh that the package for you this systems typically are of some things like autotools or make fires all he make or an anguished specific us nite the and and origin or I or that or a set of tools for for Python Win about that and this package voting process results in an output that is then
placed in the file system when it's placed in the file system you can access it all the standard locations that over defined now the problem here is that these uh these the and states of the packaged food processor and you install process results in a new state of you who advises them that is and then used again to but other of so the problem here is that you don't know the state of your prizes them and you can be sure what's in store all what about and so if you don't if you if you rely on the file system state your core and the in so that's a big problem because the better results the end results depend on the inherited state of the environment urine and the package and started serves modifies the state which sounds kind of the so this is this is the moment where but you have to be good but the fact moments like you compile or run a package on 1 machine but it doesn't work on the other machine and you don't know why another 2 but the effect
is you install a new packages but the but the package manager face somehow for example fired that's to be installed already exists on the system the package manager phase at the result is that the system is is enough and find stable you don't know what kind of files of the package are often stored
1 not installed the and maybe it is broken maybe advanced but you can't be sure because most of the contractions don't have eroded future the the other thing is if he opted libraries libraries on the updates tend to change the Application Binary Interface or API and then all independent packages broken so for example if you if you compile enumeration of all messes and the new version of Moses and has has another application binary interface you can't you was precompiled programs that depend on the old ABI Bush no not a thing is if you have a new user and we'll Linux Unix user and you just want to monkey patch some some flight in a in a in in a package for example some Python script is inspired just
modifies it and unpackaged upgrades it gets a well written so it's not we desire so what I told before as we will going be doing purely functional stuff but what does purely functioning mean it comes from functional programming where the concept is that they have functions that are all based to the same result if the same inputs that means all input for a function that could change the output are always defined you don't have some kind of global state of global variables like in see for example and that can be that you don't know about and it can it can reason about the change the output another property is that the evaluation of the results itself does not cause any side effect that means that if you run the function it doesn't change any state outside of the function so it doesn't inherit state from the environment and it also doesn't change state all of the all set environment off hold function that's a purely function as a linear function of code a so if you if you apply this to the to the package manager package for the process you have a state this solution that means that
you don't place your the outputs in the standards UNIX file system but you place it in a way defined prefix here it's called upon upriver to just a variable that could change but it's not incestuous it's some the so you only depend on depend constructions and metadata and these package instructor and the metadata so in this case the mother that also contains all dependencies really ordered pairs only that they define the output and the new prefix directory the nice properties about this is that is reproducible all the dependencies are well defined become we build environment is well defined the whole operation is atomic because you don't modify stated in your running sizes them a little new you'll new prefix parents start everything and it's isolated from the other environment for a for your regular system environment was is conflict-free because for example if you install a tool versions of a library and the old libraries tend to have the same the same file Westernism locations and it a conflict because the those tools those packages since jettisoned fires that are possibly different and it's immutable because but you shouldn't change the prefix because the prefixes ratified by the bit inputs so you shouldn't change it and it's and thus it's immutable so this that makes comes into play
next as a purely functional
package manager so ways and it's the start of the PhD thesis of localized around so that's guy of the could idea and that's the PhD thesis is quoted purely functional deployment model and indeed the PhD thesis a a tries to tool to er to create a new approach how do deep to deploy software reproducibility in a functional manner so if you want to read that its action nice read earning the so next in fossils that that their results only depend on of declared inputs if implemented in C + + and it uses up purely functional language to describe both the
packet and the dependencies so you have another kind of the ideas domain-specific language that specific goodly specifically tailored for package building for package management the the language is very easily evaluated that means expressions are only and weighted when they're needed and could typed like regular script language so you have you don't have to define types for every variable you use it's that the pipe is always the that so what I forgot to mention that if something is unclear please yeah let me and and tell me that you don't didn't understand something it's very important that you understand most of the things I see do you have any further questions please pass them off to the bugs the OK so the key features of next but it has an immutable package Store so everything you instead of next is immutable it's read only you
can't modify its but it's features atomic upgrades and Rolodex for every operation that performs it ensures that the bid environment you building in is isolated from the rest of your system the it also features to shed environments male can go into an new environment the only specific packages are available the like for example the development environment the it's wrong and 1 standard plastic systems that include not use these and can always x the it has support for my the blue versions of the same package it also supports multiuser package management that means if you have rushed symbolic system every was on the system can infer packages and is not a security risk those packages the was in stars are only available for the user the the the and has a classic source binary model you can choose to build everything from source but also binary caches are available from the exhaust spoken to the be on binary keyphrase if you like yeah the so far makes itself was
that a package manager what you need is packages package that package descriptions how build packages that span the speaker cheese that 1st that
that set for next that's available as temp repository and as I've said the next language is the this is a general purpose programming language you can do basically everything with that but if you want and thus it's it's maintained on gets there can do pull requests and stuff just like every other open source project the it abstractions because makes it says it's very very stupid but that's 1 thing and 1 thing bad that is building packages and managing temperatures so in this next because used re-poll you have not of abstractions for like fetching sources from from gets from a career and top over FTP away GDP whatever uh even from from a weird sort of version control systems like bus or or or docs on something like that it's we just as the bit environment so that you can use as an
abstraction to the standard next concept of or package food you get a lot of things so free for example the Senate bid environments detects if the package is using the model to was seen make this a Python package it if it's a really package and act accordingly and if it doesn't detect something you can always override every aspect of the package but if desired but the is that standard software packaging is is is very easy it's basically only the the a few steps that you need to provide that the package him at the version that was lost and that the but I but right now we have over 10 thousand packages available and this includes for example has packages will be there we import the whole package so every has the package available in the span of cheap is available on meex so as it doesn't get for Python be you have to do with the uh manually but then a right now but it's also a plans to import every every package from every language specific softer repository that was started as all them or and and also this package that can be used for other Unix systems and all and so for example you can use next on always X instead of home rule it's actually build and humble the of course it so how let's get back to that let's get I think about it a bit deeper hallways purity achieved in makes
us and what you see here is that by prefix II I mentioned about the this I take for example the old suspects package that all masses age we get a prefix that it's local the installation makes snowstorm
that part is kind of hard coded and after that comes a hash and the name of the package and the Russians so the interesting thing about this is the hash the Hessian is computed over all although dependencies that our uh that an old missus page that added the decay of world masses which um and the package from of old message itself so for example if I change 1 character in the package food of all messes stage this hash would change if I change the pack of reporters of our of of a package that the pope edge depends on this hash will change an old messes which will get rebates so this is basically the output of a pure function it only depends on the input we give them with all the desired effects and the hash if the inputs are the same the hash won't change how does makes the chief that beggar sets of front language so you don't have like Python scripting and there there could import some of the some my view is that do crazy stuff and advises them no it's a function language you can do all input output no way but you don't have side effects the other thing is the package because a running change should environment there is no net available but she Bangs so their minds the priors London shows that the denotes the interpreter or patch so if you have a transcript that has as Japan open badge but we did we would need to mix or hash Spanish and so on the the next hour is mounted read-only so you can't modify it and to winning has been cut has to be patched for example to was like compiler or the linker don't know about this prefixing stuff they needed patching to support that this is the magic is happening behind the scenes the the and that in any job if a lot of the world that's the next slide if you think meaning of course there's a exception and this is called fixed all put derivation but this is a special kind of package uh and it's it's quite derivation because has to be function that has to be complicated so there's a factual function that fetches around your and and the output of this function is a up all of they had the your the file in the UI is safe so you think about but how can this purely can can this be purely functional so 6 of a derivation means the next and you have do provide a hash of the output because you know it beforehand so you have to download the open B is the binary where you'll open be is the top border so asked how boys before compute the hash of that and then provided this very mixed and knows that before downloading the package what's the output Paul will be so this is the way to specify if the hash doesn't match you have another version of the top board it doesn't work is an exception of of this of this of this pure functional cold but you got it better cryptographic hash so we have kind of such a list of the ordered that abstractions for like fetch from the top fetch fetched from get that from stretch from get that everything just like fashion become takes the owner the rebuilt and the revision of course other provide the text it's text in they're all branches if you like and it just looks at this so as as 4 enter derivations we know the output and that's why we can Hessian before and then we know we get the same output again so that these there is a graph of depend this problem as h this actually generated by next awards you can just get on the GraphVis Pudsey outputs and it can render others but if you if you look at the
old man's age closure Closure means all the packages that I will only run time dependencies that are needed to
Ronald masses H you get this these are
all the packages in the next hour that are needed for the if there were no mismatches in so if you take a look at the store up all of it said for
example messes age you have your standard of prefix in but it would be in there she was or is that when the rectory
and even if it is you actually have directory and you have a share directory with all our In this case men pages so sorry to store up and these are other managers for example the the
so you think up now thing about the fact how can how can this work and so for our standards executable you have binaries a the linker has been changed what other
the linking process has been changed to but
the 2 a fixed Paul so we have to find libraries so long In the normal case the output of and he would just say for example the exact book is all about 1 and the linker we try to find the exact but as folder about 1 in where that no 1 library pofs in this case we just don't care about it you don't want to and they use the search feature we just wanted to 1 specific version that is in the next or but the same work uh applies to all the other programs like by all top by all top is a python executable of no sorry is a Python script of clusters that is executable so the mixed where alone makes the package manager generates wrappers scripts automatically for it so for example by all talk need some Python packages sold the Python path is set accordingly sort of the packages that you are available for example it needs to have and courses and other virus on the so the Paul will be extended that's the magic behind the so let's take a look
at the real world example hallways Altman's age packaged in exhaust that the whole is called for all message that of meditation looks like this so i'm quickly going going over what do you call components are about and the package food but it is by no means uh how to how to write mixed cold presidency it's kind of it it kind of that the graph get it take the grasp of it how how it it should work so the 1st line is actually a function definition uh definition of anonymous function that's the colon operator here it takes these of these dependencies as input so it in their their system environment there's the French function there's composed of like disease the open Moses as the added package confident pen and these are available later in approach then we make a derivation in this case a major special derivation there its the repr function of a derivation from the start environment so this is what I'm talking about what I was talking about this is that the match that's coming from the Sun environment that automatically detects a package of how to build packages but then you specify the name the version of the package is the uh the source this system of use for we have to find the source you have seen that code before the then the bit imports of the actually packages that will be available than this there were ation is the so this is the list of packages that available as you can see it is not the same as that is on the top because on the top just the packages that are available in the scope of the of the of the next expression building the package so you have to manually say this has to be in the built environment the the and then have ad and stuff like you can change the configuration that if you do is model to words in this case some things all written as if Pan plots that available then it just get it with all PEM uh other stuff that the inferred targets this is basically this standard that although 2 was a workflow to answer packages there's configure make make install but in the case of old messes page you don't want to use making stars because that installed also generates but SSH um host keys and you don't want to pre-generate Hall at it and distribute so Altman's edge has a special target in no keys but you have to specify because mixed doesn't know about this this except target that specific to open age a
sorry and and ask that demi they all the other stuff for example defined the homepage what license this package is there are available on what platforms and wrote the maintenance of so this is basically what it looks about word word looks like and I think it's kind of easier understandable with little about the of yeah the sorry no the how many you the long sum of OK and you can so the the questions yes yes so the question is I hold you specify or how how the specified that can is optional but the other inputs the other dependencies or not so basically an ever dependency on the top sorry going back to the slope of all of those things the other packages on top are packages that will be available in the scope of the bit but all of those packages could be nice so it it could be that this these packages are overridden but they are not available and in that case we can we can check if they are not and then we can do something about it so for example it could be that the added is not available but that's not a problem but because openness is age and that case also works with out the edit but because the sets
here that we want to build with the edits if the planet Earth a yes but it has to be available because in that it is not amenable to configure script with the so you will get it we get a fair and to act and cult they dependencies in a way that the package fared will fail if you want to least you if you want them to be available in the village or we this what earlier in the day so it is actually makes won't let the packaged food when because they configure think a script this kind of thing configured to you to added that but method available at the phase so in that case it's OK you to to not have it added because if encoded that you want to have that it's but in a package that the so it's a bit of a head and I agree that the thing is I shortened that definition a little bit because uh and it doesn't custom packages customs for custom patches in the original derivation but you have purchased for G is as uh API or something and other stuff that was just too confusing example 0 0 all that is usually yeah so the 1 is yeah you want to can at assertions so uh there uh mixed with fate at evaluation time if a an argument has a special value OK just currently there so that I could spot specified versions but in this case I'm referring to add the cold so if have the p so the question was uh can can I specify specific versions so in that case
I'm referring to and other derivations that are just written like this so for example the disease the uh this that the package is just written like this and has a hard coded version there but if you so it just it's uh 1 version of this package will be available In the standard case so if you if you increase the version of that the book Moses as of Moses as we're going to remove that Russian but and it's just another fight but this is defined that's
you can override stuff then unfortunately I don't have slides for that but you basically you could say and I take the for example the the definition of old method as as edge but I change the source tribute and the version at tribute and then the same at the same time uh other instructions will apply but you just have to change the Russian it's possible and both versions of that package can live in the same spot on the same system it just it's just the if you depend on a specific region of possible for example for a mass is added the do have more versions available for example we have 2 versions of all I 1 0 1 and 1 0 2 so actually I could write old man's head of misses a uh underscore 1 honest 1 0 and a score 1 they get there other 1 1 version and I can specify Old Moses as a 1 0 to look at the other version but it depends on the version available in the next achieves recall of course the it depends on the version that is available on and then in the next decade she's recall so interconnected subgroup over all the packages in the span but of course you can override everything if you want but the problem actually I had a few people that have a local configuration but it just overwrites some and just use them and and and and continue to use the standard data sets if no problem because it's just regular it's just cos you can and can't over attributes that is is is basically this here is just an attitude that that's called exit Chester key-value pair they just can can change the values of the of the keys yeah and of so it is the these all yes there are dependencies will get instant automatically if you instead of matters H ordered on run time dependencies these other bits time tendencies of runtime dependencies that are in fact of the debate will be also installed or not the as um these won't be available in the system so for example the old man's out package the also a provides the library but also provide the is a binary that which you can call in and do stuff like craters CAD create some certificates of stuff about if you instead of missus H on your system the old missile utility won't be available because it will only be available for at this age but not for you if you want to have a new system if the specified that he was called misstated India a new system of physical the so that you can use the aim of that yet so it is unavailable I did not get it it is people is yes it is against god's will be downloaded that so the question was if it and it is not that is none other it being be installed it will be downloaded and put into the next door and it will be available In this case only 4 for open as age because of message dependent on that of course if other packages depending on it uh this version of course be was but by the other packages also this yeah in is the the you which for yes why was the so so as OK the so all and work as sort of the question is a why would edit be installed append wouldn't pan will also be installed if it were if it is available and then expected his repo great so if it if if Obama's edge is filled with a pattern it will be a aware of that would it will be a dependency of open this age and would be downloaded and installed in a store of course but it is not available at Eduation time that won't be installed because of masses age the cold in open messes age that depends on PAM be built so it will be needed that's that's that's the neck here for a considerable it triggers thing In this on yeah by the package and that is basically just a bit recall so they could think about a cannot depend on a specific commits a campaign you always system on a specific committee of the recall because of the quiz that you don't have things like things like repos to be as specific questions are installed her chest if the the definitions In the Repo different that that occur the can inspect physically this that and the package manager because it event weights for the code that resides in the active set but I have that's continue war discussion was a bit too much so on it on and explosive heads the concept of profits and environments and active attitude before so although there a rule arrows or the the meanings and the rat erodes basically only inherited by the POV so basically the prof says the mix profile should be in the past but the path the next profile in your home directory is linked to a profile that is bludgeoned and so you can go back to an Old profile and in this profile has an environment that all your your Twitter for example the version for the 2 of the the food environment has mentioned that but the version of what you 3 of the people environment has also Firefox in so as I cannot speeded up a little bit you have 0 with this concept you have something like Nick which is just like what you end up under our RBM but for all packages that works just the same the NPM Karbala that German gold of your aspect chess if no but for mono packages although that the mean power for your front and dependencies we just use and these packages will be available in your environment so for example I have
uh in my standard environment I don't have Python installed patterns says no command found by invoking it show this but P for back action will be available as a python I've been dropped into a new mixtures that have and will be available the same bookstore Python modules so I tried to import to repress module there's 1 available in Python 2 way the forms so it says the modules are no module named address is available by accident it shows I saw the new nature of Python and the requests Python package available and if I do a input tests it doesn't fit because now it's available in the background the same magic is happening the Python pockets patched if the requests prefix and the repressed what is available and you can
also this must imperatively who can also define a a configuration file to a to specify on the train arm so in this example and doing the same just
enough in enough I do can drop in the root of your of your of your project and you can just invoke Nick Sheridan and we're available there's also a special that best pure very removed by other dependencies so for example if I have um like rule be available in the all on the outside if they're going to help you in the Chair only the defined dependences will be available but it will be for example is available outside won't be available yes so
the 1 of the there was a lot of it does not and so on so all in some so yes all the good and solid so that the request body would be over all that is based this yes except just isn't that much and for Python basically but for really for all packages are available and then decade sets in where it is shown to go In this work we index the the so can it be done for click checks and text yeah sure for example if an project does this using NPM us something I just open in the chamber and and some default like of like grant
of something or power available and I just can't do that can make the goal is to go out and they're not available anymore but mind you invested in the next or so it takes up space but mixes accomplished that feature to to delete the stop after another reference anymore for all of these things so is this structure so the question was what about port forwarding this is just a package management feature so it's just about packages but popular thing is the rights you can have the right keywords now let's get the configuration management so I won't
go into details about configuration management but traditional configuration management is just change scripting it's just a comparative the declaration of boys what of what will be done 1 after another for example shatters like that and it's a bit was also basically our Chlorophytes the transcript of dependencies so other systems tradition or the vision of systems like puppets say they are declarative and indeed they are declarative so you declare that a package like all masses as has to be installed all you declare a
username errors a specific UID in the home directory has to be present and property to ensure that these are present but the problem is it only mutates this data is already available on your target machine so that means the and the cat aspects of your whole system for example if you deploy this manifest on 1 0 1 2 or dead in machine on other aspects of the target machine undefined because you don't know about them because don't manage them so in that case you deployed to to at the been machine these tools and basically these 2 commands you be client but misses edge forget this study was very good added but nothing more so there could be other users on that there could be other packages on there that you don't know about and you don't specify it and then it could be that you at another another package or another service that you're running on their depends on other pick is not defined and developed and 1 machine but doesn't that another machine because you have defined all this state you know you have to be there you need so traditional comic management converges to a target state so that the bigger puppet pattern has this
property right again and again and again and after the 1st run that has the state it converges to a target state is eventually consistent the so it's just I didn't I I have 5 years of cover the experience and after 5 years of property I thought I need something else so this is the same as those in time things a I'm still recovering from the states of the you know and so but but purely configuration measure is all about it's about rebuilding the complete target state so if you define a state in a purely functional configuration management system you build a new state where all your state is defined the so you have a defined consistency for all aspects of the operating system that's what you want to have and if you think back to the to the this
graphic it's just this is a all
over again the same problems and package management we also have a configuration management because all configuration can be abstracted as a package configuration also has dependencies configurations a bit process configuration as inputs that for example of what the embedding of immigration 5 you have to you have to get in there somehow so what we have to do is eliminate the states because everything is so freaking state problem so far what about you just techniques and Britain like the Linux kernel an initial or and this a bootloader and in a system some configuration files laughter packages and we get a complete operating system and that this next so it makes so us the 1st thing you do this provides a configuration and this configuration
could look like something like this for example you decide that you put low-noise drop and crop has to be installed on death as CA you have a root file system based on death as the 1 your host name of the system webserver you have fireball valley and all plots so the port ATM plot for for the open we have some packages in new environment like age top or M an ending of services these are abstractions over over the configuration and services like services as an annuity but in its system that will be started and configured accordingly so for example we enable the openers edge service because you want to promote early ones what access to machine and enable like the engine X service and you find that that that you want a natural host that's called a job the example . com the we also define that the force sensors and search like this all the time that generates an engine next conflict that has a redirect from plain text which GPS educate at an hsts header for example and also with the name a are and when I do at yes I want to have an atom trap certificate no problem everything will be generated and fetched from that circuit of medically the so this that is that's encryptor certificate after authorization authentication and instructed on the honor system and then the specific configuration of the structure most of you have a proxy through a back end whereas some
application you are running is available that will be available under this the host overaged PBS it could look like this so originally I had of our life them all we i n funding so as I said I'd skip it for now the if you have time in the end I can do it so what the unique features of makes us you have because make so as is in the back and just using makes
you all the basic features of makes the package manager available in Newark distribution you have reliable operates at append to specific gets comets of configuration and the next speaker choose a people and this state is immutable and it is always reproducible because everything is available there so everything like the kernel version what kind of models are available to know what film that is so has to be available to go for in the the config files like it is you have faster or it is the old man's age conflict is part of a as a package the store and you have a comic upgrades the cool thing is that the out of the those which process from 1 unexpressed configuration to another is just ones and link it's once the meaning that would get modified and your system is a new system a new version of the system so the output is truly atomic and with that of course if the old versions of available so you can't just Eurodac that's also atomic the also you have to make future which was the and of course and and you can the take the same configuration and deployed that configuration on my multiple but tablets for example a QE move I'm or bunch of books on and a and I am as an oracle with Cloud engine abilities Llamatron would always be sick on that would image or container top right exceed or darker images mixtures doesn't care that there the basic building blocks are embedded Linux because she's the poem and takes care of everything that is needed to build those target environments but that of course is just a small a small subset of was what is available yes the and the the the of the you have also the following it all at all the will of air so this is what we were yes so if you had a question was if you have your configuration the picture repository and and you will use that stability a system would get the same system every time you build that's correct so this this is this this is the the thing you want and that helps infrastructure as code and this and this time actually the complete infrastructure on aspects of the state of infrastructure as cold this the tolerance was right security and yes it's before the the uh um before the new at um version of the configuration is applied some that will be changed will be stopped and after that there that the switch to a new system that would be restarted so for example if I didn't change the optimization service it won't get me started by that even if I did change a specific configuration of them in the mother's age like for example a change so that you can um the can look in the past what is ruled that open is edge would be restarted of course also if a version of of message changes the yes so what is it the initial so they were not in this the of a report of to go or yes next to us that that is the concept of State versions so sorry but what about the state of applications like for example databases what about those states uh because they can easily be rolled back so there the answer to that is next doesn't care what applications state it just cares about the package and co configurations they so for example if the problem problem of post-stressed because PostgreSQL changes its binary format um with every Russian so I have to manually run peachy upgrades make doesn't handle this the but makes less has the Contadora state version so if you are a stable release if a state version of a stable release and PostgreSQL born to be upgraded by itself and if you're still on the always stayed version so that if you feel if you're the running a post press set and 9 . 4 and in the new worsening of 9 . 5 on the upgrade automatically as in many ways that you have to take that other orchestration to is the 1 that makes a solution for that later this by it's not in the base system the but but and the last thing there about 500 service modules that means about 500 services are available for you to just Service stop name but the native right shoe these are stuff like ElasticSearch it's a proxy uh a a few Greylock you the package a lot of packages that you will need for infrastructure are already available as services they can easily install and configure the that 10 minutes so and the other clothing as the testing from a governor blue contested every every so is that you use is also something if you have an exam running you wanted to test and it's evidence also to that best policy our on deviance the output of QA 0 and you can do that of course is that so the nick of Hollis mixes organized as a this once they were released every half a year the next 1 will be 16 . 9 the court is also in the next speaker she's re-poll uh this is then the branch uh that's based on that histories and that it must have expressed during Mory's like OJ it is a small but growing community there about 900 contributors and 90 thousand commits then we have around 13 thousand pull requests and 4 thousand issues on this report the so inadequate stuff this also at deployment would of it it's quite ups you can specify what configuration you want like for example we have all
meditation on the 1 hand and genetics and authorize key for ruled the and you cannot find any that where we define better deployed In this case I chose Russia box and if I create the
deployment and stops and I can't apply it and it will be deployed locally on my local budget books instance but the time environment can also be AWS Global Cloud engine yeah as a random as his age holes that runs makes so as that you just put in the the IP address so that it can also be stuff like it's not as a mix of pets no module that automatically restarts had no rules us and and the rest system instead of the exhaust on it and provisions your conflict on its automatic any there
thank you good stuff like that we also have up this platform it's quite hydride knows about next it knows how the but didn't
expect it knows about the the application on and that would basically just work and so you can also do we like
the look and and substituting considered the so seriously y x that protect me against me makes exposes the things I forget next sets middle things not that at times consistently and next the
1 language to rule them all so what are the problems this as the beginning of is a little bit difficult to get in because it's basically functional programming and most people got accustomed to functional programming that protects on possible like for example you can modify the casinos you can't modify it is resolved cone of these out links to the next slide that I would only their monitored only you can modify it the Cretaceous unfortunately begin a friendly and you know it you can have multiple versions of different packages and you up system so you you pay the flexibility of the disk space but there's no mention of application state but you can do with this makes ops and also some stuff but nice right now that for example private files are always who would double in the next door next or the next door is by definition right we that's not bring us 3rd services could be 100 bit more than and it would be cool if next would be statically typed uh some spin memory improvements could be taking also there's still work on going on vinyl determinism but others diffusion that that have the same problem but next very hard and I would like to have PDP at distribution of the binary packages because we can guarantee that these are the same the looking at things like a kid as for that useful resources verified documentation and show you you was Nixon production I say we do other companies store and even some of our customers to so thanks that was the 1st thank you so 4 minutes for questions I think subtract
this is of the all know that
I will of you there are no so the question is I wanna turn and not tonight madman audio-only old packages no because next has garbage collection that means that all packages that are not linked from other packages with the garbage collected and removed if they are not needed anymore because it's all of what was it follows it this was an all time or year the and I will if that the leaders of realizations of so what about the question was what about packages that link against old versions so this tho doesn't have Linux because you always built from source basically you always paired with the current dependencies of the current versions library versions that this ERM softer was the run on of course the package also the binary programs like for example Oracle Java or like some games that are available and they will get patched the was the current versions or old versus new depends accordingly so it that the only the versions you need will be linked physical away be installed but by the forward you always get the current version is avoided Linux leakage is an old versions will be removed this the of this all of that only these performance the other way so that it will rise to and this is the only system so the question is uh is there some like benchmarks and how long less deployed takes compared or are applied application of our integration takes in comparison to puppets they are ones but as a habit property was that I can say with these acts and if you have catalog times of about 2 minutes they could Valentin it's code who didn't know it in seconds the but it will take about 1 week of memory or sorry the thinking that that is reminiscent of that the you we the so far the World Wide or it can so the question is can mix the was instead of talk on the answer is yes it can that but you can also use next to darker images so if you motorcar infrastructure like for example could when it's something by you build a scaling the difficult when it's all or some talker and on and you you are you up onto that we want to use it because you know it it's no problem we contrasted darker images based on next configurations and get the same nice properties you get you get the reproducibility like for example if you do in the static on Friday have this the standard thing you you derive from a from a from a distribution I want to and the 1st thing in every in every butterfly that's our APT get update and to get up and then the facts because you don't know what version of the packages you will have an image it makes you know you you compared to get commit they could do it because you this you they go very well together I say but I think that was a bit higher because of the problems the operators is that it's a it's a it's a it's 0 so if you use it like like a standard development environment as a developer basically you you're not used to system administration you don't have things like you don't be alarmed aware of like updates and stuff you would develop on just the new container you just don't care about the running if it is secure something so you you need to have some some kind of guarantee and then in in the in the whole process and some kind of operations knowledge that developers don't have and back orders geared to develop as and that's the problem but it's it's it's no problem for operations because operations people also know how to run the cut property and on as all to in sorry which that closes featuring in working hours that also has the feature to conversion numbers that's correct but there's an explicit it's the thing you have to pull for each package with the next you have it for all packages by default the then that that yeah what so you could take it in your cells and how but thank what excellent coffers but also Mueller text so the revolt and so examined how note that conflict is independent from the from the service so basically the config depends on on this phone and genetics but and she thinks that depend on the conflict not so of course and expanded would this was regression this you can use the many people was so region of the world so of money we are on so the question is is also geared towards desktop yes it is actually the 1st thing I did was make OS is installing it on my laptop it has been just like KDD known if you like it I have I free on there or you can go figure your X server like the the the the the the monitor resolution and all aspects of Unix of our just let you configure engine expensive
OK so thank you you