• Home
  • Quick Start
    • Configurator
    • Download YUI 3
  • Documentation
    • User Guides
    • Examples
    • Tutorials
    • API Docs
  • Community
    • Gallery
    • Blog
    • Forums
    • YUI Theater
    • Calendar
  • Contribute
    • YUI on GitHub »
    • File a Ticket
    • View Tickets
    • Dashboard
  • Other Projects
    • YUI 2
    • YUI Compressor
    • YUI Doc »
    • YUI Builder
    • YUI PHP Loader
    • YUI Test
    • YUI Website

Blog: Archive for October, 2009

« Older Entries

YUI Theater — Luke Smith: “Events Evolved”

Luke Smith at YUICONF 2009 held at the Yahoo! HQ in Sunnyvale; October 28, 2009.

We wrapped up YUICONF 2009 last night, and I wanted to share with you the first video coming out of the sessions. This is from YUI engineer Luke Smith‘s (@ls_n‘s) presentation yesterday, “Events Evolved,” in which he dives deeply into the YUI 3 Event system (created by Adam Moore, one of YUI’s architects). YUI 3′s Event module is one of the strengths of the library, and Luke’s talk is the best job we’ve done so far of talking about its best qualities. This is must-see-tv for YUIers.

More video from YUICONF will be on YUI Theater in the coming weeks; I hope you enjoy this first installment.

If the video embed below doesn’t show up correctly in your RSS reader of choice, be sure to click through to watch the high-resolution version of the video on YUI Theater; the downloadable version is much smaller, optimized as it is for iPods, iPhones, and other handheld devices.

src="http://d.yimg.com/m/up/ypp/default/player.swf" type="application/x-shockwave-flash"
flashvars="vid=16363219&autoPlay=0">

  • Download video (m4v)
  • Download slides
  • A high-resolution, transcripted version of this talk is available on the YUI Theater site

Other Recent YUI Theater Videos:

  • Brad Neuberg: Introduction to HTML5
  • Andreas Bovens and David Storey: 10 Essential Things You Should Know about Supporting Opera
  • Nicholas C. Zakas: Scalable JavaScript Application Architecture
  • Tom Preston-Werner, Chris Wanstrath and Scott Chacon: Git, GitHub and Social Coding

Subscribing to YUI Theater:

  • YUI Theater RSS feed
  • YUI Theater on iTunes
By Eric MiragliaOctober 30th, 2009

Pictures from YUICONF 2009

Here are some pictures coming in on Flickr from YUICONF2009 on a day that concluded with the father of JavaScript, Brendan Eich, talking about the future of the language:

This was a day that started with a kickoff from YUI project founder Thomas Sha and ended with Brendan Eich. In between were technical explorations by Matt Sweeney, YUI architect, as well as YUI Engineers Luke Smith, Satyen Desai, and Todd Kloots. Other Yahoo’s (Jonathan LeBlanc, Reid Burke) gave excellent talks, as did Matt Snider of Mint.com. And, with Brendan’s keynote coming at the end of the day, perhaps YUIer Isaac Schlueter (@izs) summed it up best this way:

By Eric MiragliaOctober 28th, 2009

YUI 2.8.0 Preview for YAP Developers

Thanks to the hard work of YUI engineer Lucas Smith, YAP engineer Felix Lee, YDN’s Jonathan LeBlanc and many others, YUI 2.8.0 is now available on the Yahoo! Application Platform (YAP) as a developer preview. YAP is the platform on which you can write applications that run on the Yahoo! homepage, My Yahoo!, and other sites throughout the Yahoo! ecosystem.

YAP’s security layer is built using Google Caja, an object-capability system for JavaScript. The team at Google has been hard at work bringing Caja to the point where it can support full-featured libraries like YUI that heavily exercise both JavaScript and the DOM, and we’ve worked closely with Mark Miller, Mike Samuel and the Caja team to improve support for YUI 2. Enough of the API is working today for the YAP team to release it to developers — and, while more work remains to be done, the subset you can use now should be a nice help in building out interactive apps in YAP.

Jonathan has two great resources for you if you want to explore YUI usage in YAP:

  • YUI on YAP documentation
  • YUI on YAP developer forum

Jonathan has also posted about this release over on the Yahoo! Developer Network Blog.

Reid Burke from the YAP team will be giving a tech talk on using YUI in YAP today at YUICONF 2009; if you’re at the conference, be sure to catch Reid’s session. If not, keep an eye out here for that talk when it appears on YUI Theater.

