inessential by Brent Simmons

August 2019

I love this NetNewsWire write-up on WP Tavern.

NetNewsWire 5 Feature Requests

NetNewsWire 5.0 is a 1.0 app in disguise.

And so, as expected, we’ve had a ton of feature requests. Most people tend to request one or two features — and there’s a huge variety in these. People want different things.

Nevertheless, there are a few themes we can pick out from what people are asking for:

  • More syncing options, especially Feedly support
  • iOS app
  • Some way to deal with partial-content feeds
  • Customization of the article pane (fonts, colors, etc.)
  • Traditional view (timeline on top with single lines, article below)
  • More sharing options (Instapaper, Pinboard, etc.)
  • Customizable keyboard shortcuts
  • State restoration
  • Localizations
  • Hiding read items in the timeline (or dimming them)
  • Hiding feeds (in the sidebar) that have no unread articles
  • User-created smart feeds

The less-common, more singular requests are for things like specific sorting options — there are lots of different small options that people would like.

People have also asked for things that might surprise you (they surprised me) — for instance, we’ve had a request for monochrome icons for the toolbar. Another request for a Dark Mode that’s different from Apple’s Dark Mode. Etc.

How We Choose What To Do Next

The first principle is that we can’t lose what we love about the app. We do our damnedest to ship with no bugs, and the app needs to be fast and, most importantly, it needs to feel lighter-than-air.

Whenever you add things — even if the app remains just as fast, even if there are no bugs — you still run the risk of losing that feeling of lightness. One of the quickest ways to lose that feeling is to add a whole bunch of preferences, View menu options, toolbar commands, and other chrome. So we’re going to be very slow to add things like that.

NetNewsWire needs to not become fiddly. (Earlier versions of NetNewsWire got way too fiddly.)

There are other questions we ask about a feature before we do it.

  • Will it substantially benefit current users?
  • Will it bring a number of new users to the app?
  • Does the feature depend on something else being done first?
  • How much work will it take?
  • Does it require resources (such as new icons) that our programmers can’t provide?
  • Does the feature really belong in an RSS reader at all?

And, because this is an open source app, there’s another dimension: people. Is someone available? Has someone just shown up who’s eager to work on a specific feature? Those things have an impact on scheduling, too.

The good news is that most of the common feature requests are obvious things to do.

Some examples — not nearly everything, just a few thoughts:

The iOS app is in progress. Maurice Parker has been writing it, and it’s coming along very well. Still plenty more to do, and we won’t ship before iOS 13 ships, but it’s happening.

Adding syncing options is a definite good thing for the app. Doing the first one (Feedbin) was the big effort, because it required building the infrastructure that makes syncing possible. Once that was done, adding additional services is not super-difficult. (Not easy, no. Nothing’s trivial. But at least the infrastructure and patterns are in place.)

We’d like to support all the various services, or at least a majority of them. And we have people working on adding services.

Customization of the article pane will most likely work the way it did in older versions of NetNewsWire: we had theme files which included templates and CSS. The app shipped with a few, and you could make your own and use themes other people made.

This feature shipped with NetNewsWire 2.0, and people really loved it. It was fun!

More sharing options is an obvious good idea. Of course you should be able to send to Instapaper, Pocket, Pinboard, and so on. We shipped with custom support for MarsEdit and the Micro.blog app — mainly because I use those apps. But an RSS reader ought to support as many sharing workflows as possible. That’s one of the core points of the app.

* * *

Anyway — the above doesn’t cover everything. Don’t take any of the above as gospel about what we’re doing or when, or what we’re not doing. We haven’t planned 5.1 yet! It’s too soon.

There are also features that we want to do that people haven’t asked for, but that we think are cool. 🎸

The take-away from this article should be: we’re being very careful about designing and implementing new features, because we have to make sure NetNewsWire doesn’t lose what makes it special.

But we are doing new features, because there are so many things that can make the app even better — we can make it better for current users and we can bring in new users.

Follow-Through

Decades ago, when I was working for Dave Winer at UserLand, I learned about the concept of follow-through after a major release.

If you’re an app maker, it might seem like your goal is to get to release day. Get the app done, make it available, publish an announcement, and then get back to coding. Let the world do what it’s going to do.

One bang, and then back to work, in other words.

But that’s not going to maximize your chances for a good release. You need to follow through — you need to keep going.

Some of the things you might do, in no particular order:

  • Publish tips on using your app — one a day or so
  • Update your website with feedback, testimonials, and good reviews
  • Be available and communicative about your app
  • Go on some podcasts
  • Write about how release day went
  • Write about plans for the x.0.1 version
  • Field bug reports and feature requests gratefully
  • Thank reviewers who’ve done a good job
  • Make it as easy as possible for reporters and reviewers to get access to your app and to you
  • Work to build a community of customers, on Slack or similar

I’m sure you can think of more things to do — the above isn’t everything, and every app is different.

But the key is that you don’t just do the release and then stop. Instead, show that you‘re responsive, show that your app has momentum, show that you care enough to keep showing up.

For me, at least, this is the fun part. I realize that’s not true for everybody — but you should do it anyway. 🎩

Daniel Figures Out One of the Two Crashing Bugs

We have a few reports of a crash where the add-feed-sheet window doesn’t load. There’s a line of code with window! — because of course we expect the window to have been loaded — and it crashes right there.

This crash made zero sense to me, but Daniel Jalkut figured out the most likely cause and was able to reproduce it: it’s because the person has moved the app (from one folder to another) after launching it, while it’s running, and the nib-loading machinery can’t find the nib, because it’s moved along with the app.

Tip: if you’re going to move an app, quit it first, then move it, and then re-launch it!

At any rate: our fix for this will be to load that sheet on startup, and then recycle it on each use. This fix will go into NetNewsWire 5.0.1.

This just fixes the bug with this one nib, though. A more systematic fix — maybe just a warning to the user suggesting they quit and re-launch — would be a good idea.

File under “bugs iOS developers never have to worry about.” 🐇

PS We have a 5.0.1 beta milestone now.

How Release Day Went

Yesterday was a great day! A few things to note, in no particular order:

NetNewsWire got some press coverage, including a well-done review in MacStories.

We got a lot of feature requests, but no bug reports.

Except that we did get a single-digit number of crash logs. On investigation, I found two distinct backtraces — we’ll need to fix those. The thing is, there’s no freakin’ way the app should crash in those spots. Except that, obviously, it can. Rarely, but it happens.

The servers started timing-out at one point during the day. I contacted DreamHost support and they fixed things (and told me that the fixes they applied should prevent this in the future).

There were a number of nice blog posts and tweets about NetNewsWire, which was awesome. After working so hard for so long, it’s great when people appreciate the app. We don’t get paid in money, after all. 🐣

I have no idea how many downloads of the app there were. GitHub is hosting the download, via its releases feature, and I don’t see a way to find out how many times it’s been downloaded. Which is totally fine with me.

* * *

I should say something more about the no-bug-reports. There’s no special magic or talent or anything to this — there’s just the willingness to say that we’re not going to ship until we’ve got the bugs out, and then sticking to that.

This is a matter of pride and ethics, for sure, but there’s another dimension: since the app is open source, it’s written by volunteers (including me), and we have no dedicated support team. Any time we spend fielding bug reports is time taken away from working on the next feature.

Making apps — even, or especially, free apps — is an exercise in economics. With free apps, the economics are even more constrained, because nobody is going to hire even a part-time support person. So we do everything we can do keep costs down — especially time costs.

Plus — buggy apps can be demoralizing to the people who work on them. Part of my job is to make sure people are proud and happy to work on the app. And that means making sure everyone knows we’re super-serious about doing our best to never ship bugs.

NetNewsWire 5.0 Now Available

NetNewsWire for Mac icon: globe with a satellite in the foreground.

NetNewsWire 5.0 is shipping!

In case you haven’t been following along until just now: NetNewsWire is an open source RSS reader for Mac. It’s free! You can just download it and use it. No strings.

It’s designed to be stable, fast, and free of bugs. It doesn’t have a lot of features yet, and that’s because we prioritized quality over features. We will be adding more features, of course, but not quickly. We’re also working on an iOS app.

It syncs using Feedbin. We’ll support more systems in the future (as many as possible).

I hope you like it!

Some links…

Thanks to so many people

I want to especially thank Sheila Simmons and my family and friends.

This release took five years to make, and for four of those years it wasn’t even called NetNewsWire. It was just a year ago that I got the name NetNewsWire back from Black Pixel — and I thank them again for their wonderful generosity.

I also want to thank Brad Ellis for making the beautiful app icon and toolbar icons. Thanks to our major code contributors: Maurice Parker, Olof Hellman, and Daniel Jalkut. Thanks to Ryan Dotson for writing the Help book. Thanks to Joe Heck for looking after infrastructure issues (especially continuous integration).

Thanks to my co-workers and friends at The Omni Group (which is a wonderful place to work). Thanks to the ever-patient and ever-awesome NetNewsWire beta testers on the Slack group and elsewhere.

And thanks to everyone who’s ever used the app in its 17-years-and-counting run. Because of you, NetNewsWire has been, and remains, the thrill of my career.

End of the Line for NetNewsWire 3.3.2

This is a little bit of bad news. It’s not my intention, and it’s not what I want to happen — but NetNewsWire 3.3.2 apparently does not launch in the next version of macOS (10.15, Catalina).

It links to the PubSub framework, which is not included with the next macOS.

NetNewsWire 3.3.2 was the last release of the full version that I worked on, before selling NetNewsWire to Black Pixel, and I’ve heard from lots of people that they’ve been using it ever since. They never switched.

I would rather it continued working forever, but that’s not to be. Not my choice. Sorry about that!

The NetNewsWire blog has the details on NetNewsWire 5.0b5 — which should be the last beta.

Still planning to do the 5.0 final release Monday morning, which really means doing the release on Sunday and pushing an announcement to this blog Monday morning. :)

The last things on my to-do list are actually writing that announcement and doing screenshots for the NetNewsWire web page. Easy. 🐯

Immunization

Before every major release I like to try and think of everything mean that people might say about the app. It’s fun!

So we just went through this exercise on the NetNewsWire Slack group. Here’s a taste:

  • This took five years? I could write an RSS parser in a weekend.
  • Can’t get my Twitter and Facebook feeds. Whatever.
  • Doesn’t work with my Usenet host.
  • The information density of the timeline is… lacking. What the hell.
  • Not truly open source since it’s on a Mac.
  • Not truly open source since it’s not GPL.
  • No vim keys. Why bother.
  • Regular people will never use an RSS reader. What’s the point?
  • Brent’s last good idea was in 2002. Consider this a textbook case of coasting.
  • Great app. Too bad RSS died with Google Reader.
  • It totally didn’t pick up my subscriptions from the earlier version. How is this an upgrade?
  • When does a 5.0 have fewer features than a 3.0? When it’s NetNewsWire.
  • The echo chamber will love this app. They always do.
  • Free app. Continues the race to the bottom. Pour one out for Silvio Rizzi.
  • No way to send to Instapaper. Fuck it.
  • Brent Simmons can’t stop pursuing a technology that even Google famously admitted was not worth bothering with.
  • If this app took five years, imagine how long it will take before it will actually sync with Feedly.
  • Sure it’s free, but I bet the Feedbin people paid them off, because the only way to sync is to pay money to Feedbin.
  • No iCloud sync? Jerks.
  • No iOS app. The revolution happened on mobile, Brant. What the actual fuck.
  • Shoulda been Catalyst. Dinosaurs wrote this app.
  • Not on the Mac App Store? I guess they don’t want users.
  • I would totally use this if it had just this one [feature x], which I can’t believe they shipped without. (Multiply this comment by 100, with a different feature x each time.)
  • Area Man Can’t Let RSS Go

Some feedback will be factually inaccurate, but we like to imagine that too:

  • I remember using NetNewsWire on OS 9, and it hasn’t really improved since then. They should make it a Cocoa app.
  • Doesn’t work with web comics. POS
  • Doesn’t support 10.5.
  • It should be free.
  • You’d think they would have updated the design — but it looks exactly like NetNewsWire of old.
  • Why the hell would they build on that aging code base from Black Pixel? I heard it doesn’t even use ARC.
  • No way to sync? What’s their actual problem?

See? The actual feedback will be nicer than the stuff we thought up. This provides a bit of immunization. :)

But, also, there will be negative feedback we didn’t imagine. That’s the gold!

* * *

Bonus from Daniel Jalkut, but not actually a criticism:

Can’t innovate, my RSS.

I think we’re still on track for releasing NetNewsWire 5.0 Monday, August 26. There will be one more beta before then.

I’ll be available for podcasts, interviews-via-email, etc. If you’d like to set something up, email me or DM me on Twitter.

NetNewsWire Public Beta

NetNewsWire for Mac icon: globe with a satellite in the foreground.

NetNewsWire has reached public beta! It only took like five years. :)

Our definition of beta is release candidate. With each beta release, we believe that the app is ready to ship. But we want to do further testing to make sure.

NetNewsWire has a Help Book up on the web now. It needs a couple more pages and some screenshots, but it’s pretty close to finished.

We’ve picked a ship date: Monday, August 26. If we find enough bugs, we won’t hit the ship date. That’s fine — but we’d really like to hit that date.

We’re working from the 5.0 Release milestone now. (The alpha and beta milestones have been closed.) You’ll note that most of what remains are bugs for the marketing site.

P.S. We’ve found a bug already with showing the unread count for the selected item. We’ll get it fixed, hopefully this week, and do another public beta release.

Three Podcast Episodes

In the latest episode of the Xcoders podcast

We recap the wonderful July meeting, Liz has a new blog, Jared launched his Scorebook update, and Jared previews his August talk on Xcode projects.

* * *

In the latest episode of The Omni Show, I talk with folks on the OmniGraffle team about their latest update, which includes a bunch of significant performance enhancements.

Performance has been A Topic lately (as it always should be) — and, if you’re a developer, I highly recommend this episode to learn how a company like Omni does performance work.

* * *

I’m the guest in the latest episode of Swift by Sundell. We talk about blogging, Apple’s Swift era, NetNewsWire, performance, and dynamic and declarative programming.

Swift by Sundell has become The Talk Show of Mac and iOS development. I recommend listening to all the episodes.