guix-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

01/01: talks: Add talk by Gábor.


From: Ludovic Courtčs
Subject: 01/01: talks: Add talk by Gábor.
Date: Mon, 14 May 2018 04:45:07 -0400 (EDT)

civodul pushed a commit to branch master
in repository maintenance.

commit 28bd2073aef75dc070799384ca0c9b93453f7127
Author: Ludovic Courtès <address@hidden>
Date:   Mon May 14 10:43:32 2018 +0200

    talks: Add talk by Gábor.
---
 .../images/GuixSD-horizontal-print.pdf             |   1 +
 .../images/GuixSD.pdf                              |   1 +
 talks/szabad-szoftver-konferencia-hu-2018/talk.pdf | Bin 0 -> 99997 bytes
 .../szabad-szoftver-konferencia-hu-2018/talk.pdfpc |  87 +++++
 talks/szabad-szoftver-konferencia-hu-2018/talk.tex | 393 +++++++++++++++++++++
 5 files changed, 482 insertions(+)

diff --git 
a/talks/szabad-szoftver-konferencia-hu-2018/images/GuixSD-horizontal-print.pdf 
b/talks/szabad-szoftver-konferencia-hu-2018/images/GuixSD-horizontal-print.pdf
new file mode 120000
index 0000000..7e536b6
--- /dev/null
+++ 
b/talks/szabad-szoftver-konferencia-hu-2018/images/GuixSD-horizontal-print.pdf
@@ -0,0 +1 @@
+../../fsf-hu-talk-2018/images/GuixSD-horizontal-print.pdf
\ No newline at end of file
diff --git a/talks/szabad-szoftver-konferencia-hu-2018/images/GuixSD.pdf 
b/talks/szabad-szoftver-konferencia-hu-2018/images/GuixSD.pdf
new file mode 120000
index 0000000..1f2477d
--- /dev/null
+++ b/talks/szabad-szoftver-konferencia-hu-2018/images/GuixSD.pdf
@@ -0,0 +1 @@
+../../fsf-hu-talk-2018/images/GuixSD.pdf
\ No newline at end of file
diff --git a/talks/szabad-szoftver-konferencia-hu-2018/talk.pdf 
b/talks/szabad-szoftver-konferencia-hu-2018/talk.pdf
new file mode 100644
index 0000000..506e768
Binary files /dev/null and b/talks/szabad-szoftver-konferencia-hu-2018/talk.pdf 
differ
diff --git a/talks/szabad-szoftver-konferencia-hu-2018/talk.pdfpc 
b/talks/szabad-szoftver-konferencia-hu-2018/talk.pdfpc
new file mode 100644
index 0000000..2105b3d
--- /dev/null
+++ b/talks/szabad-szoftver-konferencia-hu-2018/talk.pdfpc
@@ -0,0 +1,87 @@
+[duration]
+21
+[notes_position]
+RIGHT
+[last_minutes]
+3
+[end_user_slide]
+14
+[notes]
+### 1
+
+### 2
+Itt az első követelmény lazítható, úgy, hogy ekvivalens bemenetetek esetén 
ekvivalens kimeneteket várunk el.
+
+A második követelmény valójában annyi, hogy perzisztens adatszerkezetben 
tároljuk az eredményeket.
+
+A gyakorlati megvalósításokban irányított aciklikus gráfot használunk.
+
+A cél az, hogy ha szükséges, akkor egy tetszőleges verziót újra elő lehessen 
állítani. Az adatszerkezetben csak konzisztens állapotoknak megfelelő 
konfigurációt tárolunk.
+
+Ez egy node esetén nem okoz problémát, de nagyobb deployment esetén ezt így 
nem lehet csinálni.
+
+Olyan módszerek is kellenek, amik ellenőzik, hogy az állapot valóban 
összeegyeztethető a tárolt gráffal.
+### 3
+Például frissítés közben megszűnik az áramellátás, vagy egyszerűen valamelyik 
csomag frissítésekor hiba lép fel. A régi csomag függőségek már eltávolításra 
kerültek, esetleg maga a régi csomag is, az új csomagot pedig nem sikerült 
feltelepíteni. Ez azt jelenti, hogy az adott csomag funkcionalitása nem 
elérhető. A legsúlyosabb esetekben ez akár bootolhatatlan rendszert is 
eredményezhet.
+
+Ugyanez az időablak a nix és guix esetében egy symlink atomikus átváltására 
szűkül. Ha ez nem sikerül, akkor egyszerűen annyi történik, hogy a régi 
rendszeren maradunk.
+
+A nix és guix semmi olyan szoftvert nem töröl, ami valaha a rendszeren 
telepítve volt, erre kifejezetten kérni kell. Ilyen esetben a csomagkezelő 
azokat a szoftvereket törli, amelyekről bizonyítani tudja, hogy azt más 
szoftver a rendszeren nem használja. Lehetőség van bizonyos szoftvereket 
megjelölni, hogy használatban vannak, így lehet kezelni a nem guix-el 
telepített szoftverek függőségeit, amiről a guix nem tudhat. Jobb módszer, ha 
lehetséges guix csomagot készíteni, mert így rendszer [...]
+
+A nixos és guixsd konfiguráció központosítja a konfigurációkezelést, és a 
GuixSD esetében lehetővé teszi a konfigurációs függőségek megvilágítását is 
(Shepherd service extension).
+
+Fontos alap feltételezés, hogy a központi csomagkezelés csak akkor működik, ha 
mindent nix-el/guix-el csomagolunk.
+### 4
+A bitről bitre reprodukálhatóságnak rengeteg előnye van. Az egyik 
legfontosabb, hogy helyi újrafordítással az eredményt összehasonlítva 
meggyőződehetünk róla, hogy a csomagot ugyanúgy állították elő, mint ahogy mi 
tennénk.
+
+Ezen felül lehetőséget biztosít a helyettesítőcsomagok hash alapján történő 
azonosítására.
+
+Szintén lehetőséget ad arra, hogy a központi tároló tartalomcímezhető legyen. 
Ebben az esetben kialakítható zero trust architektúra, hiszen bárhonnan 
letöltve a helyetttesítőcsomagot, biztosak lehetünk benne, hogy tényleg 
ugyanazt a szoftvert futtatjuk, nem vagyunk ráutalva arra, hogy megbízzunk a 
helyettesítőket biztosító szerverben.
+### 5
+Ez egy nix kifejezés. Ez a nix csomagdefiníciós nyelve.
+
+Alapvetően egy haskell típusú nyelv, némi bash szkripttel vegyítve.
+
+Ez egy külső DSL, saját ad-hoc szintaxisa van, és külön értelmező kell hozzá.
+
+Ezeket a kifejezéseket host side kódnak hívják.
+
+A build side kĂłd c++.
+
+Külön repositoryban kezelik a host és build side kódokat.
+### 6
+Ez egy guix csomagdefinĂ­ciĂł.
+
+A nyelv egy belső DSL, a hostnyelv a guile scheme.
+
+A nyelvet g-exp-nek nevezik. A scheme a define-syntax konstrukciójával 
különösen alkalmas belső DSL-ek definiálására, amik teljes mértékben olyan 
érzést eredményeznek a programozás során, mintha eleve a nyelv részét képeznék.
+
+A host side Ă©s build side kĂłd ugyanabban a repoban van, Ă©s guile scheme 
nyelven Ă­rĂłdott.
+
+Az egyetlen olyan rész ami még mindig C++ az a daemon. Jelenleg folyamatban 
van az újraimplementálása schemeben.
+### 7
+A GuixSD egy teljes mértékben GNU FSDG-vel kompatibilis disztribúció.
+
+Ez a hivatalos GNU disztribĂşciĂł.
+
+A GNU Guix a GNU hivatalos csomagkezelője.
+
+A GNU Guile scheme a GNU hivatalos kiterjesztési nyelve.
+### 8
+Ezen kívül lehetőség van minden felhasználó számára tetszőleges profilokat 
definiálni, és bármelyik profil bármelyik generációjára váltani.
+
+Szintén lehetőség van profil manifesteket készíteni, ami lehetővé teszi 
például a csomagok verzióinak kötését.
+
+Lehetőség van egyszerű parancssori argumentumokkal a szoftver patchelt 
vezióinak fordítása a tesztelési fázisban.
+
+A csomagkezelő nyelv lehetővé teszi a csomag örököltetését egy másik 
csomagból, ami azt jelenti, hogy kisebb variánsok, például egy patchelt verzió, 
vagy egy olyan, amin nem futtatjuk le a teszteket, esetleg más konfigurációs 
flagekkel, vagy bemenetekkel fordítunk csak néhány sor.
+### 9
+Itt fontos megjegyezni, hogy milyen mértékben lehet azt funkcionálissá tenni. 
A GuixSD itt egy elég extrém irányt vett, a funkcionális működéshez szükséges 
dologkat a lehető legkorábban, már az initrd-ben betölti.
+
+Tulajdonképpen így a bootloader és a kernel parancssor kerül ki a funkcionális 
konfiguráció keretei közül.
+
+Ezen kívül jelenleg a rendszertelepítés nem funkcionális, elsősorban nincs 
funkcionális particionáló nyelv.
+
+Tehát itt fordulhatnak még elő inkonzisztenciák.
+
+Jelenleg igyekszünk, hogy lehetőséget biztosítsunk a rendszertelepítés 
funkcionálissá tételére, illetve a bootloader konfiguráció és a kernel 
command-line monitorozására.
diff --git a/talks/szabad-szoftver-konferencia-hu-2018/talk.tex 
b/talks/szabad-szoftver-konferencia-hu-2018/talk.tex
new file mode 100644
index 0000000..dc2fad9
--- /dev/null
+++ b/talks/szabad-szoftver-konferencia-hu-2018/talk.tex
@@ -0,0 +1,393 @@
+\documentclass{beamer}
+
+\usetheme{default}
+
+\usefonttheme{structurebold}
+\usepackage{helvet}
+\usecolortheme{seagull}         % white on black
+
+\usepackage[utf8]{inputenc}
+\PassOptionsToPackage{hyphens}{url}\usepackage{hyperref,xspace,multicol}
+\usepackage[absolute,overlay]{textpos}
+\usepackage{tikz}
+\usetikzlibrary{arrows,shapes,trees,shadows,positioning}
+\usepackage{fancyvrb}           % for \Verb
+
+\usepackage{pgfpages}
+
+\setbeameroption{show notes on second screen=right}
+
+% Remember the position of every picture.
+\tikzstyle{every picture}+=[remember picture]
+
+\tikzset{onslide/.code args={<#1>#2}{%
+  \only<#1>{\pgfkeysalso{#2}} % \pgfkeysalso doesn't change the path
+}}
+
+% Colors.
+\definecolor{guixred1}{RGB}{226,0,38}  % red P
+\definecolor{guixorange1}{RGB}{243,154,38}  % guixorange P
+\definecolor{guixyellow}{RGB}{254,205,27}  % guixyellow P
+\definecolor{guixred2}{RGB}{230,68,57}  % red S
+\definecolor{guixred3}{RGB}{115,34,27}  % dark red
+\definecolor{guixorange2}{RGB}{236,117,40}  % guixorange S
+\definecolor{guixtaupe}{RGB}{134,113,127} % guixtaupe S
+\definecolor{guixgrey}{RGB}{91,94,111} % guixgrey S
+\definecolor{guixdarkgrey}{RGB}{46,47,55} % guixdarkgrey S
+\definecolor{guixblue1}{RGB}{38,109,131} % guixblue S
+\definecolor{guixblue2}{RGB}{10,50,80} % guixblue S
+\definecolor{guixgreen1}{RGB}{133,146,66} % guixgreen S
+\definecolor{guixgreen2}{RGB}{157,193,7} % guixgreen S
+
+\setbeamerfont{title}{size=\huge}
+\setbeamerfont{frametitle}{size=\huge}
+\setbeamerfont{normal text}{size=\Large}
+
+% White-on-black color theme.
+\setbeamercolor{structure}{fg=guixorange1,bg=black}
+\setbeamercolor{title}{fg=white,bg=black}
+\setbeamercolor{date}{fg=guixorange1,bg=black}
+\setbeamercolor{frametitle}{fg=white,bg=black}
+\setbeamercolor{titlelike}{fg=white,bg=black}
+\setbeamercolor{normal text}{fg=white,bg=black}
+\setbeamercolor{alerted text}{fg=guixyellow,bg=black}
+\setbeamercolor{section in toc}{fg=white,bg=black}
+\setbeamercolor{section in toc shaded}{fg=white,bg=black}
+\setbeamercolor{subsection in toc}{fg=guixorange1,bg=black}
+\setbeamercolor{subsection in toc shaded}{fg=white,bg=black}
+\setbeamercolor{subsubsection in toc}{fg=guixorange1,bg=black}
+\setbeamercolor{subsubsection in toc shaded}{fg=white,bg=black}
+\setbeamercolor{frametitle in toc}{fg=white,bg=black}
+\setbeamercolor{local structure}{fg=guixorange1,bg=black}
+
+\newcommand{\highlight}[1]{\alert{\textbf{#1}}}
+
+\title{Funkcionális csomagkezelés}
+\subtitle{Szabad Szoftver Konferencia 2018}
+\author{Boskovits Gábor}
+\date{\small{2018. május 12., Budapest, Magyarország}}
+
+\setbeamertemplate{navigation symbols}{} % remove the navigation bar
+
+\AtBeginSection[]{
+  \begin{frame}
+    \frametitle{}
+    \tableofcontents[currentsection]
+  \end{frame}
+}
+
+
+\newcommand{\screenshot}[1]{
+  \begin{frame}[plain]
+    \begin{tikzpicture}[remember picture, overlay]
+      \node [at=(current page.center), inner sep=0pt]
+        {\includegraphics[width=\paperwidth]{#1}};
+    \end{tikzpicture}
+  \end{frame}
+}
+
+\begin{document}
+
+\maketitle
+
+\setbeamercolor{normal text}{fg=white,bg=black}
+
+\begin{frame}[fragile]
+  \frametitle{Mi a funkcionális csomagkezelés?}
+
+  Egy sikeres csomagkezelési művelet eredménye csak a művelet bemeneteitől 
fĂĽgg,
+  az állapottól független.
+
+  \begin{itemize}
+  \item A fordítási folyamat: tiszta függvény.
+  \item A lefordított szoftver: perzisztens gráf.
+  \end{itemize}
+
+  Az elméleti hátteret lásd:
+
+  Eelco Dolstra. The Purely Functional Software Deployment Model.
+  PhD thesis, Faculty of Science, Utrecht, The Netherlands.
+  January 2006. ISBN 90-393-4130-3.
+
+ % \note{20 perc}
+\end{frame}
+
+\begin{frame}[fragile]
+  \frametitle{Mi a probléma a jelenlegi modellel?}
+\scriptsize{
+  \begin{enumerate}
+  \item A frissítések és konfiguráció változtatások nehezek, gyakran nem tudunk
+    visszatérni az előző jó konfigurációhoz, előfordulhat, hogy egy sikertelen
+    csomagkezelési műveletet követően a rendszer inkonzisztens állapotba kerül
+  \item Több csomagkezelési és konfigurálási művelet után követhetetlenné válik
+    a rendszer pillanatnyi állapota, lehetséges, hogy két rendszer, amelyeknek
+    ugyan abban az állapotban kellene lennie mégis különböző állapotba kerül
+  \item A konfiguráció szét van tördelve, gyakran még az sem világos, hogy egy
+    adott szoftver működését melyik konfigurációs beállítások befolyásolják,
+    nincs központi konfiguráció kezelés
+  \item A csomagok elérhetőségi és telepítési információi szét vannak tördelve,
+    nagyrészt a nyelvspecifikus csomagkezelőknek köszönhetően, nem 
áttekinthető,
+    hogy egyáltalán milyen csomagok vannak egy adott rendszeren telepítve, 
nincs
+    központi csomagkezelés
+  \item Ezeknek a töredezett csomag és konfigurációs adatoknak köszönhetően
+    nincs megfelelő függőségi információnk a rendszerről
+  \end{enumerate}
+}
+\end{frame}
+
+\begin{frame}[fragile]
+  \frametitle{A funkcionális csomagkezelők alapvető működése}
+
+  Jelenleg két funkcionális csomagkezelőt ismerünk, ezek a
+  Nix Ă©s a Guix.
+
+  A működés alapelve a következő: a programokat egy központi helyre telepítik,
+  minden programnak külön izolált telepítési fája van. Ezek a megfelelő
+  helyekre, például a felhasználók profiljaiba szimbolikus linkekkel kerülnek
+  becsatolásra. A központi tárolóhoz csak egy rendszergazdai jogosultságokkal
+  rendelkező szolgáltatás férhet hozzá. A szoftver fordítás izolált
+  környezetben történik, és csak a csomagleírásban kifejezetten bemenetként
+  említett csomagok állnak rendelkezésre a fordítási környezetben. A cél, hogy
+  az eredmény bitről bitre reprodukálható legyen.
+
+\end{frame}
+
+\begin{frame}[fragile]
+  \frametitle{Csomagdefiníció példa - Nix}
+\tiny{
+  \begin{verbatim}
+{ stdenv, fetchurl }:
+
+stdenv.mkDerivation rec {
+  name = "hello-2.10";
+
+  src = fetchurl {
+    url = "mirror://gnu/hello/${name}.tar.gz";
+    sha256 = "0ssi1wpaf7plaswqqjwigppsg5fyh99vdlb9kzl7c9lng89ndq1i";
+  };
+
+  doCheck = true;
+
+  meta = {
+    description = "A program that produces a familiar, friendly greeting";
+    longDescription = ''
+      GNU Hello is a program that prints "Hello, world!" when you run it.
+      It is fully customizable.
+    '';
+    homepage = http://www.gnu.org/software/hello/manual/;
+    license = stdenv.lib.licenses.gpl3Plus;
+    maintainers = [ stdenv.lib.maintainers.eelco ];
+    platforms = stdenv.lib.platforms.all;
+  };
+}
+  \end{verbatim}
+}
+\end{frame}
+
+\begin{frame}[fragile]
+  \frametitle{Csomagdefiníció példa - Guix}
+\tiny {
+\begin{verbatim}
+(define-module (gnu packages hello)
+  #:use-module (guix packages)
+  #:use-module (guix download)
+  #:use-module (guix build-system gnu)
+  #:use-module (guix licenses)
+  #:use-module (gnu packages gawk))
+
+(define-public hello
+  (package
+    (name "hello")
+    (version "2.10")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://gnu/hello/hello-" version
+                                  ".tar.gz"))
+              (sha256
+               (base32
+                "0ssi1wpaf7plaswqqjwigppsg5fyh99vdlb9kzl7c9lng89ndq1i"))))
+    (build-system gnu-build-system)
+    (arguments '(#:configure-flags '("--enable-silent-rules")))
+    (inputs `(("gawk" ,gawk)))
+    (synopsis "Hello, GNU world: An example GNU package")
+    (description "Guess what GNU Hello prints!")
+    (home-page "http://www.gnu.org/software/hello/";)
+    (license gpl3+)))
+
+  \end{verbatim}
+}
+\end{frame}
+
+\begin{frame}[fragile]
+  \frametitle{Különbségek a Guix és a Nix között}
+
+  Két fontos különbséget kell megemlítenünk:
+  \begin{enumerate}
+  \item Míg a Nix egy külső DSL mellett tette le a voksát, addig a Guix egy
+    belső DSL-t válaszott. Ez lehetővé teszi a Guix esetében a fogadó
+    programnyelv lehetőségeinek teljes körű kihasználását.
+  \item A másik különbség filozófiai jellegű, a Guix nem támogatja a nem
+    szabad szoftvereket, a hivatalos csomagadatbázisokban csak szabad szoftver
+    található. Ez nem jelenti azt, hogy ilyen szoftver nem használható vagy
+    csomagolhatĂł Guix-el, de ezek a csomagok nem kerĂĽlhetnek be a hivatalos
+    repoba.
+  \end{enumerate}
+\end{frame}
+
+\begin{frame}[fragile]
+  \frametitle{A Guix parancssor rövid bemutatása}
+  \begin{itemize}
+  \item guix package -r lua -u guile emacs -i address@hidden : egy
+    tranzakcióban törölje a lua, frissítse a guile,emacs és telepítse a
+    guile-cairo csomag 1.9.91-es verzióját. Ha ebből bármi nem sikerül, a
+    rendszer az eredeti állapotában marad.
+  \item guix package --roll-back : A legutóbbi csomagkezelési tranzakció
+    visszavonása
+  \item guix package -s emacs : Keressen információt az adott csomagokról
+  \item guix pull : A Guix frissítése
+  \item guix environment guix --ad-hoc git strace : Hozzon létre egy fejlesztői
+    környezetet a guix csomaghoz, amiben a git és az strace is rendelkezésre 
áll
+  \end{itemize}
+\end{frame}
+
+\begin{frame}[fragile]
+  \frametitle{Funkcionális rendszerkonfiguráció}
+
+  A funkcionális csomagkezelés természetesnek tűnő kiterjesztése a funkcionális
+  rendszerkonfiguráció. Erre mindkét csomagkezelőnek van megoldása, a NixOS és
+  a GuixSD disztribúciók. Ezek a Nix illetve Guix csomagkezelőt használják, és
+  kiegészítik egy rendszerkonfigurációs nyelvvel, illetve ehhez tartozó
+  felhasználói felületek, ami a Guix esetében a guix system parancs.
+
+  Előnyei:
+  \begin{itemize}
+  \item konfigurálható és kiterjeszthető rendszerszolgáltatások
+  \item tranzakcionális frissítés/visszaállítás
+  \end{itemize}
+\end{frame}
+
+\begin{frame}[fragile]
+  \frametitle{Rendszerkonfiguráció - GuixSD}
+\scriptsize {
+  \begin{verbatim}
+(operating-system
+  (host-name "schememachine")
+  (timezone "Japan")
+  (locale "ja_JP.utf8")
+  (bootloader (grub-configuration (device "/dev/sda")))
+  (file-systems (cons (file-system
+                        (device "my-root")
+                        (title 'label)
+                        (mount-point "/")
+                        (type "ext4"))
+                      %base-file-systems))
+  (users (cons (user-account
+                 (name "alice")
+                 (group "users")
+                 (home-directory "/home/alice"))
+               %base-user-accounts))
+  (services (cons* (dhcp-client-service)
+                   (lsh-service #:port-number 2222)
+                   %base-services)))
+  \end{verbatim}
+}
+\end{frame}
+
+
+\begin{frame}[fragile]
+  \frametitle{A guix system bemutatása}
+
+  \begin{itemize}
+  \item guix system reconfigure file: a rendszer újrakonfigurálása a fájlban
+    szereplő konfiguráció alapján
+  \item guix system roll-back: a rendszer visszaállítása az előző 
konfigurációra
+  \item guix system vm file: rendszer indítása az adott konfigurációval
+    virtuális gépben
+  \item guix system container file: rendszer indítása az adott konfigurációval
+    konténerben
+  \end{itemize}
+\end{frame}
+
+\begin{frame}[fragile]
+  \frametitle{NixOps, Upcast}
+  A következő lépés a teljes többgépes telepítések funkcionálissá tétele. Itt 
még
+  jelenleg elég sok a kihívás. A Nix csomagkezelőnek két megoldása van rá, a
+  hivatalos NixOps, és az Upcast. A NixOps egy sqlite adatbázisban tárolja a
+  telepítés állapotát, míg az Upcast erre egy szöveges fáljt használ, ami olyan
+  szempontból jobb, hogy verziókövetés alá lehet vonni. A Guix közösség még
+  keresi a megoldásokat a felmerülő problémákra, így a Guix-nek erre még nincs
+  kész megoldása.
+\end{frame}
+
+\begin{frame}[fragile]
+  \frametitle{Guix továbbfejlesztési tervek}
+  \begin{itemize}
+  \item szoftvercsatornák - tervezés alatt
+  \item több gépes telepítések - tervezés alatt
+  \item teljes forráskód alapú bootstrap útvonal - fejlesztés alatt
+  \item grafikus telepítő - fejlesztés alatt
+  \item build farm webfelület - fejlesztés alatt (GSoC)
+  \item systemd kompatibilitás - feljlesztés alatt (GSoC)
+  \item a daemon úrjaimplementálás scheme-ben - fejlesztés alatt (GSoC)
+  \item barátságosabb kimenet - fejlesztés alatt (Outreachy)
+  \end{itemize}
+\end{frame}
+
+\begin{frame}{A Guix és GuixSD közösség szívesen veszi a segítéget}
+  \vspace{0.7cm}
+  \large{
+    \begin{itemize}
+    \item minél többen telepítik és használják a Guix-et, annál jobb
+      felhasználói élményt tud nyújtani
+    \item a fejlesztők számára a hibajelentések és kérdések nagyon sokat
+      jelentenek, így tudják a Guix-et még jobbá tenni
+    \item a közösség számára fontos, hogy a felhasználóik és az újonnan
+      csatlakozó fejlesztők megosszák az ötleteiket, hiszen így lehet
+      a Guix-et új, hasznos funkciókkal bővíteni
+    \end{itemize}
+  }
+\end{frame}
+
+\begin{frame}[fragile]
+
+\vfill{
+  \vspace{2.5cm}
+  \center{\includegraphics[width=0.3\textwidth]{images/GuixSD}}\\[1.0cm]
+  address@hidden://gnu.org/software/guix/}}}
+}
+
+\end{frame}
+
+\begin{frame}[fragile]
+
+  \begin{textblock}{12}(2, 8)
+    \tiny{
+      Copyright \copyright{} 2010, 2012--2016 Ludovic Courtès address@hidden
+      Copyright \copyright{} 2018 Gábor Boskovits address@hidden
+      GNU GuixSD logo, CC-BY-SA 4.0, \url{https://gnu.org/s/guix/graphics}
+
+      Copyright of other images included in this document is held by
+      their respective owners.
+      \\[3.0mm]
+      This work is licensed under the \alert{Creative Commons
+        Attribution-Share Alike 3.0} License.  To view a copy of this
+      license, visit
+      \url{http://creativecommons.org/licenses/by-sa/3.0/} or send a
+      letter to Creative Commons, 171 Second Street, Suite 300, San
+      Francisco, California, 94105, USA.
+      \\[2.0mm]
+      At your option, you may instead copy, distribute and/or modify
+      this document under the terms of the \alert{GNU Free Documentation
+        License, Version 1.3 or any later version} published by the Free
+      Software Foundation; with no Invariant Sections, no Front-Cover
+      Texts, and no Back-Cover Texts.  A copy of the license is
+      available at \url{http://www.gnu.org/licenses/gfdl.html}.
+      \\[2.0mm]
+      % Give a link to the 'Transparent Copy', as per Section 3 of the GFDL.
+      The source of this document is available from
+      \url{http://git.sv.gnu.org/cgit/guix/maintenance.git}.
+    }
+  \end{textblock}
+\end{frame}
+
+\end{document}



reply via email to

[Prev in Thread] Current Thread [Next in Thread]