By Eric MiragliaOctober 28th, 2009

Results of the Accordion Pattern survey

accordion-yahoo-sportsA few months back we shared our current thinking on the “accordion” navigation component, and asked the community of web developers and designers who read this blog to take a survey to help us determine defaults, current practices, and other guidelines to incorporate into an Accordion pattern and provide input into an Accordion YUI component.

I’ve had some time now to review and study the results and I wanted to share them with the community as we write up a “beta” version of the pattern and get ready to share it, so without further adieu, here are the results (note that this survey should not be considered strictly scientific).

Who Responded

Respondents identified themselves the following ways:
accordion-respondents

  • Designer 21.4%
  • Developer 32.1%
  • Hybrid (Both designer and developer) 42.3%
  • None of the Above 4.2%

Terminology Distinctions

Overwhelming majorities across all respondents agreed that

  • Accordion and Accordion Menu mean the same thing (73%)
  • Accordions and Tree Controls are two different things (89%)

Many commenters described the difference between accordions and trees along these lines: “Tree Control generally implies a depth of hierarchy that is not generally present with an accordion.”

A smaller majority said that Accordion and Collapsible Panels refer to the same thing (60%).

These majorities were consistent across roles.

Presentation of Accordions

A solid majority (68%), said that accordions can be laid out horizontally as well as vertically (and in fact the pattern is well attested on the web). People suggested that the labels on a horizontal accordion should be written vertically and/or rotated.

An even larger majority (72%) said that accordions can have only two levels (this aligns with the distinction between accordions and trees):

accordion-2-levels

A slight majority (53%) said that accordions may be nested within other accordions. The written comments suggested that the wording of the question led some to answer that it’s certainly possible but not necessarily desirable, making suggestions such as, “If you adequately gutter them, this would be possible, but generally a terrible idea – kind of like using too many tabs and having them wrap into multiple rows.”

accordion-nested

This was one of the questions where self-described designers and developers took opposing sides. 57% of Developers and Hybrids agreed that accordions may be nested, whereas 64% of Designers said they may not be. (None of the Aboves split 50/50!)

If I had to guess, I’d say that developers (and hybrids), more intimately connected with the how than the why may have been expressing more of a “you could do it…” perspective, whereas designers may have been expressing more of a “…but you shouldn’t” point of view.

How Accordions Should Behave

A small majority (54%) believes that accordions should allow for more than one panel to be open at a time. Both behaviors can be found online, so our impression is that this behavior may depend more on the constraints of the design space and the purpose of the accordion than on a blanket rule one way or the other.

This question also split along identity lines, but in an ambiguous way. Hybrids preferred the one panel-at-a-time rule by a tiny majority, while Designers and Developers and None of the Aboves agreed that multiple panels are okay by slightly larger majorities.

accordion-multi-open

A much larger majority (73%) believes that an accordion can have a completely closed state (that is, that it’s not necessary that there always be one panel open). The only outlier is that the None of the Aboves broke 60% for the position that there must always be one panel open.

accordion-panels-closed

Several commenters suggested that it is a good practice to have one panel open by default, and for that panel to be either the first one, the one most recently used.

Another large majority (76%) believes an accordion’s overall size can change as needed, rather than being constrained to a consistent size. (Of course, there are contexts, such as the screen of a mobile device, in which it may be a valid choice or even a design constraint that an accordion maintain a consistent size.)

A very slight majority (51%) suggested that accordions should open on click (as opposed to on hover) and a nearly as large minority (45%) said that it depends. Interestingly, fewer than 4% were willing to state the accordions should open on hover as a rule.

accordion-onclick

Written comments on this question offered plenty of good food for thought, such as:

Opening a panel should require explicit action. If an accordion has multiple panels, opening on hover could be a jarring experience. Rather, use a tooltip to convey summary details of what is in the panel, and have the user explicitly “click” to open that panel.

Depends on the configuration of each accordion.

I put these examples together [multiple, rollover], so the developer can actually use the “best fit” for each use case.

Also, there should be the option to use rollover with different rules: (one most be open) or (elements should be opened on mouseover only).

For advanced usages, an accordion should open on hover during drag and drop operations. In any other circumstance, you can’t trust that the hover is intentional.

Accessibility

Finally, we asked an open-ended question fishing for any known accessibility issues with accordions and got a lot of great answers. (For our example issue, most people agreed that making the entire label clickable and not just a small icon is important.)

Here is a sampling of other insight about accessibility with accordions:

