[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

The Future of NetNewsWire: An Interview With Brent Simmons and Black Pixel’s Daniel Pasco

John Gruber: So, what’s the deal in a nutshell?

Brent Simmons: Black Pixel is the new home for NetNewsWire. There’s nothing held back: they own the name, the code, the websites, everything, all versions. It’s as straightforward as you can imagine.

Daniel Pasco: We’re totally on fire about this acquisition: most of us have had a love affair with NetNewsWire that goes back for several years (it was the first third party Mac app I ever purchased). We’ve gotten big enough to be able to lavish a lot of attention on NetNewsWire, and I intend to restore it to its former glory.

Simmons: I believe Black Pixel will take it well beyond its former glory. NetNewsWire’s golden age is ahead of it.

Gruber: Daniel, you said “former glory”. Tell me where you see tarnish on it.

Simmons: I could answer this. I could go on at length! But that’s because I know it best. I’ll let Daniel go ahead. Daniel: you can’t hurt my feelings by pointing out NetNewsWire’s tarnish.

Pasco: I don’t see tarnish at all! What I see is a gorgeous plant that has outgrown its pot: there was a time when NetNewsWire could flourish under the care of a single person, especially someone as talented as Brent. But now you’ve got four different versions to maintain: NetNewsWire, NetNewsWire Lite, NetNewsWire for the iPad, and NetNewsWire for the iPhone.

No one of us could stay on top of that many applications alone and keep them at the cutting edge. What’s exciting to me is that we actually have the manpower to not only maintain these applications, but help them realize the totality of their potential.

Gruber: Brent, when did you start thinking about this? Obviously you must have something new on your plate. But just three months ago you released a major new version of NetNewsWire Lite on the Mac App Store.

Simmons: I started thinking about this a couple weeks after NetNewsWire Lite appeared on the Mac App Store. Having released the first of the new shared-code apps, and this release having met with some modest appreciation, I was feeling pretty good. But then I started to think about how long it would take to get all versions using the new shared code, and then, more importantly, about how long it would take to make them really, really awesome, which was yet another step.

At first I just thought of killing off the iPad and iPhone versions, since I figured I could handle the Mac version myself. That was a selfish idea, not in the best interests of users or the software. (Everybody has thoughts not worthy of them. Me too.)

It was, at least, an honest recognition of my own limits, though, and that was what led me, haltingly at first, against my own inner resistance, to consider selling NetNewsWire. I went back and forth on it in my mind, and I kept taking my own temperature on it. I finally admitted to myself that I was hot to find it a new home.

Earlier this year I was in the process of selling TapLynx to Push IO. And I’m totally excited about this: I think the Push IO folks are a perfect fit for TapLynx and they’re going to do a great job, just as the Black Pixel team is perfect for NetNewsWire. I’ve done a bunch of work with both companies, and I know and respect them immensely as people and as professionals.

With TapLynx and NetNewsWire sold, do I have other things on my plate? Yes. But that can come up some other time.

Gruber: But you’ll have something to announce soon?

Simmons: Yes! Soon. There will be some more news next week.

Gruber: Daniel, when Brent told me that you’d worked out a deal for Black Pixel to acquire NetNewsWire, my first thought was “That’s a good home, those guys do good work.” But my second thought was, “Hey, wait a second, I thought Black Pixel was focused on iOS.”

And, indeed, the Black Pixel home page says: “Our passion is Apple iOS, and we specialize in rapid turnaround, high-visibility projects requiring multiple developers.”

What does this mean for the Mac version (or, versions, plural, counting NetNewsWire Lite)?

Pasco: Good question. Our company gets a lot of clients asking us to take on Android projects, and that statement is targeted to set the tone for those discussions. Our love is for Apple’s platforms and we’re not interested doing anything else. We certainly aren’t avoiding Mac OS X (we just finished a design project for MoneyWell 2.0), but we’ve traditionally only done touch, simply because there hasn’t been a Mac application to work on that we felt really passionate about until now.

We’re giving the iOS versions of NetNewsWire a lot more attention than they’ve been given historically, but the Mac version is on the center stage, particularly in light of Lion and the Mac App Store.

Gruber: What about the balance between contract development for clients and managing resources for your own product? You’ve done it already with Bistromath, your iPhone restaurant bill splitter, but, well, NetNewsWire is a larger app. Has an expansion in Black Pixel’s own apps been planned?

Pasco: The plan has always been to split our time between doing projects for special clients and producing our own applications, but we didn’t reach the point where we had the resources to do both sustainably until earlier this year.

Now, between our development and design teams, we have a general surplus of three to five people that can either work on our own applications or shore up ailing client projects. We’re currently wrapping up an iPhone app we’re developing for Dan Benjamin’s 5by5 network, but we were already looking for a really interesting and exciting application to do for ourselves when Brent approached me about acquiring NetNewsWire.

What’s funny about that is that someone in the company had suggested doing an RSS application a year or so ago, and I’d resoundingly nixed the idea. I wasn’t interested in competing with Brent, and I didn’t feel like the world needed another NetNewsWire-style offering.

On the other hand, the suggested acquisition was perfect: I love NetNewsWire, I’m interested in content aggregation and discovery, and this provided us with an opportunity that we felt good about, and didn’t involve putting yet another player on the field.

Gruber: I think it’s always a good thing — and often downright essential — for developers to be solving their own problems with the apps they create. Anyone who’s even a casual reader of Brent’s Inessential weblog knows that he’s a lifelong news junkie. That to me has always been NetNewsWire’s appeal — it’s an RSS reader for news and information junkies. That’s how it survived just fine after Apple added RSS support to Mac OS X in Mail. That’s RSS for non-junkies. Do you see NetNewsWire that way?

Pasco: We definitely feel the same way, which was why the subject of doing our own app had been broached on our team before. Safari’s RSS support is about as effective for serious information consumption as the notes feature in Apple Mail is for GTD.

Gruber: So, given the timing of the decision, is it good, bad, or unknown that the first app in the new generation of NetNewsWires was a Brent Simmons app?

What I mean is, in hindsight, might it not have been better to transfer NetNewsWire before planting the flag for the next major version? Brent, you’ve pretty much explicitly described the new NetNewsWire Lite as being the first step toward a new NetNewsWire (full, a.k.a. “pro” version).

Put another way for Daniel: do you feel like the first major Black Pixel release of NetNewsWire for Mac has already been defined by the new NetNewsWire Lite?

Simmons: It’s good for me personally, in that I set a big goal — develop a shared code base for all versions of NetNewsWire — and achieved it. It’s the best code I’ve ever done, by far. The last two years have been the most stressful and difficult of my more than 15 years as a professional, but, at the same time, I’ve upped my game as a developer more in the past two years than in any other two years.

I end my time with NetNewsWire knowing that my last release was solid (though minimalist, and less than I was planning on). That release didn’t set the world on fire, but I learned something important: that the satisfaction I get from writing very good code is as important as any kudos I get from other people.

I’ve always been the kind of developer who writes software so he can hear other people say how much they love the software. I still want to hear that — oh yes I do! But I’ve also learned, finally, how to cultivate that part inside me that takes deep satisfaction in a job well done. And that makes me a better developer and a better person.

Does the existence of NetNewsWire Lite 4.0 help or hurt Black Pixel? I think it’s probably neutral. I think they’ll depart from that release by a little or a lot, and it will be fine either way, because they’ll make great software. Great software is what matters.

Pasco: I think that the current state of NetNewsWire Lite and its siblings on iOS will steer the trajectory of some of our immediate work, but, no, I don’t think that it will hugely constrain our design choices when it comes to our first major release.

We have complete creative control of where we take the applications, and, although we’d prefer that we make choices that Brent approves of (he only lives a few miles from our office, after all), he’s made it clear that if our primary concerns are for making a great user experience, we shouldn’t be too focused on whether or not he likes the direction we take the apps in or not.

Gruber: I have a question about the mechanics of an acquisition like this. Daniel, you were already a NetNewsWire user, you understood the app, understood its appeal to users, and you probably had a good idea of what the next big things are to tackle in its development. But did you get to see the source code before inking the deal?

Pasco: No, I did not, nor did any of us feel it was necessary to ask to see it. We felt confident enough in Brent’s reputation as a developer, our personal experiences with the applications as users, and our own development skills to feel capable of handling whatever we ended up finding when we got the source code drop.

Simmons: I’ve been involved in a number of acquisitions like this, and never have I seen source code in advance or provided it.

Gruber: Brent, how much stress has going multi-platform — iOS in addition to Mac OS X — put on you with NetNewsWire? They’re clearly sibling platforms with much in common, but they’re two different platforms nonetheless.

Simmons: It’s put a ton of stress on me, a ridiculous level. I thrive on stress. I love deadlines and pressure and heroic late nights.

But this level of stress has been way beyond what I can handle, despite my high tolerance, and it’s gone on way too long. It may be that the reasons for this don’t necessarily apply to most people contemplating iOS and Mac OS X versions of their product. Here’s a record of decisions I made, in chronological order. You can spot the mistakes, even the ones made for good reasons.

  1. Before the iPhone was announced, I decided NetNewsWire/Mac needed a near-complete rewrite. I was right. It did.

  2. iPhone announced. Decided to create NetNewsWire for iPhone and be in the App Store on Day One. This version did not share any code from NetNewsWire/Mac, since I already knew I wanted to do a complete rewrite. So I had two completely separate code bases at this point.

  3. For various reasons, including constant requests from NetNewsWire users, we decided to switch to Google Reader syncing. This pushed back that complete rewrite. A new version of NetNewsWire/Mac had its syncing bits rewritten for Google Reader. A new version of NetNewsWire for iPhone was a complete rewrite of the previous iPhone version. But I still wasn’t happy with that rewrite, so I didn’t use it as a basis for going forward. I still had two completely separate code bases at this point, and I knew I needed a shared code base that was better than either.

  4. iPad announced. I decided NetNewsWire for iPad should be in the App Store on Day One. I created an entirely new third code base for the iPad versions, since I wasn’t willing to build on either the Mac or iPhone code bases, since I wasn’t happy with either of them. At this point I had three completely separate code bases.

  5. Then I started working on a unified code base that all three versions would share. This code base would also have to be much better than what any one of the apps was currently using. This took about a year, but I did it.

  6. Earlier this year NetNewsWire Lite 4.0 for Macintosh shipped. That was the first app to use the new unified code base. (I’m very proud of that app, despite all the things I had to cut in order to ship.) It was to be followed with NetNewsWire 4.0 for Mac (full version) and major upgrades to the iPhone and iPad versions. But, despite having a unified code base, there was still a ton of work to do to make all those apps.

“Unified code base” means, in my world, unified networking, threading, database, XML parsing, and so on. Under-the-hood code.

There would have been very little shared user interface code — and user interface is not nothing. It’s everything. I might have been able to share some parts of the user interface between iPhone and iPad, but probably not enough.

And that meant that, despite finally producing the under-the-hood shared code, I was still too far away from having strong updates.

This wasn’t fair to NetNewsWire users or to the software, and the amount of stress that that caused me on a daily basis was just way beyond what even this stress junkie could handle, especially given that my stress level stayed pinned at my maximum for two years.

Did I make mistakes? Yes. Absolutely. For good reasons. But that’s how mistakes get made!

They’re still mistakes, and they’re mine.

Gruber: I’m wondering whether some of the reasons why most indie Mac developers don’t do Windows ports also apply to iOS ports — that doing great work for a single platform is enough work to consume all the time of a small team.

Simmons: That’s certainly another component. Say I had managed to get all three platforms on a single code base. Users don’t actually care one tiny bit about shared code. Users want great software. They’re right.

It would have been easier for me to create great software having a single shared code base. But would I have been able to then do the really cool things I wanted to do? For all three versions? Given how important design and really fabulous user interface has (rightly, wonderfully) become?

I’m not sure I’d have been able to do that as one person. Maybe, but not sustainably. Continuously working over 80 hours a week is just not a good idea.

I had blinders on about the shared code. Once I thought about what would happen once my shared code was ready, I realized I’d still be struggling to keep up with all three NetNewsWires if I wanted them to be great. And I wanted nothing less.

It was time for me to admit that it could be done, but that it would require a great team like Black Pixel.

That was probably the hardest decision of my entire professional career, because I didn’t want to admit to myself that I’m not Superman. But I’m not. I’m good and always getting better. But my nerves are made of nerve tissue. I can leap small cardboard boxes in a single bound. If I’m faster than a speeding bull, I won’t know: you won’t find me testing it on the streets of Pamplona.

And I didn’t want to give up a thing I made nine years ago and that has been the thrill of my career. Hard to do. Damn hard.

Gruber: I get the feeling one of the things you now consider a mistake is deciding to have an iPhone and iPad version available on day one of their respective App Stores. Yes?

Simmons: Yes. The fun and glory of being there on Day One was undeniably attractive. How could it not be? If I went into further details which I can’t go into, anyone would agree that I had to do it. To not go for it, both times, would have been flat-out insane.

Yet it was still a mistake. It would have been amazingly hard to say, “No, sorry, I can’t do it.” It would have gutted me and disappointed other people that I wouldn’t want to disappoint. But it would have been the right thing to do. I just didn’t know it then.

What I should have done was stuck to rewriting the Mac version as I had been planning on. Once that was done, then I could have made iPhone and iPad versions based on that code. They would have been latecomers to the App Store.

And then I would still have faced the problem of making them awesome. Say I had three versions using shared under-the-hood code. Would it still be possible for one person to make all three of them awesome? Given how quality expectations keep going up? (As expectations should go up?) I don’t think so. Even if I hadn’t made those mistakes, I’d still have ended up in the same place.

Gruber: What about Chameleon, The Iconfactory’s new open source “drop in replacement for UIKit that runs on Mac OS X”? Would Chameleon, or something like it, have changed this dynamic for you, by allowing you to share user interface code — in addition to under-the-hood code — between platforms?

Simmons: I think Chameleon is a cool project and I hope it does well. Were I not already a Mac developer, were I porting from iOS, I’d definitely look at it.

Even as a Mac developer, if I expected the user interfaces to be substantially the same, then I’d look at it. I believe strongly in shared code and not-doing-things-twice.

But in the case of NetNewsWire neither was true. I already think in AppKit, and I didn’t expect or want much of the user interface to be the same between iOS and Mac versions. Similar in some respects, but not similar enough that using a single code base for user interface would have made sense.

This is no knock on Chameleon. It’s cool, and it’s already used to make cool apps. It’s just that it wouldn’t have helped me in this particular case.

Pasco: As much as I appreciate what Craig Hockenberry and the Chameleon folks are trying to do, I don’t think that any imaginable incarnation of NetNewsWire would be a good fit. It’s a compelling strategy for desktop apps that are intended to be very iOS-like, but for something like NetNewsWire, I think that Lion’s “back to the Mac” approach of bringing iOS sensibilities into desktop applications is probably a more compelling fit.

Gruber: I agree. There’s a class of app where Chameleon works, where being explicitly iOS-like works on Mac OS X. Twitterrific, unsurprisingly, is a perfect example. But NetNewsWire is not. What makes NNW for Mac feel so damn efficient to me is very much unlike anything I’ve seen on iOS.

So Daniel, what’s the next step, now that Black Pixel has the keys to the car?

Pasco: Well, right now we’re still in the planning process, so it’s hard to say at the moment besides “a lot of thinking, listening, and talking amongst ourselves”. We have a lot of ideas — some really, really great ideas — but I’d like to see what next week’s WWDC brings before we formalize our product roadmap.

Ultimately, it’s going to come down to what provides the best experience for our users, and we’re still in the process of determining if that means doing a relatively quick set of interim builds or a more extensive and time-consuming overhaul. Once the conference is over we’ll start opening up a little more about when people can expect updates.

Gruber: I’m going to tell you my top feature request, right here in the open, because I want it so badly: You know how in Apple Mail, your mailboxes in the source list are separated by account? I want that for my feeds, so I can put some feeds in my Google Reader account, for syncing across devices, but have others that are only on my Mac — feeds I only want to read in NetNewsWire on my Mac. For performance and simplicity, I really only want a relatively small number of feeds in my iPhone feed reader, but I have 200 feeds I subscribe to in NetNewsWire.

Pasco: Good news: that dovetails really well with some of the concepts we’ve been kicking around.

Gruber: One of the remarkable things about NetNewsWire for the Mac is how it’s changed over the years. At any given point from 2002 through 2010, NetNewsWire has looked the way a “modern” or maybe even “cutting-edge” Mac OS X app should look. Why does that seem so rare?

Simmons: I don’t know why that’s rare, but I know that I’ve always watched trends and evolution in UI very, very closely. Not everything that Apple and other developers do is sticky, but years of experience has given me a pretty good early detection system when I see something that’s bound to become sticky.

An example in NetNewsWire was the removal of the margins around the tables. It was in Panther, I think, when Mail dropped its drawer and added a source list — but with no margin between the source list and window edge. We take that for granted now, but there was a time, not so long ago, when margins were de rigueur. (The HIG used to tell us exactly how big those margins should be, though I bet that’s been removed by now.) At the time, it was a real risk to remove those margins from NetNewsWire. I felt butterflies.

Since NetNewsWire Lite 4.0 was released, I can already see a few small UI changes I’d make right away. One simple one is removing the wide divider bar between the article-list and article-view panes. It should just be a single-pixel divider, like the one dividing the source list from the article list.

But there have been changes over the years I knew were sticky but that I never adopted because I didn’t like them. NetNewsWire was never brushed metal. People all claim nowadays that they didn’t like brushed metal, but I could go back through my old email and find “Please make it brushed metal!” feature requests that would now embarrass the senders. (None of them named Gruber or Pasco, by the way.)

And there are times when my detection system is just plain stumped. If you look at the Mac App Store, the way it does the toolbar and the window frame, you have to wonder if it’s cool or not and if it’s sticky or not. I just don’t know yet. So sometimes I just wait until it’s more clear to me.

I take it as a given that there is style and fashion in UI. I don’t mind looking back at old versions of NetNewsWire and thinking they look funny or dorky, as long as I know that the very best apps from that era also look funny and dorky in the same way. If I looked back and thought it looked funny or dorky because of poor judgment at the time, that would be a different thing, a bad thing. Luckily for me that’s not the case.

I’ve always thought of it this way: a good writer reads a lot of books. They see how other writers solve problems. They pay attention to what’s happening now as much as they pay attention to the classics. Good writers are readers first, but eagle-eyed, careful readers.

I think good developers are the same: they look at other apps. They “read” those apps, the problems they have and how they solve them. They notice trends, they notice new solutions, they notice when things work and when they don’t.

Not every developer does that. Some do, but pretty much limit themselves to Apple apps, which means they’re missing some interesting things. And some developers try but haven’t yet developed the close eye it takes. (It just takes practice.)

There may still be some developers who say there’s no place for style and fashion in UI, that usability is usability and that’s that. They’re mistaken, because part of human nature is to get tired of things and want fresh things, and UI is where the computer meets human nature. Human nature is not going to change on this matter. And I’m glad about that.

Pasco: If you really love a design, you can make substantial updates over time without compromising the underlying things that made you love it in the first place.

One of the things I’ve always loved about NetNewsWire is that Brent has been very discriminating about his updates. At its core, every generation has clearly been the same app, updated to reflect the emerging sensibilities of its era.

I see similar parallels in the modern 27-inch iMac compared to the original Mac — much of the machine has changed dramatically, but the spirit and intent of the original is clearly still there, persisting throughout, because, at its core, it has a great design that has been respected, maintained, and upheld with every update.

Brent has always been phenomenally great about this, and our plan is to do the same: at its core, NetNewsWire has a great design, and we intend to honor the spirit and core of that design in our own work.

Simmons: Keyboard shortcuts!

Gruber: Brent, at times you’ve been remarkably open about the NetNewsWire development process. Long ago, your bug/issue tracker was open to the public. More recently, you’ve published Flickr photosets showing how major releases evolved during development. Why did you do that? Daniel, do you plan on continuing that tradition?

Simmons: The software developer’s job isn’t making software in a vacuum, it’s to make software that people like. If you’re the kind of developer who likes making things people like, you probably like communicating with people.

So I’ve done things like talk about my process or post photosets of what it looked before release because I am that kind of developer. People might find it interesting, and I like that. Other developers might learn something, and non-developers might get more of a look behind the curtain, which is cool.

But really, it’s just fun. I wish other developers would do the same — in part because it would be fun for them too, but also because, selfishly, I’d enjoy seeing their in-progress screen shots and I’d enjoy reading more development stories. It’s interesting.

And I would definitely want to see future stories and pictures about NetNewsWire development coming from Black Pixel. I would love that!

Pasco: Oh, man, I am so excited to do that. We’ve kept a lot of behind-the-scenes images, screenshots, and interaction demos for our work, but most of the time it’s on projects that we aren’t allowed to talk about.

One of the great personal freedoms we get with NetNewsWire is that we can actually tell people about it, and sharing screenshots, designs, and our thoughts about the work is a huge bonus for us.


Gruber: When we broached the idea of doing this interview, Brent, you said in an email aside, “DF and NNW are cousins, in a way.” I know what you mean. Some history circa 2002:

Doesn’t feel like that long ago, but:

  • In 2002 most Mac users were still running Mac OS 9. Mac OS X was “new”, and at the time, it was still considered aggressive to use Cocoa for a major application, because that meant your app wouldn’t run on Mac OS 9.

  • RSS was so new that Daring Fireball debuted without an RSS feed — a lot of websites didn’t have RSS feeds in 2002. Movable Type shipped with an RSS index template by default, but I took it out because I couldn’t figure out what the point of RSS was. That changed when I saw and started using NetNewsWire. NetNewsWire single-handedly inspired me to add an RSS feed to Daring Fireball.

Here’s a piece I wrote about NetNewsWire Lite in September 2002, shortly after it shipped. I think I got this right:

NetNewsWire has all the makings of becoming a killer app.

And in hindsight, I really like these two bullet points from that piece:

  • There is nothing like it for Mac OS 9.
  • There is nothing else like it for Mac OS X.

What I remember about NetNewsWire back then is that it single-handedly made me spend more time in Mac OS X. At the time, and for a while after that, I had two machines: one running Mac OS 9 and one running Mac OS X. OS X was the new frontier, shinier, the one with a future. But it was slow. Mac OS 9 was clean, fast, and familiar. And most of my favorite apps at the time ran on both, making it relatively easy to switch or dual-boot.

But not NetNewsWire.

Another bit of symbiosis was Daring Fireball’s inclusion in NetNewsWire’s list of default feeds. New NetNewsWire users became new Daring Fireball readers just by launching the app. That was the biggest and most consistent driver of traffic growth in Daring Fireball’s early years.

Simmons: They’re almost siblings, even. I’ve joked that NetNewsWire made Daring Fireball — but I only get to make that joke because NetNewsWire is the slightly older brother. The truth is that they helped make each other, at least in the first couple years. And I’ve kept Daring Fireball as a default feed not just because it’s always worth everybody reading but also because I wanted to honor that connection.

The similarities between a single-voice weblog and a single-creator product are interesting — but one big difference is that it’s easier to turn that software into something built by a team, and have it get better, than it would be to turn something like Daring Fireball into a team effort and have it get better. It would be impossible for Daring Fireball to transform in that way, but for NetNewsWire it’s completely doable, given a team like Black Pixel.

I started NetNewsWire not long after leaving UserLand Software. I was already an RSS addict. I knew that there were many thousands of RSS feeds out there, because I helped build the weblog software at UserLand (Manila and Radio UserLand) that generated all those feeds. So I knew there would be tons of content for NetNewsWire.

I figured it would be something fun to do until I got a really big idea for a runaway hit app. And then I was pleasantly surprised to find that NetNewsWire was that hit app. What a ride!

But it reminds me that as much as I value maintenance and patience and the long haul, I also love working on new things, things people aren’t expecting.

And, to seemingly contradict myself and make things more complex, I’ve also been revisiting the source code to UserLand Frontier, code which started in 1989. It needs modernizing, and I’m one of the few people really well-suited to doing that. I not only know Carbon and Cocoa, I know that particular code. So I’d like to help move that forward, because that old software was, and still is, a great laboratory for new things, and my entire career has been based on technologies that happened there first, or were popularized there first.

If Daring Fireball and NetNewsWire are sort-of siblings, then Dave Winer’s work on Scripting News and Frontier are sort-of parents to our work. And we’re not done, and neither is Dave.