* talks/fosdem-2020/search-discovery/search-discovery.org: New file.
3.7 KiB
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.