I think it’s safe to assume that an Accordion interaction is an advanced interaction. Lots of accessibility problems can arise.

  1. Content is hidden behind panels so people may not find it.
  2. Depending on the size of the clickable area or the trigger to open/close the panels there could be issues with the manual dexterity needed.

Accordions should open all panels if javascript is unavailable (though that may produce a “flicker” for those with javascript).

It depends on whether content in the hidden panels is present in the DOM or is retrieved upon opening the panel. If it is being retrieved, focus needs to be placed on the newly opened panel.

Well, I really believe the title should be clickable, specially if the content of the element will be loaded using AJAX (just like a tabview approach), but the reality is that sometimes the developer (should have)/(want) the control to customize that behavior. Here is the list of examples that I created for an accordion widget implementation based on YUI 2.x, it’s probably one of the most used components from the bubbling YUI extension.

We’ve had a case where the ‘label’ of the accordion was a link to a full blog post, and so could not be accordion-clickable. In that case, we wrote an icon into the source with js to do the job. Provided the icon is sufficiently large and/or comes with an accesskey, I don’t see a major difficulty…

Accordion controls server the purpose of fitting lots of content into less space. Since this is a visual concern, it would be fine for a screen reader to simply read all of the content and ignore the fact that it is displayed as an accordion visually. It is sufficient for an icon to be clickable to expand a panel. There could be a configuration option to allow the entire label to expand a panel, or it can be left up to the implementing developer to attach a listener to the label that calls a public “open” or “expand” function to add that functionality.

Just think of an accordion as a tabbed view. The entire panel label area should be clickable, but if it contains other controls (e.g. a “dismiss” or “close” button) I suggest only the label (text) be clickable, or at least the clikable area only expand up to the interactive controls (i.e. for a caption containing a button, the area above, below and “after” the button should be clickable).

Releasing the Draft Pattern

One commenter questioned the artificial constraints of the survey (a fair cop, if you ask me):

I didn’t like this survey. The questions were not flexible enough. As a designer/developer, I believe all interface elements need to be tailored to particular site or web application. Asking black and white questions does not leave room for the obvious differences between projects. Some projects need a hard and fast rule, while the same rule might be totally inappropriate for another application. For the most part, I could of answered every question with a “it depends” result.

Rest assured that the pattern will only gently recommend and the YUI code will be flexible and powerful. The survey wasn’t designed to limit people’s choices but rather to gather opinions and preferences, so even feedback about not having hard-and-fast rules is useful.

We’ve published a beta version of the Accordion pattern in the Yahoo! Design Pattern Library. If you’d like to give further feedback on the pattern, in a free-form manner, please drop by or visit the related forum discussion.

By Christian CrumlishOctober 26th, 2009

In the Wild for October 22, 2009

With YUI 2.8.0, YUI 3.0.0, and PHP Loader 1.0.0 beta 1 out the door, the team here is focused on our final big objective for the year: YUICONF2009. Brendan Eich and Douglas Crockford will be keynoting next week at our first public, YUI-focused conference. In addition to the YUI engineers presenting sessions, we’re looking forward to hearing from community members like Matt Snider and Eric Ferraiuolo. While the conference is sold out, YUI Theater will be there capturing as much as it can — so stay tuned here for video coverage as it becomes available.

