Search This Blog

Thursday, April 17, 2008

Microsoft Popfly - Yahoo! Pipes meets Facebook and Google Mashups

I had the opportunity to do a sneak preview of Microsoft's popfly mashup platform a few months ago. Based on the quick look, at that point of time, it was just a prettier looking  version of Yahoo! Pipes. However, another peek a few months later and I am much more impressed. I must admit that till now, of all the mashup editors I have evaluated, Google Mashup Editor has been my favorite. And that was because I truly feel powerful mashups which are globally useful will be written by developers, not my grandmom, so the interface need to provide more powers and not just pretty 'connectors'.

I must admit, Popfly on second look has good potential.

So here is my quick analysis of why I think it is like Pipes, like GME, like Facebook and somewhat different. In other words, I think Microsoft has been watching how the others do it, and picked some good features from all, along with some very irritating ones.

First the irritating part:

  • Microsoft opted for implementing the web-based popfly IDE using Silverlight, Microsoft's response to Adobe's Flash. The reason I find it irritating, is because it really is like being forced to have two SIP Stacks on the same machine. They look the same, they do the same thing, but are by two different vendors. More browser bloat. I really do wish they just went with flash. To be honest, I prefer Flash to AJAX - flash is faster, renders great and provides far more UI flexibility with lesser code. And since all browsers come with the Flash engine, or if anyone watches videos on the web, they would already have the plugin installed, it is a moot point to complain about downloading the flash plugin. So I am fine with MS not going with AJAX but I think Silverlight was not needed (though I know this is their product, so I am not saying this is a dealbreaker, just irritating from a purist perspective)

  • In its effort to show the 'cuteness' and 'ease of use' of popfly, MS has gone bonkers with visual effects. For each "block"  you create, microsoft renders a 3D spinning box that zips, zooms and dances around the screen. At first, it is cool, but in 30 seconds flat, it ticked the daylights out of me. Hey, I am trying to create a mashup folks, not using one, so cut of the cutesy spins and zooms (A block is a cohesive function, like a subroutine, with a defined input and output, which can chain to other blocks, similar to the concept of *nix pipes)

  • Stability/Performance - this is not just Popfly. Every new mashup platform I tried in the past has had serious performance/responsiveness issues the first few months. Popfly is no different. One often needs to restart their applications after they just hang doing nothing

Now let's talk about the comarisons to the other mashup platforms

Yahoo Pipes Comparison

  • Popfly has implemented the same "piping" GUI interface as pipes. You drag 'blocks' and drop it into the editor. Blocks perform defined functionality like 'get a feed' or 'ask for input' and the output of each block becomes an input for the next (example, 'get a feed from CNN' --> for each feed item 'search blogs for news containing same keywords').

  • Like Yahoo pipes, it also offers 'utilities' like append, union etc. (example 'get a feed from CNN' --> for each feed item 'search blogs for news containing keywords', then 'create a combined feed with both')

  • However, on a 'UI' side, while Popfly has an overall more 'snazzy' UI, I just love the bezier curve connectors of Pipes, compared to the straight arrow connectors of Popfly

  • They have a 'console' and a 'block inspector' that can be used to analyze/debug interim contents of blocks for the times when you created an elaborate chain and it produces zilch, and you need to know which block is messing up

GME Comparison

  • While Popfly lets you connect boxes visually, for each block, you can click on 'Advanced View' and that brings up the Javascript invocation code of the block. If you are comfortable with JS, you can add your own code right into this. I found this combined approach cool. It's kind of like the blogging interface - type visually, but be limited by visual controls, or click HTML and get raw access. I am sure this feature will excite many developers. Well done, MS - best of both worlds

  • Like GME, Popfly allows HTML customization, but based on my quick investigation, the HTML seems to have global effect. However, GME offers really fantastic presentation control. In GME, each object can be associated with its own 'template class' which can have it's own styling, which is truly fantastic. I did not find this level of control with Popfly

Facebook Comparison

  • You may be surprised why I brought Facebook in. Afterall Facebook is NOT a mashup editor. But here is why I did. And this is where I think MS did a great job. It allows you to create 'custom blocks' that act as a 'wrapper' to connect to any 3rd party web service that you may have written, and its contents can be imported right into popfly. Basically, you write a Javascript wrapper, which is the interface that other Blocks in Popfly use to call 'methods' on your block. Inside that wrapper, you interface with your 3rd party webservice and can import data from it either as XML or as text, or, as HTML! So what that means is this is not just a data exchange wrapper, it can also present a custom user interface within popfly. Very nice.  This also means that you are not restricted to only Feed or JSON as data input/output. If you have another data format, create your own block for it! It also allows for data persistence, so you can maintain sessions independantly from browser sessions. To write your own block see here.

 Some differences in popfly

  • First, Popfly provides ready integration with Facebook. You can import a 'facebook' block written by MS. When you use it the first time, you are taken to your facebook login page, and after login, Facebook adds the 'Popfly' application to your profile and gives you an API key. You go back to popfly and enter that key in your facebook module - and poof - you are connected to your facebook profile. Effectively, you have now established what FB calls an 'infinite session' between the popfly connector and facebook. Why is this cool ? Because now, you have access to your friends, your events, photos and groups and feed that into your mashup. Incidentally, for those who wanted to create facebook applications, but did not have a host, you can use popfly's facebook block  to do some cute programming (thought not as flexible as a full fb app).  Naturally, it has integration with other SNS sites too, like Live Spaces (ofcourse), Technorati, Xbox Live (ofcourse)

  • Developers who create new blocks can 'tag' their blocks and publish it, and they automagically appear in the navigation box for other users to use immediately. There are some great blocks done by users, but some really stupid ones too. It's a double edged sword - you get confused on what is good and what is junk/broken.

  • MS provides some really cool eye candy blocks, especially in the 'display photo' part with spinning spheres, stacking images etc. with iphone like navigation slickness.

  • In general Popfly has many more useful blocks than others.

  • For programmers (for example you are a serious coffee guzzling programmer), MS also offers the Popfly Explorer, which is and addon to VStudio which allows you to link VS projects to popfly ( I did not try this - I never have, and never intend to use Visual Studio, but this is likely a convenient tool)

Well, so there you go. All in all, Popfly is Mashup 2.0. Wait, Mashups are supposed to be Web 2.0.. so, what do I say, Popfly is Mashup 3.0? Ah heck. Who cares. It's nice.

I *really* *really* hope Popfly continues its work, and makes it a serious development framework with the reliability and scalability that commercial systems need, so I don't need to rehash this again.

1 comment: