Merken

Your Distro is a Scheme Library

Zitierlink des Filmsegments
Embed Code

Automatisierte Medienanalyse

Beta
Erkannte Entitäten
Sprachtranskript
this talk maybe of critical thank the world for coming uh it's really nice to see so many people in this room I really appreciate it i so basically since this is the guy in the room I thought I would show a little bit of skin color this time so all you had the opportunity was we coupled to learn a bit about the user interface of geeks and what they would like to show you is what makes a different you know you can you can always use the from the command line that's that's what we do most of the time or from the max which is very important have but but there's a lottery threads you can use geeks from scheme which is sort of like a command line in the and i it allows you to do more things than you would usually be able to do with all the other tools right welcome that is so OK I think you Chris is going to laugh at me with this slide I'm really sorry that could play that you've seen this phrase before we claiming that rebuilding the life of this world and it's not just because so at a whole class OK came in there that's I mean it's it's all about being able to actually hacked the thing and understand how it works and be able to you know the field with its and get into the internals and we really want to have to blur the distinction between users and developers rights I mean you can always at the command line when you use geeks and you go with the do quite a lot of standard it is very nice and I hold not too hard to to actually dive into the scheme interfaces for he's like Ricardo show this an example of how you can customize a package definition right I mean by his definition themselves are like it would could be xmn right it's just it's purely declarative and then you can stop modifying it and you you're actually writing scheme called hopefully without noticing and that that the whole idea behind its so it all goes back to room to what Stalin was attempting to do is you expect in the day which is that you know the Lexus programmable and the idea is that people would stop programming without noticing how under philly her trying to do so yeah I'm going to show up a little bit of that so there was told by Markowitz leader planet last year I think uh whereas mentioning what user freedom is really 2 things we have accessible that appeared that you're able to actually have the software and and to use it in any way there's in which is the uh the 3rd and 4th freedom that you will be able to distant to modify the software to do what you want physically and this is empowerment as Michael was saying we're doing pretty good his access I mean everyone is using free software maybe not everyone but a lot of people are using free software unfortunately sometimes without knowing that we are doing so great that empowerment because you it remains hard to modify most pieces of software right and so links in a way is is a humble take along this parts returning to to make it easier to to get into the softer of actually modified so you can you can have practical freedom you can actually you know no was going on and what heights so so I think as a to get some sort of a guided tour of what's inside the extensions of API so we could start by looking at this um commands and ask ourselves was going on wednesday these so obvious as you've seen before this command is supposed to install the maxim value in a single transaction right so what's going on so so my goal here is to allow you to tune in to get a feel of of what the interfaces are what they allow you to do so and if you're a seasoned scheme for programmer maybe to to give you air to allow you to go further so the 1st thing so that don't hesitate to interrupt me when making the wasn't and examples yeah we'll see how it goes so 1st thing you you might want to be able to do when it when you look at this thing is how the you actually exists packages themselves and how you look at the package so I should have mentioned before but that's the way it all started and in the way the geek started is that I was a mix user before on the next developer and there is really happy was snakes because it's really does a great job I mean that's how functional package management of study right but it was a bit frustrated because as soon as I wanted to write a tool to feel this packages and stuff it was really hard and the reason for this is that makes uses an external domain-specific language so at what point for instance I wanted to write so in the data right the tool that automatically update recipes for bean packages inside makes but to do that had to to use the Knicks exporter which would explore the next uh syntax tree to XML right so all the distribution to XML and then to present XML to just extract a bunch of packages so that I could actually do that's that's right so so that's pretty tedious and inefficient and everything so I thought wow it would be great if if we could just go directly to them that so let me give an example
I so I'm starting a ripple in your edits so um so the 1st thing I can do from there is is just imports so in part to a couple of modules and I'm just saying I will use these 2 modules is so libraries this libraries are actually geeks on the associated distributions right so we have you know just a normal scheme library British school so for instance from I can use this module the and fate of coroutines so I asked for the value of it is it's in just a plain skew variable defined in a new package is based on I see that have a package objects and that's it you know nothing special OK so obviously I can I can curry the package discourages the package she is the use of what's its name in all that things fine but I can also obviously look at the package by a name like it can do the what's the package corresponding to the specifications I'm getting a package objects and this is what I would type on the command line rights that's how all the command line translates specifications to actual package objects and they can say you know like you guys 1 . 8 up to here so working was you get the idea I have um so obvious they can do things like its rate of of the holiest of packages so we have a function which is called the full packages and you give its of we can reduce here it's below the screen but anyway we can give it um the procedure and an initial value and will construct a list of all the packages right so here it's sitting we have 3 thousand packages in the distribution of means some of where yeah thing disability which 1 is and OK so
with this in place begin already writes a bunch of pretty useful applications I mean we have like if you go to the geeks websites there's an HTML page that contains a list of all the packages and it just it just really implemented just by using this helper functions right we can just you know browser list of packages generate excitement from its own and rebelled and we have also several user interface interfaces so we have the command line interface which you've seen before we have a new max interface and we have a web-based user interface which is still under development that already just because it's it's just the scheme library you can already right all these things which is pretty cool I think the question so far this so knowing it stood will the store so you've seen before or uh in Ricardo's presentation that everything that we believe is geek synsets Inconel store writing this special there rectory um all access to that story is mediated by a demon so what happens is we have scheme goods here which is like the geeks command for instance or my guide report and it has a bunch of libraries slowly and where they build something like when I geeks package that max and it actually needs to be in the power to double the max than that takes command here is going to talk to the to the demon and it's what can you build it for me or if it's already been just anyway uh but this led the finding is and if it needs to be in the then it's going to move love to launch whatever needs to be done to actually be the package that it's going to Turin configure make make install and so on right for you Max its dependencies but this is all being done by the demon itself on behalf of clients this so that we get isolation right so every package has been an isolated environment in CH fruit under a separate namespace separates radial source and so yeah that's that's how it from the demon itself or its arms as rules and we have our guys being written here so um from schema if we want to talk to the
demon when we 1st need to open the connection the all right so this is my connection to the building of and I can do and basically it um RPC so remote procedure calls to the dual to ask you to write the stuff that's 1 of the however if the yeah the particles so we in because
to to perform isolated bivalve even need to be able to make a CH world and to set up separate namespaces Linux namespaces and that kind of thing so yeah so far it has to do the yeah no because you need to the units would permission to do that and so we could use user namespace who was discussed before but it's it's still a bit influx in Linux like it's not terrorist security issues of all that so we're not there yet the yes so
so for example of the opposite that we have here is at fixed to store which says I will add a fight in the store of care and users do not have direct access to the store right exist so they have to rely on the didn't do it on their behalf right so what I can do is that they can set of K the moon OK can go there and this is making an RPC Remote Procedure Call for the dual and that the world as a result gives me the name of the fund which has just been created and if I open the file yeah it's just yeah created the 5 so so I'm going to go into the to the many artists is they can say I can thus be many is valid file in the store and it's going to tell me if its value the rats that canister stuff and yeah
so that that's basically that's 1 of the main ideas so fine but if free looking at what the gym and provides is very very low level so that the demon itself doesn't understand scheme at all right it doesn't know configure make make installed so at some point we have to translate from our nice high-level package definitions to something low level then in instruction that the Dominican under some actually perform so people that work what
it's pretty useful to use so this is uh a DAG that was generated music the geeks graph commands and it's showing that died the graph of package objects for cognitive so this this 1 is pretty nice simple graph chills really the relations between package objects and if you look carefully you probably wondering well something is missing here might many ones but it's How do we compiled all this stuff the right so we need the compiler needs the see when it's red a bunch of stuff right and so we can actually look a bit further down but there that allow a level abstraction in geeks it's called bags and in bags it's a bag is a bit like a package a except that we make you know all the inputs explicit right so here at the bottom we have just a C leaves C said referring to field and so and so forth under just making it an explicit here care but there is still something missing In put it while the same story again how do we combine these quiet so guess what I have here we can actually ask uh geeks to show also be implicit inputs of those base packages right and so at the bottom here we have a bunch of bookstore binaries which are produced because we have to start from something right so if you attended medalists talked this morning that's that's the that's the whole story we have to start from something and this is captured by gave it's here with um but is still key right when talking about boxes receipt of the skin side of things so we still not at the level of the demons and what to do and understand these derivations which are more level give instructions so it's just basically you give it an executable and a list of arguments and that's it that's all it can do for you right and so you should try to plot the you know derivations it's needs to be here serve many models and so on so how do we get there well um so I have my spec ed share and I have my connection to the Neyman than I can say OK what the derivation for or correlatives it's looking to the human was computing the derivations sending it to the development of validates it's only get that as a result so this is a derivation objects and we see it to find here 1 is about the order in which represents a bit instructions and the other 1 is the results right so what this is telling us here is that we have the body derivation which out instructions and this is what we will get if we actually build is the relation solve if we look at the dog Yardley it's basically a text file that lists all the inputs of the build process everything that needs to be visible in the CH worldwide and somewhere here there's a call to the galley executable that will actually rose configure make make install that and then we can mess and even to actually build its if necessary the so this is 7 OK and it's here is going to be late trust me OK questions so edges so just to summarize
we have several levels of abstractions we have packages bags and derivation of and we also have all their high-level objects that can be compiled into the relations such as origins so if I
go to the so if I look at my correlatives definition it looks like there's no defiance of love bycatch and so on and there is this origin thing here which represents a source code and it's also something that can be compiled down through derivation right so the derivation for the origin is going to download well the it source world if OK 1 to finish
something a bit a bit funny think interesting so if you remember this picture you've probably noticed that there is guided pretty much everywhere except here so this is written in C + + this is a demon coming directly from slide using the same um demon and but we have scale here and skin there so the the the pattern right I mean we will be able from here to describe code that is going to be run there quite so how can we do that well the the
geeks has G expressions to do that so anyone familiar is came here with this was the fraction of people familiar with King of Qin most most of the of of so if you're from Harris Cayman list in general you you probably know that it's possible in used to have quoted data structure so I can say of the Colts and could year full let's say and this is this is an expression and I could that expression to a file and give the title of the ones listed friends and get your right of the problem for us in cases that's usually it's not just food right it's a long file and we don't want to write it by hand so we solution so the solution is J expressions let me give an example so instead of Buchwald here I'm going to use these harsh field thing OK but it's similar in spirit to block quote and you can say um Mw-at so let's let's say for instance that I want to hear I want assuming current use and so I can write something like this and this is so you can think of hashed field as Bhakral and hash dollar as unquote quote cover right and this is just producing a G expression which we'll which represents in all this so called the same increase orative and argument and output the 2nd argument so output is special argument so you know that current is a normal variable as we've seen before but output is not a variable defined here it's a special value which means this is the the output of the derivation talking about that so was different compared to quilt well if we go to the the if we look at the internals of G expressions when we can say we can Crary's the inputs are way the best we can Crary's the input so that expression of the as you can see the G expression embeds information about what interdependencies are found and that's that's how it works and then we can convert it to the I'm not going to talk about well that's to that but that's a topic for another day I can say OK these G expression and they want to convert its twin this expression and that's what I get of the result right so the the final has been automatically introduced inside the the G. expression so from there I can I can make a derivation a synergy to derivation of fools similar current output and all of a sudden going to talk about well that's that's OK so if a use g exclude derivation I'm getting as a result the derivation again and I can again having built I like this to and this is its and if a look at the results in the world it's you can see here it's it's really a simple as expected right so this is a low-level mechanism that we have to have but difficult multi-tier programming because we have scheme in different places and need to be able to describe scheme called which is running in a different process at a different point in time and referring to items in the store thanks phone any
questions OK so just very
briefly I'm going to say that this is going further obviously I will have time to do it but I this is going down to the level of
the operating system declarations so as an example of this is the operating system the correction for my machine and I can say there was my fault I can load it from here OK and they have an operating system here and again I can be my operating system ways I think it's called operating system to the regression is not operating system the original this is and again since currents evaluating the definition for my computer operating system and returning a derivation that contains everything flights from heels system service configuration the initial round is everything OK know him
this is it's all the questions so that the of the of the of the of the of the uh some of the no no no I wouldn't call it a success story in and that um yeah so so X is comparable to the next so it's like it's urgent and then we have dx is the which is comparable to McPherson in terms of functionality but obviously exposes is much more mature than is the and you know so there are differences could be that different approaches both technically and also in terms of goals like really strongly committed to supporting free sufferers makes less is much more lax in that respect so that different projects I would say that obviously was a lot in common this is the we use culture in I just have to do all of you use a lot of work and out of the we have to also use all of and and what is going on in the world I don't have a really good thank you and so you can a more of the world the what the rule of the form of a program on the environment to to the new or of of
the of the of the of the of the it idea is of the log of some kind of a there are sets so didn't talk much about each of these set but basically when using geeks is the you would you provide the specification of your operating system so that includes everything you know all the details here and 1 of the important parts is uh services system services so you have a services field and you just give me the list of service subjects and if you look at this particularly so this is this is 1 that we provided by default for people who want run like apex of sees the flavor of and rigid building a police right we've screen lockers units on the over so if you want to have 2 different present progress Creole services for instance you would just called uh I think it's cool calls gross but probably progress service basically of specifying different options so you would say this 1 is going to listen of this sport and this 1 is going to something that port and the whole it's going to generate configuration Phys command lines everything said that when you in it's just doing what you wanted to do it you can thank you
Distributionstheorie
Programmiergerät
Bit
Punkt
Texteditor
Extrempunkt
Klasse <Mathematik>
Snake <Bildverarbeitung>
Computer
Nummerung
Computeranimation
Netzwerktopologie
Datenmanagement
Geometrische Frustration
Prozess <Informatik>
Software
Nummernsystem
Unruh-Effekt
Mixed Reality
Thread
Maßerweiterung
Softwareentwickler
Schnittstelle
Beobachtungsstudie
Videospiel
Lineares Funktional
Benutzeroberfläche
Domänenspezifische Programmiersprache
Binder <Informatik>
Quick-Sort
Rechenschieber
Transaktionsverwaltung
Datenfeld
Rechter Winkel
Mereologie
Kantenfärbung
Instantiierung
Distributionstheorie
Extrempunkt
Browser
Web-Applikation
Kartesische Koordinaten
Anfangswertproblem
Kombinatorische Gruppentheorie
Homepage
Client
Koroutine
Datentyp
Nummernsystem
Programmbibliothek
Elektronischer Programmführer
Softwareentwickler
Speicher <Informatik>
Konfigurationsraum
Haar-Integral
Schnittstelle
Touchscreen
Leistung <Physik>
Trennungsaxiom
Umwandlungsenthalpie
Lineares Funktional
Namensraum
Benutzeroberfläche
Schiefe Wahrscheinlichkeitsverteilung
Dämon <Informatik>
Güte der Anpassung
Schlussregel
Mailing-Liste
Quellcode
Modul
Algorithmische Programmiersprache
Objekt <Kategorie>
Rechter Winkel
Mereologie
Ablöseblase
Bildschirmsymbol
Normalvektor
Dämon <Informatik>
Programmierumgebung
Verkehrsinformation
Instantiierung
Trennungsaxiom
Einfach zusammenhängender Raum
Bit
Namensraum
Einheit <Mathematik>
Computersicherheit
Dämon <Informatik>
Partikelsystem
Dämon <Informatik>
Algorithmische Programmiersprache
Computeranimation
Resultante
Metropolitan area network
Punkt
RPC
Rechter Winkel
Nummernsystem
Derivation <Algebra>
Vorlesung/Konferenz
Dämon <Informatik>
Elektronische Publikation
Speicher <Informatik>
Übergang
Sichtbarkeitsverfahren
Resultante
Bit
Prozess <Physik>
Quader
Gemeinsamer Speicher
Compiler
Derivation <Algebra>
Binärcode
Eins
Übergang
Graph
Informationsmodellierung
Gruppe <Mathematik>
Minimum
Softwareentwickler
Konfigurationsraum
Korrelationsfunktion
Bildauflösung
Einfach zusammenhängender Raum
Parametersystem
Graph
Abstraktionsebene
Gebäude <Mathematik>
Relativitätstheorie
Validität
Systemaufruf
Mailing-Liste
Elektronische Publikation
Ein-Ausgabe
Endlicher Graph
Objekt <Kategorie>
Datenfeld
Rechter Winkel
Ablöseblase
Ordnung <Mathematik>
Dämon <Informatik>
Zentrische Streckung
Bit
Dämon <Informatik>
Derivation <Algebra>
Quellcode
Codierung
Rechenschieber
Rechter Winkel
Mustersprache
Codierung
Dämon <Informatik>
Korrelationsfunktion
Data Mining
Resultante
Chipkarte
Domain <Netzwerk>
Subtraktion
Prozess <Physik>
Punkt
IRIS-T
Derivation <Algebra>
Eins
Metropolitan area network
Arithmetischer Ausdruck
Interrupt <Informatik>
Hash-Algorithmus
Nummernsystem
Vorlesung/Konferenz
Optimierung
Datenstruktur
Speicher <Informatik>
Funktion <Mathematik>
Kraftfahrzeugmechatroniker
Parametersystem
Bruchrechnung
Dämon <Informatik>
Strömungsrichtung
Mailing-Liste
Ähnlichkeitsgeometrie
Ein-Ausgabe
Elektronische Publikation
Datenfeld
Rechter Winkel
Bildschirmsymbol
Primzahlzwillinge
Information
Instantiierung
Derivation <Algebra>
Strömungsrichtung
Unrundheit
Computer
Physikalisches System
Arithmetisch-logische Einheit
Metropolitan area network
Virtuelle Maschine
Physikalisches System
Dienst <Informatik>
Netzbetriebssystem
Lineare Regression
Deklarative Programmiersprache
Konfigurationsraum
Gammafunktion
Subtraktion
Kombinatorische Gruppentheorie
Term
Bildschirmmaske
Einheit <Mathematik>
Arithmetische Folge
Netzbetriebssystem
Weitverkehrsnetz
Optimierung
Default
Konfigurationsraum
Gammafunktion
Touchscreen
Umwandlungsenthalpie
Lineares Funktional
Theoretische Physik
Gebäude <Mathematik>
Systemaufruf
Mailing-Liste
Schlussregel
Physikalisches System
Konfiguration <Informatik>
Dienst <Informatik>
Generator <Informatik>
Datenfeld
Menge
Rechter Winkel
Mereologie
Projektive Ebene
Programmierumgebung
Instantiierung
Speicherabzug
Computeranimation

Metadaten

Formale Metadaten

Titel Your Distro is a Scheme Library
Untertitel Hacking your way through the GNU Guix API
Serientitel FOSDEM 2016
Teil 106
Anzahl der Teile 110
Autor Courtés, Ludovic
Lizenz CC-Namensnennung 2.0 Belgien:
Sie dürfen das Werk bzw. den Inhalt zu jedem legalen Zweck nutzen, verändern und in unveränderter oder veränderter Form vervielfältigen, verbreiten und öffentlich zugänglich machen, sofern Sie den Namen des Autors/Rechteinhabers in der von ihm festgelegten Weise nennen.
DOI 10.5446/31021
Herausgeber FOSDEM VZW
Erscheinungsjahr 2016
Sprache Englisch

Inhaltliche Metadaten

Fachgebiet Informatik

Ähnliche Filme

Loading...