Today I’m happy to announce that after a few months of coding nights, yesterday we released the first version of FeedTso on the Zune Marketplace.
What is FeedTso?
FeedTso is a news feed reader that works as Google Reader client. We call it “social” because it puts a lot of emphasis on what the people you follow have shared.
It also lets you share, like, star posts on Google Reader as well as sharing them on Twitter (and on Facebook in the future) or saving them to a bookmarking service to read them later when you have time (currently supports Read It Later and Instapaper, and will support the new Readability in the future).
User Experience first
But this post was not supposed to be a press release, as I wanted to share with you some of the design decision we made when developing FeedTso.
We decided that our news reader had to be designed with usability and user experience as most important features: we hope we managed to build an application that not only works well, but that also has a beautiful user interface and a entertaining user experience.
Another feature we have started baking into FeedTso is customizability: you can choose which bookmarking service to use, if you want to open links inside the post view or in the external browser, if, when you open a post in the external browser, you want to see the normal site or a text-only version of it (and you can also choose which text-only processor to use). And in the future versions there will be more ways you can customize your reading experience.
A bit more of tech talk: libraries I used
How does FeedTso connect to Google Reader and to all the other connected services?
I developed a Google Reader client library that I will publish as open source project as soon as I find the time to clean it up a bit and implement the last missing features. It was a nice fun ride as there is basically no official documentation: just a few bit outdated blog posts and a lot of time spent with Fiddler and FireBug to reverse engineer the calls made by the official Google Reader web client. I’ll probably write more blog posts about it.
The other communications, to Twitter, Read It Later, Instapaper and url shortening are done using the Open Source library Hammock for REST. This is really a well designed and implemented REST library: if you have never used I really recommend you give it a look. I was also thinking about moving my Google Reader library from my custom Http calls to Hammock as it handles disconnected clients, cache and retries in a very nice way. I will probably write some posts about Hammock as well.
Which MVVM toolkit?
Probably you are also wondering about which MVVM library I used: the truth is that I didn’t use any. This was my first project using Silverlight and XAML, and we wanted to push the first version of FeedTso out as quickly as possible. So I implemented a very rough Poor’s Man MVVM and Dependency Injection, and probably also it is not even very testable: but I finally understood what is the difference between developing with goal to push out a product as quick as possible and developing on a long-term project that can be developed thinking about maintainability and extensibility from the first line of code. Obviously now I’ll go back refactoring the code to make it less crappy, but learning yet another pattern and library while I was already learning a completely new technology and building a product on it at the same time would have delayed the release even more.
Actually I’m a bit undecided about which MVVM library to use: MVVM Light built by my friend Laurent Bugnion, which is a bit more lightweight, or Caliburn Micro, which seems to include a bit more features specifically targeted to WP7, like the automatic handling of Tombstoning? Which one would you recommend?
Now, go get the app!
If you have Windows Phone 7, please have a look at the application and it’s would really be great if you could write here or on our GetSatisfaction community your comments and suggestions: a free full-featured Trial mode is also available if you want to try the application and see if it’s worth the introductory price of 0.99$ (or 0,99€ if in Europe). The only limitation is that it doesn’t save your credentials and that you have to enter them every time you open the application, but apart from that, it is exactly the same as the full version.