Here are a few of the other YUI-related news items we’ve tracked in the past few weeks. If you have an item we missed, or something you’d like to see covered in the next update, please leave a note in the comments; for all the latest YUI news as it happens, follow yuilibrary on Twitter.

  • YUI2GO — IPhone/Android App for YUI API Docs: YUI contributor and fellow Yahoo! Chad Auld has been working on side project with his partner at Brilaps, Ozgur Cem Sen.  Called YUI2GO, this app uses Titanium to put a handheld-friendly UI on top of the YUI API documentation for YUI 2 and YUI 3.  The application will cost you $0.99 in the iTunes App Store or the Android Marketplace.
  • YUI Carousel, Split Buttons and More on Rivendell Bicycle Works’ Site: What could be better than a custom bike-works website making use of YUI?  Rivendell is a manufacturer of beautiful, old-school lugged steel bike frames, and their site is replete with old-school charm.  You’ll find buttons, menus, carousels and more from YUI throughout the site — as well as some seriously attractive bikes.  One Bombadil for me, please. (Original source.)
  • Matt Snider’s AjaxObject Part II (built with YUI Connection Manager): YUI contributor and Mint.com engineer Matt Snider continues his work building an XHR layer on top of YUI 2′s Connection Manager.
  • Ajaxian Comparo: YUI Compressor and MS Ajax Minifier: Ajaxian has posted an interesting deep dive into the differences between YUI Compressor and the new Microsoft Ajax Minifier. 
  • YUI on Egoagosys (screenast in Italian): This looks to be a lovely implementation of YUI DataTable, Buttons, Menus and much more, all narrated in Italian for your viewing pleasure.
    (Original source.)
  • Yahoo!’s Ian Pouncey on Accessible Tabs with YUI3: Yahoo! home page engineer Ian Pouncey has a post up on the Yahoo! Developer Network blog about the work the home page and YUI teams did to bake in accessibility with YUI 3.
  • Jeffrey Cobb, “Simple YUI Login Using Ajax, Cookies and Server Side Auth”: Jeffrey Cobb is back on yuicoder.com with a new code sample.  This one generates a simple login screen using YUI Container, Animation, Cookie, and Button.  Check out the JS and Perl code snippets on Jeffrey’s post.
  • Simple YUI 2-based Table Striper: User falcor on the YUI Forums posted his simple table striper.  Writes falcor: “Just name make your table id #products and you’re good to go. The CSS rules are in the <style> tag in the header, and the actual .js script code is at the bottom before the </body> tag.” (Original source.)
  • YUI Compressor/IntelliJ IDEA Integration by Evgenios Skitsanos: Evgenios Skitsanos writes that he’s liked IDEA for awhile, and that he feels its virtues as a JavaScript editor are underappreciated.  Helping to remedy that, he’s documented how to build in YUI Compressor support.  “Today’s issue on the table is how to stick YUI Compressor into IDE and compress my JavaScript files with one click. Whole thing takes 5 mins actually; let me show you few steps to get it done.”  Check out his blog for all the details. (Original source.)
  • YUI 2-based “imSliderMenu” Widget from Grasshopperpebbles.com: Grasshopperpebbles.com has posted a tutorial and demo of its new “imSliderMenu” widget, a simple component which uses animation to show and hide panels on demand.
By Eric MiragliaOctober 22nd, 2009

Graded Browser Support Update: Q4 2009

This post announces an update to Graded Browser Support. The GBS page on the YUI site always has the most current GBS table. This post includes:

  • a list of changes;
  • an updated chart of browsers that receive A-grade support;
  • our GBS forecast, indicating the changes we expect to make in Q1 2010;
  • and a discussion section that lays out some of the strategy behind the current GBS update.

GBS Changes for Q4 2009

With this update, Mac OS 10.4 Tiger drops from the A-Grade testing matrix (replaced with Mac OS 10.6 Snow Leopard) and the testing surface is reduced to 12 browsers on 4 OS platforms (down from 14 browsers on 4 platforms). Specific changes include:

  • Initiated A-Grade support for Firefox 3.5.† on Mac OS 10.6.†
  • Initiated A-Grade support for Opera 10.0.† on Windows XP
  • Discontinued A-Grade support for Firefox 3.0.† on Mac OS 10.5.†
  • Discontinued A-Grade support for Firefox 3.5.† on Mac OS 10.5.†
  • Discontinued A-Grade support for Safari 3.2.† on Mac OS 10.4.†
  • Discontinued A-Grade support for Opera 9.6.† on Windows XP
Win XP Win Vista Mac 10.5.† Mac 10.6.†
Firefox 3.0.† A-grade
Firefox 3.5.† A-grade A-grade A-grade
Opera 10.0.† A-grade
IE 8.0 A-grade A-grade
IE 7.0 A-grade A-grade
IE 6.0 A-grade
Safari 4.0.† A-grade A-grade

Notes:

  • The dagger symbol (as in “Firefox 3.5.†”) indicates that the most-current non-beta version at that branch level receives support.
  • Code that may be used on pages with unknown doctypes should be tested in IE7 quirks mode.
  • Code that may appear in IE8′s “compatibility mode,” which emulates but is not identical to IE7, should be tested explicitly in compatibility mode.

GBS Forecast

We expect to make the following changes in the Q1 2010 GBS update:

  • Discontinue A-grade for Opera across all OSs (if current data trends continue); the latest version of Opera (currently 10.0.†) will be considered an X-grade browser as of Q1.
  • Initiate A-Grade support for the latest version of Google Chrome on Windows XP (if current data trends continue).
  • Initiate A-Grade support for IE8 on Windows 7.

Discussion

