Ten Things Yahoo! Is Already Doing with the YUI Library

July 18, 2006 at 2:02 pm by Eric Miraglia | In Development | 18 Comments

Since the YUI Library was released under an open-source BSD licence in February, we’ve gotten a lot of questions about YUI. One of the questions we’ve fielded more than any other, though, is also one of the best and most relevant: Who at Yahoo! is putting this stuff out into production? The answer is that almost everyone at Yahoo! is using YUI to some degree, including some of our most highly trafficked and high-profile sites. There are some notable exceptions — the Yahoo! Mail Beta and the new Yahoo! Photos, for example, are projects that started before YUI was available and work their DHTML magic using solutions crafted by their own engineering teams. But, increasingly, what we’re seeing is that most new projects at Yahoo! are relying on YUI to serve as a foundation.

Inspired by our own Dustin Diaz’s recent post (”15 Things You Can Do with Yahoo UI“) on the new frontend-developer journal Vitamin, we wanted to share with you ten things Yahoo! is already doing with YUI. This list isn’t exhaustive, nor does it suggest that these are the ten most important implementations; rather, these are ten that represent some of the breadth and depth with which YUI is being used within the Yahoo! family.

1. Front Page’s Personal Assistant

The new Yahoo! Front PageYahoo’s Front Page redesign, recently out of preview and available at http://www.yahoo.com, uses YUI extensively in its Personal Assistant module toward the top right corner of the page. Event Utility is used to listen for mouse events when interacting with the module; Connection Manager retrieves data on demand from the Personal Assistant’s six services; and the Animation Utility powers the smooth transitions as you move from module to module.

2. My Yahoo! Drag & Drop Portal

My Yahoo!

My Yahoo! was one of the first major consumer sites to embrace RSS and allow users to fully experience the "Come To Me" web — the web in which information you care about, whether from Yahoo! or from any site with an RSS feed, is aggregated and arranged to your liking. In January, arranging that information got a whole lot easier when My Yahoo!’s developers gave the site a major infusion of YUI — Event Utility, Connection Manager, Drag and Drop Utility, Animation Utility, and the Dom Collection. The result: A personalized portal in which you can drag your content modules around on the page to reorder them. Note the use of the Animation Utility to soften the transition when you drop a module in a new location.

3. AllTheWeb.com LiveSearch

No picture is provided for this example, because the only way to fully appreciate the responsiveness of this Search interface is to experience it yourself. AllTheWeb’s LiveSearch provides an alternative interface to the Yahoo! Search platform and drives intense XHR-mediated traffic via Connection Manager, exploring the deep integration of client- and server-side application logic. (Note: This implementation imposes some browser restrictions at present; these restrictions are not intrinsic to YUI Library code, which is designed to work in all A-Grade browsers.)

4. Yahoo! Tech — Animated Page-Width Resizing (and More)

The new Yahoo! TechYahoo! Tech is the first major Yahoo! product launched in the YUI era, and it takes full advantage of the library. One of the more unique uses of YUI on Tech is its implementation of a configurable content width control. This feature allows you to show and hide the secondary content column on the fly, and it employs the Animation Utility to gradualize the transition for good measure — an innovative approach to handling the variety of screen sizes and browser viewport sizes with which users view Tech’s content-rich pages.

5. Yahoo! Finance CSS Reset, Fonts, & Grids

Yahoo! Finance employs the YUI CSS platform.

Yahoo! Finance takes advantage of one of the newer components of the YUI Library, the CSS Reset, Fonts and Grids packages. Try visiting Finance and zooming your text size — notice that the page’s wireframe zooms right along with the text, keeping the integrity of the design intact at the larger size. This is just one benefit of these infrastructure CSS components that provide a stable, flexible, and future-friendly foundation for your web site.

6. Yahoo! Search Y!Q Drag and Drop Contextual Search Module

Y!Q Contextual SearchDrag and Drop implementations can be complicated, but some of the best implementations are quite simple. When you click on a Y!Q contextual search link on any site that implements it (like Yahoo! News, or even many non-Yahoo sites via the Y!Q API), a small window pops up with search results for the linked term. That window can be moved around using a simple implementation of the YUI Drag and Drop Utility, allowing you to position it on the page as desired, out of the way of anything it may be obscuring.

