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.)

Drawer1

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:

NotepadThoughts

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.

Combinedview1

Combinedview2

History: Future Features List

When I turned NetNewsWire over to Black Pixel in 2011, I included a big list of features I was thinking about for future versions. Below is an unedited copy of that list.

LSM, in the list, refers to the Latent Semantic Mapping framework. Google Reader was still a thing in those days, and Twitter hadn’t gone completely developer-hostile yet.

* * *

Some features I was thinking about for future versions:

Twitter/Facebook as types of accounts
Multiple Google Reader accounts; treating Google Reader like IMAP
Plugins API for developers
	- sharing
	- observers
	- preferences
	- feed parsers
	- anything else that could possibly be component-ized
Modern version of Sites Drawer -- not a drawer, but an easy way for people to find cool feeds to read.
Panic button -- mark things older than [some date] as read
Extendible search engine feed definitions -- use same definitions as FeedDemon
Expand shortened URLs automatically
Inline video/audio/image-slide-show for enclosures
Flickr (and similar) feeds displayed as grid of images
Configurable keyboard shortcuts
Hide feeds with 0 unread items
Combined View: mark read when it scrolls into view, not on selection
Local (non-synced) account for iOS versions
Specify different themes/styles/views for different feeds
Filters -- like smart lists, but more powerful. Can delete things. Can sort things into bins (pseudofeeds; collections).
Delete article
Tabbed browser for iPad version
User tagging
LSM -- auto-tag.
LSM -- relevance. Not sure it's possible. The idea is using it as the opposite of a spam-catcher -- catch the stuff most likely to interest the user. (Might be that LSM isn't right for that.)
Get recommended feeds from Google Reader
Allow people to share on Google Reader
Show items shared by other people from Google Reader
Readability for web pages
Search within tabs
Sort tabs
Gestures
Lots more undo support
Sync feed sort order from Google Reader
Download images for offline viewing
Download linked-to web pages for offline viewing
Dates as smart list criteria
Bookmarklet support
Bookmarks for web pages *and* for articles
Sync browser tabs
Use Sudden Termination API
Hotkey to bring nnw to front
Colored labels for feeds
LSM summarize text for articles and web pages
More AppleScript support
JSTalk support
Second pane divider in Mac version would be one pixel -- Lion-like
Better article themes
Website gallery for article themes
Website service for people to share their OPML -- so people can see what feeds other people are reading
Website service for a "like" feature -- you can see what other people have most liked recently. You could maybe follow other people and see what they liked.


### iPhone/iPad only

Mark as Unread
Send to Read It Later
Add/delete feeds
Font/size settings
All Unread folder
Post to Facebook

Before NetNewsWire 1.0 shipped, it went through a couple different app icons. In those days, globe icons were very common.

Appicon

DockNumUnread

Newicon

Before anyone ever saw a copy, NetNewsWire was called AquaReader. It was renamed to NetNewsWire not long after.

Back in those early days of OS X it was pretty common to put the word “Aqua” or “Cocoa” in your Mac app’s name.

Screenshot from Xcode showing source code for an app called AquaReader

History: Code Notes

Below are the unedited notes I wrote to Black Pixel upon turning the code over to them in 2011. (Note: there is cursing.)

NetNewsWire Lite refers to NetNewsWire Lite 4.0.

* * *

Code Notes:

NetNewsWire Lite

This is the good version.

This is the version that uses the shared code that I wrote to use with all versions of NetNewsWire. That shared code wasn’t entirely done. (Some of the other versions have parts of that shared code too. Some have earlier versions of parts of it. They should all end up using the exact same shared code.)

Shared code was stored in two sub-repositories:

RSCore – this was most of it.

SepiaCore – started this when we started Sepia Labs. If I were you, I’d turn these into a single sub-repository rather than using two.

NetNewsWire iPhone

Don’t even look. It should be nuked. Start over.

NetNewsWire iPad

Some of the UI code can be saved, though a ton of it would have to be modified to work with the new shared code and data storage.

NetNewsWire/Mac 3.2.x

This code will make you go insane. It basically represents my Cocoa understanding as of 2005. It’s fucking awful spaghetti. And it’s not fixable – the only way to fix it is to create NetNewsWire 4.0, based on NetNewsWire Lite.

However, you might find some things that are somewhat usable, with modification. The Combined View and tabbed browser aren’t great, but you could use the code as a starting place, at least.

NetNewsWire 5.0d4

Changes in 5.0d4:

Detail view: don’t show author’s name if it’s the same as the feed’s display name.

Restoring window from Dock icon now works.

Changed URL of NetNewsWire blog feed to its new location: nnw.ranchero.com/feed.json

Finding a feed on a web page now works when the feed is using a feed: link instead of an http or https link.

Timeline: mark older as read doesn’t mark articles exactly as old as selected article.

Timeline: fixed bug where mark-as-read from the contextual menu would actually mark older as read.

Feed bug work-around: in the RSS parser, detect when a permalink isn’t really a permalink.

Latest version is always at https://ranchero.com/downloads/NetNewsWire-latest.zip