Building services like FriendFeed using PHP – Part 1

Friendfeed is an excellent life streaming service aggregating all your feeds from different service providers, compile them together, build a social network among your known people and finally deliver all these feeds as a mashup. As a result you can immediately track activities of your friends on all the different service they use (like jaiku, twitter, flickr) and stay up-to-date. Hats off to the developers of FriendFeed for delivering such a nice application to us.

In this blog post I will try to focus on how to develop such a service like Friendfeed using PHP and JS and how to scale such a huge load successfully. Previously I’d also written another article focusing “How to develop services like SpringLoops using PHP“. The complete article will be delivered in multiple installments and in current installment, I will focus on Photo sharing services used by friendfeed.

Area to focus
1. Services to be supported
2. Update discovery
3. Parsing the feeds
4. Storing the data
5. Scaling

FriendFeed parses feeds from a total of 35 popular services from around the web 😉 – lets have a look at them one by one and I will give you idea about the access points of these services. Though Not all of them are feed, so I will try to focus those services as well to give you a basic idea.

Service 1 : Flickr
Usable PHP Library: PHPFlickr

Flickr is an excellent photo sharing services under the banner of Yahoo. Friendfeed parses all the photo from a user and also the list of his/her favorite photos. Given an username you can easily find the Flickr ID like ([email protected])of that user and once you got it, here is the access points for list of public photos and favorites

List of photos<user’s flickr id>&lang=en-us&format=rss_200
example:[email protected]&lang=en-us&format=rss_200

List of favorites<user’s flickr id>&lang=en-us&format=rss_200
example:[email protected]&lang=en-us&format=rss_200

Service 2: Picasa Web Album
Picasa is another photo sharing service under the banner of the Giant, Google. Given a picasa user name , here are the access point of user’s public photos

List of public photos<picasa user name>?kind=album&alt=rss&hl=en_US&access=public

Service 3: Smugmug
Here comes another photo sharing service where users can buy and sell their photos. Given a smugmug user name you can find the feed of this user’s photos

List of public photos
http://<smugmug user name>

Service 4: Zoomr
Zoomr is another photo sharing service started in late 2005 by Kristopher Tate as a place for him to share photos with his friends and later became a public services, is currently supported by FriendFeed. And here we go with the access points 🙂

List of public photos<zoomr user name>&format=rss_200

In next part, I will highlight the access points of supported bookmark services and news services supported by FriendFeed 🙂 Have a nice weekend.


  1. Nice read, thanks!
    I am interested in part 3 and 4. Most importantly how are you willing to tackle storing onlythe delta of the feeds entries (new feeds).

  2. thanks for the post.
    I have been talking over with some of the reps for friendfeed to develop a wdiget for the service and a pretty cool intervention with their API, just getting the developers together.

    the noserub solution is frigging awesome. Its a shame that services like that are not getting their due PR

  3. However ‘noerub’ seems to be a service that offers a script that can decentralise social streaming, however as far as a read it you would add a script to your own site that ‘connects’ to the other versions of noserub around the web.


  4. So all you are saying is if you know how to store user data in a database and know how to parse rss/xml feeds then you are a-ok?

  5. @shaun

    nope, not at all – there will be a detailed post about scaling such a huge load. But these are just the appetizers 🙂

Leave a comment

Your email address will not be published. Required fields are marked *