7. Yahoo! Sports Torino Olympics AutoComplete Content Navigator

AutoComplete powering site-wide search on the Yahoo! Winter Olympics site.Yahoo! Sports designers wanted to do something special for the 2006 Winter Olympics in Turin, something that would make it easier to navigate to check on the action for individual athletes, sports and countries. So they took the YUI AutoComplete Control and put it to work, developing a slick navigator that augments directory-style navigation with something much faster and more powerful. Typing a few characters in the search box and arrowing to your selection allows you to get to your destination in world-record time.

8. Yahoo! News Animated SuperTicker

Yahoo! News employs the YUI Animation Utility to promote top stories and features in its SuperTicker.

Yahoo! News takes the ticker idea to a new plateau with its smooth-scrolling SuperTicker. This module, which promotes major features toward the top of the main News page, overloads a <div> horizontally and uses the YUI Animation Utility’s Scroll subclass to slide the content back and forth — automatically via a timer or as a navigation control when the user clicks on the arrows at the module’s lower corners.

9. Yahoo! Health Refresh Content Scroller

Yahoo! Health implements the YUI Slider Control to create a customized scrollbar.

Yahoo! Health has its own take on the horizontally-scrolling ticker, employing YUI components including the Slider Control and the Animation Utility to provide a Health Expert Advice module loaded with content in a compact space. Note the highly customized implementation of the Slider Control along the bottom of the module.

10. Yahoo! Groups Advanced Message Search

The YUI Calendar Control makes date-selection a snap. The Yahoo! Groups implementation of this is a nice one. Go to the Advanced Search page in the Messages section of one of your groups, and use the select menu for Dates to search for messages between two dates. The standard interaction model presents itself — three select menus for each date (month, day, and year), requiring six mouse clicks (or three long click-and-holds) to choose each date. But a single click on the calendar icon next to the select menus summons up the Calendar Control, and another click selects your date, giving you the same result with one-third as many clicks. Sometimes it’s the little things that matter most.

Yahoo! Groups uses the YUI Calendar Control to reduce the mousing load on date selection by as much as 66%.

What Are You Doing with YUI?

These are just ten examples of how Yahoo! is deploying the YUI Library today. These projects, and the dozens of others we’re tracking, leverage the a la carte nature of YUI, a characteristic that is allowing properties to enrich their interfaces gradually and incrementally. There are exciting things afoot in frontend engineering at Yahoo! beyond just YUI — see Yahoo! Finance’s new Flash-based charting for one example — but YUI is playing an important role in the evolution of theYahoo! product family.

Now it’s your turn: What are you doing with the YUI Library? If you’re using YUI in your own work, we’d love to hear from you and to make your project available to the larger YUI community on the YDN-JavaScript Yahoo! Group. Please share the url and a project description in the YUI application gallery and/or in the comments below.

Share and extend: Bookmark with Yahoo! My Web | Bookmark with del.icio.us | digg it! | reddit!

YUI Library Release 0.11: A Host of Enhancements and a New Logger Control

July 10, 2006 at 2:01 pm by Eric Miraglia | In Development | 24 Comments

In the two months since our last release, the YUI Team has been hard at work improving the library, optimizing code, and working with our colleagues at Yahoo! as they’ve launched numerous products using YUI as a foundation. The new Yahoo! Front Page beta is just one example where YUI is helping Yahoo!’s frontend engineering community to bring its most interesting visions to fruition.

