tag:blogger.com,1999:blog-23736043883191542092024-03-04T21:31:01.909-08:00iGoogle Developer BlogYour source for API improvements, changes to the sandbox, and developer events.Unknownnoreply@blogger.comBlogger58125tag:blogger.com,1999:blog-2373604388319154209.post-4062294000904213332013-11-01T00:35:00.000-07:002020-06-15T20:56:42.412-07:00Saying Goodbye to iGoogle<div dir="ltr" style="text-align: left;" trbidi="on">
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: white; color: black; font-family: Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><br /></span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: white; color: black; font-family: Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">As we announced on the</span><a href="http://googleblog.blogspot.com/2012/07/spring-cleaning-in-summer.html" style="text-decoration: none;"><span style="background-color: white; color: black; font-family: Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> </span><span style="background-color: white; color: blue; font-family: Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;">Official Google Blog</span></a><span style="background-color: white; color: black; font-family: Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> nearly a year and a half ago, today we’re retiring iGoogle. </span><span style="background-color: transparent; color: black; font-family: Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Moving forward, iGoogle will redirect to</span><span style="background-color: transparent; color: blue; font-family: Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> </span><a href="http://www.google.com/" style="text-decoration: none;"><span style="background-color: transparent; color: blue; font-family: Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;">www.google.com</span></a><span style="background-color: transparent; color: black; font-family: Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">. If you’ve been using iGoogle gadgets to access information from Google products like Gmail and Finance, you can continue to do so via our </span><a href="http://insidesearch.blogspot.com/2013/09/updating-google-bar-many-products.html" style="text-decoration: none;"><span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;">new app launcher</span></a><span style="background-color: transparent; color: black; font-family: Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">.</span></div>
<b id="docs-internal-guid-559b9c78-0d2e-dc4f-fbae-90a998635f3e" style="font-weight: normal;"><br /><span style="background-color: transparent; color: black; font-family: Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"></span></b>
<br />
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">We know that many of you enjoyed your customized iGoogle experience, so if you’re looking for alternatives, there are </span><a href="http://alternativeto.net/software/igoogle/" style="text-decoration: none;"><span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;">some options</span></a><span style="background-color: transparent; color: black; font-family: Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> that might fit your needs. </span></div>
<b style="font-weight: normal;"><br /><span style="background-color: transparent; color: black; font-family: Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"></span></b>
<br />
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: white; font-family: Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Sincerely,</span></div>
<b style="font-weight: normal;"><br /><span style="background-color: white; font-family: Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"></span></b>
<br />
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: white; font-family: Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">The iGoogle Team</span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: white; color: #333333; font-family: Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><br /></span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt; text-align: center;">
<span style="background-color: white; color: #333333; font-family: Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">________________________</span></div>
<div style="text-align: center;">
<b style="font-weight: normal;"><br /><span style="background-color: white; color: #333333; font-family: Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"></span></b></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Frequently-asked questions</span></div>
<b style="font-weight: normal;"><br /><span style="background-color: transparent; color: black; font-family: Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"></span></b>
<br />
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">1. What will happen to my iGoogle data?</span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">All iGoogle data will be systematically deleted from Google servers.</span></div>
<b style="font-weight: normal;"><br /><span style="background-color: transparent; color: black; font-family: Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"></span></b>
<br />
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">2. Will there be any way to retrieve my data from Google in the future?</span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">No. All user data will be permanently, and irrevocably deleted. </span></div>
<b style="font-weight: normal;"><br /><span style="background-color: transparent; color: black; font-family: Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"></span></b>
<br />
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">3. Will this affect my other Google services?</span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">No. It simply means you will access them in a different way. You will still be able to use Google Chrome as your web browser, and you will still be able to access all Google services, such as Gmail, Google Search, Google Bookmarks, Google Calendar, Google Finance, Google Translate, etc., by opening them directly.</span></div>
<b style="font-weight: normal;"><br /><span style="background-color: transparent; color: black; font-family: Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"></span></b>
<br />
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">4. Why was iGoogle discontinued?</span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Please refer to our </span><a href="http://googleblog.blogspot.com.au/2012/07/spring-cleaning-in-summer.html" style="text-decoration: none;"><span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;">blog post</span></a><span style="background-color: transparent; color: black; font-family: Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> for more information.</span></div>
<b style="font-weight: normal;"><br /><span style="background-color: transparent; color: black; font-family: Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"></span></b>
<br />
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">5. What will happen with third party gadgets?</span></div>
<span style="font-family: Arial; font-size: 13px; vertical-align: baseline; white-space: pre-wrap;">Gadgets provided by third party developers will continue to be served. Google Sites, and other third party sites that have installed these gadgets will not be affected.</span><br />
<br /></div>
Unknownnoreply@blogger.comSydney NSW, Australia-33.873651 151.20688960000007-33.9001625 151.16637760000006 -33.847139500000004 151.24740160000007tag:blogger.com,1999:blog-2373604388319154209.post-11794669502646427832012-07-03T12:44:00.000-07:002020-06-15T20:56:41.646-07:00An update on iGoogle<b id="internal-source-marker_0.21050186338834465" style="font-weight: normal;"><span style="background-color: transparent; font-family: Arial; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;">As we announced on the <a href="http://googleblog.blogspot.com/2012/07/spring-cleaning-in-summer.html">Official Google Blog</a></span><span style="background-color: transparent; font-family: Arial; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;">, on November 1, 2013, we will be retiring iGoogle. To ensure a smooth transition for your users, you may want to update your gadgets and direct users to your site or offer the ability to export user data. You may also consider launching your application on one of our </span><a href="https://developers.google.com/products/"><span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;">other platforms</span></a><span style="background-color: transparent; font-family: Arial; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;">.</span><br /><span style="background-color: transparent; font-family: Arial; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;"></span><br /><span style="background-color: transparent; font-family: Arial; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;">As part of this sunset, we will no longer accept new theme submissions after July 31, 2012. Similarly, we will stop accepting new gadgets after July 31, 2012 - but you will be able to update and maintain existing gadgets, as before.</span><br /><span style="background-color: transparent; font-family: Arial; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;"></span><br /><span style="background-color: transparent; font-family: Arial; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;">Feel free to reach out to us at the</span><a href="https://groups.google.com/group/Google-Gadgets-API"><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> </span><span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;">iGoogle Developer Forum</span></a><span style="background-color: transparent; font-family: Arial; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;"> if you have any questions or need assistance, and t</span><b id="internal-source-marker_0.055833246326074004" style="font-weight: normal;"><span style="background-color: transparent; font-family: Arial; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;">hank you for supporting iGoogle over the years.</span></b><br /><span style="background-color: transparent; font-family: Arial; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;"></span><br /><span style="background-color: transparent; font-family: Arial; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;">Posted by Conrad Lo, Product Manager</span></b>Unknownnoreply@blogger.comtag:blogger.com,1999:blog-2373604388319154209.post-22866755422622030512011-05-27T17:48:00.000-07:002020-06-15T20:56:41.988-07:00More new features for the Gadget Dashboard<div style="background-color: transparent; margin-top: 0px; margin-left: 0px; margin-bottom: 0px; margin-right: 0px; font-family: Times; font-size: medium; "><span id="internal-source-marker_0.00861583393998444" style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">Did you know we are continuously adding new features to the </span><a href="http://code.google.com/igoogle/dashboard/"><span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 153); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap; ">iGoogle Gadget Dashboard</span></a><span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">? Today I’d like to let you know about a few of them.</span><br /><span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "></span><br /><span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">First of all, we added two new data sets to the details page of your gadgets. Now you can see intuitive graphs in the “Installations and Removals” tab, which shows the number of gadget installations and gadget removals, and in the “Browser Errors” tab, where you can see errors recently reported by our end users’ browsers.</span><br /><span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "></span><br /><span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">As you may have guessed, adding this information made the gadget details page too long, so we introduced a tabular view for that page.</span><br /><span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "></span><br /><span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: italic; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">(The tabular view, showing the new “Installations and Removals” data)</span><span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "></span><img src="https://lh4.googleusercontent.com/sF9HpZ8UccFFbSc2qO65HwyRbtkg-Q5JwWqWk7hVf5fHEMr8xDVVB6Jg46UFnDdduBeAdzZd80Uuhhf2_ODYeS0eYZlrPVxVNvl_5kMgPhXyakXRePM" width="619px;" height="335px;" /><br /><span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: italic; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "></span><br /><span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: italic; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "></span><br /><span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: italic; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">(“Browser Errors” table showing the top errors reported by our users’ browsers)</span><span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "></span><img src="https://lh4.googleusercontent.com/sTiitBKQvXa8HOMRVp3jz0KO_ECxEJSyIXc-RYL7ZkazqP8fmT1g78GTg8fxBFNPP65rxRZF0e1O2cbDsWir-VF5a-QqFl-oder6YR1yTuyD6AXjY0c" width="633px;" height="208px;" /><br /><span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "></span><br /><span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">Additionally, the dashboard had been only available in English, but we added 7 other langueges a while ago, so it is now available in 8 languages: English, Spanish, Japanese, Korean, Portuguese, Russian, Simplified Chinese and Traditional Chinese. The localized iGoogle developer documentation will lead you to the localized dashboard. For example, after you select Japanese at </span><a href="http://code.google.com/apis/igoogle/"><span style="font-size: 11pt; font-family: Arial; color: rgb(0, 137, 170); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap; ">http://code.google.com/apis/igoogle/</span></a><span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">, you will arrive at </span><a href="http://code.google.com/intl/ja/apis/igoogle/"><span style="font-size: 11pt; font-family: Arial; color: rgb(0, 137, 170); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap; ">http://code.google.com/intl/ja/apis/igoogle/</span></a><span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">, which has a link for the </span><a href="http://code.google.com/igoogle/dashboard/?hl=ja"><span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 153); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap; ">Japanese version of the dashboard</span></a><span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">. Alternatively, you can explicitly add the URL parameter “?hl=ja” to the dashboard URL.</span><span style="font-size: 13pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "></span><br /><span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "></span><br /><span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">Lastly, in the next few days, we will start sending you weekly summary e-mails of your gadget usage. If you don’t want to receive these summary e-mails, you can opt-out from this service by just clicking a link at the bottom of the e-mail. The e-mails look like the following.</span><br /><span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "></span><br /><p style="margin-left: 36pt; margin-top: 0pt; margin-bottom: 0pt; "><span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: bold; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">Gadget name</span><span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">: Weather</span></p><p style="margin-left: 36pt; margin-top: 0pt; margin-bottom: 0pt; "><span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: bold; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">Author email</span><span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">: googlemodules@google.com</span><span style="font-size: 11pt; font-family: Arial; color: rgb(0, 137, 170); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "></span></p><p style="margin-left: 36pt; margin-top: 0pt; margin-bottom: 0pt; "><span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: bold; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">Pageviews</span><span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">: 1,000,000 (+5.00% compared to the week of May 30, 2011)</span></p><p style="margin-left: 36pt; margin-top: 0pt; margin-bottom: 0pt; "><span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: bold; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">Unique users</span><span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">: ...</span></p><p style="margin-left: 36pt; margin-top: 0pt; margin-bottom: 0pt; "><span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: bold; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">Installations</span><span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">: ...</span></p><p style="margin-left: 36pt; margin-top: 0pt; margin-bottom: 0pt; "><span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: bold; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">Removals</span><span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">: ...</span></p><p style="margin-left: 36pt; margin-top: 0pt; margin-bottom: 0pt; "><span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: bold; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">Browser errors</span><span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">: ...</span></p><span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "></span><br /><p style="margin-left: 36pt; margin-top: 0pt; margin-bottom: 0pt; "><span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: bold; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">Gadget name</span><span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">: Youtube Gadget</span></p><p style="margin-left: 36pt; margin-top: 0pt; margin-bottom: 0pt; "><span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: bold; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">Author email</span><span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">: …</span></p><p style="margin-left: 36pt; margin-top: 0pt; margin-bottom: 0pt; "><span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: bold; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">Pageviews</span><span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">: …</span></p><p style="margin-left: 36pt; margin-top: 0pt; margin-bottom: 0pt; "><span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: bold; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">Unique users</span><span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">: ...</span></p><p style="margin-left: 36pt; margin-top: 0pt; margin-bottom: 0pt; "><span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: bold; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">Installations</span><span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">: ...</span></p><p style="margin-left: 36pt; margin-top: 0pt; margin-bottom: 0pt; "><span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: bold; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">Removals</span><span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">: ...</span></p><p style="margin-left: 36pt; margin-top: 0pt; margin-bottom: 0pt; "><span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: bold; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">Browser errors</span><span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">: ...</span></p><p style="margin-left: 36pt; margin-top: 0pt; margin-bottom: 0pt; "><span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">…</span></p><p style="margin-left: 36pt; margin-top: 0pt; margin-bottom: 0pt; "><span style="font-size: 13pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">…</span></p><p style="margin-left: 36pt; margin-top: 0pt; margin-bottom: 0pt; "><span style="font-size: 13pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">...</span></p><span style="font-size: 13pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "></span><br /><span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">As you can see, iGoogle is still evolving! Happy coding. :)</span><br /><span style="font-size: 13pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "></span><br /><span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">Posted by Takashi Matsuo, Developer Advocate</span></div>Unknownnoreply@blogger.comtag:blogger.com,1999:blog-2373604388319154209.post-76840960107594201852011-04-04T08:48:00.000-07:002020-06-15T20:56:42.755-07:00Live Gadget Previews in the iGoogle DirectoryThe iGoogle Gadget Directory just got better. Users can now interact with a gadget in the directory before adding it to their page. Have a look at a couple examples like the <a href="http://www.google.com/url?q=http%3A%2F%2Fwww.google.com%2Fig%2Fdirectory%3Furl%3Dwww.gstatic.com%2Fig%2Fmodules%2Ftabnews%2Ftabnews.xml" title="Google News - Add to your homepage">Google News</a> or <a href="http://www.google.com/url?q=http%3A%2F%2Fwww.google.com%2Fig%2Fdirectory%3Furl%3Dwww.google.com%2Fig%2Fmodules%2Freal_time_trends.xml" title="Google Hot Trends - Add to your homepage">Google Hot Trends</a> gadgets.<br />
<br />
Your gadgets can have live previews too. Gadgets that use Content view="default" already have a live preview in the gadget directory. Remember, view="default" can match any view supported by the container. Similarly, if the Content element in a gadget doesn't specify the view attribute, that's treated the same as if view="default" were present. Up until now, the only views that were supported on iGoogle were home and canvas; remember, home is the smaller version and canvas is the larger version.<br />
<br />
Some gadgets are customized to display differently for the home and canvas views. If your gadgets do this, you can update the gadget XML spec to add a unique view for the preview or reuse an existing content element.<br />
<br />
<strong>For gadgets with an element <Content view="home,canvas"></strong><br />
In this case you can just add preview, so you'll have view="home,canvas,preview".<br />
<br />
<strong>For gadgets with <Content view="home"></strong><br />
Here too, you can reuse the home view for the preview by changing your spec to view="home,preview".<br />
<br />
There are some other restrictions on the way the preview works. A preview can't use OpenSocial calls - since the user hasn't set the OpenSocial permissions before installing the gadget. You may want to address this in your gadget by making a special preview version that uses some dummy data, or you can opt out of the live preview and stick with a static screenshot.<br />
<br />
Like all gadget views, the preview is cached. This reduces load and speeds up serving for users. But if you're working on your gadget and don't see a recent change in the preview, you can disable caching temporarily by adding the parameter "nocache=1" to the url.<br />
<br />
Gadgets displayed as a preview also can't navigate to other views using <a href="http://www.google.com/url?q=http%3A%2F%2Fwiki.opensocial.org%2Findex.php%3Ftitle%3DGadgets.views_%2528v0.9%2529%23gadgets.views.requestNavigateTo">requestNavigateTo()</a>. If your gadget has a link that triggers changing the view it won't work in the preview.<br />
<br />
If you feel a preview isn't the right choice for your gadget then specify the other views (home & canvas) and be sure that your screenshot does a good job of conveying what your gadget will do for users.<br />
<br />
As always, come to the <a href="http://groups.google.com/group/Google-Gadgets-API">iGoogle Developer Forum</a> to talk about live gadget previews with other iGoogle developers.<br />
<br />
<span class="byline-author">Posted by Rob Russell, Developer Relations</span>Unknownnoreply@blogger.comtag:blogger.com,1999:blog-2373604388319154209.post-61577310269405915242010-06-23T09:47:00.000-07:002020-06-15T20:56:42.540-07:00OpenSocial Development Environment 1.0 ReleasedOSDE (OpenSocial Development Environment) is an Eclipse plugin for developing and testing OpenSocial applications.<br />
<div>It's an Apache-2-licensed open-source project hosted at:</div><div><a href="http://code.google.com/p/opensocial-development-environment/">http://code.google.com/p/opensocial-development-environment/</a></div><div>Its milestone version 1.0 was released on June 22, 2010.</div><div><br />
<div>OSDE provides a rich set of features that both enable and enhance OpenSocial application development. It helps people building for both the client within a gadget, or even on another server using the Java RESTful client libraries. Its features include:<br />
<ul><li>A built-in Shindig server for local testing.</li>
<li>An integrated database for storing and managing social data.</li>
<li>Simple project and gadget code generation wizards to quickly generate your OpenSocial application projects and application code.</li>
<li>A multi-paned gadget spec editor to facilitate gadget development.</li>
<li>A new "OpenSocial" Eclipse perspective that provides enhanced editing and debugging with easy access and control of the local Shindig and social database.</li>
<li>An OpenSocial REST Java client wizard that can quickly generate a new project along with sample code that uses the OpenSocial RESTful Java client library to connect to the local OpenSocial server. </li>
<li>Live testing against iGoogle server.</li>
<li>Performance Analysis.</li>
</ul><div>For details of installation and how to use it, please read the user guide at: <a href="https://sites.google.com/site/opensocialdevenv/user-guide">https://sites.google.com/site/opensocialdevenv/user-guide</a></div><div><br />
</div><div>For bugs reporting or feature requests, please visit: <a href="http://code.google.com/p/opensocial-development-environment/issues/list">http://code.google.com/p/opensocial-development-environment/issues/list</a></div><div><br />
</div><div>Thanks for your support.</div></div></div><br />
Post content <span class="byline-author">Posted by Albert Cheng, iGoogle Engineer</span>Unknownnoreply@blogger.comtag:blogger.com,1999:blog-2373604388319154209.post-78292361619847025352010-05-26T14:26:00.000-07:002020-06-15T20:56:42.777-07:00HTML5 in Gadgets on iGoogleDid you know gadgets can use html5? The key is in the doctype. Normally the doctype of a gadget isn't mentioned. Specify the html5 doctype in the gadget and it will be used when the gadget is rendered. Let's look at a quick example using the popular canvas drawing API:<br />
<code><br />
<?xml version="1.0" encoding="UTF-8" ?><br />
<Module><br />
<ModulePrefs title="html5 canvas"><br />
</ModulePrefs><br />
<Content type="html" view="home,canvas"><br />
<![CDATA[<br />
<!DOCTYPE html><br />
<script><br />
var demo = {<br />
init: function() {<br />
var drawcan = document.getElementById('drawarea');<br />
if (drawcan.getContext){<br />
var context = drawcan.getContext('2d');<br />
var xmax = drawcan.width;<br />
var ymax = drawcan.height;<br />
context.strokeRect(0,0,xmax,ymax);<br />
for (var dotix = 0; dotix < 100; ++dotix) {<br />
var x = Math.random() * xmax;var y = Math.random() * ymax;<br />
context.strokeStyle = "#888888";<br />
var blueness = Math.floor(Math.random() * 256);<br />
context.fillStyle = "rgb(10,90,"+ blueness +")";<br />
context.beginPath();<br />
context.arc(x,y,5,0,Math.PI*2,true);<br />
context.closePath();<br />
context.stroke();<br />
context.fill();<br />
}<br />
}<br />
}<br />
};<br />
<br />
gadgets.util.registerOnLoadHandler(demo.init);<br />
<br />
</script><br />
<canvas id="drawarea" width="150" height="150"></canvas><br />
]]><br />
</Content><br />
</Module></code><br />
<code><br />
</code><br />
<div style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" src="http://1.bp.blogspot.com/_j1NNIt-quw4/S_2SImvP1-I/AAAAAAAAAB0/Yg6lj4QqRKM/s200/moredots.png"/></div><br />
The top of the gadget still has the usual XML prolog because the gadget spec is, as always, an XML document. The html, in this case html5, is inside a CDATA block. The CDATA block means the structure of the html5 content is pretty much ignored when parsing the XML. iGoogle doesn't do anything extra for compatibility with html5; features specific to html5 will still only work in browsers that support them. Gadgets have the same cross-browser compatibility concerns as any other web page. Have a look at the <a href="http://caniuse.com/">When can I use</a> guide for an idea of compatibility of features across browsers.<br />
<br />
The content of this gadget is pretty straightforward. It includes a canvas element. In the init method it tries to get a drawing context. If it's successful (meaning the browsers supports html5 canvas) it will draw a rectangle around the extents of the element then draw 10 randomly placed dots inside. Use this gadget as a starting point to get your own html5 gadget running.<br />
<br />
And yes, this gadget has a canvas in your canvas so you can render when you render. <br />
<br />
<span class="byline-author">Posted by Rob Russell, Developer Relations Team</span>Unknownnoreply@blogger.comtag:blogger.com,1999:blog-2373604388319154209.post-16592931528052643882010-05-13T18:40:00.000-07:002020-06-15T20:56:41.858-07:00OSAPI on iGoogleThe OpenSocial 0.9 specification introduced a simpler API called OS Lite (also known as OSAPI) which uses a syntax that's friendlier for Javascript developers.<br />
<br />
Some steely eyed developers have already noticed that iGoogle works with most OpenSocial 0.9 features. The implementation of OSAPI should work as documented at <a href="http://wiki.opensocial.org/index.php?title=OSAPI_Specification" target="_blank">opensocial.org</a>.<br />
<br />
Here's a basic example to play with so you can get started with the OS Lite API. In this example we will execute a request to fetch and display a list of the user's friends.<br />
<br />
<code><br />
<Module><br />
<ModulePrefs height="800" title="osapi friends" title_url="http://code.google.com"><br />
</code><code> </code><code> </code><code><Require feature="opensocial-0.9" /><br />
</code><code> </code><code> </code><code><Require feature="osapi" /><br />
</code><code></code><code> </code><code><Content type="html" view="home"><br />
</code><code> </code><code> </code><code><![CDATA[<br />
</code><code> </code><code> </code><code><script><br />
</code><code> </code><code> </code><code> </code><code>var result = '';</code><code><br />
</code><code> </code><code> </code><code> </code><code> osapi.people.get({userId:'@owner', groupId:'@friends'}).execute(function(response) {</code><code><br />
</code><code> </code><code> </code><code> </code><code> </code><code>result += 'You have ' + response.list.length + ' friends:<ul>';<br />
</code><code> </code><code> </code><code> </code><code> </code><code>for (item in response.list) {<br />
</code><code> </code><code> </code><code> </code><code> </code><code> </code><code>result += '<li>' + response.list[item]';<br />
</code><code> </code><code> </code><code> </code><code> </code><code>}<br />
</code><code> </code><code> </code><code> </code><code> </code><code>document.getElementById("output").innerHTML = result + '</ul>';<br />
</code><code> </code><code> </code><code> </code><code>});<br />
</code><code> </code><code> </code><code>]]><br />
</code><code> </code><code></Content><br />
</Module></code><br />
<code><br />
</code><br />
To keep it short we've omitted detailed error handling in our example. It should be pretty clear what the script is doing but it's good to check <span style="font-family: monospace;">response.error</span> and gracefully handle problems.<br />
The first call, <span style="font-family: monospace;">osapi.people.get({userId: '@owner', groupId: '@friends'})</span> constructs a request object to get a list of people for the current user from their <span style="font-style: italic;">friends</span> group. The call to <span style="font-family: monospace;">execute</span> will make a call to the service, passing the results to a callback function. Our callback is a simple anonymous function that across the result set.<br />
When running the code, look at the JSON response from iGoogle and you'll see that the data structure is pretty straightforward. Use some of the tools built into your browser such as:<br />
<ul><li>Firebug if you are using Firefox</li>
<li>Chrome or Safari Developer tools.</li>
<li>Opera Dragonfly</li>
<li>Internet Explorer 8's debugger</li>
</ul><br />
These tools help debug your Javascript but also can show you the HTTP messages that are going to iGoogle from your gadget and the responses iGoogle sends back. There's also the <a href="http://osda.appspot.com/" target="_blank">OpenSocial Developer App</a> which is a gadget that will build arbitrary messages that you can incorporate in test code.<br />
<br />
As we get more OpenSocial 0.9 tested out on iGoogle, we'll update the documentation to reflect the current functionality.<br />
<br />
If you like OSAPI and you're going to be at Google I/O 2010, you can find us in the Hack Alcove on May 20 2010 from 2-3:30pm. We'll give a walk through of a gadget built with osapi for iGoogle gadget developers. There's also <a href="http://code.google.com/events/io/2010/sessions/igoogle-developer-portal.html" target="_blank">a talk for iGoogle developers</a> at I/O on May 20 2010 at 10:15am.<br />
<br />
<span class="byline-author">Posted by Rob Russell and Paul Kinlan, Developer Relations</span>Unknownnoreply@blogger.comtag:blogger.com,1999:blog-2373604388319154209.post-66024832100619699062010-05-10T09:58:00.000-07:002020-06-15T20:56:42.605-07:00Images In RSS Around the WorldWe announced a couple weeks ago that iGoogle <a href="http://igoogledeveloper.blogspot.com/2010/04/sometimes-blue-text-just-isnt-enough.html">now supports images in RSS</a>. The initial launch was for the US only, but we're launching globally over the next few days. All users will now be able to use our two new views (headline and lead story and slideshow) to display images directly on iGoogle for any feed using MediaRSS or enclosures. If you're a feed provider, have a look at the <a href="http://code.google.com/apis/igoogle/docs/mediarssguide.html">iGoogle Feed Gadgets Publishers Guide</a> to engage users with your feed.<br />
<br />
Post content <span class="byline-author">Posted by Rob Russell, Developer Relations</span>Unknownnoreply@blogger.comtag:blogger.com,1999:blog-2373604388319154209.post-1781577012753536092010-05-03T18:55:00.000-07:002020-06-15T20:56:41.901-07:00Variable Substitution and getMsgGadgets use messages, stored in <a href="http://code.google.com/apis/gadgets/docs/i18n.html#Bundles">messagebundles</a>, for internationalization. The most common way to access the messages your gadget has is with variable substitution. For example, a message called north can be specified as<br />
<br />
<div style="font-family: "Courier New",Courier,monospace;"><msg name="north">Nord</msg><br />
<br />
</div>and accessed by using __MSG_north__ your code. The copious underscores lead to the affectionate term “hangman variables” for this substitution notation. Before your code runs, the exact text __MSG_north__ is replaced everywhere with the appropriate value from the messagebundle. In this example it will be “Nord” (French for North, no quotes). This happens in the appropriate places in the XML of your gadget spec as well. So your enum values can be replaced before the controls are made that will show them and everything works as expected. But suppose you have some text in your code that uses a message, something like<br />
<br />
<div style="font-family: "Courier New",Courier,monospace;">dirbox.innerHTML = '__MSG_north__';<br />
<br />
</div>This will work fine as well because the substitution happens before the code runs. Now let’s take another message<br />
<br />
<div style="font-family: "Courier New",Courier,monospace;"><msg name="dinername">Chez Sophie</msg><br />
</div>And some similar Javascript<br />
<br />
<div style="font-family: "Courier New",Courier,monospace;">dinersign.innerHTML = '__MSG_dinername__';<br />
<br />
</div>Everything works fine until we add the English translation<br />
<br />
<div style="font-family: "Courier New",Courier,monospace;"><msg name="dinername">Sophie's Place</msg><br />
<br />
</div>And the code the gadget tries to run is<br />
<br />
<div style="font-family: "Courier New",Courier,monospace;">dinersign.innerHTML = 'Sophie's Place';<br />
<br />
</div>where of course the string ends early and the browser will correctly emit some odd error on seeing the first s after the apostrophe. This could be cited as an unterminated string literal, a missing semicolon or an illegal character (if you get a different character for your apostrophe).<br />
<br />
The <a href="http://wiki.opensocial.org/index.php?title=Gadgets.Prefs_%28v0.8%29#gadgets.Prefs.getMsg">gadgets.Prefs.getMsg()</a> function will correctly read the dinername as the string which it’s meant to be.<br />
<br />
<div style="font-family: "Courier New",Courier,monospace;">var init = function () {</div><div style="font-family: "Courier New",Courier,monospace;">var prefs = new gadgets.Prefs();</div><div style="font-family: "Courier New",Courier,monospace;">dinersign = document.getElementById("dinersign");</div><div style="font-family: "Courier New",Courier,monospace;">dinersign.innerHTML = prefs.getMsg("dinername");</div><div style="font-family: "Courier New",Courier,monospace;">};</div><div style="font-family: "Courier New",Courier,monospace;"><br />
</div><div style="font-family: "Courier New",Courier,monospace;">gadgets.util.registerOnLoadHandler(init);</div><br />
The getMsg function should help make more reliable, robust gadgets in many cases and it might help resolve some of those errors your users get using languages translations that you don’t use so often.Unknownnoreply@blogger.comtag:blogger.com,1999:blog-2373604388319154209.post-13026543183961337842010-04-22T10:20:00.000-07:002020-06-15T20:56:41.688-07:00Sometimes blue text just isn’t enoughNearly every iGoogle user has an RSS feed or two on their homepage - from top news to celebrity gossip, recipes, and much much more. In true Google fashion, we originally launched RSS support with a simple headline-only presentation. However, we all know the power of pictures, and so, we're happy to announce the addition of image support to our standard RSS gadget.<br /><br />With this new feature, users have three different display views.<br /><br /><span style="padding-left: 10px;"><b>Headline only</b></span><br /><div style="text-align: left;"><img style="border: medium none; margin: 0pt 10px 10px 0pt;" src="http://4.bp.blogspot.com/_j1NNIt-quw4/S9CMhGrl4OI/AAAAAAAAAAk/EJbrS9MP1J8/s1600/dg5pddfv_121dbfbcwg8_b" alt="Headline only view" id="BLOGGER_PHOTO_ID_5463018846892618466" border="0" /><br /></div><br /><span style="padding-left: 10px;"><b>Slideshow</b></span><span style="padding-left: 230px;"><b>Headline and lead story</b></span><br /><div style="text-align: left;"><img style="border: medium none; margin: 0pt 10px 10px 0pt;" src="http://4.bp.blogspot.com/_j1NNIt-quw4/S9CMhYnQ7FI/AAAAAAAAAAs/Pxf-osUkc9w/s1600/dg5pddfv_1229cvtbtgh_b" alt="Slideshow and Headline and lead story views" id="BLOGGER_PHOTO_ID_5463019567067328674" border="0" /><br /></div><br />When users go to iGoogle today, they’ll notice that not all feeds have the same view. We default each feed to what we believe is the optimal display based on the images currently available in the feed. Of course, users can change the display setting by choosing "edit settings" in the drop down menu for each feed.<br /><br />These new views not only create a better experience for users, but also give publishers an opportunity to more easily expose rich content, often already present in their RSS feeds. To take advantage of this new feature, publishers simply need to add images and associated Media RSS and/or enclosure elements to their existing RSS feeds. We’ll then grab the images, resize them down as necessary, and provide hosting/caching. Additionally, we’ll make the images clickable and display a 150 character snippet in the “Headline and lead story” view.<br /><br />Here are a sampling of feeds to try out:<br /><ul><li><a href="http://www.google.com/ig/directory?type=gadgets&url=www.cnn.com/partners/google/cnn_topstories.rss" title="CNN">CNN</a></li><li><a href="http://www.google.com/ig/directory?type=gadgets&url=www.nytimes.com/services/xml/rss/nyt/HomePage.xml" title="NYTimes">NYTimes</a></li><li><a href="http://www.google.com/ig/directory?url=newsrss.bbc.co.uk%2Frss%2Fnewsonline_world_edition%2Ffront_page%2Frss.xml" id="iw_p" title="BBC">BBC</a></li><li><a href="http://www.google.com/ig/directory?type=gadgets&url=www.economist.com/rss/globalAgenda/economist_globalArticle.xml" title="The Economist">The Economist</a></li><li><a href="http://www.google.com/ig/directory?type=gadgets&url=rss.time.com/web/time/rss/top/index.xml" title="Time.com">Time.com</a></li><li><a href="http://www.google.com/ig/directory?type=gadgets&url=rss.people.com/web/people/rss/topheadlines/index.xml" title="People Magazine">People Magazine</a></li><li><a href="http://www.google.com/ig/directory?type=gadgets&url=rss.ew.com/web/ew/rss/todayslatest/index.xml" title="Entertainment Weekly">Entertainment Weekly</a></li><li><a href="http://www.google.com/ig/directory?type=gadgets&url=www.wikihow.com/feed.rss" title="Wikihow">Wikihow</a></li><li><a href="http://www.google.com/ig/directory?url=feeds.nationalgeographic.com%2Fng%2Fphotography%2Fphoto-of-the-day%2F" title="National Geographic">National Geographic</a> (try it in slideshow mode)</li><li><a href="http://www.google.com/ig/directory?url=feeds.feedburner.com%2Felise%2Fsimplyrecipes" title="Simply Recipes">Simply Recipes</a> (try it in slideshow mode)</li></ul><br /><br />This feature is launching in the US over the next day with full international support coming soon. Please see our <a href="http://code.google.com/apis/igoogle/docs/mediarssguide.html">feed publisher instructions</a> for more information.<br /><br /><span class="byline-author">Posted by James Lee, iGoogle Engineer</span>Unknownnoreply@blogger.comtag:blogger.com,1999:blog-2373604388319154209.post-20255053830808263422010-04-20T19:43:00.000-07:002020-06-15T20:56:41.966-07:00UserPrefs in Gadget URLsThere's been a change in the way we send parameters to gadgets which use Content type="url". In short, we started sending the user prefs parameters after a # - the URL fragment identifier. As it turns out, this change caused problems for developers who rely on using URL parameters in server side code - since the url fragment isn't sent to the server.<br /><br />If this change caused trouble for your gadget then we have figured out a way to exempt gadgets individually for up to about two weeks - that's until May 4. So time is still tight but not as tight. Read on to the end of this post for details.<br /><br />We didn't intend to break any gadgets and I would normally announce changes like this on the blog and <a href="http://groups.google.com/group/Google-Gadgets-API/">in the forum</a> earlier. The team discussed ways that affected gadgets can deal with the new location of the parameters for type=url gadgets and have a couple ideas for fixes.<br /><br />First, if your gadget can deal with the user prefs completely in Javascript without another trip to the server then do so. Use the <a href="http://wiki.opensocial.org/index.php?title=Gadgets.Prefs_%28v0.8%29"> documented apis for user prefs</a>. Gadgets that are already using these API functions to retrieve user prefs are not affected by this iGoogle change.<br /><br />The other, hopefully less common, case is if you use the parameters in server side code in a way that slightly alters the delivered content. An example would be setting up location-dependant data with the user location stored in their preferences. In this case you can have the gadget read the parameters from the URL in Javascript and send an AJAX request to your server for the data you need to render the relevant sections of your gadget. Of course your gadget should use <a href="http://wiki.opensocial.org/index.php?title=Gadgets.Prefs_%28v0.8%29">the documented user prefs apis</a> as above.<br /><br />A side-effect of the second fix may be that your gadget's initial render can happen sooner which can improve user-perceived performance (while taking roughly the same time to load overall).<br /><br />We realize this unintended consequence may be difficult to deal with immediately. So we've figured out a way to exempt specific gadgets for up to two weeks if you need the time. Just give the URL of your gadget <a href="http://groups.google.com/group/Google-Gadgets-API/browse_thread/thread/cfa3159d094d8f78"> in this forum thread</a> and we'll add you to the list.<br /><br />I encourage anyone to post specific questions about fixes for your code in new threads in the <a href="http://groups.google.com/group/Google-Gadgets-API/topics">iGoogle Developer forum</a>. While it's not normally the best place for help with server-side code, in this case you may find other developers in similar situations.<br /><br /><span class="byline-author">Posted by Rob Russell, Developer Relations<br /></span>Unknownnoreply@blogger.comtag:blogger.com,1999:blog-2373604388319154209.post-83499537523924102412010-03-25T13:30:00.000-07:002020-06-15T20:56:42.841-07:00Migration made easierLast year we released a <a href="http://code.google.com/apis/gadgets/docs/migration.html">legacy migration guide</a> for converting legacy gadgets to gadgets.* by hand. At the time, we promised a migration tool to help perform these migrations automatically.<br /><br />Today, I’m happy to announce the <a href="http://gadget-migration.appspot.com/">legacy gadget migration tool</a>, which will convert existing XML and JavaScript code to use the gadgets.* API. The tool will accept raw XML and JavaScript to convert, or a publicly visible URL, read the code, and replace references to the legacy API with their gadgets.* equivalents. In the rare case where a migration cannot be automatically performed, it will output per-line warnings indicating what changes developers must make by hand, along with a relevant link to the migration guide.<br /><br />Of course, please test migrated code before deploying to all of your users.<br /><br />If you have any questions, please inquire in the <a href="http://groups.google.com/group/Google-Gadgets-API">iGoogle Developer Forum</a>. <br /><br /><span class="byline-author">Posted by Dan Holevoet, Developer Programs</span>Unknownnoreply@blogger.comtag:blogger.com,1999:blog-2373604388319154209.post-85104747255333529392010-03-04T10:41:00.000-08:002020-06-15T20:56:42.905-07:00The forums, they are a-changin'<p>iGoogle developers, your lives are about to get a bit easier. For the last few years, the <a href="http://groups.google.com/group/Google-Gadgets-API" title="iGoogle Developer Forum">iGoogle Developer Forum</a> has been the place for gadget developers to discuss development of gadgets for iGoogle. Despite the name, the forum only provided help and answers for one of the two iGoogle APIs. For themes questions, developers turned to the <a href="http://groups.google.com/group/google-themes-api" title="Google Themes API group">Google Themes API group</a>, fragmenting the development community in two.</p><p>Starting immediately, the <a href="http://groups.google.com/group/Google-Gadgets-API" title="iGoogle Developer Forum">iGoogle Developer Forum</a> will now be host for all iGoogle developer discussion, for both gadgets and themes. The Themes API group will be put into a read-only mode in a few days, and the welcome text will include a reminder to everyone to visit the combined group.<br /></p><p>In addition, we have created a new <a href="http://code.google.com/p/igoogle-developers/wiki/IssuesTab?tm=3" title="shared issue tracker">shared issue tracker</a> for reporting issues with the Gadgets and Themes APIs. The <a href="http://code.google.com/p/igoogle-legacy/wiki/IssuesTab?tm=3" title="igoogle-legacy tracker">igoogle-legacy tracker</a> is to be used exclusively for issues pertaining to the <a href="http://igoogledeveloper.blogspot.com/2010/01/last-phase-of-inlined-gadget.html" title="deprecated legacy gadgets API">deprecated legacy gadgets API</a>, and will remain active until the API is no longer supported. All gadgets.* API, Themes API, and directory issues should be posted in the new issue tracker.<br /></p><p>If you have any questions about these changes, please let us know in the <a href="http://groups.google.com/group/Google-Gadgets-API" title="forum">forum</a>.<br /></p><span class="byline-author">Posted by Rob Russell, Developer Relations</span>Unknownnoreply@blogger.comtag:blogger.com,1999:blog-2373604388319154209.post-22972822708778456092010-02-16T11:03:00.000-08:002020-06-15T20:56:42.009-07:00New features on the Developer DashboardLast November we launched the <a href="http://igoogledeveloper.blogspot.com/2009/11/launching-igoogle-gadget-dashboard.html">iGoogle Gadget Dashboard</a>, a tool to give our gadget developers more insight into how their gadget is used in the wild. For starters, we gave developers the ability to track their user count, pageviews, canvas views all over time, as well as the geographic distribution of their users. When we launched we promised more to come, and we're pleased to announce the release of several of the most requested features by our developer community.<br /><br />You may have already noticed the newest additions to the dashboard, which we rolled out over the last week. Developers can now subscribe to their gadget's directory comments with their favorite RSS reader, so it's easy to stay current with your user's concerns and desires. If you're a developer with a lot of gadgets, we've added sorting options so you can keep gadgets ordered in the most useful way. Finally and for the first time, developers can easily submit and withdraw gadgets from the iGoogle directory, giving them even greater control over their presence on iGoogle.<br /><br />We're firm believers in the principle that empowering our developers is the best way to bring a great iGoogle experience to our users, so we'll be listening to our developer community about the tools and data they need the most and the dashboard will continue to improve. In the meantime, you can play with the new version at: <a href="http://code.google.com/igoogle/dashboard/">http://code.google.com/igoogle/dashboard/</a><br /><br />Happy developing!<br /><br /><span class="byline-author">Posted by Sascha Haberling, Tech Lead</span>Unknownnoreply@blogger.comtag:blogger.com,1999:blog-2373604388319154209.post-6294507978687472992010-01-22T11:41:00.000-08:002020-06-15T20:56:42.562-07:00Last phase of inlined gadget deprecationThe deprecation of inlined gadgets which began in <a href="http://groups.google.com/group/Google-Gadgets-API/browse_thread/thread/5776dc1be6dfd0b">November 2007</a> is ready to enter its final phase. Over the next 30 days, we will be disabling the remaining inlined gadgets on iGoogle, starting immediately with those that are broken or have zero users. If you’d like operation of your gadget to continue, please follow the instructions in the <a href="http://code.google.com/apis/gadgets/docs/migration.html">gadgets.* migration guide</a>.<br /><br />If you have any questions on the deprecation, please visit the <a href="http://groups.google.com/group/Google-Gadgets-API">iGoogle Developer Forum</a>.<br /><br /><span class="byline-author">Posted by Dan Holevoet, Developer Programs</span>Unknownnoreply@blogger.comtag:blogger.com,1999:blog-2373604388319154209.post-13733645770965707182009-12-17T17:25:00.000-08:002020-06-15T20:56:41.731-07:00An update on the legacy API deprecationThree months ago we <a href="http://igoogledeveloper.blogspot.com/2009/09/more-things-change-more-they-stay-same.html">announced</a> the deprecation of the legacy gadgets API. Since then we've released a <a href="http://code.google.com/apis/gadgets/docs/migration.html">legacy migration guide</a> for converting legacy gadgets to "gadgets.*" by hand, and we're continuing to work on a migration tool to help perform this conversion automatically.<br /><br />Since the migration tool isn't yet available, we've decided to delay the next step of the migration process, the requirement that all new gadgets be written using gadgets.*, for an indefinite period. So, while we still recommend using the gadgets.* API, as it will save you time later, we're holding off on this requirement. Stay tuned for another update on the migration process, with a link to the migration tool, in early 2010.<br /><br /><span class="byline-author">Posted by Dan Holevoet, Developer Programs</span>Unknownnoreply@blogger.comtag:blogger.com,1999:blog-2373604388319154209.post-15222674703755777342009-11-23T15:07:00.000-08:002020-06-15T20:56:41.815-07:00Amigos! Freunde! Friends! Друзья!Googlers live <a href="http://www.google.com/corporate/address.html">all over the world</a>, and so do Google's users. In fact, more than half of iGoogle's users are outside the US, which is why we're pleased today to announce the release of support for social gadgets on iGoogle in more than 30 languages, from Bulgarian to Vietnamese.<br /><br />That means if you're developing or thinking about developing a social gadget to help users connect and collaborate on iGoogle, the size of your potential audience more than doubled! Now is a great time to explore our <a href="http://code.google.com/igoogle">developer's site</a> to learn about developing social gadgets for iGoogle. Or, if you already have a social gadget, you can <a href="http://code.google.com/apis/gadgets/docs/i18n.html">click here</a> to learn how to make it accessible to an international audience.<br /><br />To learn more about how to make iGoogle and even more fun and personal homepage, you can check out the video below.<br /><br /><div align="center"><object height="344" width="425"><param name="movie" value="http://www.youtube.com/v/D4AXFZWZ6nI&hl=en&fs=1&"><param name="allowFullScreen" value="true"><param name="allowscriptaccess" value="always"><embed src="http://www.youtube.com/v/D4AXFZWZ6nI&hl=en&fs=1&" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" height="344" width="425"></embed></object></div><br /><span class="byline-author">Posted by Tyler Odean, Product Manager</span>Unknownnoreply@blogger.comtag:blogger.com,1999:blog-2373604388319154209.post-32079321724483141022009-11-20T15:03:00.000-08:002020-06-15T20:56:42.159-07:00Launching the iGoogle Gadget DashboardAs Googlers, we love data. More data lets us make better decisions and make improvements to our products. As fellow gadget authors, we know that once you've developed a gadget, it can be difficult to get data that lets you know how your gadget is doing. The stats and comments in the directory are tailored for users, not developers, to help them make better decisions about which gadgets to install. Developers deserve a way to get data that lets them improve their gadgets.<br /><br />Worry no longer! We're pleased to announce the launch of the <a href="http://code.google.com/igoogle/dashboard/">iGoogle gadget dashboard</a>, a place where developers can manage their gadgets and see detailed analytics about their gadgets' usage. Right now the dashboard allows you to see user numbers over time, number of gadget loads in home and canvas view, as well a geographic break down of users. We plan on adding more features to the dashboard in the near future which will give developers even more detailed information.<br /><br />If you've already built an iGoogle gadget, go to the dashboard and add it. All you have to do is log in and enter the URL of any gadget you own or developed. Enjoy!<br /><br />If you have any questions about the gadget dashboard, please visit the <a href="http://groups.google.com/group/google-gadgets-api">iGoogle Developer Forum</a>.<br /><br /><span class="byline-author">Posted by Chris Pedregal, Product Manager and Kevin Liu, Tech Lead</span>Unknownnoreply@blogger.comtag:blogger.com,1999:blog-2373604388319154209.post-83968929127163334252009-10-19T14:55:00.000-07:002020-06-15T20:56:42.862-07:00Hot off the press: gadgets.* migration guideA little over a month, we <a href="http://igoogledeveloper.blogspot.com/2009/09/more-things-change-more-they-stay-same.html">announced</a> the deprecation of the legacy gadgets API, and in the intervening time have been hard at work on resources to help with the transition. The first of these resources, a <a href="http://code.google.com/apis/gadgets/docs/migration.html">gadgets.* migration guide</a>, has just been posted to code.google.com.<br /><br />The guide includes mappings between _IG_* and gadgets.* methods, helper functions, and pointers to third-party libraries that you can use in your updated gadgets.<br /><br />If you have any questions about the migration guide, or the transition from _IG_* to gadgets.*, please visit the <a href="http://groups.google.com/group/google-gadgets-api">iGoogle Developer Forum</a>.<br /><br /><span class="byline-author">Posted by Dan Holevoet, Developer Programs</span>Unknownnoreply@blogger.comtag:blogger.com,1999:blog-2373604388319154209.post-53396298615842823622009-09-29T16:41:00.000-07:002020-06-15T20:56:42.497-07:00Deprecating shareable-prefs API on iGoogleIf you don't know about or use the shareable-prefs API, you can safely stop reading now. If you do, we want to let you know that we'll be deprecating this API and feature.<br /><br />A little over a year ago, iGoogle added <a href="http://googlegadgetsapi.blogspot.com/2008/04/write-collaborative-gadget-with-one.html">shareable-prefs</a>, enabling gadgets to share state across multiple users' pages. Since then, iGoogle has rolled out support for OpenSocial, enabling a collaboration model that is more tightly integrated into an application's design. Given this, along with the low adoption of the shareable-prefs feature in gadgets, we've decided it's time to deprecate the shareable-prefs feature.<br /><br />In the next few weeks, iGoogle will remove the UI elements for shareable-prefs, preventing any new gadgets from implementing this feature. A few weeks later, iGoogle will break the links between these gadgets entirely, at which point, the gadgets will behave as if they were never shared at all. However, both users will retain the data in their preferences. The gadgets should continue to function in every other regard, but gadgets that wish to share data between users should implement OpenSocial's requestShareApp (paired with appdata, or a 3rd-party storage mechanism).<br /><br />If you have any questions about these changes, please let us know in the <a href="https://groups.google.com/group/google-gadgets-api">iGoogle Developer Forum</a>.<br /><br /><span class="byline-author">Posted by Dan Holevoet, Developer Programs</span>Unknownnoreply@blogger.comtag:blogger.com,1999:blog-2373604388319154209.post-31823135141530449882009-09-18T16:09:00.000-07:002020-06-15T20:56:42.137-07:00Reinforcements in the war on slowOn the iGoogle team we're always working to balance the needs of our users with the needs of our developers, to make sure we're creating an environment where everyone benefits. We want users to have access to the very best gadgets, hence we want to make sure we provide our developers with all the tools and information they need to create those gadgets.<br /><br />Recently, we announced plans to mark gadgets in the directory that were especially slow to load. We have some new tools on the way that will help make it easier for developers to streamline their gadgets. So we've decided to hold off on labeling gadgets until we've released these new tools and give developers a chance to use them to improve their gadgets.<br /><br />In the meantime, there are still plenty of things that can be done to fight gadget latency — be sure to check out our latency tips on <a href="http://code.google.com/speed/articles/optimizing-opensocial-gadgets.html">Google Code</a>, and our <a href="http://wiki.opensocial.org/index.php?title=OpenSocial_Latency_Combat_Field_Manual">Latency Combat Field Manual</a>!<br /><br /><span class="byline-author">Posted by Tyler Odean, Product Manager, iGoogle Team</span>Unknownnoreply@blogger.comtag:blogger.com,1999:blog-2373604388319154209.post-37703991238106746782009-09-14T12:08:00.000-07:002020-06-15T20:56:42.327-07:00The more things change, the more they stay the sameThe <a href="http://code.google.com/apis/gadgets/docs/legacy/dev_guide.html">legacy</a> gadgets API has had a storied life, as both the first version of the gadgets API that drove iGoogle, and the direct predecessor of the current <a href="http://code.google.com/apis/gadgets/docs/dev_guide.html">gadgets.*</a> API. As with many APIs there comes a time when we must say goodbye to the past, and embrace the present. The gadgets.* API has gained wide acceptance, both on Google and non-Google gadget containers, and is the standard API for gadget development. And so, as of today, the legacy gadgets API is officially deprecated.<br /><br />I'll give you all a moment to wipe away the tears of sadness (or joy as the case may be). Now, here are the details:<ul><li>The legacy API is officially deprecated as of today, September 14th.</li><li>For three months, the legacy API will continue in its current state.</li><li>On or around December 14th, any new gadget submissions to the iGoogle directory must be using the gadgets.*, in order to be accepted, but existing gadgets may continue to use the legacy API.</li><li>On the same date, the remaining inlined gadgets will be disabled.</li><li>Finally, one year after deprecation, September 14th, 2010, gadgets using the legacy API will cease to function on iGoogle, and the majority of other Google-owned gadget containers (such as orkut, Gmail, and Calendar).</li><li>Reminders will be posted when these important dates approach.</li></ul>We're also working on some tools to aid you in the transition: a gadget migration tool that will parse your existing gadget and convert legacy calls to gadgets.*, and a migration guide for developers who wish to migrate their gadgets by hand. Watch for announcements on these tools in the next few weeks.<br /><br />For most gadgets, the changes should be simple to implement. For each _IG_* method, there is usually a direct equivalent gadgets.* method. For instance, _IG_AdjustIFrameHeight maps directly to gadgets.window.adjustHeight, and performing a find and replace is sufficient. In a small subset of cases, multiple _IG_* methods map to a single gadgets.* method. For instance, _IG_FetchContent and _IG_FetchXmlContent both map to gadgets.io.makeRequest with different parameters. Developers should refer to the relevant section of the <a href="http://code.google.com/apis/gadgets/docs/dev_guide.html">developer's guide</a> to find gadgets.* equivalents.<br /><br />If you have any questions, as always, feel free to inquire in the <a href="http://groups.google.com/group/google-gadgets-api">iGoogle Developer Forum</a>.<br /><br /><span class="byline-author">Posted by Dan Holevoet, Developer Programs</span>Unknownnoreply@blogger.comtag:blogger.com,1999:blog-2373604388319154209.post-27472481547434187232009-08-31T13:27:00.000-07:002020-06-15T20:56:42.095-07:00Going faster than a roller coasterUsers love fast gadgets. Fast gadgets are more likely to remain installed, and will see higher usage. Fast gadgets may also <a href="http://code.google.com/events/io/sessions/DesigningOpenSocialAppsSpeedScale.html">cost less</a> to keep running.<br /><br />Slow gadgets make users unhappy, both with individual gadgets, and with iGoogle. Unfortunately, there hasn't been a way to tell a slow gadget from a fast one until it's been installed. To remedy this, starting in late September, the iGoogle directory will add a "slow" badge next to the entry of any gadget that's slow enough to cause speed-related user dissatisfaction.<br /><br />To help you get your gadgets in top-notch shape before the badges roll out, check out our new latency tips on <a href="http://code.google.com/speed/articles/optimizing-opensocial-gadgets.html">Google Code</a>.<br /><br /><span class="byline-author">Posted by Dan Holevoet, Developer Programs</span>Unknownnoreply@blogger.comtag:blogger.com,1999:blog-2373604388319154209.post-23430699031825216092009-08-12T12:56:00.000-07:002020-06-15T20:56:42.030-07:00iGoogle is a social beingIf you've been a devoted reader of this blog you're probably no stranger to the idea that "social is better" when it comes to the web. Activities such as reading the news, doing a crossword puzzle, sharing a todo list, or watching a video are all better when done with a friend. Coincidentally, these are all things that iGoogle users love to do, so bringing social to iGoogle is a logical next step.<br /><br />Developers have had a chance to sneak a peek at what iGoogle has been doing in the social space for many months, in the iGoogle developer sandbox. As of today, social gadgets taking advantage of the OpenSocial API will now work in both the US and Australia, with other countries soon to follow. That's tens of millions of iGoogle users with access to social gadgets, if you're keeping count.<br /><br />Of course, iGoogle is a little bit different than most of the sites which support OpenSocial, so here's a quick rundown of the differences:<ol><li>An iGoogle page is personal, and not shared with other users. In OpenSocial terms, this means that <span style="font-family:monospace;">VIEWER</span> and <span style="font-family:monospace;">OWNER</span> are always the same person.</li><li>Friendship between two users may be non-mutual. This allows developers to use a "following" model in their applications. For cases where it's important to verify mutual friendship (sharing private data, for instance), developers can use the <span style="font-family:monospace;">isFriendsWith</span> filter when requesting the user's mutual friends.</li><li>iGoogle has users without canvas view, with canvas view but without social, and with social, all at the same time. And, some users sign in to use iGoogle while others remain signed out. Developers should make sure their gadgets work gracefully across feature sets so that users always have the optimal experience. This <a href="http://igoogledeveloper.blogspot.com/2009/08/every-happy-gadget-is-same-every.html">blog post</a> provides more details and an example gadget for checking different cases.</li><li>iGoogle supports organic growth of applications with two mechanisms.<ul><li>Application sharing (via <span style="font-family:monospace;">requestShareApp</span>), allows developers to reach a wider audience by encouraging users to engage their friends inside of a given application. By default, requestShareApp will list all of the user's Friends and users can auto invite new friends by email. iGoogle will email recipients without iGoogle accounts, or present a notification within the UI to existing iGoogle users to add the gadget and become friends.</li><li>Updates (via <span style="font-family:monospace;">requestCreateActivity</span>), allow developers to call out specific user actions, to share them with a wider audience. There is a current limit of 3 updates per user, per app, per day, which may be increased in the future.</li></ol></li></ul>To see some great examples of new (or upgraded) gadgets using social features, check out <a href="http://www.google.com/igsocial">this page</a>. Then, when you're ready, take a look at the <a href="http://code.google.com/apis/igoogle/docs/gs.html">getting started guide</a> for details on writing your own social gadgets for iGoogle. As always, if you have questions, please visit us in the <a href="http://groups.google.com/group/google-gadgets-api">iGoogle Developer Forum</a>.<br /><br /><span class="byline-author">Posted by Dan Holevoet, Developer Programs</span>Unknownnoreply@blogger.comtag:blogger.com,1999:blog-2373604388319154209.post-84371955097028647272009-08-05T14:13:00.000-07:002020-06-15T20:56:42.884-07:00Every happy gadget is the same, every unhappy gadget is unhappy in its own wayNot so long ago we wrote about the need to keep your social gadgets <a href="http://igoogledeveloper.blogspot.com/2009/05/importance-of-being-unsociable.html">robust to adversity</a>. We received a lot of questions about how to detect when social conditions have broken down, and what to tell users when they have. So here's a quick cheatsheet for how to determine what might be interfering with the normal operation of your gadget, and what to do about each of them.<ol><li><b>The user is in a domain without canvas view.</b><br />
All gadgets that take advantage of canvas view should also be prepared to support those domains for which canvas view is not available. To confirm that a canvas view is available, you can insert a <span style="font-family:monospace;">Content</span> section without a view specified, as outlined in this <a href="http://igoogledeveloper.blogspot.com/2008/06/supporting-views-while-keeping.html">blog post</a>. If your gadget does not support a home view only environment, we suggest telling the user "This gadget requires a feature that is not available in your locale at this time. Please check back at a later date." For more on views, check out the <a href="http://code.google.com/apis/igoogle/docs/igoogledevguide.html#views">iGoogle Developer Guide</a>.</li>
<li><b>The user is in a domain where OpenSocial is not available.</b><br />
If a user is in a domain where canvas view is available a good next step is to test whether that domain has access to OpenSocial functionality. A gadget can determine if the user is on an OpenSocial supported domain or not by calling <span style="font-family:monospace;">gadgets.util.hasFeature('opensocial-0.8')</span>, which will return true if the domain supports OpenSocial. If your gadget requires OpenSocial to operate correctly, we recommend you tell the user "This gadget requires a feature that is not available in your locale at this time. Please check back at a later date."</li>
<li><b>The user is not signed in.</b><br />
Remember that a significant portion of iGoogle's users are not signed in and won't have any available social information to draw from. A gadget can determine if the user has signed in or not by making a request for the owner or viewer and checking the ID of the user. A logged out user is considered anonymous, and will have a viewer ID of -1. If your gadget requires access to OpenSocial information in order to operate we suggest you give users the message "This gadget cannot access the information it needs so that you can share or collaborate with friends. Please sign in to enable access." In many cases, of course, gadgets can still function even without social features. In that case - we suggest the message "This gadget lets you share and collaborate with friends on iGoogle. Sign in to use these features."</li>
<li><b>The user has not enabled the gadget's social access.</b><br />
After installing a gadget a user will be prompted to enable that gadget to access their friend list and activity stream. If the gadget makes an OpenSocial request for information that the user has not enabled access to, it will fail with error code 403 (FORBIDDEN). If your gadget needs access to one or both of these datasets, we recommend the message "This gadget cannot access the information it needs so that you can share or collaborate with friends. Please adjust the gadget's settings to enable access." Similarly if your gadget can still function without access to these social features we recommend the message "This gadget lets you share and collaborate with friends on iGoogle. Please adjust the gadgets settings to use these features." Remember that <i>all users will see your gadget displayed without social access at least once</i>, so make sure your gadget handles this case gracefully!</li>
<li><b>The user hasn't added any friends.</b><br />
Finally remember that most users will begin with no friends on their friends list. If your gadget needs friends in order operate normally, we recommend that you use tell your users "You can use this gadget to share and collaborate with friends on iGoogle. Share with friends." where you can link "share with friends" to the <span style="font-family:monospace;">requestShareApp</span> call, which allows users to simultaneously add friends and invite them to add your gadget.</li>
</ol>By keeping these cases in mind you should be able to help ensure your users get the most out of the social functionality of your gadget. To see an example of how to detect these and other conditions in a live gadget, check out the newly updated <a href="http://opensocial-resources.googlecode.com/svn/samples/igoogle/state_detector.xml">Testing iGoogle State gadget</a>.<br />
<br />
<span class="byline-author">Tyler Odean, Associate Product Manager, iGoogle Team</span>Unknownnoreply@blogger.com