API’s don’t typically have user interaface objects, so you as a developer have to create them. This can be challenging on several levels, the least of which is the simple fact that designing user interfaces is a unique skill that requires a careful eye, design discipline (which is an unwillingness to keep adding elements), and lastly, a little bit of luck.
With where mashups are going, hopefully, the user interface challenge won’t come from a new instant messaging widget or an address book component, but the more intricate components like spreadsheets and calendars. It’s actually quite surprising to see the design complexity of a calendar component when the requirement is to be embedded into another application.
How do you widgetize Google Calendar when you can’t simply shrink it down? The answer is that you have to create your own calendar widget. Google released their own gadget but now you are putting your application performance by relying on a service call through a Gadget, plus with something more intricate like a spreadsheet you are still at the mercy of what they decide to build into the widget as opposed to what you know you need.
It would be my great hope that as an industry we will be able to agree on some universal widget specs, Lord knows the world doesn’t need a new one. Widgets (gadgets, whatever) greatest immediate value for developers is that they are a self contained package that takes care of the UI requirement, but only if the vendor makes their widgets extensible by developers.