Reading online about this topic is confusing. Is there a way to cut around the history, politics and technicalities to answer the question: Which standard should I refer to when I write code to generate feeds?
I want to use UTF-8 encoding, which may affect the choice. Otherwise I’m most interested in compatibility with a decent range of readers.
Unless you really feel like wasting a week or two debugging weird reader bugs, use Atom. Specifically, the IETF-standardized Atom 1.0, also known as RFC 4287. A few years ago it wasn’t widely supported, but every reader released in the last 5 years or so can handle it fine.
The RFC is quite long, but most of it is optional features (encryption, extensions, obscure elements) which don’t matter if you’re writing a generator.
Remember to use feedvalidator.org to check your output.