In addition to one brand-new component — the Logger Control — this release brings substantive ehancements throughout the library, including:

  • Color animation: The Animation Utility sports a new ColorAnim subclass that makes the animation of color properties (like color, background-color, and border-color) a snap.
  • Drag & Drop performance: The Drag & Drop Utility has been one the YUI Library’s most popular components since its release. Version 0.11 brings an improvement in the way Drag & Drop positions dragged items during a drag interaction — resulting in significant performance gains, particularly in Firefox.
  • Managing inheritance: We’ve provided new documentation for the Yahoo Global Object, including its new YAHOO.extend method. YAHOO.extend supports prototype, constructor, and superclass assignments for new subclasses, making it easier than ever to manage inheritance in object-oriented JavaScript applications.
  • File upload: The YUI Connection Manager now supports file upload in addition to XMLHttpRequest-based asynchronous transactions. Connection Manager will create an iframe for you on the fly, use that iframe to post your uploaded file(s) to the server, and then return to you the HTML body of the server’s response — all within the familiar syntax of the component’s connection and response objects.
  • Minor changes and enhancements throughout: From "popping" a branch in the TreeView Control (and reinserting it elsewhere in the Tree) to implementing AutoComplete with an always-visible suggestion container, a host of minor changes can be found throughout the library for 0.11. Check out the README file found in each component’s build directory for detailed information about enhancements and bug fixes to the components you are implementing.
  • New Cheat Sheets: Cheat Sheets for the YUI Utilities have been updated for 0.11 and new Sheets have been added for three of the Controls (Logger, Slider, and TreeView).

One of the most gratifying aspects of this release from our perspective is the growing influence of the vibrant YUI Library community on the YDN-JavaScript Yahoo! Group. Peter Michaux, for example, pushed us to add YAHOO.extend to help manage inheritance and to look at new ways to optimize drag-and-drop performance. Hundreds of other members, in ways large and small, have helped us to see places where YUI could be more complete and more useful. Many thanks to all who are contributing there.

The YUI Library’s Logger Control

The YUI Logger Component is a new entry in the library for today's 0.11 release.The biggest change you’ll see in YUI Library 0.11 is the advent of the YUI Logger Control, a flexible and integrated logging package in the spirit of earlier tools like Five Volt Logic’s estimable fvlogger. The Logger Control gives you useful insights into the operation of other YUI components, each of which now ships with a -debug version. Logger debuts with the following core features:

  1. Powerful, compact UI: The default user interface, which is optional and highly configurable, supports live filtering of log messages by category or source and allows you to pause and resume logging on the fly. If Drag & Drop is available on the page, the UI can be repositioned; it can always be collapsed and expanded. Script hooks allow you to show and hide the Logger Control console dynamically.
  2. Integration with the YUI Library components: The YUI Library components now ship with -debug versions that output logger messages at interesting moments. Take a look at how the Logger Console helps to illuminate the inner workings of the TreeView Control in this example.
  3. Simple integration with your own projects: Taking advantage of the Logger Control in your own projects is as simple as adding logging statements at interesting moments in your scripts’ execution: e.g., YAHOO.log("Initializing menu: Variable sName = " + sName);. The global YAHOO.log method can be safely used throughout your scripts, even when the Logger Control is removed from the page.
  4. Integration with other consoles: We’re huge fans of Joe Hewitt’s excellent FireBug extension for Firefox, and we’re pleased to report that the YUI Logger Control arrives with built-in FireBug integration. Moreover, Safari users who have the debug menu enabled will also find Logger messages in the Safari JavaScript Console. Either of these consoles can be used instead of or in addition to the default Logger UI. Check out Firebug and Safari integration in this Logger example; note that external console logging, which (like most debugging instruments) can degrade performance noticably, can be disabled in your Logger configuration.

We look forward to hearing your thoughts and learning from your experiences as you implement the new Logger Control, whether to enhance your toolkit while working with YUI components or in development of your own application code.

What’s Next?

Even as we send YUI Library 0.11 out the door we’re thinking about and planning for the next release. As we’ve said on YDN-JavaScript, we’re working on a Tab Control and a Button Control for 0.12 and beyond. And we see many further opportunities to enhance YUI as a platform for building robust, rich applications in the web browser. If you haven’t already, please join the YUI community on YDN-JavaScript and share your thoughts about the 0.11 release, the Logger Control, and where you’d like to see the YUI Library go from here.

Share and extend: Bookmark with Yahoo! My Web | Bookmark with del.icio.us | digg it! | reddit!

Hosted by Yahoo!

Copyright © 2007 Yahoo! Inc. All rights reserved. Privacy Policy - Terms of Service

Powered by WordPress on Yahoo! Web Hosting.