This document enumerates all the items that a well-written Windows Live Gadget should
comply with. It is strongly encouraged for Windows Live Gadget developers to run through
this checklist for each of their Gadget to ensure it is up to standard.
- Gadget namespace adheres to
<CompanyName>.<TeamName>.<FeatureName>
format.
- Gadget icon should be specified in transparent .GIF format. Transparent
.PNG format will not be rendered properly on Live.com.
- No secrets stored via
setPreference() method. Preferences
stored on the platform are sent across the wire in plain text.
- Network requests should not be done via the
XMLHttpRequest
object. Instead, use Web.Network.createRequest() and related calls
to make sure that the network requests are properly proxied so they can work cross-domain.
- Amount of data returned from network requests should not be large
enough to make the Gadget look unresponsive.
- Avoid calling
getElementsByTagName on the document
object from your Gadget. This operation may degrade performance especially if your
Gadget is running inline.
- Note that any objects, methods and properites in the
Start.*
namespace are considered private and they are not guaranteed to remain unchanged
moving forward.
- All attached events are detached in the Gadget's dispose() method.
- All member variables are set to null in the Gadget's dispose()
method.
- Base class's
initialize() method is called first
within the Gadget's initialize() method.
- Base class's
dispose() method is called last within
the Gadget's dispose() method.
- No increase in memory usage when the Gadget is reloaded via http://gadgets.start.com/gadget.aspx?manifestUrl=gadgetUrl
- DOM elements inside the Gadget should have proper tab order.
- All
<img> tags should contain the ALT
attribute.
- Buttons should genuinely be
<input> DOM elements
and not <span> tags styled as buttons.
- All selectors should be preceeded by the fully qualified Gadget
name with "." replaced with "_" and with a "." prepended. For example, if your fully
qualified Gadget name is "Microsoft.Live.HelloWorld", then all your selectors should
be preceeded with ".Microsoft_Live_HelloWorld ". This is for elminating CSS selector
collisions if your Gadget were to ever load inline.