Brent Simmons has
has posted a rather lengthy article about the practicality of syncing
NetNewsWire between multiple machines. I've got to believe that this is one of his most requested feature, and I know that I asked about it the other day on
Dave Winer's the RSS list, where
Brent posted a reply. And as I re-read that initial query I see that Brent is directly addressing many of the things I asked about. However, I think I need to make a distinction between what would be great to see someday and what I would like to see in Brent's application.
This new article goes into a lot of detail about the difficulty in doing sync, and some of the problems that a developer might face in implementing this feature. The main thing I get from this article is that syncing is non-trivial. In fact in places it can be down right hard. I think, however, that Brent is thinking too big. He is talking about open standards for RSS readers to sync with other RSS readers on other platforms. He's talking about merging data and read/unread counts. All very complex stuff.
In my opinion, though, the thing he is missing is that I like many other customers of his really just want to sync
NetNewsWire with
NetNewsWire on my laptop. I don't need to sync it to my windows machine at work, or my linux machine or to any other program. Just between two platforms running Brent's fine RSS reader.
Furthermore, I think he should take a two step approach at this solution. Employ the 80/20 rule and make a bunch of customers happy really fast. This solution, which seems fairly simple to me, is to allow a person to configure where NetNewsWire stores it's state files. Then I could put it on my iDisk, or on NFS, or even check it into a CVS repository and make it available on my laptop. That would do everything I would like. There are even some hints out there on how to make this work with symlinks and aliases, but the process is tedious at best.
I don't want to just rail against Brent's post, though. I want to also talk about some of the things he mentions. I agree with Brent that eventually we need a way to do cross-platform RSS sync. It would be super-cool, and very useful for lot's of people. So, I hope that Brent will see these suggestions and that they are helpful.
Merging
In the case of merging I think Bent could solve this problem very easily by adding an attribute to a group in NetNewsWire, which would make a group local or synced. This way if people have a set of feeds that can only be read at work they can put them in a local group and
NetNewsWire doesn't have to worry about merging that data.
For everything else, he could keep some simple time-stamps in the config for when a feed was added / changed / deleted and the most recent action would win in the sync. I think that would take care of many of the corner cases he mentions.
Synching read/unread states of news items
I didn't realize that people don't always put permalinks in their RSS feeds. I put them in mine, and I think that most of the feeds I read do as well, but if they can't be counted on then I understand why this is a harder problem to get around. Perhaps he could use a post title or a hash of the entry for a unique reference to an entry.
Uploading and downloading
My first reaction here is to use iDisk, at least to start with. I know that cut's out some customers, but it would be a great place to start. I think adding FTP / SCP / SFTP should be pretty easy with a shell script calling the client binaries on the mac. Another possible solution would be to use rendezvous to do this. I'm guessing that most people are in the same boat as me. They want to sync from one machine on their home network to another, and a rendezvous solution would work great here.
Knowing when to upload and download
Brent says this is one of the easiest parts. I agree with him. Either do it on launch, or on a user-defined schedule. Please include a button to do it manually.
Different newsreaders, different operating systems
This is a tough problem. It requires several developers agreeing on a standard. I think this would make a great goal for the future, but is outside the scope of what many people want, and I don't have much constructive to add here at the moment. Although I would be one of the first people in line to volunteer some interoperability testing when the time comes.