2
0
Fork 0
mirror of git://git.savannah.gnu.org/guix/maintenance.git synced 2023-12-14 03:33:04 +01:00
maintenance/talks/fosdem-2020/search-discovery/search-discovery.org
Pierre Neidhardt 15cbddd520
talks: fosdem2020-search-discovery: Add draft.
* talks/fosdem-2020/search-discovery/search-discovery.org: New file.
2020-01-15 22:35:16 +01:00

3.7 KiB
Raw Blame History

Search & discover packages and services with GNU Guix

How do we search?

"…" Tim Berners Lee "The Next Web" (2009)

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.

Dotfiles, or "Yet another home-made service"

??? "dotfiles" repositories across GitHub, GitLab…

Average of ??? lines.

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.

First-class services

Or "The end of dotfiles!"

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.

Example

  (backup-service-type
   (backup-configuration
    (host "123.123.123.123")
    (port "8888")
    (method rsync+vpn)
    (folders
     '(("/path/folder1" "/target/destination1")
       ("/path/folder1" "/target/destination2")))))

A flood of packages and services

Nix has some 40,000+ packages.

Guix is getting there: 12,000 as of FOSDEM 2020.

Services don't have well known names.

How do we find our way around this mess?

More general problem: search programs / services is hard.

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

"Gentoo USE flags"

Example: FFmpeg compiled with AAC encoding

Problem 3: User interface

  • Command line of course…
  • …But also GUI!

Live, fuzzy search that "does what you mean." Understands if you are looking for a service, file, application.

The Art of Searching

  • À-la "web search-engine".
  • Databases: Wikidata
  • Smart search engines: Xapian?

Wikidata is a good way to factor the work between distributions.

Community contributions

  • Recommendations
  • Number of downloads
  • Ratings
  • Tags?

We don't want to include tags in a permanent databases:

  • Too subjective.
  • Evolves over time depending on the latest trends.