#+AUTHOR: Pierre Neidhardt #+EMAIL: mail@ambrevar.xyz #+TITLE: Search & discover packages and services with GNU Guix #+OPTIONS: reveal_single_file:t #+OPTIONS: toc:nil #+REVEAL_ROOT: http://cdn.jsdelivr.net/reveal.js/3.0.0/ # #+REVEAL_TRANS: page #+REVEAL_PLUGINS: (highlight) #+REVEAL_THEME: night #+REVEAL_MAX_SCALE: 0.6 #+REVEAL_TITLE_SLIDE_BACKGROUND: ./images/Guix_logo_noname.svg.png #+REVEAL_TITLE_SLIDE_BACKGROUND_SIZE: 550px #+TODO: Talk about guile. * How do we search? # https://www.ted.com/talks/tim_berners_lee_the_next_web/transcript # TODO: Fill in the quote on linking web data. "..." -- Tim Berners Lee "The Next Web" (2009) #+begin_notes How do we find the program that we are looking for? Let me rephrase: How do we find the program that does the job for us? What do we expect from computers? We don't expect to program them: we expect to run a program and get the job done. User experience question: when first confronted with a computer, how do we know which program to run? => Tribal knowledge (e.g. VLC is famous because it's famous). Speak for Guix-specific improvements, but also more general research. #+end_notes * Dotfiles, or "Yet another home-made service" #+TODO: Take data from GitHub, gitlab "dotfiles" repositories ??? "dotfiles" repositories across GitHub, GitLab... Average of ??? lines. #+begin_notes Show of hands: who has spent too much time on their dotfiles? What is a dotfile really? It's just another home-made service. Just like a program, it gets the job done. And when start thinking this way, we start realizing that it's only a blurred line between services and packages. #+end_notes * First-class services Or "The end of dotfiles!" #+begin_notes My claim: we can put an end to dotfiles! Rephrase: An end to "egoistic un-reusable dotfiles". Everyone can start upstreaming their dotfiles configurations and share them. Dream: Just need to declare which program and services you want to use and your are done. This could tailor to your most specific needs. Service example: daily backup of my data with rsync+ssh/vpn. #+end_notes * Example # TODO: Finish service example #+begin_src scheme (backup-service-type (backup-configuration (host "123.123.123.123") (port "8888") (method rsync+vpn) (folders '(("/path/folder1" "/target/destination1") ("/path/folder1" "/target/destination2"))))) #+end_src # TODO: More examples? * A flood of packages and services Nix has some 40,000+ packages. Guix is getting there: 12,000 as of FOSDEM 2020. #+begin_notes Services don't have well known names. How do we find our way around this mess? More general problem: search programs / services is hard. #+end_notes * GNU Guix and GNU Shepherd - Can be installed everywhere. - Shepherd services drag Guix dependent packages automatically. * Problem 1: File search SQLite databases from substitute servers. * Problem 2: Package parameters # TODO: Really talk about this? "Gentoo USE flags" Example: FFmpeg compiled with AAC encoding * Problem 3: User interface - Command line of course... - ...But also GUI! # TODO: Videos? Demo with Helm? #+begin_notes Live, fuzzy search that "does what you mean." Understands if you are looking for a service, file, application. #+end_notes * The Art of Searching - À-la "web search-engine". - Databases: Wikidata - Smart search engines: Xapian? #+begin_notes Wikidata is a good way to factor the work between distributions. #+end_notes * Community contributions # Mention Alternative To? - Recommendations - Number of downloads - Ratings - Tags? #+begin_notes We don't want to include tags in a permanent databases: - Too subjective. - Evolves over time depending on the latest trends. #+end_notes