# Transcript
[[!template new="1" text="""Introduction""" start="00:00:00.000" video="mainVideo-emms" id="subtitle"]]
[[!template text="""The Sound of Emacs, Emms, The Emacs Multimedia System.""" start="00:00:00.000" video="mainVideo-emms" id="subtitle"]]
[[!template text="""Hi, I'm Yoni Rabkin and I'll be talking about Emms;""" start="00:00:05.400" video="mainVideo-emms" id="subtitle"]]
[[!template text="""the Emacs Multimedia System.""" start="00:00:09.160" video="mainVideo-emms" id="subtitle"]]
[[!template text="""What is Emms?""" start="00:00:11.520" video="mainVideo-emms" id="subtitle"]]
[[!template text="""Emms displays and plays media from within Emacs""" start="00:00:14.560" video="mainVideo-emms" id="subtitle"]]
[[!template text="""using a variety of external players""" start="00:00:18.120" video="mainVideo-emms" id="subtitle"]]
[[!template text="""and from different media sources.""" start="00:00:20.520" video="mainVideo-emms" id="subtitle"]]
[[!template text="""Emms can run as a minimalistic player""" start="00:00:23.540" video="mainVideo-emms" id="subtitle"]]
[[!template text="""which is controlled with no more than""" start="00:00:26.680" video="mainVideo-emms" id="subtitle"]]
[[!template text="""a handful of simple M-x commands,""" start="00:00:28.560" video="mainVideo-emms" id="subtitle"]]
[[!template text="""or as a fully-fledged interactive media browser and player.""" start="00:00:31.120" video="mainVideo-emms" id="subtitle"]]
[[!template text="""Emms can display album art, play streaming audio,""" start="00:00:36.060" video="mainVideo-emms" id="subtitle"]]
[[!template text="""tag music files, search for lyrics,""" start="00:00:40.640" video="mainVideo-emms" id="subtitle"]]
[[!template text="""provide MPD connectivity, control the volume,""" start="00:00:43.440" video="mainVideo-emms" id="subtitle"]]
[[!template text="""and more. Much more.""" start="00:00:46.680" video="mainVideo-emms" id="subtitle"]]
[[!template text="""The Emms project acts like Emacs in microcosm.""" start="00:00:49.620" video="mainVideo-emms" id="subtitle"]]
[[!template text="""It slowly but surely grows bigger""" start="00:00:53.880" video="mainVideo-emms" id="subtitle"]]
[[!template text="""and gets ever more features.""" start="00:00:56.560" video="mainVideo-emms" id="subtitle"]]
[[!template text="""Perhaps Emms will one day even have a text editor.""" start="00:00:58.480" video="mainVideo-emms" id="subtitle"]]
[[!template new="1" text="""The structure of this talk""" start="00:01:03.320" video="mainVideo-emms" id="subtitle"]]
[[!template text="""The structure of this talk:""" start="00:01:03.320" video="mainVideo-emms" id="subtitle"]]
[[!template text="""We'll start with an introduction to Emms.""" start="00:01:05.600" video="mainVideo-emms" id="subtitle"]]
[[!template text="""This is the practical part.""" start="00:01:08.160" video="mainVideo-emms" id="subtitle"]]
[[!template text="""Then, a bit about how Emms works. That's the technical part.""" start="00:01:10.560" video="mainVideo-emms" id="subtitle"]]
[[!template text="""Finally, how we work. All about Emms development.""" start="00:01:15.880" video="mainVideo-emms" id="subtitle"]]
[[!template new="1" text="""Introduction to Emms: The practical part""" start="00:01:21.320" video="mainVideo-emms" id="subtitle"]]
[[!template text="""Introduction to Emms: The practical part:""" start="00:01:21.320" video="mainVideo-emms" id="subtitle"]]
[[!template text="""I want this talk to be of immediate use to people,""" start="00:01:25.021" video="mainVideo-emms" id="subtitle"]]
[[!template text="""so I'm going to present a quick TL;DR of the Emms manual""" start="00:01:28.680" video="mainVideo-emms" id="subtitle"]]
[[!template text="""concerning installation and use.""" start="00:01:33.520" video="mainVideo-emms" id="subtitle"]]
[[!template text="""By the end of this part you should be able to""" start="00:01:36.400" video="mainVideo-emms" id="subtitle"]]
[[!template text="""install, configure, and use Emms in a variety of ways.""" start="00:01:38.440" video="mainVideo-emms" id="subtitle"]]
[[!template text="""Where can I get Emms?""" start="00:01:45.280" video="mainVideo-emms" id="subtitle"]]
[[!template text="""Emms is distributed primarily via GNU ELPA.""" start="00:01:48.120" video="mainVideo-emms" id="subtitle"]]
[[!template text="""So it's really only a M-x list-packages away at any moment.""" start="00:01:54.320" video="mainVideo-emms" id="subtitle"]]
[[!template text="""There's also a website hosted at gnu.org.""" start="00:02:02.080" video="mainVideo-emms" id="subtitle"]]
[[!template text="""Among other things on the website, you'll find""" start="00:02:07.720" video="mainVideo-emms" id="subtitle"]]
[[!template text="""a copy of the friendly, robust, and up-to-date user manual.""" start="00:02:11.020" video="mainVideo-emms" id="subtitle"]]
[[!template text="""Installing Emms has become progressively easier over time""" start="00:02:21.280" video="mainVideo-emms" id="subtitle"]]
[[!template text="""and will continue to get easier.""" start="00:02:25.920" video="mainVideo-emms" id="subtitle"]]
[[!template text="""In the bad old days, it required downloading a tarball""" start="00:02:28.720" video="mainVideo-emms" id="subtitle"]]
[[!template text="""and compiling a C language shim""" start="00:02:32.560" video="mainVideo-emms" id="subtitle"]]
[[!template text="""to enable reading metadata from media files.""" start="00:02:35.060" video="mainVideo-emms" id="subtitle"]]
[[!template text="""But those days are long gone, and installing Emms is now""" start="00:02:38.920" video="mainVideo-emms" id="subtitle"]]
[[!template text="""as easy as invoking M-x list-packages,""" start="00:02:43.360" video="mainVideo-emms" id="subtitle"]]
[[!template text="""installing the Emms package, and placing as few as""" start="00:02:47.040" video="mainVideo-emms" id="subtitle"]]
[[!template text="""2 or 3 lines of configuration in your Emacs initialization.""" start="00:02:51.840" video="mainVideo-emms" id="subtitle"]]
[[!template text="""So after the package is installed via ELPA,""" start="00:02:57.720" video="mainVideo-emms" id="subtitle"]]
[[!template text="""you can add these few lines.""" start="00:03:02.840" video="mainVideo-emms" id="subtitle"]]
[[!template text="""`emms-all` will make available all of the stable features""" start="00:03:08.440" video="mainVideo-emms" id="subtitle"]]
[[!template text="""which are shipped with Emms.""" start="00:03:12.360" video="mainVideo-emms" id="subtitle"]]
[[!template text="""The `emms-player-list` variable is a list of players""" start="00:03:15.740" video="mainVideo-emms" id="subtitle"]]
[[!template text="""like MPV, MPlayer, VLC, etc.""" start="00:03:20.840" video="mainVideo-emms" id="subtitle"]]
[[!template text="""Emms will call and control these external players""" start="00:03:25.600" video="mainVideo-emms" id="subtitle"]]
[[!template text="""to play your media.""" start="00:03:29.400" video="mainVideo-emms" id="subtitle"]]
[[!template text="""The variable `emms-info-functions` is a list of ways""" start="00:03:32.000" video="mainVideo-emms" id="subtitle"]]
[[!template text="""for Emms to read the metadata in your media files""" start="00:03:36.660" video="mainVideo-emms" id="subtitle"]]
[[!template text="""so that Emms can display song title, artist name,""" start="00:03:40.960" video="mainVideo-emms" id="subtitle"]]
[[!template text="""year of production, etc.""" start="00:03:45.280" video="mainVideo-emms" id="subtitle"]]
[[!template text="""The `emms-info-native` feature in the setup example""" start="00:03:49.480" video="mainVideo-emms" id="subtitle"]]
[[!template text="""is the built-in metadata reader""" start="00:03:55.200" video="mainVideo-emms" id="subtitle"]]
[[!template text="""written entirely in Emacs Lisp.""" start="00:03:58.160" video="mainVideo-emms" id="subtitle"]]
[[!template text="""But there are also other backends""" start="00:04:01.800" video="mainVideo-emms" id="subtitle"]]
[[!template text="""which can call external programs for info""" start="00:04:04.240" video="mainVideo-emms" id="subtitle"]]
[[!template text="""such as TinyTag, the TagLib library, exiftool, and so on.""" start="00:04:07.720" video="mainVideo-emms" id="subtitle"]]
[[!template text="""You can then old-school restart your Emacs""" start="00:04:14.720" video="mainVideo-emms" id="subtitle"]]
[[!template text="""or simply evaluate the above couple of lines to get going.""" start="00:04:17.560" video="mainVideo-emms" id="subtitle"]]
[[!template text="""Now that we have Emms installed and configured,""" start="00:04:22.800" video="mainVideo-emms" id="subtitle"]]
[[!template text="""we should load some media for player.""" start="00:04:26.280" video="mainVideo-emms" id="subtitle"]]
[[!template text="""There are multiple ways to load media into Emms for playing.""" start="00:04:29.240" video="mainVideo-emms" id="subtitle"]]
[[!template text="""They can be directories with local files,""" start="00:04:32.720" video="mainVideo-emms" id="subtitle"]]
[[!template text="""synchronized from a remote instance of""" start="00:04:36.280" video="mainVideo-emms" id="subtitle"]]
[[!template text="""a music player daemon, PLS or M3U playlists,""" start="00:04:38.520" video="mainVideo-emms" id="subtitle"]]
[[!template text="""a list of URLs for streaming,""" start="00:04:44.720" video="mainVideo-emms" id="subtitle"]]
[[!template text="""or even Emms' own native playlist format""" start="00:04:47.440" video="mainVideo-emms" id="subtitle"]]
[[!template text="""which is unsurprisingly a just serialized Emacs Lisp.""" start="00:04:51.120" video="mainVideo-emms" id="subtitle"]]
[[!template text="""No matter how you add tracks to Emms,""" start="00:04:57.200" video="mainVideo-emms" id="subtitle"]]
[[!template text="""you'll end up with a playlist.""" start="00:05:00.200" video="mainVideo-emms" id="subtitle"]]
[[!template text="""A fundamental strength of Emms is that each playlist""" start="00:05:03.880" video="mainVideo-emms" id="subtitle"]]
[[!template text="""is a regular Emacs buffer and the track listing therein""" start="00:05:08.960" video="mainVideo-emms" id="subtitle"]]
[[!template text="""is nothing more than text lines with property overlays.""" start="00:05:13.480" video="mainVideo-emms" id="subtitle"]]
[[!template text="""This means that you can navigate, search, copy,""" start="00:05:17.860" video="mainVideo-emms" id="subtitle"]]
[[!template text="""and edit an Emms playlist buffer""" start="00:05:21.360" video="mainVideo-emms" id="subtitle"]]
[[!template text="""just as you would any Emacs buffer.""" start="00:05:24.880" video="mainVideo-emms" id="subtitle"]]
[[!template text="""If you want to reorganize the tracks in the playlist,""" start="00:05:28.680" video="mainVideo-emms" id="subtitle"]]
[[!template text="""then you can simply kill yank the tracks""" start="00:05:31.320" video="mainVideo-emms" id="subtitle"]]
[[!template text="""just as you would any buffer with lines of text,""" start="00:05:33.960" video="mainVideo-emms" id="subtitle"]]
[[!template text="""and the same can be done between multiple playlist buffers.""" start="00:05:36.760" video="mainVideo-emms" id="subtitle"]]
[[!template text="""One of the most straightforward ways to add media""" start="00:05:42.960" video="mainVideo-emms" id="subtitle"]]
[[!template text="""is to invoke a command like `M-x emms-add-directory-tree`.""" start="00:05:46.120" video="mainVideo-emms" id="subtitle"]]
[[!template text="""You can point it to the top of a set of directories""" start="00:05:51.940" video="mainVideo-emms" id="subtitle"]]
[[!template text="""with playable files for Emms to traverse.""" start="00:05:55.680" video="mainVideo-emms" id="subtitle"]]
[[!template text="""Another rather convenient method is to mark files in Dired""" start="00:06:00.280" video="mainVideo-emms" id="subtitle"]]
[[!template text="""and to invoke `emms-add-dired`.""" start="00:06:05.200" video="mainVideo-emms" id="subtitle"]]
[[!template text="""I definitely use this one a lot.""" start="00:06:09.680" video="mainVideo-emms" id="subtitle"]]
[[!template text="""The Emms playlist mode binds""" start="00:06:11.680" video="mainVideo-emms" id="subtitle"]]
[[!template text="""a number of useful keys and commands.""" start="00:06:16.120" video="mainVideo-emms" id="subtitle"]]
[[!template text="""It's highly recommended that you either""" start="00:06:19.880" video="mainVideo-emms" id="subtitle"]]
[[!template text="""read the friendly manual""" start="00:06:23.960" video="mainVideo-emms" id="subtitle"]]
[[!template text="""or hit "C-h m" in a playlist buffer to discover them.""" start="00:06:25.960" video="mainVideo-emms" id="subtitle"]]
[[!template text="""Now we have a playlist buffer with a number of tracks,""" start="00:06:32.320" video="mainVideo-emms" id="subtitle"]]
[[!template text="""so the next step is going to be playback.""" start="00:06:35.960" video="mainVideo-emms" id="subtitle"]]
[[!template text="""Emms can be used as a minimalistic player""" start="00:06:40.820" video="mainVideo-emms" id="subtitle"]]
[[!template text="""with nothing more than a handful of commands.""" start="00:06:44.400" video="mainVideo-emms" id="subtitle"]]
[[!template text="""Once there is a current Emms playlist,""" start="00:06:48.320" video="mainVideo-emms" id="subtitle"]]
[[!template text="""invoking emms-start will begin playing the current track.""" start="00:06:51.360" video="mainVideo-emms" id="subtitle"]]
[[!template text="""Now of course in a new playlist""" start="00:06:57.560" video="mainVideo-emms" id="subtitle"]]
[[!template text="""that would be the first track.""" start="00:07:00.040" video="mainVideo-emms" id="subtitle"]]
[[!template text="""Now emms-next, emms-pause, and emms-stop""" start="00:07:02.580" video="mainVideo-emms" id="subtitle"]]
[[!template text="""do exactly what you think they do.""" start="00:07:07.200" video="mainVideo-emms" id="subtitle"]]
[[!template text="""To visit the current playlist,""" start="00:07:11.260" video="mainVideo-emms" id="subtitle"]]
[[!template text="""you can invoke M-x emms-playlist-mode-go,""" start="00:07:13.200" video="mainVideo-emms" id="subtitle"]]
[[!template text="""which is a long command I personally bind to "M-f12".""" start="00:07:17.640" video="mainVideo-emms" id="subtitle"]]
[[!template text="""You'll be taken to the current playlist buffer.""" start="00:07:22.700" video="mainVideo-emms" id="subtitle"]]
[[!template text="""While you can have multiple playlist buffers,""" start="00:07:25.320" video="mainVideo-emms" id="subtitle"]]
[[!template text="""only one is current for the purposes of playback commands.""" start="00:07:29.240" video="mainVideo-emms" id="subtitle"]]
[[!template text="""The playlist buffer has keys bound""" start="00:07:35.780" video="mainVideo-emms" id="subtitle"]]
[[!template text="""to control the media being played.""" start="00:07:38.120" video="mainVideo-emms" id="subtitle"]]
[[!template text="""`emms-seek-forward` and `emms-seek-backwards` allow you""" start="00:07:39.920" video="mainVideo-emms" id="subtitle"]]
[[!template text="""to scrub along the media being played.""" start="00:07:44.200" video="mainVideo-emms" id="subtitle"]]
[[!template text="""Which commands are available is a function of""" start="00:07:49.040" video="mainVideo-emms" id="subtitle"]]
[[!template text="""the player backend being employed.""" start="00:07:51.720" video="mainVideo-emms" id="subtitle"]]
[[!template text="""The simplest of players may have nothing more""" start="00:07:54.200" video="mainVideo-emms" id="subtitle"]]
[[!template text="""than the ability to play, stop, and seek,""" start="00:07:56.600" video="mainVideo-emms" id="subtitle"]]
[[!template text="""but others may implement a plethora of commands.""" start="00:07:59.560" video="mainVideo-emms" id="subtitle"]]
[[!template new="1" text="""The modeline""" start="00:08:04.240" video="mainVideo-emms" id="subtitle"]]
[[!template text="""The Modeline: Emms will by default display""" start="00:08:04.240" video="mainVideo-emms" id="subtitle"]]
[[!template text="""the name of the currently playing track in the mode line""" start="00:08:08.880" video="mainVideo-emms" id="subtitle"]]
[[!template text="""with information such as playing time.""" start="00:08:11.840" video="mainVideo-emms" id="subtitle"]]
[[!template text="""The mode line format is controlled""" start="00:08:15.000" video="mainVideo-emms" id="subtitle"]]
[[!template text="""via the `emms-mode-line-format` variable""" start="00:08:15.560" video="mainVideo-emms" id="subtitle"]]
[[!template text="""and the `emms-mode-line-playlist-current` function.""" start="00:08:20.640" video="mainVideo-emms" id="subtitle"]]
[[!template text="""Metadata and the cache.""" start="00:08:27.140" video="mainVideo-emms" id="subtitle"]]
[[!template text="""It would be sufficient for emms to simply list""" start="00:08:31.040" video="mainVideo-emms" id="subtitle"]]
[[!template text="""the file names or urls of each piece of media,""" start="00:08:34.800" video="mainVideo-emms" id="subtitle"]]
[[!template text="""but unless you name your music and media""" start="00:08:38.620" video="mainVideo-emms" id="subtitle"]]
[[!template text="""with obsessive consistency and precision,""" start="00:08:41.000" video="mainVideo-emms" id="subtitle"]]
[[!template text="""not that there is anything wrong with that""" start="00:08:43.940" video="mainVideo-emms" id="subtitle"]]
[[!template text="""then the resulting list will be a bit of an eyesore.""" start="00:08:46.680" video="mainVideo-emms" id="subtitle"]]
[[!template text="""Moreover, there are a lot of other useful metadata""" start="00:08:50.860" video="mainVideo-emms" id="subtitle"]]
[[!template text="""in the media files, including cool stuff like album art.""" start="00:08:54.120" video="mainVideo-emms" id="subtitle"]]
[[!template text="""So instead of just files, Emms will try""" start="00:08:58.620" video="mainVideo-emms" id="subtitle"]]
[[!template text="""to extract metadata from each track""" start="00:09:01.920" video="mainVideo-emms" id="subtitle"]]
[[!template text="""and display a nicely-formatted track listing.""" start="00:09:04.400" video="mainVideo-emms" id="subtitle"]]
[[!template text="""The format can be controlled by customizing""" start="00:09:08.220" video="mainVideo-emms" id="subtitle"]]
[[!template text="""the variable `emms-track-description-function`.""" start="00:09:10.800" video="mainVideo-emms" id="subtitle"]]
[[!template text="""Emms uses so-called info methods to extract""" start="00:09:15.460" video="mainVideo-emms" id="subtitle"]]
[[!template text="""the metadata from each file.""" start="00:09:19.640" video="mainVideo-emms" id="subtitle"]]
[[!template text="""`emms-info-native`, which I mentioned before,""" start="00:09:22.440" video="mainVideo-emms" id="subtitle"]]
[[!template text="""is the built-in metadata reader written in Emacs Lisp.""" start="00:09:25.680" video="mainVideo-emms" id="subtitle"]]
[[!template text="""It provides support for Ogg Vorbis, Ogg Opus, FLAC, and MP3.""" start="00:09:30.360" video="mainVideo-emms" id="subtitle"]]
[[!template text="""However, if you have media in other formats,""" start="00:09:37.660" video="mainVideo-emms" id="subtitle"]]
[[!template text="""you can also add info methods""" start="00:09:40.360" video="mainVideo-emms" id="subtitle"]]
[[!template text="""to the `emms-info-functions` list,""" start="00:09:42.440" video="mainVideo-emms" id="subtitle"]]
[[!template text="""which call external programs such as exiftool,""" start="00:09:45.240" video="mainVideo-emms" id="subtitle"]]
[[!template text="""the LibTag library, tiny-tag, etc. to read file metadata.""" start="00:09:48.700" video="mainVideo-emms" id="subtitle"]]
[[!template text="""Since reading metadata takes time""" start="00:09:55.420" video="mainVideo-emms" id="subtitle"]]
[[!template text="""and that metadata doesn't change very often,""" start="00:09:58.200" video="mainVideo-emms" id="subtitle"]]
[[!template text="""Emms builds a cache as it extracts""" start="00:10:01.340" video="mainVideo-emms" id="subtitle"]]
[[!template text="""the information from each file.""" start="00:10:04.080" video="mainVideo-emms" id="subtitle"]]
[[!template text="""The first time loading of thousands of tracks""" start="00:10:06.860" video="mainVideo-emms" id="subtitle"]]
[[!template text="""into the emms cache may take a while,""" start="00:10:09.880" video="mainVideo-emms" id="subtitle"]]
[[!template text="""but as is the nature of caching, subsequent loads""" start="00:10:13.260" video="mainVideo-emms" id="subtitle"]]
[[!template text="""will be nearly instantaneous.""" start="00:10:17.000" video="mainVideo-emms" id="subtitle"]]
[[!template text="""To ease loading huge media collections,""" start="00:10:20.060" video="mainVideo-emms" id="subtitle"]]
[[!template text="""emms also can populate the cache asynchronously,""" start="00:10:22.720" video="mainVideo-emms" id="subtitle"]]
[[!template text="""so that your emacs isn't locked up in the interim.""" start="00:10:26.520" video="mainVideo-emms" id="subtitle"]]
[[!template text="""Let's talk about streams and URLs.""" start="00:10:30.520" video="mainVideo-emms" id="subtitle"]]
[[!template text="""Not all playlist entries need to be associated with files.""" start="00:10:33.780" video="mainVideo-emms" id="subtitle"]]
[[!template text="""It's possible to add streaming playlists""" start="00:10:37.620" video="mainVideo-emms" id="subtitle"]]
[[!template text="""and URLs to any playlist.""" start="00:10:39.840" video="mainVideo-emms" id="subtitle"]]
[[!template text="""Emms also comes with a built-in eclectic list""" start="00:10:42.640" video="mainVideo-emms" id="subtitle"]]
[[!template text="""of streaming audio stations to get you started.""" start="00:10:46.120" video="mainVideo-emms" id="subtitle"]]
[[!template text="""Any playlist entry can be a URL,""" start="00:10:50.040" video="mainVideo-emms" id="subtitle"]]
[[!template text="""and that URL will be passed on to the media player backend,""" start="00:10:52.640" video="mainVideo-emms" id="subtitle"]]
[[!template text="""which can play it, if any.""" start="00:10:56.720" video="mainVideo-emms" id="subtitle"]]
[[!template new="1" text="""Meta-playlist mode""" start="00:11:01.200" video="mainVideo-emms" id="subtitle"]]
[[!template text="""Meta-playlist mode:""" start="00:11:01.200" video="mainVideo-emms" id="subtitle"]]
[[!template text="""Emms also has meta-playlist mode""" start="00:11:03.680" video="mainVideo-emms" id="subtitle"]]
[[!template text="""to help manage multiple playlists.""" start="00:11:08.300" video="mainVideo-emms" id="subtitle"]]
[[!template text="""When you invoke meta-playlist mode,""" start="00:11:11.960" video="mainVideo-emms" id="subtitle"]]
[[!template text="""you will see a listing of all of the current Emms playlists,""" start="00:11:13.880" video="mainVideo-emms" id="subtitle"]]
[[!template text="""and this mode binds a handful of useful keybindings""" start="00:11:16.960" video="mainVideo-emms" id="subtitle"]]
[[!template text="""to help manage those playlists.""" start="00:11:22.000" video="mainVideo-emms" id="subtitle"]]
[[!template new="1" text="""The browser""" start="00:11:29.860" video="mainVideo-emms" id="subtitle"]]
[[!template text="""The Browser:""" start="00:11:29.860" video="mainVideo-emms" id="subtitle"]]
[[!template text="""Music doesn't always lend itself to being viewed""" start="00:11:31.760" video="mainVideo-emms" id="subtitle"]]
[[!template text="""as a series of discrete files.""" start="00:11:35.440" video="mainVideo-emms" id="subtitle"]]
[[!template text="""While there may be a good taxonomy of music""" start="00:11:38.200" video="mainVideo-emms" id="subtitle"]]
[[!template text="""that can be reflected using directories and filenames,""" start="00:11:41.560" video="mainVideo-emms" id="subtitle"]]
[[!template text="""there are other aspects which cannot.""" start="00:11:45.460" video="mainVideo-emms" id="subtitle"]]
[[!template text="""This is especially true when you consider that""" start="00:11:49.100" video="mainVideo-emms" id="subtitle"]]
[[!template text="""unlike many computer file taxonomies,""" start="00:11:51.600" video="mainVideo-emms" id="subtitle"]]
[[!template text="""music files may contain""" start="00:11:55.300" video="mainVideo-emms" id="subtitle"]]
[[!template text="""a lot of self-descriptive information""" start="00:11:56.720" video="mainVideo-emms" id="subtitle"]]
[[!template text="""in the form of metadata,""" start="00:11:58.760" video="mainVideo-emms" id="subtitle"]]
[[!template text="""such as the year a work was published, the composer,""" start="00:12:00.620" video="mainVideo-emms" id="subtitle"]]
[[!template text="""the performing artist, etc.""" start="00:12:04.280" video="mainVideo-emms" id="subtitle"]]
[[!template text="""Therefore, it makes sense for Emms to enable""" start="00:12:07.520" video="mainVideo-emms" id="subtitle"]]
[[!template text="""a different view into a media collection""" start="00:12:11.080" video="mainVideo-emms" id="subtitle"]]
[[!template text="""which is based on the cached metadata.""" start="00:12:13.200" video="mainVideo-emms" id="subtitle"]]
[[!template text="""The browser interface binds a host of keys""" start="00:12:17.060" video="mainVideo-emms" id="subtitle"]]
[[!template text="""to help navigate the tree structure""" start="00:12:19.840" video="mainVideo-emms" id="subtitle"]]
[[!template text="""of the metadata information.""" start="00:12:22.080" video="mainVideo-emms" id="subtitle"]]
[[!template text="""Since browser display""" start="00:12:24.540" video="mainVideo-emms" id="subtitle"]]
[[!template text="""is not predicated upon directory structure,""" start="00:12:25.840" video="mainVideo-emms" id="subtitle"]]
[[!template text="""you can invoke functions such as `emms-browse-by-album`,""" start="00:12:28.280" video="mainVideo-emms" id="subtitle"]]
[[!template text="""or `emms-browse-by-artist`, etc.""" start="00:12:32.940" video="mainVideo-emms" id="subtitle"]]
[[!template text="""to view the collection in different ways.""" start="00:12:35.640" video="mainVideo-emms" id="subtitle"]]
[[!template text="""Emms can do a lot more,""" start="00:12:42.180" video="mainVideo-emms" id="subtitle"]]
[[!template text="""but covering it all would take too much time.""" start="00:12:43.760" video="mainVideo-emms" id="subtitle"]]
[[!template text="""I do recommend opening the fine Emms manual""" start="00:12:47.020" video="mainVideo-emms" id="subtitle"]]
[[!template text="""and getting to know some additional features""" start="00:12:50.240" video="mainVideo-emms" id="subtitle"]]
[[!template text="""such as sorting tracks in playlists,""" start="00:12:52.320" video="mainVideo-emms" id="subtitle"]]
[[!template text="""sorting and filtering in the browser,""" start="00:12:55.000" video="mainVideo-emms" id="subtitle"]]
[[!template text="""editing track information,""" start="00:12:57.200" video="mainVideo-emms" id="subtitle"]]
[[!template text="""deriving a new playlist from an existing playlist,""" start="00:12:59.080" video="mainVideo-emms" id="subtitle"]]
[[!template text="""the music player daemon, lyrics display, volume control,""" start="00:13:01.920" video="mainVideo-emms" id="subtitle"]]
[[!template text="""bookmarks, GNU FM, and Dbus/Mpris support.""" start="00:13:07.040" video="mainVideo-emms" id="subtitle"]]
[[!template text="""I hope this was a useful introduction to Emms.""" start="00:13:13.360" video="mainVideo-emms" id="subtitle"]]
[[!template new="1" text="""How Emms works: The technical part""" start="00:13:19.920" video="mainVideo-emms" id="subtitle"]]
[[!template text="""How Emms Works: The technical part:""" start="00:13:19.920" video="mainVideo-emms" id="subtitle"]]
[[!template text="""This part is an overview of how Emms works.""" start="00:13:23.220" video="mainVideo-emms" id="subtitle"]]
[[!template text="""By the end of this, you should be familiar enough""" start="00:13:26.820" video="mainVideo-emms" id="subtitle"]]
[[!template text="""with Emms internals to hack on it. Hint hint.""" start="00:13:29.760" video="mainVideo-emms" id="subtitle"]]
[[!template text="""A short history of Emms""" start="00:13:34.740" video="mainVideo-emms" id="subtitle"]]
[[!template text="""Emms is 20 years old as of the time of writing.""" start="00:13:37.680" video="mainVideo-emms" id="subtitle"]]
[[!template text="""Old enough to drink in many countries.""" start="00:13:42.940" video="mainVideo-emms" id="subtitle"]]
[[!template text="""This means it was developed back in 2003""" start="00:13:45.400" video="mainVideo-emms" id="subtitle"]]
[[!template text="""for emacs 21.2 or thereabouts.""" start="00:13:48.880" video="mainVideo-emms" id="subtitle"]]
[[!template text="""As developers, we don't go around looking to""" start="00:13:53.440" video="mainVideo-emms" id="subtitle"]]
[[!template text="""replace code just because it's old.""" start="00:13:56.280" video="mainVideo-emms" id="subtitle"]]
[[!template text="""On the other hand, some parts were inadequate""" start="00:13:58.840" video="mainVideo-emms" id="subtitle"]]
[[!template text="""or just didn't age gracefully.""" start="00:14:01.840" video="mainVideo-emms" id="subtitle"]]
[[!template text="""And we have been partially or completely rewriting those.""" start="00:14:04.920" video="mainVideo-emms" id="subtitle"]]
[[!template text="""I became the maintainer of Emms about a decade ago,""" start="00:14:10.360" video="mainVideo-emms" id="subtitle"]]
[[!template text="""but I didn't start the project.""" start="00:14:13.720" video="mainVideo-emms" id="subtitle"]]
[[!template text="""Jorgen Schäfer started the project.""" start="00:14:16.100" video="mainVideo-emms" id="subtitle"]]
[[!template text="""I reached out to Jorgen""" start="00:14:21.020" video="mainVideo-emms" id="subtitle"]]
[[!template text="""and he kindly shared some of his recollections.""" start="00:14:22.520" video="mainVideo-emms" id="subtitle"]]
[[!template text="""Jorgen states that Emms was born back""" start="00:14:25.620" video="mainVideo-emms" id="subtitle"]]
[[!template text="""when the music format wars raged.""" start="00:14:28.200" video="mainVideo-emms" id="subtitle"]]
[[!template text="""MP3 was the standard, but overshadowed with patent issues.""" start="00:14:31.280" video="mainVideo-emms" id="subtitle"]]
[[!template text="""In fact, Technicolor and Fraunhofer IIS""" start="00:14:38.700" video="mainVideo-emms" id="subtitle"]]
[[!template text="""only stopped licensing their patents for MP3""" start="00:14:42.480" video="mainVideo-emms" id="subtitle"]]
[[!template text="""as recently as April of 2017.""" start="00:14:45.560" video="mainVideo-emms" id="subtitle"]]
[[!template text="""Jorgen said that, and I quote,""" start="00:14:49.360" video="mainVideo-emms" id="subtitle"]]
[[!template text=""""I needed a tool that was player agnostic""" start="00:14:53.540" video="mainVideo-emms" id="subtitle"]]
[[!template text="""and that could deal with a large collection of music files.""" start="00:14:56.080" video="mainVideo-emms" id="subtitle"]]
[[!template text="""And I did not want any of the GUI music players""" start="00:14:59.440" video="mainVideo-emms" id="subtitle"]]
[[!template text="""that existed back then.""" start="00:15:02.800" video="mainVideo-emms" id="subtitle"]]
[[!template text="""Primarily, actually, because I did not want""" start="00:15:04.040" video="mainVideo-emms" id="subtitle"]]
[[!template text="""to be switching windows to skip to the next song.""" start="00:15:07.520" video="mainVideo-emms" id="subtitle"]]
[[!template text="""If I remember correctly,""" start="00:15:11.400" video="mainVideo-emms" id="subtitle"]]
[[!template text="""I had just a shell script before that.""" start="00:15:12.880" video="mainVideo-emms" id="subtitle"]]
[[!template text="""But I figured I lived in Emacs, so why not write a tool""" start="00:15:16.280" video="mainVideo-emms" id="subtitle"]]
[[!template text="""that I can control my music from Emacs""" start="00:15:20.160" video="mainVideo-emms" id="subtitle"]]
[[!template text="""without ever having to leave Emacs?" Unquote.""" start="00:15:23.040" video="mainVideo-emms" id="subtitle"]]
[[!template text="""We can see that Jorgen's motivations were of the best kind,""" start="00:15:27.760" video="mainVideo-emms" id="subtitle"]]
[[!template text="""to stay in Emacs.""" start="00:15:32.120" video="mainVideo-emms" id="subtitle"]]
[[!template text="""Emms, an architecture of sensible abstractions.""" start="00:15:35.320" video="mainVideo-emms" id="subtitle"]]
[[!template text="""Emms can be divided into a number of parts.""" start="00:15:40.680" video="mainVideo-emms" id="subtitle"]]
[[!template text="""The core, tracks, playlists, sources, players,""" start="00:15:44.040" video="mainVideo-emms" id="subtitle"]]
[[!template text="""info, cache, and ancillary.""" start="00:15:48.120" video="mainVideo-emms" id="subtitle"]]
[[!template text="""Now David J. Wheeler once said""" start="00:15:51.760" video="mainVideo-emms" id="subtitle"]]
[[!template text="""that all problems in computer science""" start="00:15:53.680" video="mainVideo-emms" id="subtitle"]]
[[!template text="""can be solved by another level of indirection,""" start="00:15:56.000" video="mainVideo-emms" id="subtitle"]]
[[!template text="""except of course for the problem""" start="00:15:59.800" video="mainVideo-emms" id="subtitle"]]
[[!template text="""of too many layers of indirection.""" start="00:16:01.640" video="mainVideo-emms" id="subtitle"]]
[[!template text="""Emms core has survived this long""" start="00:16:04.420" video="mainVideo-emms" id="subtitle"]]
[[!template text="""because it makes sensible and flexible coding abstractions.""" start="00:16:07.000" video="mainVideo-emms" id="subtitle"]]
[[!template text="""Keep this in mind as we explore the implementation.""" start="00:16:11.620" video="mainVideo-emms" id="subtitle"]]
[[!template text="""This following part of the talk will also be invaluable""" start="00:16:15.500" video="mainVideo-emms" id="subtitle"]]
[[!template text="""if you want to hack on Emacs.""" start="00:16:18.880" video="mainVideo-emms" id="subtitle"]]
[[!template text="""Another hint.""" start="00:16:21.560" video="mainVideo-emms" id="subtitle"]]
[[!template new="1" text="""The Emms core""" start="00:16:23.820" video="mainVideo-emms" id="subtitle"]]
[[!template text="""The Emms core.""" start="00:16:23.820" video="mainVideo-emms" id="subtitle"]]
[[!template text="""The core defines tracks, playlists,""" start="00:16:25.360" video="mainVideo-emms" id="subtitle"]]
[[!template text="""a way to start and stop playback,""" start="00:16:29.080" video="mainVideo-emms" id="subtitle"]]
[[!template text="""as well as ways to proceed to the next track.""" start="00:16:31.760" video="mainVideo-emms" id="subtitle"]]
[[!template new="1" text="""Tracks""" start="00:16:36.440" video="mainVideo-emms" id="subtitle"]]
[[!template text="""Tracks:""" start="00:16:36.440" video="mainVideo-emms" id="subtitle"]]
[[!template text="""Emms tracks consist of a list whose CAR is the symbol track,""" start="00:16:38.460" video="mainVideo-emms" id="subtitle"]]
[[!template text="""and CADR is an alist starting with""" start="00:16:44.780" video="mainVideo-emms" id="subtitle"]]
[[!template text="""the association of `type'.""" start="00:16:47.080" video="mainVideo-emms" id="subtitle"]]
[[!template text="""Type can be something like file, streamlist, URL, etc.""" start="00:16:50.640" video="mainVideo-emms" id="subtitle"]]
[[!template text="""A track of classical music from Bach's Art of Fugue""" start="00:16:56.740" video="mainVideo-emms" id="subtitle"]]
[[!template text="""may look something like this.""" start="00:17:00.080" video="mainVideo-emms" id="subtitle"]]
[[!template text="""While a track may contain many associations,""" start="00:17:04.380" video="mainVideo-emms" id="subtitle"]]
[[!template text="""the number of associations remains a small constant""" start="00:17:07.600" video="mainVideo-emms" id="subtitle"]]
[[!template text="""from the perspective of computational steps required""" start="00:17:11.080" video="mainVideo-emms" id="subtitle"]]
[[!template text="""to find any particular association.""" start="00:17:14.200" video="mainVideo-emms" id="subtitle"]]
[[!template new="1" text="""Playlist""" start="00:17:18.460" video="mainVideo-emms" id="subtitle"]]
[[!template text="""Playlist:""" start="00:17:18.460" video="mainVideo-emms" id="subtitle"]]
[[!template text="""An Emms playlist consists of an Emacs buffer""" start="00:17:20.620" video="mainVideo-emms" id="subtitle"]]
[[!template text="""with a buffer-local non-nil variable,""" start="00:17:23.480" video="mainVideo-emms" id="subtitle"]]
[[!template text="""`emms-playlist-buffer-p`.""" start="00:17:26.460" video="mainVideo-emms" id="subtitle"]]
[[!template text="""The buffer can contain anything, any amount or type of text,""" start="00:17:29.820" video="mainVideo-emms" id="subtitle"]]
[[!template text="""or anything else.""" start="00:17:33.720" video="mainVideo-emms" id="subtitle"]]
[[!template text="""Emms tracks are stored in text properties within the buffer,""" start="00:17:35.960" video="mainVideo-emms" id="subtitle"]]
[[!template text="""with the unimaginatively named text property `emms-track`.""" start="00:17:40.500" video="mainVideo-emms" id="subtitle"]]
[[!template text="""For Emms, to go to the next track consists of""" start="00:17:46.400" video="mainVideo-emms" id="subtitle"]]
[[!template text="""nothing more than looking for the next text property change""" start="00:17:49.240" video="mainVideo-emms" id="subtitle"]]
[[!template text="""containing `emms-track`, wherever that is.""" start="00:17:52.840" video="mainVideo-emms" id="subtitle"]]
[[!template text="""That means that there is a healthy decoupling between""" start="00:17:57.180" video="mainVideo-emms" id="subtitle"]]
[[!template text="""the visual representation of a playlist""" start="00:18:00.540" video="mainVideo-emms" id="subtitle"]]
[[!template text="""and its contents as far as Emms is concerned.""" start="00:18:03.840" video="mainVideo-emms" id="subtitle"]]
[[!template text="""This decoupling allows Emms playlist buffers""" start="00:18:08.260" video="mainVideo-emms" id="subtitle"]]
[[!template text="""to look like anything as long as that anything consists of""" start="00:18:11.600" video="mainVideo-emms" id="subtitle"]]
[[!template text="""one or more `emms-track` text properties.""" start="00:18:15.320" video="mainVideo-emms" id="subtitle"]]
[[!template new="1" text="""Sources""" start="00:18:22.080" video="mainVideo-emms" id="subtitle"]]
[[!template text="""Sources:""" start="00:18:22.080" video="mainVideo-emms" id="subtitle"]]
[[!template text="""A source is how you tell Emms:""" start="00:18:23.580" video="mainVideo-emms" id="subtitle"]]
[[!template text=""""Go and get those things and turn them into tracks."""" start="00:18:25.840" video="mainVideo-emms" id="subtitle"]]
[[!template text="""More specifically, an Emms source is a function called in""" start="00:18:29.780" video="mainVideo-emms" id="subtitle"]]
[[!template text="""a playlist buffer in order to add tracks.""" start="00:18:34.480" video="mainVideo-emms" id="subtitle"]]
[[!template text="""And even more specifically, a source is really""" start="00:18:37.260" video="mainVideo-emms" id="subtitle"]]
[[!template text="""a family of related functions""" start="00:18:40.200" video="mainVideo-emms" id="subtitle"]]
[[!template text="""defined by the macro `define-emms-source`.""" start="00:18:42.680" video="mainVideo-emms" id="subtitle"]]
[[!template text="""A straightforward example""" start="00:18:47.680" video="mainVideo-emms" id="subtitle"]]
[[!template text="""is the function `emms-add-directory`,""" start="00:18:49.960" video="mainVideo-emms" id="subtitle"]]
[[!template text="""which adds an entire directory of files""" start="00:18:52.960" video="mainVideo-emms" id="subtitle"]]
[[!template text="""to the current playlist.""" start="00:18:55.880" video="mainVideo-emms" id="subtitle"]]
[[!template text="""It accepts, or interactively queries for, a directory""" start="00:18:57.440" video="mainVideo-emms" id="subtitle"]]
[[!template text="""and iterates over each file in that directory,""" start="00:19:02.320" video="mainVideo-emms" id="subtitle"]]
[[!template text="""adding them as tracks to the playlist buffer as it goes.""" start="00:19:06.120" video="mainVideo-emms" id="subtitle"]]
[[!template text="""Emms comes with sources for files, directories, URLs,""" start="00:19:10.760" video="mainVideo-emms" id="subtitle"]]
[[!template text="""playlists of various formats,""" start="00:19:15.040" video="mainVideo-emms" id="subtitle"]]
[[!template text="""files from dired mode, and etc.""" start="00:19:17.320" video="mainVideo-emms" id="subtitle"]]
[[!template new="1" text="""Players""" start="00:19:22.160" video="mainVideo-emms" id="subtitle"]]
[[!template text="""Players:""" start="00:19:22.160" video="mainVideo-emms" id="subtitle"]]
[[!template text="""An Emms player is, at its simplest, a data structure""" start="00:19:24.880" video="mainVideo-emms" id="subtitle"]]
[[!template text="""with three functions.""" start="00:19:28.960" video="mainVideo-emms" id="subtitle"]]
[[!template text="""One to start playing, one to stop,""" start="00:19:30.840" video="mainVideo-emms" id="subtitle"]]
[[!template text="""and one which returns true if the player knows""" start="00:19:34.520" video="mainVideo-emms" id="subtitle"]]
[[!template text="""how to play a given track.""" start="00:19:38.180" video="mainVideo-emms" id="subtitle"]]
[[!template text="""However, if your player also knows how to pause, resume,""" start="00:19:41.280" video="mainVideo-emms" id="subtitle"]]
[[!template text="""seek, etc, then additional functions can be added""" start="00:19:44.760" video="mainVideo-emms" id="subtitle"]]
[[!template text="""to the player data structure.""" start="00:19:48.280" video="mainVideo-emms" id="subtitle"]]
[[!template text="""This is abstract enough to be able to, for example,""" start="00:19:51.320" video="mainVideo-emms" id="subtitle"]]
[[!template text="""define a simple player for images with the help of""" start="00:19:55.400" video="mainVideo-emms" id="subtitle"]]
[[!template text="""the `define-emms-simple-player` macro.""" start="00:19:58.840" video="mainVideo-emms" id="subtitle"]]
[[!template text="""The above will define a player called `emms-player-display`,""" start="00:20:04.580" video="mainVideo-emms" id="subtitle"]]
[[!template text="""which would call ImageMagick's `display` command""" start="00:20:09.560" video="mainVideo-emms" id="subtitle"]]
[[!template text="""on each file in our playlist""" start="00:20:12.960" video="mainVideo-emms" id="subtitle"]]
[[!template text="""with the image file extension we listed.""" start="00:20:15.640" video="mainVideo-emms" id="subtitle"]]
[[!template new="1" text="""Info""" start="00:20:20.520" video="mainVideo-emms" id="subtitle"]]
[[!template text="""Info:""" start="00:20:20.520" video="mainVideo-emms" id="subtitle"]]
[[!template text="""As previously described, Emms comes with info methods,""" start="00:20:23.060" video="mainVideo-emms" id="subtitle"]]
[[!template text="""which are functions to add""" start="00:20:28.020" video="mainVideo-emms" id="subtitle"]]
[[!template text="""descriptive information to tracks.""" start="00:20:29.640" video="mainVideo-emms" id="subtitle"]]
[[!template text="""Emms is set up so that""" start="00:20:32.340" video="mainVideo-emms" id="subtitle"]]
[[!template text="""the hook `emms-track-initialize-functions` is called""" start="00:20:34.640" video="mainVideo-emms" id="subtitle"]]
[[!template text="""when a track is created, and that ends up calling""" start="00:20:37.720" video="mainVideo-emms" id="subtitle"]]
[[!template text="""the info methods listed in the `emms-info-functions` list.""" start="00:20:41.640" video="mainVideo-emms" id="subtitle"]]
[[!template text="""These will modify the track data structure to add metadata.""" start="00:20:46.280" video="mainVideo-emms" id="subtitle"]]
[[!template text="""One of the coolest recent features of Emms""" start="00:20:51.200" video="mainVideo-emms" id="subtitle"]]
[[!template text="""is `emms-info-native`, written by Petteri Hintsanen;""" start="00:20:54.320" video="mainVideo-emms" id="subtitle"]]
[[!template text="""again, sorry for the pronunciation.""" start="00:20:58.700" video="mainVideo-emms" id="subtitle"]]
[[!template text="""`emms-info-native` is a purely Emacs Lisp implementation""" start="00:21:01.326" video="mainVideo-emms" id="subtitle"]]
[[!template text="""which reads Ogg Vorbis, Ogg Opus, FLAC, and MP3 files""" start="00:21:06.520" video="mainVideo-emms" id="subtitle"]]
[[!template text="""and parses out the metadata.""" start="00:21:11.440" video="mainVideo-emms" id="subtitle"]]
[[!template text="""This is in comparison with other info readers""" start="00:21:14.680" video="mainVideo-emms" id="subtitle"]]
[[!template text="""which Emms supports, which all involve calling out""" start="00:21:17.520" video="mainVideo-emms" id="subtitle"]]
[[!template text="""to external processes and parsing the values returned.""" start="00:21:20.560" video="mainVideo-emms" id="subtitle"]]
[[!template text="""`emms-info-native` works by unpacking and examining""" start="00:21:25.620" video="mainVideo-emms" id="subtitle"]]
[[!template text="""the binary data in the media file headers""" start="00:21:29.320" video="mainVideo-emms" id="subtitle"]]
[[!template text="""and parsing the data layout specifications.""" start="00:21:32.040" video="mainVideo-emms" id="subtitle"]]
[[!template new="1" text="""The cache""" start="00:21:36.660" video="mainVideo-emms" id="subtitle"]]
[[!template text="""The Cache:""" start="00:21:36.660" video="mainVideo-emms" id="subtitle"]]
[[!template text="""The Emms cache is a mapping between a full path name""" start="00:21:38.880" video="mainVideo-emms" id="subtitle"]]
[[!template text="""and its associated information.""" start="00:21:43.280" video="mainVideo-emms" id="subtitle"]]
[[!template text="""Once information is extracted from a file""" start="00:21:45.720" video="mainVideo-emms" id="subtitle"]]
[[!template text="""using an info method, that information is then""" start="00:21:48.200" video="mainVideo-emms" id="subtitle"]]
[[!template text="""associated with that file in the cache.""" start="00:21:50.760" video="mainVideo-emms" id="subtitle"]]
[[!template text="""One thing to bear in mind is that the caching system""" start="00:21:53.980" video="mainVideo-emms" id="subtitle"]]
[[!template text="""was originally written back""" start="00:21:57.160" video="mainVideo-emms" id="subtitle"]]
[[!template text="""when slow spinning disks were common.""" start="00:21:58.360" video="mainVideo-emms" id="subtitle"]]
[[!template text="""A 32GB SSD drive cost close to $700 in 2006,""" start="00:22:00.760" video="mainVideo-emms" id="subtitle"]]
[[!template text="""which is the equivalent of about $1,000""" start="00:22:07.520" video="mainVideo-emms" id="subtitle"]]
[[!template text="""at the time of writing.""" start="00:22:10.280" video="mainVideo-emms" id="subtitle"]]
[[!template text="""But despite the speed of modern drives,""" start="00:22:12.440" video="mainVideo-emms" id="subtitle"]]
[[!template text="""the caching system is still worth using""" start="00:22:15.260" video="mainVideo-emms" id="subtitle"]]
[[!template text="""for larger music collections.""" start="00:22:17.440" video="mainVideo-emms" id="subtitle"]]
[[!template text="""The caching system is also a prerequisite""" start="00:22:19.680" video="mainVideo-emms" id="subtitle"]]
[[!template text="""for being able to use the Emms browser.""" start="00:22:22.440" video="mainVideo-emms" id="subtitle"]]
[[!template text="""The cache implementation is relatively naive.""" start="00:22:26.600" video="mainVideo-emms" id="subtitle"]]
[[!template text="""For instance, moving a file will invalidate""" start="00:22:30.380" video="mainVideo-emms" id="subtitle"]]
[[!template text="""that cache entry for that file""" start="00:22:33.200" video="mainVideo-emms" id="subtitle"]]
[[!template text="""and will require a refresh.""" start="00:22:35.800" video="mainVideo-emms" id="subtitle"]]
[[!template text="""However, relatively little work has been done""" start="00:22:37.580" video="mainVideo-emms" id="subtitle"]]
[[!template text="""to the cache implementation over the years""" start="00:22:40.600" video="mainVideo-emms" id="subtitle"]]
[[!template text="""since it has proven to be good enough""" start="00:22:42.780" video="mainVideo-emms" id="subtitle"]]
[[!template text="""for the majority of situations.""" start="00:22:45.000" video="mainVideo-emms" id="subtitle"]]
[[!template text="""Which is to say, nobody complained.""" start="00:22:47.060" video="mainVideo-emms" id="subtitle"]]
[[!template new="1" text="""Healthy back and forth: mpv, mpd, and GNU.FM""" start="00:22:51.620" video="mainVideo-emms" id="subtitle"]]
[[!template text="""Healthy back and forth. MPV, MPD, GNU.FM""" start="00:22:51.620" video="mainVideo-emms" id="subtitle"]]
[[!template text="""Process communication with a simple media player""" start="00:22:56.240" video="mainVideo-emms" id="subtitle"]]
[[!template text="""can be as straightforward""" start="00:23:00.120" video="mainVideo-emms" id="subtitle"]]
[[!template text="""as starting an asynchronous process""" start="00:23:01.760" video="mainVideo-emms" id="subtitle"]]
[[!template text="""and waiting for that process to complete""" start="00:23:03.800" video="mainVideo-emms" id="subtitle"]]
[[!template text="""in order to move to the next track.""" start="00:23:05.800" video="mainVideo-emms" id="subtitle"]]
[[!template text="""This is how the example above""" start="00:23:08.620" video="mainVideo-emms" id="subtitle"]]
[[!template text="""with ImageMagick's display binary worked.""" start="00:23:10.880" video="mainVideo-emms" id="subtitle"]]
[[!template text="""However, Emms also handles asynchronous""" start="00:23:13.760" video="mainVideo-emms" id="subtitle"]]
[[!template text="""two-way communication with processes.""" start="00:23:17.440" video="mainVideo-emms" id="subtitle"]]
[[!template text="""A simple example of this would be sending strings""" start="00:23:20.300" video="mainVideo-emms" id="subtitle"]]
[[!template text="""to a running process such as the pause command to VLC.""" start="00:23:23.960" video="mainVideo-emms" id="subtitle"]]
[[!template new="1" text="""MPV""" start="00:23:31.560" video="mainVideo-emms" id="subtitle"]]
[[!template text="""MPV:""" start="00:23:31.560" video="mainVideo-emms" id="subtitle"]]
[[!template text="""MPV is a popular media player forked""" start="00:23:33.380" video="mainVideo-emms" id="subtitle"]]
[[!template text="""in a roundabout way from mplayer.""" start="00:23:37.040" video="mainVideo-emms" id="subtitle"]]
[[!template text="""One of its most notable features is""" start="00:23:39.900" video="mainVideo-emms" id="subtitle"]]
[[!template text="""support for a robust client API.""" start="00:23:42.080" video="mainVideo-emms" id="subtitle"]]
[[!template text="""Mike Kazantsev has been working since 2018""" start="00:23:46.600" video="mainVideo-emms" id="subtitle"]]
[[!template text="""to develop the excellent `emms-player-mpv.el'.""" start="00:23:52.960" video="mainVideo-emms" id="subtitle"]]
[[!template text="""It can communicate with a long running MPV process""" start="00:23:58.350" video="mainVideo-emms" id="subtitle"]]
[[!template text="""via Unix sockets or IP sockets.""" start="00:24:02.000" video="mainVideo-emms" id="subtitle"]]
[[!template text="""This allows for MPV to do things""" start="00:24:07.180" video="mainVideo-emms" id="subtitle"]]
[[!template text="""like update ICY metadata for streaming audio.""" start="00:24:11.170" video="mainVideo-emms" id="subtitle"]]
[[!template text="""So that, for example, when a song changes""" start="00:24:14.890" video="mainVideo-emms" id="subtitle"]]
[[!template text="""while you're listening to a streaming audio via Emms,""" start="00:24:17.640" video="mainVideo-emms" id="subtitle"]]
[[!template text="""the song title displayed in the mode line""" start="00:24:22.050" video="mainVideo-emms" id="subtitle"]]
[[!template text="""and track listing can update as well.""" start="00:24:24.680" video="mainVideo-emms" id="subtitle"]]
[[!template text="""This means that deep inside the code""" start="00:24:28.330" video="mainVideo-emms" id="subtitle"]]
[[!template text="""there is an Emacs `make-network-process` call.""" start="00:24:30.400" video="mainVideo-emms" id="subtitle"]]
[[!template text="""The fact that Mike has put this together""" start="00:24:35.630" video="mainVideo-emms" id="subtitle"]]
[[!template text="""in fewer than 1,000 lines of legible Emacs Lisp""" start="00:24:37.920" video="mainVideo-emms" id="subtitle"]]
[[!template text="""is a testament to some serious coding ability.""" start="00:24:42.640" video="mainVideo-emms" id="subtitle"]]
[[!template new="1" text="""MPD""" start="00:24:47.470" video="mainVideo-emms" id="subtitle"]]
[[!template text="""MPD:""" start="00:24:47.470" video="mainVideo-emms" id="subtitle"]]
[[!template text="""Similar to MPV but potentially""" start="00:24:49.610" video="mainVideo-emms" id="subtitle"]]
[[!template text="""on a completely different machine""" start="00:24:52.400" video="mainVideo-emms" id="subtitle"]]
[[!template text="""is Emms support for the Music Player Daemon.""" start="00:24:54.120" video="mainVideo-emms" id="subtitle"]]
[[!template text="""Music Player Daemon or MPD is a media player""" start="00:24:58.460" video="mainVideo-emms" id="subtitle"]]
[[!template text="""with an explicit client-server design""" start="00:25:01.520" video="mainVideo-emms" id="subtitle"]]
[[!template text="""and communicates with Emms via a network process.""" start="00:25:03.960" video="mainVideo-emms" id="subtitle"]]
[[!template text="""Unfortunately, MPD support has never been all that great.""" start="00:25:09.950" video="mainVideo-emms" id="subtitle"]]
[[!template text="""But this isn't the emms developers fault!""" start="00:25:16.090" video="mainVideo-emms" id="subtitle"]]
[[!template text="""Because unlike every other media player""" start="00:25:20.470" video="mainVideo-emms" id="subtitle"]]
[[!template text="""that Emms interfaces with MPD is designed around""" start="00:25:25.600" video="mainVideo-emms" id="subtitle"]]
[[!template text="""its own internal playlist database.""" start="00:25:29.730" video="mainVideo-emms" id="subtitle"]]
[[!template text="""This is a surprising design decision""" start="00:25:31.930" video="mainVideo-emms" id="subtitle"]]
[[!template text="""on the MPD developers' part""" start="00:25:35.270" video="mainVideo-emms" id="subtitle"]]
[[!template text="""since it goes against the client-server mindset.""" start="00:25:37.650" video="mainVideo-emms" id="subtitle"]]
[[!template text="""A consequence is that we end up having to try and coordinate""" start="00:25:41.750" video="mainVideo-emms" id="subtitle"]]
[[!template text="""and harmonize the MPD playlist with the Emms playlist.""" start="00:25:45.960" video="mainVideo-emms" id="subtitle"]]
[[!template text="""I can foresee writing a completely new MPD mode for Emms""" start="00:25:51.400" video="mainVideo-emms" id="subtitle"]]
[[!template text="""which is designed to be a true pure MPD client.""" start="00:25:56.690" video="mainVideo-emms" id="subtitle"]]
[[!template text="""Unless of course someone volunteers to beat me to it.""" start="00:26:01.510" video="mainVideo-emms" id="subtitle"]]
[[!template text="""Hint hint.""" start="00:26:05.340" video="mainVideo-emms" id="subtitle"]]
[[!template new="1" text="""GNU FM and Libre FM""" start="00:26:07.440" video="mainVideo-emms" id="subtitle"]]
[[!template text="""GNU FM and Libre FM:""" start="00:26:07.440" video="mainVideo-emms" id="subtitle"]]
[[!template text="""Libre FM is a music community which allows you""" start="00:26:10.960" video="mainVideo-emms" id="subtitle"]]
[[!template text="""to share your listening habits with other users of the site.""" start="00:26:13.640" video="mainVideo-emms" id="subtitle"]]
[[!template text="""A kind of online listening party.""" start="00:26:17.450" video="mainVideo-emms" id="subtitle"]]
[[!template text="""In the case of `emms-librefm-scrobber.el`""" start="00:26:21.270" video="mainVideo-emms" id="subtitle"]]
[[!template text="""we use Emacs' `url-retrieve` function""" start="00:26:25.650" video="mainVideo-emms" id="subtitle"]]
[[!template text="""to asynchronously send to a URL""" start="00:26:28.640" video="mainVideo-emms" id="subtitle"]]
[[!template text="""and then fire a callback function to process the response.""" start="00:26:32.450" video="mainVideo-emms" id="subtitle"]]
[[!template text="""This represents numerous challenges""" start="00:26:40.050" video="mainVideo-emms" id="subtitle"]]
[[!template text="""to implement within Emacs.""" start="00:26:42.680" video="mainVideo-emms" id="subtitle"]]
[[!template text="""The primary issue being that Emacs itself""" start="00:26:45.090" video="mainVideo-emms" id="subtitle"]]
[[!template text="""is pretty weak at doing anything""" start="00:26:47.400" video="mainVideo-emms" id="subtitle"]]
[[!template text="""truly and really asynchronously.""" start="00:26:50.100" video="mainVideo-emms" id="subtitle"]]
[[!template text="""I can say with confident sarcasm""" start="00:26:54.220" video="mainVideo-emms" id="subtitle"]]
[[!template text="""and with tongue firmly planted in cheek""" start="00:26:56.400" video="mainVideo-emms" id="subtitle"]]
[[!template text="""that it is almost as if the original designers""" start="00:26:59.530" video="mainVideo-emms" id="subtitle"]]
[[!template text="""of Emacs didn't foresee their text editor""" start="00:27:02.880" video="mainVideo-emms" id="subtitle"]]
[[!template text="""needing to play music""" start="00:27:05.840" video="mainVideo-emms" id="subtitle"]]
[[!template text="""while interacting with a remote network server.""" start="00:27:07.040" video="mainVideo-emms" id="subtitle"]]
[[!template text="""How myopic!""" start="00:27:09.820" video="mainVideo-emms" id="subtitle"]]
[[!template new="1" text="""How we work: Emms development""" start="00:27:12.560" video="mainVideo-emms" id="subtitle"]]
[[!template text="""How we work: Emms development:""" start="00:27:12.560" video="mainVideo-emms" id="subtitle"]]
[[!template text="""This part is an overview of how Emms is developed.""" start="00:27:15.700" video="mainVideo-emms" id="subtitle"]]
[[!template text="""By the end of this part you should be able to understand""" start="00:27:19.620" video="mainVideo-emms" id="subtitle"]]
[[!template text="""how we hacked this project, and how you can too.""" start="00:27:23.900" video="mainVideo-emms" id="subtitle"]]
[[!template text="""Where it's at.""" start="00:27:28.720" video="mainVideo-emms" id="subtitle"]]
[[!template text="""How to find our forge.""" start="00:27:29.950" video="mainVideo-emms" id="subtitle"]]
[[!template text="""Emms has been hosted at the FSF's forge, Savannah,""" start="00:27:32.370" video="mainVideo-emms" id="subtitle"]]
[[!template text="""since around 2003.""" start="00:27:36.500" video="mainVideo-emms" id="subtitle"]]
[[!template text="""Emms is distributed via GNU ELPA and integrated into Emacs.""" start="00:27:39.840" video="mainVideo-emms" id="subtitle"]]
[[!template text="""Before ELPA it was distributed as a tarball""" start="00:27:46.230" video="mainVideo-emms" id="subtitle"]]
[[!template text="""via ftp.gnu.org but that stopped back in 2020.""" start="00:27:49.800" video="mainVideo-emms" id="subtitle"]]
[[!template text="""I was initially resistant to ELPA but around the time""" start="00:27:55.140" video="mainVideo-emms" id="subtitle"]]
[[!template text="""when the thousandth person asked me why Emms isn't on ELPA,""" start="00:27:58.720" video="mainVideo-emms" id="subtitle"]]
[[!template text="""I realized that it had to happen.""" start="00:28:03.850" video="mainVideo-emms" id="subtitle"]]
[[!template text="""Emms can also be found in other places""" start="00:28:07.210" video="mainVideo-emms" id="subtitle"]]
[[!template text="""such as Melpa or GitHub but we, the developers of Emms,""" start="00:28:10.600" video="mainVideo-emms" id="subtitle"]]
[[!template text="""have nothing to do with that""" start="00:28:16.080" video="mainVideo-emms" id="subtitle"]]
[[!template text="""and we don't monitor those channels.""" start="00:28:18.000" video="mainVideo-emms" id="subtitle"]]
[[!template text="""If you want the source straight from, well, the source,""" start="00:28:21.760" video="mainVideo-emms" id="subtitle"]]
[[!template text="""then go to the Savannah Git repository.""" start="00:28:26.300" video="mainVideo-emms" id="subtitle"]]
[[!template text="""Look who's talking: Where development discussion happens.""" start="00:28:30.370" video="mainVideo-emms" id="subtitle"]]
[[!template text="""If you want to talk to us, discussions all happen""" start="00:28:34.990" video="mainVideo-emms" id="subtitle"]]
[[!template text="""on emms-help@gnu.org.""" start="00:28:38.000" video="mainVideo-emms" id="subtitle"]]
[[!template text="""We used to use emms-patches@gnu.org""" start="00:28:41.430" video="mainVideo-emms" id="subtitle"]]
[[!template text="""but didn't feel like the volume of incoming patches""" start="00:28:45.560" video="mainVideo-emms" id="subtitle"]]
[[!template text="""justified a separate mailing list.""" start="00:28:48.280" video="mainVideo-emms" id="subtitle"]]
[[!template new="1" text="""The Rime Of The Ancient Maintainer""" start="00:28:52.590" video="mainVideo-emms" id="subtitle"]]
[[!template text="""The Rime Of The Ancient Maintainer:""" start="00:28:52.590" video="mainVideo-emms" id="subtitle"]]
[[!template text="""There are a number of activities""" start="00:28:55.720" video="mainVideo-emms" id="subtitle"]]
[[!template text="""particular to being a maintainer.""" start="00:28:57.480" video="mainVideo-emms" id="subtitle"]]
[[!template text="""These are all part of a project's lifecycle.""" start="00:29:00.100" video="mainVideo-emms" id="subtitle"]]
[[!template text="""Let's review some of them.""" start="00:29:03.390" video="mainVideo-emms" id="subtitle"]]
[[!template new="1" text="""The life and times of an Emms patch""" start="00:29:06.080" video="mainVideo-emms" id="subtitle"]]
[[!template text="""The life and times of an Emms patch:""" start="00:29:06.080" video="mainVideo-emms" id="subtitle"]]
[[!template text="""A maintainer needs to be able to accept, critique,""" start="00:29:10.000" video="mainVideo-emms" id="subtitle"]]
[[!template text="""and integrate patches from contributors and developers.""" start="00:29:13.240" video="mainVideo-emms" id="subtitle"]]
[[!template text="""This means, among other things, that the maintainer""" start="00:29:17.560" video="mainVideo-emms" id="subtitle"]]
[[!template text="""needs to keep on top of copyright issues.""" start="00:29:20.560" video="mainVideo-emms" id="subtitle"]]
[[!template text="""Before being able to add Emms to GNU/ELPA,""" start="00:29:24.470" video="mainVideo-emms" id="subtitle"]]
[[!template text="""we had to make sure that the copyright situation""" start="00:29:29.360" video="mainVideo-emms" id="subtitle"]]
[[!template text="""was in order.""" start="00:29:31.880" video="mainVideo-emms" id="subtitle"]]
[[!template text="""This long process required reaching out to people""" start="00:29:33.850" video="mainVideo-emms" id="subtitle"]]
[[!template text="""and having them assign the copyright""" start="00:29:37.520" video="mainVideo-emms" id="subtitle"]]
[[!template text="""for their work to the FSF,""" start="00:29:39.960" video="mainVideo-emms" id="subtitle"]]
[[!template text="""or even removing their code entirely""" start="00:29:42.510" video="mainVideo-emms" id="subtitle"]]
[[!template text="""if they couldn't be reached.""" start="00:29:45.200" video="mainVideo-emms" id="subtitle"]]
[[!template text="""The experience left me with the conviction""" start="00:29:47.970" video="mainVideo-emms" id="subtitle"]]
[[!template text="""that the easiest way to fix""" start="00:29:50.630" video="mainVideo-emms" id="subtitle"]]
[[!template text="""the copyright situation of your package""" start="00:29:52.400" video="mainVideo-emms" id="subtitle"]]
[[!template text="""is to ensure that it never gets broken in the first place.""" start="00:29:54.520" video="mainVideo-emms" id="subtitle"]]
[[!template text="""Often a person will write in to the emms-help mailing list,""" start="00:30:00.640" video="mainVideo-emms" id="subtitle"]]
[[!template text="""or perhaps raise an issue on IRC.""" start="00:30:04.440" video="mainVideo-emms" id="subtitle"]]
[[!template text="""If it's a bug report or feature request, we'll discuss it,""" start="00:30:08.030" video="mainVideo-emms" id="subtitle"]]
[[!template text="""and when it's fixed, we'll ask the reporter""" start="00:30:11.680" video="mainVideo-emms" id="subtitle"]]
[[!template text="""to test the result and provide feedback.""" start="00:30:14.160" video="mainVideo-emms" id="subtitle"]]
[[!template text="""If it's a patch, then we'll typically go one of three ways.""" start="00:30:17.640" video="mainVideo-emms" id="subtitle"]]
[[!template text="""A trivial patch, such as fixing a typo""" start="00:30:22.040" video="mainVideo-emms" id="subtitle"]]
[[!template text="""or corrections on a single line of code,""" start="00:30:24.800" video="mainVideo-emms" id="subtitle"]]
[[!template text="""will simply be applied by one of the developers.""" start="00:30:27.280" video="mainVideo-emms" id="subtitle"]]
[[!template text="""A non-trivial, but one-time patch,""" start="00:30:32.040" video="mainVideo-emms" id="subtitle"]]
[[!template text="""will have to be cleared from a copyright perspective.""" start="00:30:34.520" video="mainVideo-emms" id="subtitle"]]
[[!template text="""This means assigning copyright for the changes to the FSF.""" start="00:30:37.990" video="mainVideo-emms" id="subtitle"]]
[[!template text="""Once that's cleared, then the patch will be applied.""" start="00:30:42.420" video="mainVideo-emms" id="subtitle"]]
[[!template text="""Finally, if it's a non-trivial patch,""" start="00:30:46.320" video="mainVideo-emms" id="subtitle"]]
[[!template text="""which looks like it would be the start""" start="00:30:49.880" video="mainVideo-emms" id="subtitle"]]
[[!template text="""of a long-term development work (my favorite),""" start="00:30:52.080" video="mainVideo-emms" id="subtitle"]]
[[!template text="""then after copyright is cleared,""" start="00:30:56.010" video="mainVideo-emms" id="subtitle"]]
[[!template text="""that person will be offered to be added""" start="00:30:57.880" video="mainVideo-emms" id="subtitle"]]
[[!template text="""to the members with Git repo access on Savannah.""" start="00:31:00.800" video="mainVideo-emms" id="subtitle"]]
[[!template text="""From there, we usually use a dedicated branch""" start="00:31:05.020" video="mainVideo-emms" id="subtitle"]]
[[!template text="""to do all the playing around""" start="00:31:08.200" video="mainVideo-emms" id="subtitle"]]
[[!template text="""before merging it with the main Git repo.""" start="00:31:09.640" video="mainVideo-emms" id="subtitle"]]
[[!template text="""If you have ever sent a patch, feature request,""" start="00:31:13.630" video="mainVideo-emms" id="subtitle"]]
[[!template text="""or bug report into Emms (small or large), we thank you.""" start="00:31:16.880" video="mainVideo-emms" id="subtitle"]]
[[!template new="1" text="""Let It Go: The release process""" start="00:31:24.080" video="mainVideo-emms" id="subtitle"]]
[[!template text="""Let It Go, The Release Process:""" start="00:31:24.080" video="mainVideo-emms" id="subtitle"]]
[[!template text="""The maintainer is responsible for the release process.""" start="00:31:27.790" video="mainVideo-emms" id="subtitle"]]
[[!template text="""I found that a consistent schedule works well,""" start="00:31:31.610" video="mainVideo-emms" id="subtitle"]]
[[!template text="""which is not to say that we have to release on schedule,""" start="00:31:35.130" video="mainVideo-emms" id="subtitle"]]
[[!template text="""but that aiming for a consistent release schedule""" start="00:31:39.380" video="mainVideo-emms" id="subtitle"]]
[[!template text="""provides structure and a goal.""" start="00:31:42.760" video="mainVideo-emms" id="subtitle"]]
[[!template text="""The main Git branch in the repository is stable""" start="00:31:46.050" video="mainVideo-emms" id="subtitle"]]
[[!template text="""and more often than not of release quality.""" start="00:31:50.160" video="mainVideo-emms" id="subtitle"]]
[[!template text="""Releases are done about every three months.""" start="00:31:53.240" video="mainVideo-emms" id="subtitle"]]
[[!template text="""And with such a stable main branch,""" start="00:31:56.650" video="mainVideo-emms" id="subtitle"]]
[[!template text="""the process of releasing often involves little more""" start="00:31:59.000" video="mainVideo-emms" id="subtitle"]]
[[!template text="""than writing a NEWS entry.""" start="00:32:02.320" video="mainVideo-emms" id="subtitle"]]
[[!template text="""As a consequence, new and wonderful features""" start="00:32:05.060" video="mainVideo-emms" id="subtitle"]]
[[!template text="""which aren't quite ready for prime time""" start="00:32:08.440" video="mainVideo-emms" id="subtitle"]]
[[!template text="""when a release comes around,""" start="00:32:11.440" video="mainVideo-emms" id="subtitle"]]
[[!template text="""will remain safely in their branch on the Git repo""" start="00:32:13.500" video="mainVideo-emms" id="subtitle"]]
[[!template text="""until after the ELPA release.""" start="00:32:18.200" video="mainVideo-emms" id="subtitle"]]
[[!template new="1" text="""It Is Not In Our Stars, But In Ourselves: Future directions""" start="00:32:23.400" video="mainVideo-emms" id="subtitle"]]
[[!template text="""It Is Not In Our Stars, But In Ourselves; Future Directions:""" start="00:32:23.400" video="mainVideo-emms" id="subtitle"]]
[[!template text="""One aspect of Emms that needs to improve is ease of setup.""" start="00:32:29.630" video="mainVideo-emms" id="subtitle"]]
[[!template text="""Now that might surprise you, since at the time of writing,""" start="00:32:34.900" video="mainVideo-emms" id="subtitle"]]
[[!template text="""it's already pretty easy.""" start="00:32:37.720" video="mainVideo-emms" id="subtitle"]]
[[!template text="""But my ideal is that the user would need to do""" start="00:32:40.070" video="mainVideo-emms" id="subtitle"]]
[[!template text="""nothing at all after installation.""" start="00:32:43.880" video="mainVideo-emms" id="subtitle"]]
[[!template text="""And with that, as a goal in mind,""" start="00:32:46.840" video="mainVideo-emms" id="subtitle"]]
[[!template text="""there is more work to be done.""" start="00:32:49.360" video="mainVideo-emms" id="subtitle"]]
[[!template text="""We are working on a player discovery feature.""" start="00:32:52.750" video="mainVideo-emms" id="subtitle"]]
[[!template text="""The idea is simple.""" start="00:32:55.500" video="mainVideo-emms" id="subtitle"]]
[[!template text="""The code looks for binaries of popular media players""" start="00:32:57.040" video="mainVideo-emms" id="subtitle"]]
[[!template text="""on the user's machine,""" start="00:33:00.080" video="mainVideo-emms" id="subtitle"]]
[[!template text="""and for each one found, it asks the user""" start="00:33:01.640" video="mainVideo-emms" id="subtitle"]]
[[!template text="""if they want the associated Emms player backend""" start="00:33:04.520" video="mainVideo-emms" id="subtitle"]]
[[!template text="""to be configured.""" start="00:33:07.520" video="mainVideo-emms" id="subtitle"]]
[[!template text="""In effect, this code is already working,""" start="00:33:09.810" video="mainVideo-emms" id="subtitle"]]
[[!template text="""but currently an undocumented, unofficial feature.""" start="00:33:12.590" video="mainVideo-emms" id="subtitle"]]
[[!template text="""You can try it for yourself with""" start="00:33:16.290" video="mainVideo-emms" id="subtitle"]]
[[!template text="""`emms-setup-discover-players`.""" start="00:33:17.720" video="mainVideo-emms" id="subtitle"]]
[[!template text="""So what's the holdup?""" start="00:33:21.080" video="mainVideo-emms" id="subtitle"]]
[[!template text="""`emms-setup-discover-players` currently configures""" start="00:33:22.970" video="mainVideo-emms" id="subtitle"]]
[[!template text="""the `emms-player-list` variable,""" start="00:33:26.040" video="mainVideo-emms" id="subtitle"]]
[[!template text="""but doesn't write it to disk.""" start="00:33:27.840" video="mainVideo-emms" id="subtitle"]]
[[!template text="""And that means that the configuration""" start="00:33:29.900" video="mainVideo-emms" id="subtitle"]]
[[!template text="""isn't preserved between Emacs sessions.""" start="00:33:31.680" video="mainVideo-emms" id="subtitle"]]
[[!template text="""The question then becomes,""" start="00:33:35.040" video="mainVideo-emms" id="subtitle"]]
[[!template text="""what is the best way to preserve this setting?""" start="00:33:36.900" video="mainVideo-emms" id="subtitle"]]
[[!template text="""I personally don't like anything""" start="00:33:40.310" video="mainVideo-emms" id="subtitle"]]
[[!template text="""to edit my .emacs except me,""" start="00:33:42.600" video="mainVideo-emms" id="subtitle"]]
[[!template text="""and I wouldn't do that to anyone else.""" start="00:33:46.200" video="mainVideo-emms" id="subtitle"]]
[[!template text="""Now we already write state to the .emacs.d/emms/ directory,""" start="00:33:49.280" video="mainVideo-emms" id="subtitle"]]
[[!template text="""but that would require care not to""" start="00:33:55.960" video="mainVideo-emms" id="subtitle"]]
[[!template text="""clobber a user's existing setup.""" start="00:33:58.360" video="mainVideo-emms" id="subtitle"]]
[[!template text="""Having the user set up their system in one place,""" start="00:34:01.910" video="mainVideo-emms" id="subtitle"]]
[[!template text="""such as a .emacs or a .emmsrc,""" start="00:34:04.720" video="mainVideo-emms" id="subtitle"]]
[[!template text="""while saving state to a different place""" start="00:34:08.840" video="mainVideo-emms" id="subtitle"]]
[[!template text="""is asking for confusion.""" start="00:34:11.420" video="mainVideo-emms" id="subtitle"]]
[[!template text="""This is a good example which I bring up""" start="00:34:14.210" video="mainVideo-emms" id="subtitle"]]
[[!template text="""of where a maintainer needs to""" start="00:34:16.720" video="mainVideo-emms" id="subtitle"]]
[[!template text="""solicit opinions from developers,""" start="00:34:18.400" video="mainVideo-emms" id="subtitle"]]
[[!template text="""both the Emacs developers,""" start="00:34:21.309" video="mainVideo-emms" id="subtitle"]]
[[!template text="""asking them where packages should save state,""" start="00:34:23.900" video="mainVideo-emms" id="subtitle"]]
[[!template text="""and the Emms developers, and also users.""" start="00:34:28.170" video="mainVideo-emms" id="subtitle"]]
[[!template text="""Then, the maintainer needs to""" start="00:34:33.170" video="mainVideo-emms" id="subtitle"]]
[[!template text="""carefully choose a path forward.""" start="00:34:35.440" video="mainVideo-emms" id="subtitle"]]
[[!template text="""It is typical of the kind of issue you have to have in mind""" start="00:34:38.020" video="mainVideo-emms" id="subtitle"]]
[[!template text="""when you're maintaining a package.""" start="00:34:41.560" video="mainVideo-emms" id="subtitle"]]
[[!template new="1" text="""Development policies: Interface language""" start="00:34:44.849" video="mainVideo-emms" id="subtitle"]]
[[!template text="""Development Policies: Interface Language.""" start="00:34:44.849" video="mainVideo-emms" id="subtitle"]]
[[!template text="""A maintainer of an interactive program such as Emms""" start="00:34:49.160" video="mainVideo-emms" id="subtitle"]]
[[!template text="""needs to think about user interaction.""" start="00:34:52.360" video="mainVideo-emms" id="subtitle"]]
[[!template text="""Emms doesn't use key bindings which are familiar""" start="00:34:55.360" video="mainVideo-emms" id="subtitle"]]
[[!template text="""to people who are used to GUI media players,""" start="00:34:58.400" video="mainVideo-emms" id="subtitle"]]
[[!template text="""and that can, and has, caused friction.""" start="00:35:02.720" video="mainVideo-emms" id="subtitle"]]
[[!template text="""Some new users are confused when they press the spacebar""" start="00:35:06.560" video="mainVideo-emms" id="subtitle"]]
[[!template text="""on an entry in the Emms browser,""" start="00:35:09.960" video="mainVideo-emms" id="subtitle"]]
[[!template text="""only to find that nothing starts playing.""" start="00:35:12.530" video="mainVideo-emms" id="subtitle"]]
[[!template text="""Indeed, all that does is to expand the browser tree""" start="00:35:15.460" video="mainVideo-emms" id="subtitle"]]
[[!template text="""at that point.""" start="00:35:18.680" video="mainVideo-emms" id="subtitle"]]
[[!template text="""Then they might press RET on the same entry,""" start="00:35:20.470" video="mainVideo-emms" id="subtitle"]]
[[!template text="""and be further frustrated at the continuing silence.""" start="00:35:23.000" video="mainVideo-emms" id="subtitle"]]
[[!template text="""Since what return does is just to add that entry at point""" start="00:35:28.260" video="mainVideo-emms" id="subtitle"]]
[[!template text="""to the current playlist.""" start="00:35:33.400" video="mainVideo-emms" id="subtitle"]]
[[!template text="""The discussion then arises""" start="00:35:36.170" video="mainVideo-emms" id="subtitle"]]
[[!template text="""about how Emms should handle that situation.""" start="00:35:37.760" video="mainVideo-emms" id="subtitle"]]
[[!template text="""On one hand, we want to make it as easy as possible""" start="00:35:41.820" video="mainVideo-emms" id="subtitle"]]
[[!template text="""for new users to learn Emms,""" start="00:35:45.560" video="mainVideo-emms" id="subtitle"]]
[[!template text="""and adopt a do-what-I-mean interface approach.""" start="00:35:48.820" video="mainVideo-emms" id="subtitle"]]
[[!template text="""On the other hand, this is an Emacs project.""" start="00:35:52.760" video="mainVideo-emms" id="subtitle"]]
[[!template text="""It isn't a stand-alone GUI media player,""" start="00:35:56.750" video="mainVideo-emms" id="subtitle"]]
[[!template text="""and should integrate into Emacs,""" start="00:35:59.440" video="mainVideo-emms" id="subtitle"]]
[[!template text="""and serve Emacs users first and foremost.""" start="00:36:01.400" video="mainVideo-emms" id="subtitle"]]
[[!template new="1" text="""Development policies: Freedom""" start="00:36:05.980" video="mainVideo-emms" id="subtitle"]]
[[!template text="""Development policies: Freedom.""" start="00:36:05.980" video="mainVideo-emms" id="subtitle"]]
[[!template text="""Another maintainer job is to think of Emms' posture""" start="00:36:10.290" video="mainVideo-emms" id="subtitle"]]
[[!template text="""in regards to software freedom.""" start="00:36:15.000" video="mainVideo-emms" id="subtitle"]]
[[!template text="""Here are a few examples.""" start="00:36:17.380" video="mainVideo-emms" id="subtitle"]]
[[!template text="""Back with MP3 was still a patent encumbered format,""" start="00:36:19.730" video="mainVideo-emms" id="subtitle"]]
[[!template text="""we pushed hard for Vorbis everywhere""" start="00:36:23.760" video="mainVideo-emms" id="subtitle"]]
[[!template text="""along with the PlayOgg campaign.""" start="00:36:26.081" video="mainVideo-emms" id="subtitle"]]
[[!template text="""A then popular music streaming service,""" start="00:36:29.640" video="mainVideo-emms" id="subtitle"]]
[[!template text="""which will remain unnamed,""" start="00:36:32.700" video="mainVideo-emms" id="subtitle"]]
[[!template text="""changed their stance towards third-party applications,""" start="00:36:34.930" video="mainVideo-emms" id="subtitle"]]
[[!template text="""and required individual API keys which could not be shared.""" start="00:36:38.620" video="mainVideo-emms" id="subtitle"]]
[[!template text="""We stood firm, said "no",""" start="00:36:43.130" video="mainVideo-emms" id="subtitle"]]
[[!template text="""and removed support for that service.""" start="00:36:45.400" video="mainVideo-emms" id="subtitle"]]
[[!template text="""A recent suggestion to add support for YouTube""" start="00:36:48.670" video="mainVideo-emms" id="subtitle"]]
[[!template text="""was also nixed,""" start="00:36:51.360" video="mainVideo-emms" id="subtitle"]]
[[!template text="""because the particular backend""" start="00:36:53.890" video="mainVideo-emms" id="subtitle"]]
[[!template text="""was found to download and run proprietary javascript""" start="00:36:55.680" video="mainVideo-emms" id="subtitle"]]
[[!template text="""on the user's machine.""" start="00:36:58.960" video="mainVideo-emms" id="subtitle"]]
[[!template text="""Saying no to potentially useful or wanted features""" start="00:37:01.850" video="mainVideo-emms" id="subtitle"]]
[[!template text="""because it involves non-free software""" start="00:37:05.400" video="mainVideo-emms" id="subtitle"]]
[[!template text="""is often an unpopular decision and can alienate people.""" start="00:37:07.920" video="mainVideo-emms" id="subtitle"]]
[[!template text="""A maintainer needs to think carefully""" start="00:37:13.490" video="mainVideo-emms" id="subtitle"]]
[[!template text="""about each of these decisions,""" start="00:37:15.560" video="mainVideo-emms" id="subtitle"]]
[[!template text="""as they are rarely straightforward and one-sided.""" start="00:37:17.400" video="mainVideo-emms" id="subtitle"]]
[[!template text="""And as you see above, they also change over time""" start="00:37:21.920" video="mainVideo-emms" id="subtitle"]]
[[!template text="""and need to be re-evaluated.""" start="00:37:25.840" video="mainVideo-emms" id="subtitle"]]
[[!template text="""One of the most useful things a maintainer can do""" start="00:37:30.300" video="mainVideo-emms" id="subtitle"]]
[[!template text="""is to coordinate the development effort""" start="00:37:33.000" video="mainVideo-emms" id="subtitle"]]
[[!template text="""and help new people join the project.""" start="00:37:35.520" video="mainVideo-emms" id="subtitle"]]
[[!template text="""In light of that, if you want to work on a project""" start="00:37:39.230" video="mainVideo-emms" id="subtitle"]]
[[!template text="""which has a bit of everything,""" start="00:37:41.840" video="mainVideo-emms" id="subtitle"]]
[[!template text="""you could do worse than hacking on Emms.""" start="00:37:44.060" video="mainVideo-emms" id="subtitle"]]
[[!template text="""There is inter-process communication,""" start="00:37:47.810" video="mainVideo-emms" id="subtitle"]]
[[!template text="""displaying graphics, parsing binary files,""" start="00:37:49.720" video="mainVideo-emms" id="subtitle"]]
[[!template text="""caching, asynchronous processes, user interface design.""" start="00:37:52.480" video="mainVideo-emms" id="subtitle"]]
[[!template text="""We also are a project that insists on""" start="00:37:56.530" video="mainVideo-emms" id="subtitle"]]
[[!template text="""keeping a well-written and up-to-date manual.""" start="00:37:59.600" video="mainVideo-emms" id="subtitle"]]
[[!template text="""If you can write English or hack Emacs Lisp at all,""" start="00:38:02.960" video="mainVideo-emms" id="subtitle"]]
[[!template text="""chances are that there is something you can do for Emms.""" start="00:38:06.760" video="mainVideo-emms" id="subtitle"]]
[[!template text="""Just saying.""" start="00:38:09.940" video="mainVideo-emms" id="subtitle"]]
[[!template new="1" text="""Acknowledgements""" start="00:38:12.370" video="mainVideo-emms" id="subtitle"]]
[[!template text="""Acknowledgements:""" start="00:38:12.370" video="mainVideo-emms" id="subtitle"]]
[[!template text="""I'd like to express my deep gratitude for all of the people""" start="00:38:14.190" video="mainVideo-emms" id="subtitle"]]
[[!template text="""who have hacked on Emms""" start="00:38:18.080" video="mainVideo-emms" id="subtitle"]]
[[!template text="""during my time as a maintainer and before it.""" start="00:38:19.560" video="mainVideo-emms" id="subtitle"]]
[[!template text="""It is often the case that I'm just the person""" start="00:38:23.170" video="mainVideo-emms" id="subtitle"]]
[[!template text="""holding the rudder and steering the ship,""" start="00:38:25.760" video="mainVideo-emms" id="subtitle"]]
[[!template text="""with all of these developers""" start="00:38:28.560" video="mainVideo-emms" id="subtitle"]]
[[!template text="""rowing furiously to provide the power""" start="00:38:30.040" video="mainVideo-emms" id="subtitle"]]
[[!template text="""which actually moves the ship forward.""" start="00:38:33.180" video="mainVideo-emms" id="subtitle"]]
[[!template text="""Thank you to all.""" start="00:38:36.370" video="mainVideo-emms" id="subtitle"]]
Captioner: yoni
# Q&A transcript (unedited)
[[!template text="""[Speaker 0]: And I think we are live.""" start="00:00:06.140" video="qanda-emms" id="subtitle"]]
[[!template text="""Hi, Yanny, how are you doing?""" start="00:00:07.580" video="qanda-emms" id="subtitle"]]
[[!template text="""[Speaker 1]: Excellent, excellent. Doing very well,""" start="00:00:10.460" video="qanda-emms" id="subtitle"]]
[[!template text="""thank you.""" start="00:00:10.960" video="qanda-emms" id="subtitle"]]
[[!template text="""[Speaker 0]: So that was a wonderful presentation.""" start="00:00:13.980" video="qanda-emms" id="subtitle"]]
[[!template text="""I first want to commend you on your ability""" start="00:00:17.440" video="qanda-emms" id="subtitle"]]
[[!template text="""to both do the how the user encounters the""" start="00:00:22.040" video="qanda-emms" id="subtitle"]]
[[!template text="""MMS, how the developer might be interested""" start="00:00:24.960" video="qanda-emms" id="subtitle"]]
[[!template text="""about how it works, and I feel like you've""" start="00:00:28.680" video="qanda-emms" id="subtitle"]]
[[!template text="""done a wonderful job of talking to absolutely""" start="00:00:30.720" video="qanda-emms" id="subtitle"]]
[[!template text="""everyone in our audience,""" start="00:00:31.800" video="qanda-emms" id="subtitle"]]
[[!template text="""whatever their skill level.""" start="00:00:32.840" video="qanda-emms" id="subtitle"]]
[[!template text="""So thank you so much for this.""" start="00:00:34.120" video="qanda-emms" id="subtitle"]]
[[!template text="""[Speaker 1]: Yeah, that of course runs the risk of being,""" start="00:00:37.800" video="qanda-emms" id="subtitle"]]
[[!template text="""you know, good for some,""" start="00:00:41.580" video="qanda-emms" id="subtitle"]]
[[!template text="""but excellent for none.""" start="00:00:42.980" video="qanda-emms" id="subtitle"]]
[[!template text="""But hopefully the result is that people can""" start="00:00:46.960" video="qanda-emms" id="subtitle"]]
[[!template text="""get something out of it.""" start="00:00:48.380" video="qanda-emms" id="subtitle"]]
[[!template text="""I think it's very important to make sure that""" start="00:00:51.820" video="qanda-emms" id="subtitle"]]
[[!template text="""everyone feels that they have access to""" start="00:00:55.680" video="qanda-emms" id="subtitle"]]
[[!template text="""Emacs, they have access to EMMS,""" start="00:00:57.239" video="qanda-emms" id="subtitle"]]
[[!template text="""that they can do this in whatever capacity""" start="00:01:00.640" video="qanda-emms" id="subtitle"]]
[[!template text="""they want. It's for everyone.""" start="00:01:02.800" video="qanda-emms" id="subtitle"]]
[[!template text="""I really believe that.""" start="00:01:05.440" video="qanda-emms" id="subtitle"]]
[[!template text="""[Speaker 0]: Yeah, and I understand this risk about having""" start="00:01:09.440" video="qanda-emms" id="subtitle"]]
[[!template text="""a talk that is kind of a jack-of-all-trades,""" start="00:01:10.680" video="qanda-emms" id="subtitle"]]
[[!template text="""but frankly you've done a wonderful job of""" start="00:01:14.440" video="qanda-emms" id="subtitle"]]
[[!template text="""making it interesting for everyone,""" start="00:01:16.560" video="qanda-emms" id="subtitle"]]
[[!template text="""because also I think the parts worked really""" start="00:01:19.540" video="qanda-emms" id="subtitle"]]
[[!template text="""well, and people always had something to look""" start="00:01:21.820" video="qanda-emms" id="subtitle"]]
[[!template text="""forward in terms of their expertise of what""" start="00:01:24.240" video="qanda-emms" id="subtitle"]]
[[!template text="""particularly spoke to them.""" start="00:01:25.360" video="qanda-emms" id="subtitle"]]
[[!template text="""So thank you again. What I'm going to do,""" start="00:01:27.560" video="qanda-emms" id="subtitle"]]
[[!template text="""we have about 14 minutes of Q&A,""" start="00:01:29.440" video="qanda-emms" id="subtitle"]]
[[!template text="""So I'll invite people,""" start="00:01:30.760" video="qanda-emms" id="subtitle"]]
[[!template text="""as I usually do, to add their questions in""" start="00:01:33.400" video="qanda-emms" id="subtitle"]]
[[!template text="""the other pad that you can find on the talks""" start="00:01:35.320" video="qanda-emms" id="subtitle"]]
[[!template text="""or on IRC. You can also join us in the""" start="00:01:38.560" video="qanda-emms" id="subtitle"]]
[[!template text="""discussion. I will make sure this time to""" start="00:01:40.200" video="qanda-emms" id="subtitle"]]
[[!template text="""ping Sasha to open the Q&A.""" start="00:01:42.180" video="qanda-emms" id="subtitle"]]
[[!template text="""Can you open, I-V-E-M-M-S.""" start="00:01:44.680" video="qanda-emms" id="subtitle"]]
[[!template text="""All right, and in the meantime,""" start="00:01:48.700" video="qanda-emms" id="subtitle"]]
[[!template text="""whilst we wait for people to join us in the""" start="00:01:50.940" video="qanda-emms" id="subtitle"]]
[[!template text="""room, I will start reading some of the""" start="00:01:52.360" video="qanda-emms" id="subtitle"]]
[[!template text="""questions off the pad.""" start="00:01:53.960" video="qanda-emms" id="subtitle"]]
[[!template text="""So we had the first question about the music""" start="00:01:57.180" video="qanda-emms" id="subtitle"]]
[[!template text="""that we played during the launch break,""" start="00:01:58.780" video="qanda-emms" id="subtitle"]]
[[!template text="""and It's 1 of our dear friends,""" start="00:02:01.320" video="qanda-emms" id="subtitle"]]
[[!template text="""Shoshin Ganshangroh, a free album,""" start="00:02:05.200" video="qanda-emms" id="subtitle"]]
[[!template text="""Basement Dazed. I've put the link in the pad""" start="00:02:09.360" video="qanda-emms" id="subtitle"]]
[[!template text="""and we've been using Shoshin's music for the""" start="00:02:12.520" video="qanda-emms" id="subtitle"]]
[[!template text="""last 3 years, I think,""" start="00:02:13.420" video="qanda-emms" id="subtitle"]]
[[!template text="""and everyone, people are so excited.""" start="00:02:15.060" video="qanda-emms" id="subtitle"]]
[[!template text="""Some people say, why is it so noisy in the""" start="00:02:17.220" video="qanda-emms" id="subtitle"]]
[[!template text="""background? But it's just because there's 1""" start="00:02:18.480" video="qanda-emms" id="subtitle"]]
[[!template text="""part of the different tracks that sounds like""" start="00:02:20.940" video="qanda-emms" id="subtitle"]]
[[!template text="""static and it always gets people.""" start="00:02:24.280" video="qanda-emms" id="subtitle"]]
[[!template text="""We should probably do something about this,""" start="00:02:25.900" video="qanda-emms" id="subtitle"]]
[[!template text="""but frankly it makes me laugh every time.""" start="00:02:27.520" video="qanda-emms" id="subtitle"]]
[[!template text="""Starting with the first actual question,""" start="00:02:30.460" video="qanda-emms" id="subtitle"]]
[[!template text="""well actually it's a bit of a meme question,""" start="00:02:32.640" video="qanda-emms" id="subtitle"]]
[[!template text="""for the next Emacs Con,""" start="00:02:34.340" video="qanda-emms" id="subtitle"]]
[[!template text="""could we have an eMMS playlist to follow the""" start="00:02:37.280" video="qanda-emms" id="subtitle"]]
[[!template text="""talks along?""" start="00:02:37.760" video="qanda-emms" id="subtitle"]]
[[!template text="""[Speaker 1]: Oh that sounds like an excellent idea but I""" start="00:02:43.940" video="qanda-emms" id="subtitle"]]
[[!template text="""guess I'm wondering what they mean exactly by""" start="00:02:46.560" video="qanda-emms" id="subtitle"]]
[[!template text="""that. Is that a shareable playlist that we""" start="00:02:48.960" video="qanda-emms" id="subtitle"]]
[[!template text="""can pass along and just have people go to a""" start="00:02:54.560" video="qanda-emms" id="subtitle"]]
[[!template text="""URL and just be able to play that?""" start="00:02:56.320" video="qanda-emms" id="subtitle"]]
[[!template text="""I think that's an excellent idea.""" start="00:02:58.620" video="qanda-emms" id="subtitle"]]
[[!template text="""It should be a relatively low bandwidth""" start="00:03:00.660" video="qanda-emms" id="subtitle"]]
[[!template text="""process.""" start="00:03:01.780" video="qanda-emms" id="subtitle"]]
[[!template text="""[Speaker 0]: And it's typically the type of stuff that is""" start="00:03:06.580" video="qanda-emms" id="subtitle"]]
[[!template text="""right of our alley. I'm thinking about the""" start="00:03:10.840" video="qanda-emms" id="subtitle"]]
[[!template text="""ICS file that we produce for all the events""" start="00:03:15.480" video="qanda-emms" id="subtitle"]]
[[!template text="""that are related to Emacs.""" start="00:03:17.020" video="qanda-emms" id="subtitle"]]
[[!template text="""You know the workshop that happened in Paris""" start="00:03:18.820" video="qanda-emms" id="subtitle"]]
[[!template text="""or in New York, LA? Sasha compiles a list of""" start="00:03:22.360" video="qanda-emms" id="subtitle"]]
[[!template text="""all the events and when they happen,""" start="00:03:23.560" video="qanda-emms" id="subtitle"]]
[[!template text="""and then we provide this to everyone.""" start="00:03:25.360" video="qanda-emms" id="subtitle"]]
[[!template text="""And we can do very much the same with""" start="00:03:27.040" video="qanda-emms" id="subtitle"]]
[[!template text="""EmacsConf. You could have a playlist for""" start="00:03:29.380" video="qanda-emms" id="subtitle"]]
[[!template text="""EmacsConf 2023, where you get all the talks""" start="00:03:31.980" video="qanda-emms" id="subtitle"]]
[[!template text="""and perhaps also the Q&A sessions so that you""" start="00:03:34.760" video="qanda-emms" id="subtitle"]]
[[!template text="""can relieve the 16 hours of content that""" start="00:03:36.780" video="qanda-emms" id="subtitle"]]
[[!template text="""we're producing. That'd be great,""" start="00:03:37.800" video="qanda-emms" id="subtitle"]]
[[!template text="""that's a great idea I think.""" start="00:03:39.240" video="qanda-emms" id="subtitle"]]
[[!template text="""[Speaker 1]: Absolutely, and if there are any limitations""" start="00:03:43.660" video="qanda-emms" id="subtitle"]]
[[!template text="""in the Emacs playlist structure that things""" start="00:03:48.060" video="qanda-emms" id="subtitle"]]
[[!template text="""are missing in the playlist structure,""" start="00:03:49.640" video="qanda-emms" id="subtitle"]]
[[!template text="""then it would be a great impetus to implement""" start="00:03:53.040" video="qanda-emms" id="subtitle"]]
[[!template text="""those and extend the playlist structure.""" start="00:03:55.080" video="qanda-emms" id="subtitle"]]
[[!template text="""Because after all, it's Lisp,""" start="00:03:57.380" video="qanda-emms" id="subtitle"]]
[[!template text="""it really is data and functions all mixed""" start="00:04:01.360" video="qanda-emms" id="subtitle"]]
[[!template text="""together, so we can do that.""" start="00:04:03.160" video="qanda-emms" id="subtitle"]]
[[!template text="""It would be very interesting to dive into it""" start="00:04:06.180" video="qanda-emms" id="subtitle"]]
[[!template text="""and see what's missing.""" start="00:04:07.000" video="qanda-emms" id="subtitle"]]
[[!template text="""That would be even more informative than what""" start="00:04:10.020" video="qanda-emms" id="subtitle"]]
[[!template text="""it can do.""" start="00:04:10.680" video="qanda-emms" id="subtitle"]]
[[!template text="""[Speaker 0]: Great. All right, moving on to the next""" start="00:04:14.900" video="qanda-emms" id="subtitle"]]
[[!template text="""question. I like to use music and audiobooks""" start="00:04:17.000" video="qanda-emms" id="subtitle"]]
[[!template text="""in very different ways.""" start="00:04:18.279" video="qanda-emms" id="subtitle"]]
[[!template text="""With music, I like shuffling by artists and""" start="00:04:21.440" video="qanda-emms" id="subtitle"]]
[[!template text="""with audiobooks, I want to read sequentially""" start="00:04:23.300" video="qanda-emms" id="subtitle"]]
[[!template text="""and pick the same playlist over a couple of""" start="00:04:27.260" video="qanda-emms" id="subtitle"]]
[[!template text="""days or weeks. Do you have any tips for using""" start="00:04:29.240" video="qanda-emms" id="subtitle"]]
[[!template text="""these 2 opposing media's workflow?""" start="00:04:30.860" video="qanda-emms" id="subtitle"]]
[[!template text="""[Speaker 1]: Yes, so I have similar situations where I""" start="00:04:38.520" video="qanda-emms" id="subtitle"]]
[[!template text="""have very long endurance races that I watch,""" start="00:04:43.920" video="qanda-emms" id="subtitle"]]
[[!template text="""which I do all my media consumption is done""" start="00:04:47.160" video="qanda-emms" id="subtitle"]]
[[!template text="""via EMMS. I also listened to music.""" start="00:04:50.720" video="qanda-emms" id="subtitle"]]
[[!template text="""And so there's also a middle in between.""" start="00:04:54.020" video="qanda-emms" id="subtitle"]]
[[!template text="""There's 1 end in which you have popular""" start="00:04:57.980" video="qanda-emms" id="subtitle"]]
[[!template text="""music. These are standalone songs that are""" start="00:05:01.560" video="qanda-emms" id="subtitle"]]
[[!template text="""typically 3 to 4 minute long and they are""" start="00:05:04.860" video="qanda-emms" id="subtitle"]]
[[!template text="""best consumed in a random you know order""" start="00:05:07.900" video="qanda-emms" id="subtitle"]]
[[!template text="""because they are designed around,""" start="00:05:09.780" video="qanda-emms" id="subtitle"]]
[[!template text="""you know, a commercial radio distribution.""" start="00:05:12.080" video="qanda-emms" id="subtitle"]]
[[!template text="""I guess I'm dating myself by saying radio,""" start="00:05:15.140" video="qanda-emms" id="subtitle"]]
[[!template text="""but you know all the that.""" start="00:05:17.120" video="qanda-emms" id="subtitle"]]
[[!template text="""In the middle there are longer works like""" start="00:05:20.940" video="qanda-emms" id="subtitle"]]
[[!template text="""musicals and classical where these are units""" start="00:05:26.100" video="qanda-emms" id="subtitle"]]
[[!template text="""where they might be very long but you would""" start="00:05:30.200" video="qanda-emms" id="subtitle"]]
[[!template text="""have several tracks that you do want to have""" start="00:05:33.160" video="qanda-emms" id="subtitle"]]
[[!template text="""1 after the other, and you want to be able to""" start="00:05:35.600" video="qanda-emms" id="subtitle"]]
[[!template text="""stop and go to the next track.""" start="00:05:38.360" video="qanda-emms" id="subtitle"]]
[[!template text="""And then at the very, very other end,""" start="00:05:40.760" video="qanda-emms" id="subtitle"]]
[[!template text="""you have extremely long format,""" start="00:05:44.020" video="qanda-emms" id="subtitle"]]
[[!template text="""which is included in a single file,""" start="00:05:46.360" video="qanda-emms" id="subtitle"]]
[[!template text="""such as an audio book,""" start="00:05:47.920" video="qanda-emms" id="subtitle"]]
[[!template text="""a movie, a tutorial that you're watching,""" start="00:05:51.400" video="qanda-emms" id="subtitle"]]
[[!template text="""or in my case, you know,""" start="00:05:54.100" video="qanda-emms" id="subtitle"]]
[[!template text="""a 24 hour, the 24 hours of Le Mans,""" start="00:05:56.580" video="qanda-emms" id="subtitle"]]
[[!template text="""just the 24 hour race,""" start="00:05:58.040" video="qanda-emms" id="subtitle"]]
[[!template text="""which, you know, that's 1 heck of a file.""" start="00:06:01.120" video="qanda-emms" id="subtitle"]]
[[!template text="""So that is 1 of the reasons eMMS has a number""" start="00:06:07.380" video="qanda-emms" id="subtitle"]]
[[!template text="""of elements such as the meta playlist mode""" start="00:06:10.160" video="qanda-emms" id="subtitle"]]
[[!template text="""and multiple playlists.""" start="00:06:11.260" video="qanda-emms" id="subtitle"]]
[[!template text="""So I would say that they would open a number""" start="00:06:16.160" video="qanda-emms" id="subtitle"]]
[[!template text="""of playlists in eMMS, generate a number of""" start="00:06:19.540" video="qanda-emms" id="subtitle"]]
[[!template text="""playlists that have each class of media.""" start="00:06:26.040" video="qanda-emms" id="subtitle"]]
[[!template text="""So the shorter form songs,""" start="00:06:28.940" video="qanda-emms" id="subtitle"]]
[[!template text="""the more pop songs you have in 1 playlist""" start="00:06:33.580" video="qanda-emms" id="subtitle"]]
[[!template text="""where you can sort, shuffle it,""" start="00:06:35.920" video="qanda-emms" id="subtitle"]]
[[!template text="""you know, save it, do whatever you want.""" start="00:06:37.800" video="qanda-emms" id="subtitle"]]
[[!template text="""Then a separate playlist for the long form""" start="00:06:41.980" video="qanda-emms" id="subtitle"]]
[[!template text="""stuff. Sometimes that playlist will have even""" start="00:06:44.340" video="qanda-emms" id="subtitle"]]
[[!template text="""only 1 file in it if it's long enough,""" start="00:06:48.960" video="qanda-emms" id="subtitle"]]
[[!template text="""then have a key combination which takes you""" start="00:06:52.120" video="qanda-emms" id="subtitle"]]
[[!template text="""directly to 1 playlist or the other,""" start="00:06:55.280" video="qanda-emms" id="subtitle"]]
[[!template text="""and within the long-form playlist,""" start="00:06:57.340" video="qanda-emms" id="subtitle"]]
[[!template text="""looking at the bookmarking function of EMMS,""" start="00:07:01.980" video="qanda-emms" id="subtitle"]]
[[!template text="""which is designed around being able to save a""" start="00:07:06.560" video="qanda-emms" id="subtitle"]]
[[!template text="""particular stopping point or multiple""" start="00:07:10.080" video="qanda-emms" id="subtitle"]]
[[!template text="""stopping points, bookmarks in the audio,""" start="00:07:12.240" video="qanda-emms" id="subtitle"]]
[[!template text="""and being able to jump back into that audio.""" start="00:07:15.300" video="qanda-emms" id="subtitle"]]
[[!template text="""The point to remember about the bookmarking""" start="00:07:18.600" video="qanda-emms" id="subtitle"]]
[[!template text="""feature is that sometimes it really depends""" start="00:07:23.720" video="qanda-emms" id="subtitle"]]
[[!template text="""on you have to have the right back end.""" start="00:07:25.960" video="qanda-emms" id="subtitle"]]
[[!template text="""Not all back ends with replaying,""" start="00:07:28.900" video="qanda-emms" id="subtitle"]]
[[!template text="""not all types of media work well with a""" start="00:07:33.120" video="qanda-emms" id="subtitle"]]
[[!template text="""bookmarking function, and bug reports""" start="00:07:36.200" video="qanda-emms" id="subtitle"]]
[[!template text="""welcome. But also there are other backends""" start="00:07:38.960" video="qanda-emms" id="subtitle"]]
[[!template text="""such as MPV where you can configure it that""" start="00:07:44.820" video="qanda-emms" id="subtitle"]]
[[!template text="""when you quit playing the song or the media""" start="00:07:49.860" video="qanda-emms" id="subtitle"]]
[[!template text="""with, you know, cue internally.""" start="00:07:55.080" video="qanda-emms" id="subtitle"]]
[[!template text="""So sometimes the back end has to continue""" start="00:07:58.140" video="qanda-emms" id="subtitle"]]
[[!template text="""playing that song. That's what I do in order""" start="00:08:04.400" video="qanda-emms" id="subtitle"]]
[[!template text="""to, on 1 hand, switch over to a...""" start="00:08:07.560" video="qanda-emms" id="subtitle"]]
[[!template text="""I want to hear... I'm coding,""" start="00:08:09.620" video="qanda-emms" id="subtitle"]]
[[!template text="""I want to hear some music,""" start="00:08:10.800" video="qanda-emms" id="subtitle"]]
[[!template text="""I go to my playlist of short songs,""" start="00:08:12.860" video="qanda-emms" id="subtitle"]]
[[!template text="""then I'm sitting back and I want to watch a""" start="00:08:16.280" video="qanda-emms" id="subtitle"]]
[[!template text="""long form something from where I left off and""" start="00:08:20.340" video="qanda-emms" id="subtitle"]]
[[!template text="""there I go to the other playlist and use""" start="00:08:22.420" video="qanda-emms" id="subtitle"]]
[[!template text="""bookmarks or the features of the back end""" start="00:08:26.140" video="qanda-emms" id="subtitle"]]
[[!template text="""that I'm using.""" start="00:08:26.780" video="qanda-emms" id="subtitle"]]
[[!template text="""[Speaker 0]: Okay, thank you for the answer.""" start="00:08:31.200" video="qanda-emms" id="subtitle"]]
[[!template text="""We have about 7 minutes and we have more""" start="00:08:34.440" video="qanda-emms" id="subtitle"]]
[[!template text="""questions, so that's great.""" start="00:08:35.280" video="qanda-emms" id="subtitle"]]
[[!template text="""Moving on to the next 1.""" start="00:08:37.440" video="qanda-emms" id="subtitle"]]
[[!template text="""Is there a way to search a music selection by""" start="00:08:40.080" video="qanda-emms" id="subtitle"]]
[[!template text="""lyrics? Assuming those lyrics are in the""" start="00:08:42.080" video="qanda-emms" id="subtitle"]]
[[!template text="""metadata or are available elsewhere,""" start="00:08:43.580" video="qanda-emms" id="subtitle"]]
[[!template text="""it would be neat to call songs up from the""" start="00:08:46.300" video="qanda-emms" id="subtitle"]]
[[!template text="""lyrics to the song. Perhaps is this""" start="00:08:48.660" video="qanda-emms" id="subtitle"]]
[[!template text="""implemented so that you can all aliases,""" start="00:08:50.860" video="qanda-emms" id="subtitle"]]
[[!template text="""so they can use aliases for the song that you""" start="00:08:54.560" video="qanda-emms" id="subtitle"]]
[[!template text="""like, defining those aliases or shortcuts""" start="00:08:56.640" video="qanda-emms" id="subtitle"]]
[[!template text="""either inside or outside eMMS?""" start="00:08:58.200" video="qanda-emms" id="subtitle"]]
[[!template text="""Okay, so I think you've got 2 questions.""" start="00:08:59.760" video="qanda-emms" id="subtitle"]]
[[!template text="""First about the lyrics and then the aliases.""" start="00:09:01.500" video="qanda-emms" id="subtitle"]]
[[!template text="""[Speaker 1]: Yeah, so it's effectively not possible to do""" start="00:09:08.360" video="qanda-emms" id="subtitle"]]
[[!template text="""right now. There's a sense in which it is,""" start="00:09:10.880" video="qanda-emms" id="subtitle"]]
[[!template text="""but not really. What actually needs to""" start="00:09:14.820" video="qanda-emms" id="subtitle"]]
[[!template text="""happen? The problem is that the caching""" start="00:09:18.840" video="qanda-emms" id="subtitle"]]
[[!template text="""system is extremely naive.""" start="00:09:21.780" video="qanda-emms" id="subtitle"]]
[[!template text="""It's just really a hash that's written to""" start="00:09:24.800" video="qanda-emms" id="subtitle"]]
[[!template text="""disk. And maybe now with SQLite integration""" start="00:09:30.560" video="qanda-emms" id="subtitle"]]
[[!template text="""or other or just the fact that computers have""" start="00:09:35.200" video="qanda-emms" id="subtitle"]]
[[!template text="""a lot more speed and space than they used to""" start="00:09:39.220" video="qanda-emms" id="subtitle"]]
[[!template text="""have, we need to expand the cache to be a lot""" start="00:09:43.340" video="qanda-emms" id="subtitle"]]
[[!template text="""more greedy and a lot more flexible so that""" start="00:09:47.020" video="qanda-emms" id="subtitle"]]
[[!template text="""we can store things such as lyrics in as part""" start="00:09:52.580" video="qanda-emms" id="subtitle"]]
[[!template text="""of the metadata. There's no reason not to do""" start="00:09:56.000" video="qanda-emms" id="subtitle"]]
[[!template text="""that. Unless your collection would have to be""" start="00:10:02.220" video="qanda-emms" id="subtitle"]]
[[!template text="""truly enormous in order to slow things down.""" start="00:10:06.560" video="qanda-emms" id="subtitle"]]
[[!template text="""We wouldn't even need to compress the lyrics""" start="00:10:09.860" video="qanda-emms" id="subtitle"]]
[[!template text="""in order to store them like that.""" start="00:10:11.320" video="qanda-emms" id="subtitle"]]
[[!template text="""But that is a goal. So our rewrite of the""" start="00:10:15.920" video="qanda-emms" id="subtitle"]]
[[!template text="""cache is currently in progress,""" start="00:10:17.840" video="qanda-emms" id="subtitle"]]
[[!template text="""and the goal is to have a system where you""" start="00:10:21.680" video="qanda-emms" id="subtitle"]]
[[!template text="""can put any related information,""" start="00:10:24.920" video="qanda-emms" id="subtitle"]]
[[!template text="""including lyrics, and map that to a""" start="00:10:30.060" video="qanda-emms" id="subtitle"]]
[[!template text="""particular piece of the media,""" start="00:10:31.400" video="qanda-emms" id="subtitle"]]
[[!template text="""be it a URL or a... So you could have in a""" start="00:10:36.900" video="qanda-emms" id="subtitle"]]
[[!template text="""sense, you could have a URL to a lecture and""" start="00:10:40.080" video="qanda-emms" id="subtitle"]]
[[!template text="""the metadata associated would be some text,""" start="00:10:44.440" video="qanda-emms" id="subtitle"]]
[[!template text="""some notes or something else like that.""" start="00:10:47.600" video="qanda-emms" id="subtitle"]]
[[!template text="""[Speaker 0]: Right, so that was about the lyrics.""" start="00:10:51.140" video="qanda-emms" id="subtitle"]]
[[!template text="""I'm not sure how it answers the question""" start="00:10:53.040" video="qanda-emms" id="subtitle"]]
[[!template text="""about the aliases. I mean you can still""" start="00:10:54.560" video="qanda-emms" id="subtitle"]]
[[!template text="""filter what you've mentioned about the cache.""" start="00:10:56.380" video="qanda-emms" id="subtitle"]]
[[!template text="""I think it's... Do we consider the aliases to""" start="00:10:59.240" video="qanda-emms" id="subtitle"]]
[[!template text="""be anything within the metadata?""" start="00:11:01.120" video="qanda-emms" id="subtitle"]]
[[!template text="""[Speaker 1]: No, you're right. That is a separate""" start="00:11:08.040" video="qanda-emms" id="subtitle"]]
[[!template text="""question. I don't have a great answer for""" start="00:11:12.380" video="qanda-emms" id="subtitle"]]
[[!template text="""that right now.""" start="00:11:12.980" video="qanda-emms" id="subtitle"]]
[[!template text="""[Speaker 0]: Okay, great. Well, we'll put a pin on this""" start="00:11:16.280" video="qanda-emms" id="subtitle"]]
[[!template text="""and we can return to it.""" start="00:11:17.440" video="qanda-emms" id="subtitle"]]
[[!template text="""You can return to it at a later stage.""" start="00:11:19.690" video="qanda-emms" id="subtitle"]]
[[!template text="""Yeah. All right, moving on to the next""" start="00:11:21.880" video="qanda-emms" id="subtitle"]]
[[!template text="""question, then. I'll just,""" start="00:11:22.800" video="qanda-emms" id="subtitle"]]
[[!template text="""we'll put a pin on this.""" start="00:11:25.180" video="qanda-emms" id="subtitle"]]
[[!template text="""All right, next question.""" start="00:11:26.420" video="qanda-emms" id="subtitle"]]
[[!template text="""Are there plans for managing metadata with""" start="00:11:29.020" video="qanda-emms" id="subtitle"]]
[[!template text="""online resource backends,""" start="00:11:30.040" video="qanda-emms" id="subtitle"]]
[[!template text="""i.e. Discogs or music brains?""" start="00:11:32.020" video="qanda-emms" id="subtitle"]]
[[!template text="""What about something like Beats and Emacs or""" start="00:11:34.360" video="qanda-emms" id="subtitle"]]
[[!template text="""part of the EMMS?""" start="00:11:34.920" video="qanda-emms" id="subtitle"]]
[[!template text="""[Speaker 1]: Yeah, so that's an active discussion on the""" start="00:11:40.520" video="qanda-emms" id="subtitle"]]
[[!template text="""mailing list right now.""" start="00:11:42.140" video="qanda-emms" id="subtitle"]]
[[!template text="""We don't want to replicate what Beats does""" start="00:11:47.340" video="qanda-emms" id="subtitle"]]
[[!template text="""very, very well in eMMS.""" start="00:11:49.680" video="qanda-emms" id="subtitle"]]
[[!template text="""We don't want a clunky interface with Beats.""" start="00:11:53.860" video="qanda-emms" id="subtitle"]]
[[!template text="""We do want some kind of,""" start="00:11:57.440" video="qanda-emms" id="subtitle"]]
[[!template text="""and so it's hard to tell exactly where to""" start="00:12:00.100" video="qanda-emms" id="subtitle"]]
[[!template text="""draw that line. So the big answer is yes,""" start="00:12:03.160" video="qanda-emms" id="subtitle"]]
[[!template text="""absolutely, there is a plan to do that.""" start="00:12:04.960" video="qanda-emms" id="subtitle"]]
[[!template text="""The details become complicated because for 1""" start="00:12:09.760" video="qanda-emms" id="subtitle"]]
[[!template text="""thing, the backend, the database that""" start="00:12:15.900" video="qanda-emms" id="subtitle"]]
[[!template text="""MusicBrain uses, AcoustID,""" start="00:12:18.140" video="qanda-emms" id="subtitle"]]
[[!template text="""I don't remember if AcoustID is the binary or""" start="00:12:21.500" video="qanda-emms" id="subtitle"]]
[[!template text="""the database, but that's actually for""" start="00:12:25.680" video="qanda-emms" id="subtitle"]]
[[!template text="""non-commercial use only.""" start="00:12:27.500" video="qanda-emms" id="subtitle"]]
[[!template text="""So not only do you need to compile a piece of""" start="00:12:31.320" video="qanda-emms" id="subtitle"]]
[[!template text="""software on your computer as a shim,""" start="00:12:35.280" video="qanda-emms" id="subtitle"]]
[[!template text="""which is what you need to do in order to set""" start="00:12:37.540" video="qanda-emms" id="subtitle"]]
[[!template text="""up beats to do fingerprinting.""" start="00:12:39.180" video="qanda-emms" id="subtitle"]]
[[!template text="""But it also crosses this line between""" start="00:12:44.720" video="qanda-emms" id="subtitle"]]
[[!template text="""completely free software to completely free""" start="00:12:47.660" video="qanda-emms" id="subtitle"]]
[[!template text="""software interfacing with a non-commercial""" start="00:12:49.400" video="qanda-emms" id="subtitle"]]
[[!template text="""only service. So a lot of the discussion""" start="00:12:56.000" video="qanda-emms" id="subtitle"]]
[[!template text="""that's going on now is what is the contour?""" start="00:12:58.660" video="qanda-emms" id="subtitle"]]
[[!template text="""Where would be where we would be effective""" start="00:13:02.160" video="qanda-emms" id="subtitle"]]
[[!template text="""for EMMS to do management and where not?""" start="00:13:08.720" video="qanda-emms" id="subtitle"]]
[[!template text="""For 1 thing, I would love to be able to...""" start="00:13:11.600" video="qanda-emms" id="subtitle"]]
[[!template text="""1 thing that we definitely would love to be""" start="00:13:13.980" video="qanda-emms" id="subtitle"]]
[[!template text="""able to do is when you hit E on a file and""" start="00:13:18.340" video="qanda-emms" id="subtitle"]]
[[!template text="""you get all the metadata to be able to then""" start="00:13:21.540" video="qanda-emms" id="subtitle"]]
[[!template text="""give a command to say,""" start="00:13:23.000" video="qanda-emms" id="subtitle"]]
[[!template text="""hey, play to music brains and see if you can""" start="00:13:25.320" video="qanda-emms" id="subtitle"]]
[[!template text="""improve that metadata.""" start="00:13:26.200" video="qanda-emms" id="subtitle"]]
[[!template text="""Do you have better metadata,""" start="00:13:29.020" video="qanda-emms" id="subtitle"]]
[[!template text="""more complete metadata to complete that?""" start="00:13:33.400" video="qanda-emms" id="subtitle"]]
[[!template text="""That is definitely in the pipeline.""" start="00:13:35.840" video="qanda-emms" id="subtitle"]]
[[!template text="""How best to do it, that's a discussion.""" start="00:13:40.900" video="qanda-emms" id="subtitle"]]
[[!template text="""[Speaker 0]: Okay, Yoni, we have about 2 minutes until we""" start="00:13:45.460" video="qanda-emms" id="subtitle"]]
[[!template text="""need to go to the next talk.""" start="00:13:46.960" video="qanda-emms" id="subtitle"]]
[[!template text="""Okay, I'll risk it. 1 more question and a""" start="00:13:52.960" video="qanda-emms" id="subtitle"]]
[[!template text="""short answer if you can.""" start="00:13:53.800" video="qanda-emms" id="subtitle"]]
[[!template text="""Have the developers considered using Emacs""" start="00:13:57.440" video="qanda-emms" id="subtitle"]]
[[!template text="""customized functionality to persistently""" start="00:13:59.060" video="qanda-emms" id="subtitle"]]
[[!template text="""store settings when using eMMS setup discover""" start="00:14:01.720" video="qanda-emms" id="subtitle"]]
[[!template text="""players?""" start="00:14:02.120" video="qanda-emms" id="subtitle"]]
[[!template text="""[Speaker 1]: Yes, absolutely. That's another active place,""" start="00:14:08.000" video="qanda-emms" id="subtitle"]]
[[!template text="""especially with the discover players.""" start="00:14:11.840" video="qanda-emms" id="subtitle"]]
[[!template text="""How to do it exactly without annoying people""" start="00:14:14.440" video="qanda-emms" id="subtitle"]]
[[!template text="""and clobbering their own settings,""" start="00:14:17.840" video="qanda-emms" id="subtitle"]]
[[!template text="""we just need to be very careful about that.""" start="00:14:20.360" video="qanda-emms" id="subtitle"]]
[[!template text="""Yes, that's in the coming releases.""" start="00:14:23.040" video="qanda-emms" id="subtitle"]]
[[!template text="""[Speaker 0]: All right, well, Younif,""" start="00:14:26.520" video="qanda-emms" id="subtitle"]]
[[!template text="""thank you so much for your time.""" start="00:14:27.900" video="qanda-emms" id="subtitle"]]
[[!template text="""Feel free to stay in the room.""" start="00:14:29.440" video="qanda-emms" id="subtitle"]]
[[!template text="""I see that some people have started joining""" start="00:14:30.920" video="qanda-emms" id="subtitle"]]
[[!template text="""on BBB. If you have more questions,""" start="00:14:33.720" video="qanda-emms" id="subtitle"]]
[[!template text="""feel free to unmute yourself and ask them""" start="00:14:36.780" video="qanda-emms" id="subtitle"]]
[[!template text="""live. Younid, I could ask you also to perhaps""" start="00:14:39.520" video="qanda-emms" id="subtitle"]]
[[!template text="""answer the question. I've put the link to the""" start="00:14:41.600" video="qanda-emms" id="subtitle"]]
[[!template text="""pad in the BBB chat, so if you look at the...""" start="00:14:43.980" video="qanda-emms" id="subtitle"]]
[[!template text="""Here, I think, we're not mirrored on BBB.""" start="00:14:47.220" video="qanda-emms" id="subtitle"]]
[[!template text="""If you look at the left you should be able to""" start="00:14:49.080" video="qanda-emms" id="subtitle"]]
[[!template text="""see the chat and the questions and if you""" start="00:14:51.500" video="qanda-emms" id="subtitle"]]
[[!template text="""could just answer the last question that""" start="00:14:52.720" video="qanda-emms" id="subtitle"]]
[[!template text="""would be great. For us on the general track""" start="00:14:55.440" video="qanda-emms" id="subtitle"]]
[[!template text="""we will be moving to the next talk and""" start="00:14:57.980" video="qanda-emms" id="subtitle"]]
[[!template text="""Yannick do you have any last thing to say in""" start="00:14:59.700" video="qanda-emms" id="subtitle"]]
[[!template text="""[Speaker 1]: Thank everyone who put together the""" start="00:15:02.720" video="qanda-emms" id="subtitle"]]
[[!template text="""conference and thank you to everyone who""" start="00:15:04.320" video="qanda-emms" id="subtitle"]]
[[!template text="""helps with the EMMS.""" start="00:15:06.680" video="qanda-emms" id="subtitle"]]
[[!template text="""[Speaker 0]: 10 seconds? All right,""" start="00:15:08.160" video="qanda-emms" id="subtitle"]]
[[!template text="""well, thank you so much,""" start="00:15:09.160" video="qanda-emms" id="subtitle"]]
[[!template text="""Yoni. We'll probably see you later.""" start="00:15:10.940" video="qanda-emms" id="subtitle"]]
[[!template text="""Bye-bye. Wonderful. And I think we are off""" start="00:15:17.720" video="qanda-emms" id="subtitle"]]
[[!template text="""air. Thank you so much,""" start="00:15:18.620" video="qanda-emms" id="subtitle"]]
[[!template text="""Juni. I need to step out and go take care of""" start="00:15:20.800" video="qanda-emms" id="subtitle"]]
[[!template text="""[Speaker 1]: Okay, wonderful. Thank you very much.""" start="00:15:23.260" video="qanda-emms" id="subtitle"]]
[[!template text="""[Speaker 0]: the next talk. Bye-bye.""" start="00:15:24.080" video="qanda-emms" id="subtitle"]]
[[!template text="""And just to, I forgot to mention,""" start="00:15:25.520" video="qanda-emms" id="subtitle"]]
[[!template text="""but you can still talk here and everything is""" start="00:15:27.160" video="qanda-emms" id="subtitle"]]
[[!template text="""still being recorded. So,""" start="00:15:28.320" video="qanda-emms" id="subtitle"]]
[[!template text="""I'll see you later.""" start="00:15:28.880" video="qanda-emms" id="subtitle"]]
[[!template text="""[Speaker 2]: Excellent. Bye-bye. Bye.""" start="00:15:32.320" video="qanda-emms" id="subtitle"]]
[[!template text="""[Speaker 3]: Oh, hello.""" start="00:15:35.600" video="qanda-emms" id="subtitle"]]
[[!template text="""[Speaker 1]: Wait, you're still, I cannot hear you yet.""" start="00:15:40.600" video="qanda-emms" id="subtitle"]]
[[!template text="""[Speaker 4]: You are currently the only person in this""" start="00:15:42.900" video="qanda-emms" id="subtitle"]]
[[!template text="""conference.""" start="00:15:43.080" video="qanda-emms" id="subtitle"]]
[[!template text="""[Speaker 2]: Okay.""" start="00:16:12.600" video="qanda-emms" id="subtitle"]]
[[!template text="""[Speaker 3]: Can you hear me now? I just wanted to say hi""" start="00:16:18.120" video="qanda-emms" id="subtitle"]]
[[!template text="""and thank you. My name's Grant.""" start="00:16:19.840" video="qanda-emms" id="subtitle"]]
[[!template text="""I've, you helped me contribute to EMMS maybe""" start="00:16:23.740" video="qanda-emms" id="subtitle"]]
[[!template text="""2 or 3 years ago. I was trying to do the""" start="00:16:26.820" video="qanda-emms" id="subtitle"]]
[[!template text="""[Speaker 2]: So,""" start="00:16:28.480" video="qanda-emms" id="subtitle"]]
[[!template text="""[Speaker 3]: track tag stuff. yeah.""" start="00:16:29.340" video="qanda-emms" id="subtitle"]]
[[!template text="""So I just wanted to say thank you.""" start="00:16:32.148" video="qanda-emms" id="subtitle"]]
[[!template text="""[Speaker 1]: Thank you for continuing and going through""" start="00:16:35.400" video="qanda-emms" id="subtitle"]]
[[!template text="""that entire process. I know that 1 of the""" start="00:16:38.560" video="qanda-emms" id="subtitle"]]
[[!template text="""things that happens is that people want to""" start="00:16:40.380" video="qanda-emms" id="subtitle"]]
[[!template text="""contribute, but it's not as slick as GitHub""" start="00:16:43.940" video="qanda-emms" id="subtitle"]]
[[!template text="""and stuff like that, especially with the""" start="00:16:46.080" video="qanda-emms" id="subtitle"]]
[[!template text="""copper assignment. And objectively,""" start="00:16:53.400" video="qanda-emms" id="subtitle"]]
[[!template text="""it's not that. It's just harder than what""" start="00:16:56.920" video="qanda-emms" id="subtitle"]]
[[!template text="""they imagine it might be.""" start="00:16:58.680" video="qanda-emms" id="subtitle"]]
[[!template text="""[Speaker 3]: Yeah. Well, I appreciate it.""" start="00:17:01.500" video="qanda-emms" id="subtitle"]]
[[!template text="""I think you're doing a wonderful job as a""" start="00:17:03.340" video="qanda-emms" id="subtitle"]]
[[!template text="""maintainer. I still hang out on the list and""" start="00:17:07.200" video="qanda-emms" id="subtitle"]]
[[!template text="""enjoy listening in on the discussions.""" start="00:17:09.380" video="qanda-emms" id="subtitle"]]
[[!template text="""So.""" start="00:17:09.960" video="qanda-emms" id="subtitle"]]
[[!template text="""[Speaker 2]: Yeah. But that's it. I think that's it.""" start="00:17:14.240" video="qanda-emms" id="subtitle"]]
[[!template text="""I think that's it. And I think that's it.""" start="00:17:16.700" video="qanda-emms" id="subtitle"]]
[[!template text="""And I think that's it.""" start="00:17:17.640" video="qanda-emms" id="subtitle"]]
[[!template text="""I appreciate it. And I'll leave you to all of""" start="00:17:23.339" video="qanda-emms" id="subtitle"]]
[[!template text="""you to go on from being a product.""" start="00:17:27.781" video="qanda-emms" id="subtitle"]]
[[!template text="""And that she valued to all of us long term""" start="00:17:28.088" video="qanda-emms" id="subtitle"]]
[[!template text="""being a project.""" start="00:17:28.180" video="qanda-emms" id="subtitle"]]
[[!template text="""[Speaker 1]: If you're not super duper active,""" start="00:17:31.460" video="qanda-emms" id="subtitle"]]
[[!template text="""being there long term,""" start="00:17:33.420" video="qanda-emms" id="subtitle"]]
[[!template text="""people tend to find it easier trying to""" start="00:17:37.360" video="qanda-emms" id="subtitle"]]
[[!template text="""continue contributing to the project if""" start="00:17:40.840" video="qanda-emms" id="subtitle"]]
[[!template text="""there's a consistency there,""" start="00:17:42.360" video="qanda-emms" id="subtitle"]]
[[!template text="""if there isn't a churn,""" start="00:17:43.520" video="qanda-emms" id="subtitle"]]
[[!template text="""if there is a kind of a core group.""" start="00:17:47.720" video="qanda-emms" id="subtitle"]]
[[!template text="""I guess it's like, you think it's constant.""" start="00:17:52.440" video="qanda-emms" id="subtitle"]]
[[!template text="""Eliezer Etzke and RMS,""" start="00:17:58.280" video="qanda-emms" id="subtitle"]]
[[!template text="""whatever on the next mailing list,""" start="00:18:00.420" video="qanda-emms" id="subtitle"]]
[[!template text="""You know, okay, there are certain people that""" start="00:18:03.040" video="qanda-emms" id="subtitle"]]
[[!template text="""I think so. So thank you for that.""" start="00:18:05.600" video="qanda-emms" id="subtitle"]]
[[!template text="""That's very important.""" start="00:18:06.340" video="qanda-emms" id="subtitle"]]
[[!template text="""That helps.""" start="00:18:07.540" video="qanda-emms" id="subtitle"]]
[[!template text="""[Speaker 3]: Yeah, I'm, I feel like when I started using""" start="00:18:12.560" video="qanda-emms" id="subtitle"]]
[[!template text="""EMMS several years ago,""" start="00:18:14.180" video="qanda-emms" id="subtitle"]]
[[!template text="""it's, it's improved a lot since then.""" start="00:18:16.500" video="qanda-emms" id="subtitle"]]
[[!template text="""And I notice your focus on helping new users""" start="00:18:19.540" video="qanda-emms" id="subtitle"]]
[[!template text="""get started quickly. And I think the talk""" start="00:18:22.540" video="qanda-emms" id="subtitle"]]
[[!template text="""today will help with that too.""" start="00:18:23.840" video="qanda-emms" id="subtitle"]]
[[!template text="""So""" start="00:18:24.160" video="qanda-emms" id="subtitle"]]
[[!template text="""[Speaker 1]: yeah, I want to put you know,""" start="00:18:32.380" video="qanda-emms" id="subtitle"]]
[[!template text="""the, especially the TLDR,""" start="00:18:33.860" video="qanda-emms" id="subtitle"]]
[[!template text="""like how to start it on the link that to the""" start="00:18:37.500" video="qanda-emms" id="subtitle"]]
[[!template text="""website, find somehow that we can get on to""" start="00:18:44.080" video="qanda-emms" id="subtitle"]]
[[!template text="""prepare for that. And this together.""" start="00:18:52.900" video="qanda-emms" id="subtitle"]]
[[!template text="""Now, question for you,""" start="00:18:54.700" video="qanda-emms" id="subtitle"]]
[[!template text="""Where would you like to see EMMS go?""" start="00:18:58.260" video="qanda-emms" id="subtitle"]]
[[!template text="""Where do you see it landing?""" start="00:18:59.440" video="qanda-emms" id="subtitle"]]
[[!template text="""What do you feel like this is what this is""" start="00:19:02.780" video="qanda-emms" id="subtitle"]]
[[!template text="""we're sorely missing these things?""" start="00:19:04.540" video="qanda-emms" id="subtitle"]]
[[!template text="""[Speaker 3]: I don't know. I mean, I picked it up,""" start="00:19:09.740" video="qanda-emms" id="subtitle"]]
[[!template text="""because I both use it to play my music""" start="00:19:13.540" video="qanda-emms" id="subtitle"]]
[[!template text="""collection, but also, like I record my own""" start="00:19:17.100" video="qanda-emms" id="subtitle"]]
[[!template text="""music. And I wanted to be able to edit my""" start="00:19:20.140" video="qanda-emms" id="subtitle"]]
[[!template text="""metadata in Emacs, because editing metadata""" start="00:19:23.500" video="qanda-emms" id="subtitle"]]
[[!template text="""elsewhere sucks. And so that's kind of why I""" start="00:19:29.100" video="qanda-emms" id="subtitle"]]
[[!template text="""got involved with that.""" start="00:19:30.280" video="qanda-emms" id="subtitle"]]
[[!template text="""And I was like, being able to edit metadata,""" start="00:19:33.440" video="qanda-emms" id="subtitle"]]
[[!template text="""especially for content that maybe you're""" start="00:19:37.580" video="qanda-emms" id="subtitle"]]
[[!template text="""creating or because I have a bunch of files""" start="00:19:41.760" video="qanda-emms" id="subtitle"]]
[[!template text="""of just unlabeled stuff I've recorded on,""" start="00:19:44.340" video="qanda-emms" id="subtitle"]]
[[!template text="""you know, different quarters,""" start="00:19:45.340" video="qanda-emms" id="subtitle"]]
[[!template text="""things like that. So that's kind of where I""" start="00:19:47.440" video="qanda-emms" id="subtitle"]]
[[!template text="""was focusing on it. It's the only media tool""" start="00:19:50.320" video="qanda-emms" id="subtitle"]]
[[!template text="""that lets me do that, you know,""" start="00:19:52.540" video="qanda-emms" id="subtitle"]]
[[!template text="""I can play the music back and have quick""" start="00:19:54.520" video="qanda-emms" id="subtitle"]]
[[!template text="""editing. So I know there was a couple of""" start="00:19:58.260" video="qanda-emms" id="subtitle"]]
[[!template text="""things we had talked about in terms of maybe""" start="00:20:00.860" video="qanda-emms" id="subtitle"]]
[[!template text="""improving kind of the user interface for the""" start="00:20:03.260" video="qanda-emms" id="subtitle"]]
[[!template text="""tag editor, things like that.""" start="00:20:05.440" video="qanda-emms" id="subtitle"]]
[[!template text="""So I don't have any grand visions for where""" start="00:20:09.300" video="qanda-emms" id="subtitle"]]
[[!template text="""EMMS should go. I know pretty much all the""" start="00:20:15.660" video="qanda-emms" id="subtitle"]]
[[!template text="""things I've heard about it already.""" start="00:20:16.920" video="qanda-emms" id="subtitle"]]
[[!template text="""You can hook up to GNU FM,""" start="00:20:20.200" video="qanda-emms" id="subtitle"]]
[[!template text="""the Scrabbling Service,""" start="00:20:21.940" video="qanda-emms" id="subtitle"]]
[[!template text="""and all that kind of stuff.""" start="00:20:23.200" video="qanda-emms" id="subtitle"]]
[[!template text="""I don't really feel like it's missing much,""" start="00:20:26.920" video="qanda-emms" id="subtitle"]]
[[!template text="""especially being able to choose the back""" start="00:20:29.020" video="qanda-emms" id="subtitle"]]
[[!template text="""ends. I guess, if anything,""" start="00:20:31.880" video="qanda-emms" id="subtitle"]]
[[!template text="""it's the interface. How can it be even more""" start="00:20:34.960" video="qanda-emms" id="subtitle"]]
[[!template text="""intuitive for users? And I think that,""" start="00:20:38.160" video="qanda-emms" id="subtitle"]]
[[!template text="""you know, we need more people playing around""" start="00:20:41.500" video="qanda-emms" id="subtitle"]]
[[!template text="""with it, I guess. Yeah.""" start="00:20:43.380" video="qanda-emms" id="subtitle"]]
[[!template text="""[Speaker 2]: I think a really good""" start="00:20:46.220" video="qanda-emms" id="subtitle"]]
[[!template text="""[Speaker 1]: Well, yeah. example of that is,""" start="00:20:47.520" video="qanda-emms" id="subtitle"]]
[[!template text="""because I'm sure there are lots of people""" start="00:20:49.240" video="qanda-emms" id="subtitle"]]
[[!template text="""playing around with it,""" start="00:20:50.440" video="qanda-emms" id="subtitle"]]
[[!template text="""arriving at a conclusion,""" start="00:20:51.460" video="qanda-emms" id="subtitle"]]
[[!template text="""keeping it to themselves and moving on.""" start="00:20:53.860" video="qanda-emms" id="subtitle"]]
[[!template text="""Yeah. Which, and I know that a lot of bits of""" start="00:20:59.160" video="qanda-emms" id="subtitle"]]
[[!template text="""software put a send a bug report feature in""" start="00:21:01.820" video="qanda-emms" id="subtitle"]]
[[!template text="""and stuff like that and no 1 uses those""" start="00:21:04.660" video="qanda-emms" id="subtitle"]]
[[!template text="""either. So that's the frictional cost.""" start="00:21:07.600" video="qanda-emms" id="subtitle"]]
[[!template text="""I think the context switch for people between""" start="00:21:10.440" video="qanda-emms" id="subtitle"]]
[[!template text="""this doesn't work to actually formulating in""" start="00:21:16.120" video="qanda-emms" id="subtitle"]]
[[!template text="""words what didn't work,""" start="00:21:17.840" video="qanda-emms" id="subtitle"]]
[[!template text="""that is a very expensive context which most""" start="00:21:21.380" video="qanda-emms" id="subtitle"]]
[[!template text="""people will not do. And we're poorer for""" start="00:21:24.800" video="qanda-emms" id="subtitle"]]
[[!template text="""that. So, I think that when we integrate""" start="00:21:32.220" video="qanda-emms" id="subtitle"]]
[[!template text="""music brains and other things like that into.""" start="00:21:34.740" video="qanda-emms" id="subtitle"]]
[[!template text="""Now, of course, music brains will probably,""" start="00:21:37.460" video="qanda-emms" id="subtitle"]]
[[!template text="""it would be very funny if you pull up your""" start="00:21:41.200" video="qanda-emms" id="subtitle"]]
[[!template text="""stuff, right? Something that you wrote and""" start="00:21:43.480" video="qanda-emms" id="subtitle"]]
[[!template text="""you say, hey, music brains match this and""" start="00:21:46.080" video="qanda-emms" id="subtitle"]]
[[!template text="""it's not there, then it'll probably suggest""" start="00:21:48.600" video="qanda-emms" id="subtitle"]]
[[!template text="""[Speaker 3]: Yeah, I've heard that.""" start="00:21:51.720" video="qanda-emms" id="subtitle"]]
[[!template text="""[Speaker 1]: some wild things. Yeah,""" start="00:21:52.660" video="qanda-emms" id="subtitle"]]
[[!template text="""because there are, there was a system I was""" start="00:21:58.260" video="qanda-emms" id="subtitle"]]
[[!template text="""looking at its code for researching stuff for""" start="00:22:02.060" video="qanda-emms" id="subtitle"]]
[[!template text="""EMS And I'm trying to remember what it's""" start="00:22:04.480" video="qanda-emms" id="subtitle"]]
[[!template text="""named. It begins with a J,""" start="00:22:05.720" video="qanda-emms" id="subtitle"]]
[[!template text="""it's this media player,""" start="00:22:07.160" video="qanda-emms" id="subtitle"]]
[[!template text="""free floss media player that it's like a""" start="00:22:13.780" video="qanda-emms" id="subtitle"]]
[[!template text="""media server that can cast to a television""" start="00:22:17.020" video="qanda-emms" id="subtitle"]]
[[!template text="""and stuff like that. And I asked it to""" start="00:22:20.940" video="qanda-emms" id="subtitle"]]
[[!template text="""automatically label things and the results""" start="00:22:24.280" video="qanda-emms" id="subtitle"]]
[[!template text="""were horrible. It thought that half of my""" start="00:22:28.180" video="qanda-emms" id="subtitle"]]
[[!template text="""songs were movies. It thought that JPEGs were""" start="00:22:32.960" video="qanda-emms" id="subtitle"]]
[[!template text="""songs. It just, it did some,""" start="00:22:35.800" video="qanda-emms" id="subtitle"]]
[[!template text="""it did incredibly, it's not a solved problem,""" start="00:22:40.520" video="qanda-emms" id="subtitle"]]
[[!template text="""I think. So the, what I'm thinking with""" start="00:22:44.660" video="qanda-emms" id="subtitle"]]
[[!template text="""MusicBrainz and those services is that you""" start="00:22:49.340" video="qanda-emms" id="subtitle"]]
[[!template text="""hit a button and you have you get another""" start="00:22:51.840" video="qanda-emms" id="subtitle"]]
[[!template text="""pane with a suggestion and you either and you""" start="00:22:57.040" video="qanda-emms" id="subtitle"]]
[[!template text="""can copy through you can say okay copy this""" start="00:22:59.060" video="qanda-emms" id="subtitle"]]
[[!template text="""and this in this field over or reject the""" start="00:23:01.560" video="qanda-emms" id="subtitle"]]
[[!template text="""suggestion and maybe get another 1.""" start="00:23:03.960" video="qanda-emms" id="subtitle"]]
[[!template text="""So,""" start="00:23:04.940" video="qanda-emms" id="subtitle"]]
[[!template text="""[Speaker 3]: Yeah, I like that a lot.""" start="00:23:07.360" video="qanda-emms" id="subtitle"]]
[[!template text="""That's more like a diff,""" start="00:23:09.160" video="qanda-emms" id="subtitle"]]
[[!template text="""right? Like you get the diff between the 2""" start="00:23:11.280" video="qanda-emms" id="subtitle"]]
[[!template text="""and you can apply which changes you like.""" start="00:23:13.540" video="qanda-emms" id="subtitle"]]
[[!template text="""Yeah. Was it Jellyfin?""" start="00:23:15.580" video="qanda-emms" id="subtitle"]]
[[!template text="""Is that... Jellyfin? Yeah,""" start="00:23:18.220" video="qanda-emms" id="subtitle"]]
[[!template text="""[Speaker 1]: Jellyfin, yes.""" start="00:23:19.460" video="qanda-emms" id="subtitle"]]
[[!template text="""[Speaker 3]: Yeah, And when that happened,""" start="00:23:22.340" video="qanda-emms" id="subtitle"]]
[[!template text="""did it clobber all your metadata?""" start="00:23:24.960" video="qanda-emms" id="subtitle"]]
[[!template text="""Or does it just label stuff?""" start="00:23:27.440" video="qanda-emms" id="subtitle"]]
[[!template text="""[Speaker 2]: No, it...""" start="00:23:28.860" video="qanda-emms" id="subtitle"]]
[[!template text="""[Speaker 1]: Escalate things somewhere inside it and to""" start="00:23:38.240" video="qanda-emms" id="subtitle"]]
[[!template text="""looking for really, not allow me to do very""" start="00:23:49.020" video="qanda-emms" id="subtitle"]]
[[!template text="""easily. So I was, so, you know,""" start="00:23:54.640" video="qanda-emms" id="subtitle"]]
[[!template text="""on 1 hand, it makes me feel,""" start="00:23:56.660" video="qanda-emms" id="subtitle"]]
[[!template text="""oh, we're not the only ones dealing with""" start="00:23:58.980" video="qanda-emms" id="subtitle"]]
[[!template text="""this. We're not the only ones struggling with""" start="00:24:00.680" video="qanda-emms" id="subtitle"]]
[[!template text="""this. On the other hand,""" start="00:24:01.440" video="qanda-emms" id="subtitle"]]
[[!template text="""it would be nice if that's a paragon that we""" start="00:24:05.660" video="qanda-emms" id="subtitle"]]
[[!template text="""can look to and say, this is a wonderful way""" start="00:24:08.460" video="qanda-emms" id="subtitle"]]
[[!template text="""of doing it. Let's incorporate as much of""" start="00:24:11.320" video="qanda-emms" id="subtitle"]]
[[!template text="""[Speaker 3]: Yeah, it's a tricky problem,""" start="00:24:15.180" video="qanda-emms" id="subtitle"]]
[[!template text="""especially if you're modifying people's media""" start="00:24:18.220" video="qanda-emms" id="subtitle"]]
[[!template text="""files you know so""" start="00:24:19.780" video="qanda-emms" id="subtitle"]]
[[!template text="""[Speaker 1]: that as we can. yeah I'm also very convinced""" start="00:24:23.040" video="qanda-emms" id="subtitle"]]
[[!template text="""that so I'm not a mainframe for MMS because""" start="00:24:31.560" video="qanda-emms" id="subtitle"]]
[[!template text="""I'm old and curmudgeonly essentially in my,""" start="00:24:35.020" video="qanda-emms" id="subtitle"]]
[[!template text="""in the way they do it.""" start="00:24:37.660" video="qanda-emms" id="subtitle"]]
[[!template text="""And honestly, I rarely ever,""" start="00:24:40.080" video="qanda-emms" id="subtitle"]]
[[!template text="""I use the MMS browser when I need to debug""" start="00:24:42.780" video="qanda-emms" id="subtitle"]]
[[!template text="""the MS browser. I don't,""" start="00:24:44.240" video="qanda-emms" id="subtitle"]]
[[!template text="""I use very simple commands and I even rarely""" start="00:24:48.740" video="qanda-emms" id="subtitle"]]
[[!template text="""look at the playlists.""" start="00:24:50.440" video="qanda-emms" id="subtitle"]]
[[!template text="""That was 1 of the things because when I got""" start="00:24:53.940" video="qanda-emms" id="subtitle"]]
[[!template text="""into MMS originally when my eyesight started""" start="00:24:56.680" video="qanda-emms" id="subtitle"]]
[[!template text="""going so I had to rely less and less on GUI""" start="00:24:59.640" video="qanda-emms" id="subtitle"]]
[[!template text="""interfaces. So that was,""" start="00:25:02.800" video="qanda-emms" id="subtitle"]]
[[!template text="""so to this day that's how I use EMMS.""" start="00:25:06.340" video="qanda-emms" id="subtitle"]]
[[!template text="""[Speaker 3]: Yeah, it's interesting.""" start="00:25:08.560" video="qanda-emms" id="subtitle"]]
[[!template text="""I remember running into a browser bug because""" start="00:25:13.260" video="qanda-emms" id="subtitle"]]
[[!template text="""I think just my age, like,""" start="00:25:15.480" video="qanda-emms" id="subtitle"]]
[[!template text="""I want to be able to tab through and like""" start="00:25:18.120" video="qanda-emms" id="subtitle"]]
[[!template text="""that was a huge that that changed recently""" start="00:25:20.060" video="qanda-emms" id="subtitle"]]
[[!template text="""right where you tab and it unfolds in the""" start="00:25:22.640" video="qanda-emms" id="subtitle"]]
[[!template text="""browser but yeah I realized that people use""" start="00:25:27.620" video="qanda-emms" id="subtitle"]]
[[!template text="""emms in so many different ways just like any""" start="00:25:30.600" video="qanda-emms" id="subtitle"]]
[[!template text="""piece of emacs there's there's many ways to""" start="00:25:36.020" video="qanda-emms" id="subtitle"]]
[[!template text="""do it but appreciate your time I'm gonna""" start="00:25:39.960" video="qanda-emms" id="subtitle"]]
[[!template text="""actually put together this Christmas tree""" start="00:25:41.880" video="qanda-emms" id="subtitle"]]
[[!template text="""[Speaker 0]: So. Wonderful.""" start="00:25:43.400" video="qanda-emms" id="subtitle"]]
[[!template text="""[Speaker 3]: behind me. Yeah, just wanted to say hi,""" start="00:25:45.260" video="qanda-emms" id="subtitle"]]
[[!template text="""meet you in person. But yeah.""" start="00:25:50.900" video="qanda-emms" id="subtitle"]]
[[!template text="""[Speaker 1]: Yeah, excellent. I appreciate it a lot and we""" start="00:25:54.340" video="qanda-emms" id="subtitle"]]
[[!template text="""generate""" start="00:25:55.080" video="qanda-emms" id="subtitle"]]
[[!template text="""[Speaker 2]: some interesting questions.""" start="00:25:59.960" video="qanda-emms" id="subtitle"]]
[[!template text="""Yeah, thank you.""" start="00:26:00.780" video="qanda-emms" id="subtitle"]]
[[!template text="""[Speaker 4]: You are currently the only person in this""" start="00:26:03.760" video="qanda-emms" id="subtitle"]]
[[!template text="""conference.""" start="00:26:03.960" video="qanda-emms" id="subtitle"]]
[[!template text="""[Speaker 1]: I'm going to have a look at the questions""" start="00:26:13.480" video="qanda-emms" id="subtitle"]]
[[!template text="""here.""" start="00:26:14.060" video="qanda-emms" id="subtitle"]]
[[!template text="""Let's see. Let's see. So there is,""" start="00:26:29.440" video="qanda-emms" id="subtitle"]]
[[!template text="""okay. There's a question here.""" start="00:26:32.900" video="qanda-emms" id="subtitle"]]
[[!template text="""I like what you said about balancing the""" start="00:26:34.540" video="qanda-emms" id="subtitle"]]
[[!template text="""concern for software freedom with the worry""" start="00:26:36.140" video="qanda-emms" id="subtitle"]]
[[!template text="""that this might alienate the package user.""" start="00:26:38.360" video="qanda-emms" id="subtitle"]]
[[!template text="""I wonder if you have advice for other""" start="00:26:39.960" video="qanda-emms" id="subtitle"]]
[[!template text="""maintainers how to communicate this sort of""" start="00:26:41.720" video="qanda-emms" id="subtitle"]]
[[!template text="""thing diplomatically? Yes,""" start="00:26:43.660" video="qanda-emms" id="subtitle"]]
[[!template text="""when you have to deny implementing a feature""" start="00:26:45.660" video="qanda-emms" id="subtitle"]]
[[!template text="""for a freedom reason. This in fact happens""" start="00:26:48.480" video="qanda-emms" id="subtitle"]]
[[!template text="""all the time. A recent example of this was a""" start="00:26:56.140" video="qanda-emms" id="subtitle"]]
[[!template text="""YouTube download, right,""" start="00:26:58.380" video="qanda-emms" id="subtitle"]]
[[!template text="""the YouTube download feature.""" start="00:26:59.540" video="qanda-emms" id="subtitle"]]
[[!template text="""At the time, okay, so stepping back,""" start="00:27:04.040" video="qanda-emms" id="subtitle"]]
[[!template text="""the request was to have a YouTube download""" start="00:27:07.440" video="qanda-emms" id="subtitle"]]
[[!template text="""feature integrated strongly into eMMS so that""" start="00:27:11.940" video="qanda-emms" id="subtitle"]]
[[!template text="""you put in a YouTube URL and you can download""" start="00:27:16.260" video="qanda-emms" id="subtitle"]]
[[!template text="""the video and play it.""" start="00:27:17.640" video="qanda-emms" id="subtitle"]]
[[!template text="""And the question isn't really whether you can""" start="00:27:22.080" video="qanda-emms" id="subtitle"]]
[[!template text="""chain YouTube Downloader or 1 of those things""" start="00:27:24.660" video="qanda-emms" id="subtitle"]]
[[!template text="""into your EMMS configuration.""" start="00:27:26.600" video="qanda-emms" id="subtitle"]]
[[!template text="""You can do whatever you want.""" start="00:27:28.140" video="qanda-emms" id="subtitle"]]
[[!template text="""But the question is, does EMMS actually""" start="00:27:30.840" video="qanda-emms" id="subtitle"]]
[[!template text="""integrate with it really,""" start="00:27:33.340" video="qanda-emms" id="subtitle"]]
[[!template text="""really strongly to the extent where it tells""" start="00:27:35.740" video="qanda-emms" id="subtitle"]]
[[!template text="""you oh you don't need to download install""" start="00:27:37.800" video="qanda-emms" id="subtitle"]]
[[!template text="""please go ahead and install that or whatever""" start="00:27:40.320" video="qanda-emms" id="subtitle"]]
[[!template text="""and at the time we checked it we found out""" start="00:27:43.740" video="qanda-emms" id="subtitle"]]
[[!template text="""that you know the version that we were""" start="00:27:45.800" video="qanda-emms" id="subtitle"]]
[[!template text="""looking at of the YouTube download or YTDLP""" start="00:27:49.280" video="qanda-emms" id="subtitle"]]
[[!template text="""or whatever it was called,""" start="00:27:51.720" video="qanda-emms" id="subtitle"]]
[[!template text="""actually downloaded a good amount of""" start="00:27:56.200" video="qanda-emms" id="subtitle"]]
[[!template text="""proprietary JavaScript onto your machine and""" start="00:27:59.200" video="qanda-emms" id="subtitle"]]
[[!template text="""ran it, just as if you were going on to the""" start="00:28:02.300" video="qanda-emms" id="subtitle"]]
[[!template text="""YouTube page, which is not for me to tell""" start="00:28:06.560" video="qanda-emms" id="subtitle"]]
[[!template text="""people not to do if they want to do that,""" start="00:28:09.980" video="qanda-emms" id="subtitle"]]
[[!template text="""but it's absolutely for me not to cause to""" start="00:28:16.240" video="qanda-emms" id="subtitle"]]
[[!template text="""happen on the user's machine without them.""" start="00:28:18.540" video="qanda-emms" id="subtitle"]]
[[!template text="""1 of the last thing that I want to do in the""" start="00:28:21.480" video="qanda-emms" id="subtitle"]]
[[!template text="""world is have a user inside Emacs press a""" start="00:28:25.980" video="qanda-emms" id="subtitle"]]
[[!template text="""button and have proprietary software get""" start="00:28:29.760" video="qanda-emms" id="subtitle"]]
[[!template text="""downloaded behind their back and run on their""" start="00:28:32.300" video="qanda-emms" id="subtitle"]]
[[!template text="""machine that would be disastrous so we had to""" start="00:28:38.240" video="qanda-emms" id="subtitle"]]
[[!template text="""say no we had to say that's I'm sorry that's""" start="00:28:41.380" video="qanda-emms" id="subtitle"]]
[[!template text="""beyond the pale and in fact in doing so some""" start="00:28:47.060" video="qanda-emms" id="subtitle"]]
[[!template text="""people who were using this system said,""" start="00:28:51.100" video="qanda-emms" id="subtitle"]]
[[!template text="""actually I had no idea it was doing this""" start="00:28:53.900" video="qanda-emms" id="subtitle"]]
[[!template text="""behind my back. I thought it was just magic.""" start="00:28:56.660" video="qanda-emms" id="subtitle"]]
[[!template text="""I thought it was a YouTube video without any""" start="00:28:58.860" video="qanda-emms" id="subtitle"]]
[[!template text="""freedom issues. I'm going to look into it or""" start="00:29:01.580" video="qanda-emms" id="subtitle"]]
[[!template text="""I'm going to stop using it.""" start="00:29:03.120" video="qanda-emms" id="subtitle"]]
[[!template text="""So my advice would be Stand firm and just be""" start="00:29:11.180" video="qanda-emms" id="subtitle"]]
[[!template text="""Not not preachy. Don't tell people what they""" start="00:29:15.040" video="qanda-emms" id="subtitle"]]
[[!template text="""need to do be very clear about what you stand""" start="00:29:19.580" video="qanda-emms" id="subtitle"]]
[[!template text="""for and what the project stands for,""" start="00:29:21.900" video="qanda-emms" id="subtitle"]]
[[!template text="""and so they very clearly know where you""" start="00:29:28.660" video="qanda-emms" id="subtitle"]]
[[!template text="""stand. And I think that people actually""" start="00:29:30.460" video="qanda-emms" id="subtitle"]]
[[!template text="""appreciate that more than a political answer,""" start="00:29:36.540" video="qanda-emms" id="subtitle"]]
[[!template text="""right? That has been my experience.""" start="00:29:43.540" video="qanda-emms" id="subtitle"]]
[[!template text="""Now, excuse me, taking into account that 1 or""" start="00:29:49.800" video="qanda-emms" id="subtitle"]]
[[!template text="""2 people will tell you,""" start="00:29:52.200" video="qanda-emms" id="subtitle"]]
[[!template text="""this is terrible. I'm leaving.""" start="00:29:54.960" video="qanda-emms" id="subtitle"]]
[[!template text="""[Speaker 2]: If you do this,""" start="00:30:00.550" video="qanda-emms" id="subtitle"]]
[[!template text="""[Speaker 1]: This is useless. you're free software or""" start="00:30:01.460" video="qanda-emms" id="subtitle"]]
[[!template text="""whatever, and just leave.""" start="00:30:03.400" video="qanda-emms" id="subtitle"]]
[[!template text="""But some people are ornery.""" start="00:30:05.860" video="qanda-emms" id="subtitle"]]
[[!template text="""That's not necessarily something bad that you""" start="00:30:09.360" video="qanda-emms" id="subtitle"]]
[[!template text="""did. But that has happened.""" start="00:30:11.680" video="qanda-emms" id="subtitle"]]
[[!template text="""There are multiple stories.""" start="00:30:14.200" video="qanda-emms" id="subtitle"]]
[[!template text="""Because the MMS is so old,""" start="00:30:16.840" video="qanda-emms" id="subtitle"]]
[[!template text="""there are multiple points in which non-free""" start="00:30:20.080" video="qanda-emms" id="subtitle"]]
[[!template text="""software intersected with the EMS because of""" start="00:30:23.940" video="qanda-emms" id="subtitle"]]
[[!template text="""multimedia and we had to go the other""" start="00:30:28.580" video="qanda-emms" id="subtitle"]]
[[!template text="""direction and so far it has served EMS well""" start="00:30:33.300" video="qanda-emms" id="subtitle"]]
[[!template text="""like the project has died as a result.""" start="00:30:38.240" video="qanda-emms" id="subtitle"]]
[[!template text="""Of course, can't prove a negative,""" start="00:30:39.800" video="qanda-emms" id="subtitle"]]
[[!template text="""don't know where we would be if we had taken,""" start="00:30:42.040" video="qanda-emms" id="subtitle"]]
[[!template text="""gone down that route. I'm pretty sure we""" start="00:30:44.760" video="qanda-emms" id="subtitle"]]
[[!template text="""would need a new ELPA,""" start="00:30:46.100" video="qanda-emms" id="subtitle"]]
[[!template text="""and I think being so clearly integrated with""" start="00:30:50.860" video="qanda-emms" id="subtitle"]]
[[!template text="""emacs is a huge benefit to eMMS because it's""" start="00:30:55.040" video="qanda-emms" id="subtitle"]]
[[!template text="""it allows people to install it very easily.""" start="00:30:57.660" video="qanda-emms" id="subtitle"]]
[[!template text="""And those are all the questions that I can""" start="00:31:08.760" video="qanda-emms" id="subtitle"]]
[[!template text="""see.""" start="00:31:09.020" video="qanda-emms" id="subtitle"]]
[[!template text="""[Speaker 2]: You""" start="00:31:15.060" video="qanda-emms" id="subtitle"]]
Questions or comments? Please e-mail [emacsconf-org-private@gnu.org](mailto:emacsconf-org-private@gnu.org?subject=Comment%20for%20EmacsConf%202023%20emms%3A%20Emacs%20MultiMedia%20System%20%28EMMS%29)