This update pares the testing surface to 12 browser/platform combinations (down from a high of 15). The most significant aspect of this update is our guidance for Q1 in which we forecast Chrome beginning to receive A-Grade support and Opera 10 moving to the X-Grade. Here are notes from the GBS committee with respect to that guidance:

  1. Chrome: The rate of growth in Chrome’s global usage has been dramatic. By some measures, including ours, it is now double that of the A-Grade Opera browser (source: StatCounter). Chrome on Windows is built around a solid WebKit core, supportive of web standards (including forward-looking HTML5 standards), and extremely performant. With Google’s backing, the project is making rapid progress both on Windows and with the not-yet-released Mac OS X version. If this growth rate continues, we conclude that Chrome will require A-Grade attention as of Q1.
  2. Opera: Opera’s marketshare, which is small and shows signs of diminishing, makes a compelling case for moving this excellent browser from the A-Grade to the X-Grade in Q1. X-Grade is a category designed to encompass modern, capable browsers with small marketshare, and Opera is squarely in that category today. Opera’s marketshare in specific Eastern European and emerging markets might argue for some developers to retain this browser on their testing matrix beyond Q1. We encourage you to watch carefully the argument presented by Opera’s Andreas Bovens and David Storey recently with respect to the “marketshare myth” and reasons why Opera’s importance transcends the global marketshare metric (source: YUI Theater).

Graded Browser Support is a QA philosophy, not a report card on the quality of popular browsers. It’s designed to provide guidance for QA teams about how best to use their limited testing resources (and to frontend engineers about how to sanely cross-check work across a finite set of browsers). The goal is to be conservative and calculating: We want to test the smallest possible subset of browser/platform combinations, leveraging implicit coverage by testing the most commonly shared core browser engines.

Inevitably (and by design), this leaves a lot of browsers out of the matrix. And, unfortunately, the percentage of users still tied to IE6 requires us to include that browser (not because we like IE6, but because we like the many tens of millions of users who rely on it).

One of the most interesting aspects of the quarterly GBS update is hearing your advice (often different than our own), and we’d love to hear your take on these issues in the comments section.

The GBS Archive

  • GBS Update, 2009-07-02
  • GBS Update, 2009-01-28
  • GBS Update, 2008-07-03
  • GBS Update, 2008-02-19
By Eric MiragliaOctober 16th, 2009

Frontend Engineering Position on Platform Framework Team

If you’re a YUI user and interested in working on tools relied upon by properties like the Yahoo! home page and My Yahoo!, there’s a new position available that might be of interest. Our colleague Stephen Woods (@ysaw), who has helped to engineer a YUI 3-based module system for the new Yahoo! home page, is looking for someone to work with him on that project. From the job description:

Our team is building new frameworks, creating libraries and tools that will allow other developers and editors to build web sites quickly and efficiently. You will be working with product managers and developers to understand the requirements and needs. You will be creating specifications, designing, implementing tools and APIs. You will be using YUI libraries for creating the extensible UI. Minimum job qualifications:

  • JavaScript expert
  • Proficient in writing standards compliant HTML, CSS, Ajax, DOM
  • 3-4 years of cross browser application development experience
  • Experience with PHP
  • Well versed with XML
  • Experience using YUI
  • Self starter with the ability to work under pressure and handle multiple simultaneous tasks
  • Strong verbal and written communication skills

Head over to careers.yahoo.com to read more about the position and to apply. That site is also a good place to look for all YUI-related positions open at Yahoo! today.

By Eric MiragliaOctober 16th, 2009
« Older Entries

Pages

  • About
  • Contribute
  • YUI Jobs

Recent Posts

  • YUI Weekly for May 17th, 2013
  • Yahoo’s International Team Is Hiring!
  • YUICompressor 2.4.8 Released
  • YUI 3.10.1 Released to Fix SWF Vulnerability
  • YUI Weekly for May 10th, 2013

Archives

Categories

  • Accessibility (25)
  • CSS 101 (6)
  • Design (51)
  • Development (590)
  • Frontend Jobs at Yahoo (13)
  • Graded Browser Support (8)
  • In the Wild (63)
  • Miscellany (11)
  • Open Hours (44)
  • Performance (23)
  • Releases (26)
  • Target Environments (11)
  • Yeti (4)
  • YUI 3 Gallery (29)
  • YUI Events (45)
  • YUI Implementations (55)
  • YUI Theater (146)
  • YUI Weekly (37)

Meta

  • Log in
  • Entries RSS
  • Comments RSS
  • WordPress.org
© 2013 YUI Blog