

Why *reader*?
=============


Why use a feed reader library?
------------------------------

Have you been unhappy with existing feed readers and wanted to make your own, but:

* never knew where to start?
* it seemed like too much work?
* you don't like writing backend code?

Are you already working with `feedparser`_, but:

* want an easier way to store, filter, sort and search feeds and entries?
* want to get back type-annotated objects instead of dicts?
* want to restrict or deny file-system access?
* want to change the way feeds are retrieved by using the more familiar `requests`_ library?
* want to also support `JSON Feed`_?
* want to support custom information sources?

... while still supporting all the feed types feedparser does?

If you answered yes to any of the above, *reader* can help.


.. _feedparser: https://feedparser.readthedocs.io/en/latest/
.. _requests: https://requests.readthedocs.io
.. _JSON Feed: https://jsonfeed.org/



.. _philosophy:

The *reader* philosophy
-----------------------

* *reader* is a library
* *reader* is for the long term
* *reader* is extensible
* *reader* is stable (within reason)
* *reader* is simple to use; API matters
* *reader* features work well together
* *reader* is tested
* *reader* is documented
* *reader* has minimal dependencies



Why make your own feed reader?
------------------------------

So you can:

* have full control over your data
* control what features it has or doesn't have
* decide how much you pay for it
* make sure it doesn't get closed while you're still using it
* really, it's `easier than you think`_

Obviously, this may not be your cup of tea, but if it is, *reader* can help.


.. _easier than you think: https://rachelbythebay.com/w/2011/10/26/fred/



Why make a feed reader library?
-------------------------------

I wanted a feed reader that is:

* accessible from multiple devices
* fast
* with a simple UI
* self-hosted (for privacy reasons)
* modular / easy to extend (so I can change stuff I don't like)
* written in Python (see above)

The fact that I couldn't find one extensible enough bugged me so much that I decided to make my own; a few years later, I ended up with what I would've liked to use when I first started.
