NetNewsWire 5.0d7

Check for updates, or download the latest build.


Multiple significant performance improvements that will be especially noticeable with high feed counts.

Sidebar: Delete command now in contextual menu and in gear menu.

Sidebar: scrolls to show feed or folder, when needed, when going to the next unread article.

Timeline: contextual menu command to select feed in sidebar.

Detail view: fixed — at least mostly — an issue where the detail view’s web view might flash white while in dark mode.

Detail view: give URL status bar a dark background color when in Dark Mode.

Sharing: sort articles by publication date on sharing.

Sharing: set email subject when sharing to Mail.

Window title now reflects sidebar selection. (Which will only be noticeable in the Window menu, but will be meaningful when we add support for tabs.)

Dock icon menu now includes Refresh command.

Subscriptions are now stored as an OPML file instead of a plist, which means you don’t even have to export to OPML to get an OPML version of your feeds. Feed metadata is now stored in Settings.odb.

Toolbar: Mark As Read toggles back and forth between states.

Feed Directory: Add to Feeds button now works, though we want to revisit the UI.

NetNewsWire 5 is being written on the exact same keyboard that wrote NetNewsWire’s 1 through 3. In the same room, at the same tables.

I’ve had this keyboard, an Apple Extended Keyboard II, since 1995, and I’ve had this room and these tables since 1999. It’s notable when things don’t change.

The computer I’m writing NetNewsWire 5 on is newer, of course. It’s the one I used for Vesper.

In the days of NetNewsWire Lite 1.0, in 2002, you had to roll your own preference-pane switcher. The look here was stolen from Xcode — or maybe it was still Project Builder? I’m not sure — but was my own code. (Pretty simple code, though.)

I don’t seem to have a screenshot of the General preferences, but I have Colors and Downloading.

I did a Colors pane because I knew that one way to have people love an app is to make it malleable — they can make it their own, they can spend some time with it, maybe feel a little bit of sense of ownership (at least over their own instance of it).

It’s not the only way for people to love an app! In fact, this kind of thing — too many preferences, too much fiddling — can really go against people falling in love with an app. But I think this was okay in 2002, when we had so many fewer apps and more time to play with each of them.

(A goal for NetNewsWire 5 is to have the least amount of preferences possible, and for people to love the app for other reasons.)


The Downloading preferences had a slider for how aggressively the app should download feeds. Broadband was still fairly rare, and this was important for some people. I didn’t make it up — NetNewsWire was certainly not the only app to have this kind of slider.

NetNewsWire 5 has no such slider. :)

Also note that it says “When downloading news…” — I was still avoiding the word “feed” for fear of scaring people.


I have no idea why I didn’t center the slider section. Probably just an oversight.

In NetNewsWire 1.x, I made sure the add-feed sheet was as simple as possible. My thinking at the time was that this was a moment of high anxiety, since subscribing to a URL was very much a brand-new thing. It looked like this — just one text field for the feed URL:


Note that it required the actual RSS URL — these days you can just use the home page URL and NetNewsWire will find the feed.

And, since this is no longer an unfamiliar thing to do, we can make the add-feed sheet a bit more useful. (Hopefully not too cluttered, though.)

So this is what it looks like in NetNewsWire 5:

Screen Shot 2018 09 19 at 11 42 47 AM

The feed directory — known as the “Sites Drawer” — really was an old-fashioned NSDrawer.

It was an utterly appropriate use for drawers. (Most uses weren’t.)

I used the term “site” rather than “feed.” Remember that RSS was brand-new to people, and so I wanted to emphasize that these things are websites, that you’re really reading a site.

I also thought that “feed” would scare people off. (It was before Twitter and Facebook and Instagram. The word “feed” was not in common use for internet things yet.)

It may have been the right call at the time — but these days, in NetNewsWire 5, it’s just called the Feeds Directory. (And it’s not in a drawer! ’Cuz they’re gone.)


Many years ago — I think it was in NetNewsWire 1.x, but it could have been 2.x — I got an email from a writer (who I won’t name) letting me know he was writing a book about Mac apps, and he planned to write about NetNewsWire.

I thought this was great! I thanked him, of course, and let him know I’d be happy to answer any questions.

Some time later — memory suggests it was just a couple weeks — he wrote me about one of the entries in the “Sites Drawer,” the feed directory that appeared in the app. (Yes! In an NSDrawer.)

It was a feed that reported on and promoted LGBTQ civil rights, including marriage equality. (Which wasn’t the law of the land at the time, which must have been around 2004 or 2005.)

He objected: he would not write about the app as long as that feed was in there. He apologized and said his personal convictions would not allow it.

I was proud of the feed directory. There were about a thousand feeds, and we worked pretty hard on it, and we made sure there were conservative as well as liberal feeds in there. (We didn’t try to make it 50-50, but we did make sure blogs like Instapundit were in there.)

Anyway: I didn’t remove the feed. (I don’t think he asked directly: he just laid out the consequences — no write-up — of my not removing it.)

I don’t know, because I never went looking, to see if his book got published. He had published earlier books, including one that I had actually learned a lot from, years prior.

No kicker here. Just a story.

NetNewsWire looks forward to Mojave shipping September 24! We’re glad we already have Mojave dark mode support in the app.

Of course, NetNewsWire 5.0 itself won’t be shipping for a while. Maybe by the end of this year? Maybe not. It’s nice to not have deadlines. :)

NetNewsWire 1.x included an outliner — a single-document notepad for storing thoughts, links, RSS articles, and so on.

The idea was that you’re not just a casual reader, you’re a researcher or blogger or reporter and you need a notepad that understands the web.

The screenshot explains more:


You might think it was nuts to also include an outliner — but, in a way, it wasn’t.

The only other real competition was Radio UserLand, which included an outliner. (And a ton of other things.) I had just come from working at UserLand, and I wanted a notepad with my RSS reader, so I wrote one. :)

I was actually pretty proud of this work, but I dropped it for NetNewsWire 2.

It really needed to be a separate app. The plan was to separate the blog editor into a separate app — which became MarsEdit. The outliner was also supposed to be split out into an app called MoonLiner.

And the three app icons would be the Earth, the Moon, and Mars. Mars the farthest away, because that’s what you’re actually putting out there. The Moon for your notes and research and saved items. My idea for the icon was something like a passenger jet in space — a MoonLiner — with the moon as background.

But I had my hands full with just splitting out MarsEdit and all the new features in NetNewsWire 2, and informal polling told me that pretty much nobody used the outliner component, so I dropped it entirely.

Plus: I already loved OmniOutliner!

Back when I was at NewsGator, we wanted to know a bit about how people used the client RSS apps (Inbox, FeedDemon, and NetNewsWire). As I recall, we did almost nothing in the way of compiling data — possibly in part because I dragged my heels on it.

But we did learn one thing that I happen to remember: the average number of feeds for a NetNewsWire user (who also used syncing) was 26 feeds.

I had figured it would be around 75. Nope!

This is what the Combined View looked like in NetNewsWire 1.x.

This was before WebKit existed — HTML display was done by some NSAttributedString method which could handle basic HTML formatting.