id: 'idea--feed-reader' content: | There's no reason for a feed reader to be a single program. Instead, one could build an architecture in which each component is a distinct program that doesn't need to care about the details of the others. For now, I'm going to refer to this system as _lektor_. The `lektordir` format is inspired by the `maildir` format for email but modified for feed readers. It similarly includes three subdirectories: `tmp`, `new`, and `cur`. File name generation works similarly. However, instead of writing email files, we need a standard way of describing a feed entry. Therefore, instead of writing _files_ to a `lektordir`, update daemons will write _directories_. A given feed entry consists of a directory containing at least four files: `title`, `url`, `id`, and `content`. Other optional files can exist, including `author`, `subtitle`, `summary`, and so forth. With this system, adding a new feed type—such as a Twitter feed or an ActivityStream serialization—becomes a simple matter, and an _lektor_ front-end can be created without having to worry about how that data was delivered there in the first place. related: []