At the beginning of the recent ATP episode, Marco Arment talked about the Episode Limit feature in Overcast (the discussion starts at around 7:50).
For any podcast, you can set how many episodes to keep downloaded on the device. Say you set the limit to three, then stop listening to a podcast regularly: the next three episodes download, and after that it stops downloading them — why waste the space? Or perhaps you listen irregularly: the latest three episodes are always ready to go, while older ones will have to be downloaded manually if you need them.
So Marco described a problem. What if someone manually asks to download an episode when they already have three downloaded? You can’t just immediately delete it to keep things tidy. So what do you do? Marco added a special hidden “episode downloaded manually” flag to the database, so those episodes would not count towards the limit.
This is one more example of how even the most seemingly trivial features require thinking through and accounting for different cases that may not be obvious at first glance. Every user interface designer and product designer should collect and absorb examples like this.
Anyway, Marco goes on. The hidden-flag solution works, more or less. But if a user occasionally downloads episodes manually, a gap accumulates between the configured and actual number of stored episodes. Naturally, over time the user forgets that they downloaded anything manually. But they can see that the limit is not working: one podcast has five episodes stored while another one has seven, for no apparent reason. So they file a bug report to Marco or leave a complaint in the App Store.
Finally, Marco’s wife Tiff suggests a solution to all the problems: just don’t let users download more episodes, she said, and show them a message, roughly: “Your episode limit is three, but this would be the fourth, denied”.
Marco liked the solution. I didn’t. Sure, it solves Marco’s problems, but not the user’s. The app is now refusing a direct request to download an episode, on what lawyers would call “formal grounds”. Overcast, why are you giving me a hard time? You can see I’m asking you to download this episode. Just download it! Follow the “Let me click!” principle.
Even worse, when Overcast updates, it deletes all downloaded episodes above the configured limit.
I would suggest showing a compact, non-modal message instead: “Episode limit for %podcast% raised to 4.” That way, we respect the user’s request and avoid introducing hidden statuses. Next to the Episode limit settings, add a label: “When you download episodes manually, this limit may raise to accommodate them”. On update, silently raise the configured episode limits for podcasts that have already accumulated more downloaded episodes through manual downloads.