Principles and Patterns for Designing Rich Internet Applications


Principles and Patterns for Designing Rich Internet Applications

 

Bill W. Scott, Y! Ajax Evangelist bscott@yahoo-inc.com Principles and Patterns for Designing Rich Internet Applications Designing for Ajax Designing for Ajax Background ? Games, research, science, military, biz ? Apps, frameworks, widget sets ? Developer, designer ? Object-oriented background ? Software architect, user experience manager ? Current: Yahoo! Ajax Evangelist ? http:/ /looksgoodworkswell.com 2 Designing for Ajax 3 Ajax @ Yahoo Designing for Ajax Yahoo! Pattern Library Release 4 http:/ /developer.yahoo.net/ypatterns/ Designing for Ajax yuiblog.com 5 http:/ /yuiblog.com Designing for Ajax Yahoo! Patterns Discussion Group 6 http:/ /groups.yahoo.com/group/ydn-patterns/ Designing for Ajax Initial Set of Yahoo! Patterns Released on 2/13 7 Breadcrumbs. Module Tabs. Navigation Tabs. Auto Complete. Pagination. Item Pagination. Search Pagination. Ratings and Reviews. Architecture of a Review. Rating an Object. Writing a Review. Drag and Drop. Drag and Drop Modules. Designing for Ajax Rich Design Patterns Drag and Drop. Drag and Drop Modules. In Page Editing. In Page Custom Editing. Direct State Editing. Grid Cell Editing. Inline Custom Editing. Inline Tag Editing. Popup Custom Editing. Slide-out Custom Editing. Inline Text Editing. Persistent Portals. Inline Reordering. Indication. Busy Indication. Cursor Busy. In Context Busy. In Context Progress. Inline Status. Character Counter. Auto Complete. Balloon Error Tip. Deferred Content Loading. Dynamic Goal. Narrowing Choices. Refining Search. Live Search. Dynamic Filter. Invitation. Cursor Invitation. Drop Invitation. Tool Tip Invitation. Hover Invitation. Detail Zoom. Opacity Focus. Configurable Module - Faceplate. Configurable Module - Flip It. Configurable Module - Inline Configure. Configurable Module - Slide Out Drawer. Slide Out. Flip. Opacity Fade. Endless Scrolling. Expandable Paging Boundary. Fresh Content. Hover Detail. In Place Drill Down. Inline Assistant. Inline Validation. Validate Then Suggest. On Demand Refresh. Periodic Refresh. Resizable Modules. Scrolling Modules. Auto Save. In Context Tools. Remembered Collection. Remembered Preferences. Auto Form Fill. Rating an Object. Transition. Brighten Transition. Cross Fade Transition. Dim Transition. Expand Transition. Fade In Transition. Fade Out Transition. Flip Transition. Move Transition. Self-Healing Transition. Collapse Transition. Slide Transition. Rich Internet Object. Available. Selected. Identifiable Object. 8 Designing for Ajax Yahoo! UI Library ? Normalization (Event Utility) ? Messaging (Connection Manager for AJAX) ? Direct Representation (Animation and Position) ? Direct Manipulation (Drag and Drop) ? Rich Interactive Widgets (Slider, TreeView, Calendar, AutoComplete 9 Designing for Ajax Designing for Ajax ? Richness What is richness? ? Ajax Patterns DNA of an Ajax Pattern ? Principles Principles for Ajax Design 10 Designing for Ajax 11 Richness Designing for Ajax Defining Richness: Web in 3D ? Interaction Dimension ? Data Dimension ? Presentation Dimension 12 Interaction Data Presentation event response Designing for Ajax Classic Web ? Interaction course-grained ? Data loaded with the page or obtained via refresh ? Presentation: page-based updates 13 Interaction Data Presentation page Data refresh boundary Designing for Ajax Server Http Request Http Response My Profile Name Gender Age Edit Joe Smith Male 27 My Profile Name Gender Age Photo Submit Classic Web Illustrated 14 Server Http Request Http Response Interaction Data Presentation event response browser Designing for Ajax Ajax = Just-in-Time. Immediacy. 15 Just-in-time data Just-in-time presentation Just-in-time logic Designing for Ajax Ajax Model - New & Improved! ? Now with Deeper Interaction! ? Now with Just-in-Time Data & Just-in-Time Logic! ? XMLHttpRequest (XHR) is the secret sauce! ? Now with Richer Interface! ? All dimensions are closer 16 Interaction Data Presentation Designing for Ajax My Profile Name Gender Age Joe Smith Male 27 Ajax Illustrated 17 XHR Object Server Save Tim Jones send() onreadystatechange Interaction Data Presentation event response browser Designing for Ajax AJAX vs Ajax ? AJAX = Asynchronous JavaScript and XML ? Strict definition is using XMLHttpRequest (XHR) to retrieve XML within a web page ? Ajax = The set of technologies that allow web applications to provide rich interaction, just-in-time information and dynamic interfaces without required page refresh ? The Secret Sauce ? Ajax = XHR + DHTML (HTML, CSS, JavaScript) + Rich design 18 XHR Designing for Ajax Other Remote Scripting Techniques ? Hidden IFrame ? <img> src ? <script> src hack ? CSS href hack ? JS to faceless Java applets ? JS to faceless Flash ? NO CONTENT Response ? Cookies 19 Designing for Ajax Ajax Patterns 20 Designing for Ajax Rich Design Patterns Drag and Drop. Drag and Drop Modules. In Page Editing. In Page Custom Editing. Direct State Editing. Grid Cell Editing. Inline Custom Editing. Inline Tag Editing. Popup Custom Editing. Slide-out Custom Editing. Inline Text Editing. Persistent Portals. Inline Reordering. Indication. Busy Indication. Cursor Busy. In Context Busy. In Context Progress. Inline Status. Character Counter. Auto Complete. Balloon Error Tip. Deferred Content Loading. Dynamic Goal. Narrowing Choices. Refining Search. Live Search. Dynamic Filter. Invitation. Cursor Invitation. Drop Invitation. Tool Tip Invitation. Hover Invitation. Detail Zoom. Opacity Focus. Configurable Module - Faceplate. Configurable Module - Flip It. Configurable Module - Inline Configure. Configurable Module - Slide Out Drawer. Slide Out. Flip. Opacity Fade. Endless Scrolling. Expandable Paging Boundary. Fresh Content. Hover Detail. In Place Drill Down. Inline Assistant. Inline Validation. Validate Then Suggest. On Demand Refresh. Periodic Refresh. Resizable Modules. Scrolling Modules. Auto Save. In Context Tools. Remembered Collection. Remembered Preferences. Auto Form Fill. Rating an Object. Transition. Brighten Transition. Cross Fade Transition. Dim Transition. Expand Transition. Fade In Transition. Fade Out Transition. Flip Transition. Move Transition. Self-Healing Transition. Collapse Transition. Slide Transition. Rich Internet Object. Available. Selected. Identifiable Object. 21 Designing for Ajax ? Make a request ? Return a response ? And do it asynchronously 22 But What Can XHR Do? XHR Object request response Designing for Ajax Anatomy of a Pattern ? Ajax design patterns contain three steps ? Trigger (event or timer) ? Operation (Ajax, remote scripting) ? Update (presentation) 23 Trigger Operation Update Designing for Ajax Trigger ? Every pattern starts with ? a user event ? a timer event 24 mouseout hover keypress keydown mousedown drop filter choices mouseup drag click mousedown select focus blur resize move timeout Trigger Designing for Ajax Operation ? Lookup I can get information when I need it ? Persist I can save in real-time ? Validate I can prevent errors early ? Invoke I can make things happen now ? Message I can communicate instantly 25 Ajax patterns open the door to immediacy Operation Designing for Ajax Operation. Lookup I can get information when I need it Auto Complete. Deferred Content Loading. Dynamic Goal. Narrowing Choices. Refining Search. Live Search. Dynamic Filter. Detail Zoom. Endless Scrolling. Expandable Paging Boundary. Fresh Content. Hover Detail. In Place Drill Down. On Demand Refresh. Periodic Refresh. Resizable Modules. Scrolling Modules. Auto Form Fill. 26 Trigger Lookup Operation Update Designing for Ajax Operation. Persist I can save in real-time Drag and Drop Modules. In Page Editing. In Page Custom Editing. Direct State Editing. Grid Cell Editing. Inline Custom Editing. Inline Tag Editing. Popup Custom Editing. Slide-out Custom Editing. Inline Text Editing. Inline Reordering. Auto Save. Remembered Collection. Remembered Preferences. Rating an Object. 27 Trigger Persist Update persist status optional Designing for Ajax Update ? Finally, patterns reflect a visual change 28 Indication. Busy Indication. Cursor Busy. In Context Busy. In Context Progress. Inline Status. Transition. Brighten Transition. Cross Fade Transition. Dim Transition. Expand Transition. Fade In Transition. Fade Out Transition. Flip Transition. Move Transition. Self- Healing Transition. Collapse Transition. Slide Transition. Rich Internet Object. Available. Selected. Identifiable Object. Slide-out. Popup Balloon. Update Designing for Ajax Trigger Pattern-O-Matic 29 Operation Update Design Pattern Complete = Lookup Drop Down Updates Keypress Onscroll Event Grid Cell Updates Auto Complete Hover Event Lightweight Popup Shows Detail Endless Scrolling Hover Detail Search Results Refined Select Filters Refining Search Content Module Updates Persist Update Trigger Persist Design Pattern UI Reflects OK Status Blur Inline Edit Drag & Drop Module UI Reflects OK Status Persistent Portals Operation Update Trigger Ajax Pattern + + Auto Complete. Deferred Content Loading. Dynamic Goal. Narrowing Choices. Refining Search. Live Search. Dynamic Filter. Detail Zoom. Endless Scrolling. Expandable Paging Boundary. Fresh Content. Hover Detail. In Place Drill Down. On Demand Refresh. Periodic Refresh. Resizable Modules. Scrolling Modules. Auto Form Fill. Drag and Drop Modules. In Page Editing. In Page Custom Editing. Direct State Editing. Grid Cell Editing. Inline Custom Editing. Inline Tag Editing. Popup Custom Editing. Slide-out Custom Editing. Inline Text Editing. Inline Reordering. Auto Save. Remembered Collection. Remembered Preferences. Rating an Object. Designing for Ajax Principles 30 Designing for Ajax Principles for Ajax Design 1. Keep it direct 2. Provide live feedback 3. Offer an invitation 4. Cross borders reluctantly 5. Leave a light footprint 6. Show transitions 7. Think in objects 31 Designing for Ajax Shift. Event granularity. 32 mouseout hover keypress keydown mousedown drop filter choices mouseup drag click select focus blur resize move timeout submit hyperlink Designing for Ajax Keep it Direct 33 1 Allow input wherever you output. -Alan Cooper ? Designing for Ajax Pattern. Drag & Drop 34 Keep it direct 1 Designing for Ajax Pattern. In Page Editing 35 Keep it direct 1 Designing for Ajax Pattern. In Page Editing 36 Keep it direct 1 Designing for Ajax Pattern. Resizable Content. 37 Keep it direct 1 Designing for Ajax The Patterns 38 Keep it direct 1 Drag and Drop. Drag and Drop Modules. In Page Editing. In Page Custom Editing. Direct State Editing. Grid Cell Editing. Inline Custom Editing. Inline Tag Editing. Popup Custom Editing. Slide-out Custom Editing. Inline Text Editing. Inline Reordering. Resizable Content. Designing for Ajax 39 Prefer interaction within the page What about discoverability? Keep it direct 1 Designing for Ajax 40 Prefer interaction within the page What about discoverability? Use direct editing on page content What about save/cancel? Avoid page jitter Reduce the feeling of modes Keep it direct 1 Designing for Ajax 41 Prefer interaction within the page What about discoverability? Use direct editing on page content What about save/cancel? Avoid page jitter Reduce the feeling of modes Provide in-context tools Only good for single operations Can actually slow you down Keep it direct 1 Designing for Ajax 42 Prefer interaction within the page What about discoverability? Use direct editing on page content What about save/cancel? Avoid page jitter Reduce the feeling of modes Provide in-context tools Only good for single operations Can actually slow you down Use drag and drop where appropriate Not for simply setting an attribute Good for layout changes or containment Needs transitions Keep it direct 1 Designing for Ajax Shift. Immediacy. 43 Interaction Data Presentation page Data refresh boundary Interaction Data Presentation Designing for Ajax 44 Provide live feedback 2 ?effective communication is a key factor in the success of your product. ? -Jesse James Garrett Designing for Ajax Pattern. Live Search, Live Suggest 45 Provide Live Feedback 2 Designing for Ajax Pattern. Auto Complete 46 Provide Live Feedback 2 Designing for Ajax Pattern. Refining Search 47 Provide Live Feedback 2 Designing for Ajax Pattern. Indication. Inline Busy 48 Provide Live Feedback 2 Designing for Ajax Pattern. Indication. Inline Status, Character Counter 49 Provide Live Feedback 2 Designing for Ajax Pattern. Deferred Content Load 50 Provide Live Feedback 2 Designing for Ajax Pattern. Live Preview, Periodic Refresh 51 Provide Live Feedback 2 Office 12 Live Preview Designing for Ajax Pattern. Live Preview 52 Provide Live Feedback 2 Designing for Ajax The Patterns 53 Indication. Busy Indication. Cursor Busy. In Context Busy. In Context Progress. Inline Status. Auto Complete. Balloon Error Tip. Deferred Content Loading. Dynamic Goal. Narrowing Choices. Refining Search. Live Search. Live Preview. Live Suggest. Character Counter. Provide Live Feedback 2 Designing for Ajax 54 Keep the goal in mind Design for immediacy Is it narrowing or is it distracting Use feedback to boost confidence Let the user iterate where possible Just-in-time data Just-in-time logic Provide Live Feedback 2 Designing for Ajax Keep the goal in mind Design for immediacy Keep the user engaged Time passes faster Look for engaging moments Is it narrowing or is it distracting Use feedback to boost confidence Let the user iterate where possible Provide Live Feedback 2 Designing for Ajax 56 Keep the goal in mind Design for immediacy Keep the user engaged Time passes faster Look for engaging moments Is it narrowing or is it distracting Use feedback to boost confidence Let the user iterate where possible Use live-previews Look before you leap Provide Live Feedback 2 Designing for Ajax 57 Keep the goal in mind Design for immediacy Keep the user engaged Time passes faster Look for engaging moments Keep feedback focused Keep it in context Updating too many areas at once will be confusing Show dynamically what is relevant Is it narrowing or is it distracting Use feedback to boost confidence Let the user iterate where possible Avoid creating feedback noise/jitter Use live-previews Look before you leap Provide Live Feedback 2 Designing for Ajax Shift. Deeper Interaction. 58 desktop hover blur focus clickkey shiftclick doubleclick drag dragdrop dragflipdrop shiftdoubleclick tripleclick shifttripleclick hover blur focus clickkey shiftclick doubleclick drag dragdrop dragflipdrop shiftdoubleclick tripleclick shifttripleclick web hover blur focus click keyshiftclick doubleclick dragdragdrop hover blur focus click keyshiftclick doubleclickdrag dragdrop Designing for Ajax Offer an invitation 59 3 Designing for Ajax Pattern. Invitation. Hover, Tooltip, Cursor Invitation. 60 Offer an Invitation 3 Designing for Ajax Pattern. Invitation. Hover Invitation 61 Offer an Invitation 3 Designing for Ajax Pattern. Invitation. Hover Invitation 62 Offer an Invitation 3 Designing for Ajax Pattern. Invitation. Cursor Invitation 63 Offer an Invitation 3 Designing for Ajax Pattern. Invitation. Drop Invitation 64 Offer an Invitation 3 Designing for Ajax The Patterns 65 Invitation. Cursor Invitation. Drop Invitation. Tool Tip Invitation. Hover Invitation. Offer an Invitation 3 Designing for Ajax 66 Make it engaging Use lightweight events as a welcome mat Rediscover the hover Offer an Invitation 3 Designing for Ajax 67 Make it engaging Use lightweight events as a welcome mat Keep actions out of it Don?t make the user afraid to explore Don?t proselytize Rediscover the hover Offer an Invitation 3 Designing for Ajax Make it engaging Use lightweight events as a welcome mat Keep actions out of it Don?t make the user afraid to explore Don?t proselytize Get the actors involved Hover Invitation Cursor Invitation Rediscover the hover Tooltip Invitation Offer an Invitation 3 Designing for Ajax 69 Make it engaging Use lightweight events as a welcome mat Keep actions out of it Don?t make the user afraid to explore Don?t proselytize Get the actors involved Hover Invitation Cursor Invitation Use invitations to aid discoverability Two challenges: idiom & feature Adding signposts, always-on clues doesn?t scale Add tours, help pedals, tips, spotlights Rediscover the hover Tooltip Invitation Offer an Invitation 3 Designing for Ajax Shift. In-Page Interaction. 70 classic flow across pages 1 2 3 4 rich flow within page 1 2 3 4 Designing for Ajax Cross borders reluctantly 71 4 Designing for Ajax Pattern. Endless Scrolling 72 Rico LiveGrid Yahoo! Mail Beta (Oddpost) Cross Borders Reluctantly 4 Designing for Ajax ? At the very least make your paging fast Pattern. Live Paging 73 Cross Borders Reluctantly 4 Designing for Ajax Pattern. Inline Assistant 74 Cross Borders Reluctantly 4 Designing for Ajax Pattern. Inline Validation 75 Cross Borders Reluctantly 4 Designing for Ajax Pattern. Validate and Suggest 76 Cross Borders Reluctantly 4 Designing for Ajax Pattern. Overlays (lightweight popups) ? For introduction of features ? For giving instruction ? For revealing information ? For interrogative feedback ? For obtaining input ? For important interruptions ? For indication of status or progress ? For offering an invitation 77 Cross Borders Reluctantly 4 Designing for Ajax Pattern. In-Context Expand. 78 Cross Borders Reluctantly 4 Designing for Ajax Pattern. Slide Out. 79 Cross Borders Reluctantly 4 Designing for Ajax Pattern. Detail Zoom. 80 Cross Borders Reluctantly 4 Designing for Ajax The Patterns 81 Endless Scrolling. Expandable Paging Boundary. Fresh Content. Hover Detail. In Place Drill Down. Inline Assistant. Inline Validation. Validate Then Suggest. On Demand Refresh. Resizable Modules. Scrolling Modules. Detail Zoom. Opacity Focus. Configurable Module-Faceplate. Configurable Module-Flip It. Configurable Module-Inline Configure. Configurable Module-Slide Out Drawer. Slide Out. Flip. Opacity Fade. Cross Borders Reluctantly 4 Designing for Ajax 82 Rethink process flows Its the user?s model, not the page model Every page jump is a mental speed bump Cross Borders Reluctantly 4 Designing for Ajax 83 Rethink process flows Its the user?s model, not the page model Rethink paging Its the user?s model, not the paging model Use scrolling for ?owned? data Watch out for dual scroll bar issue Every page jump is a mental speed bump Cross Borders Reluctantly 4 Designing for Ajax 84 Rethink process flows Its the user?s model, not the page model Rethink paging Its the user?s model, not the paging model Use scrolling for ?owned? data Watch out for dual scroll bar issue Plan for linking, crawling and back button Not everything is a single page application What will the user think the back button does? Every page jump is a mental speed bump Cross Borders Reluctantly 4 Designing for Ajax 85 Use overlays For momentary interruption Replace page transition When editing an individual, more complex item Be symmetrical Not disturb the page Cross Borders Reluctantly 4 Designing for Ajax 86 Use overlays For momentary interruption Use in-context expands For editing part of a collection Need to see surrounding context For managing content modules Replace page transition When editing an individual, more complex item Be symmetrical Not disturb the page Cross Borders Reluctantly 4 Designing for Ajax 87 Use overlays For momentary interruption Use in-context expands For editing part of a collection Need to see surrounding context For managing content modules Use space creatively Slide, zoom, flip, lens, fade Replace page transition When editing an individual, more complex item Be symmetrical Not disturb the page Think of your backstage Cross Borders Reluctantly 4 Designing for Ajax Shift. Lightweight Actions. 88 ok heavy click-weight light-weight actions Designing for Ajax Leave a light footprint 89 5 Take nothing but memories leave nothing but footprints. ? - Hiking trail sign Designing for Ajax Pattern. In Context Tools 90 Leave a Light Footprint 5 Designing for Ajax Pattern. In Context Tools 91 Leave a Light Footprint 5 Designing for Ajax Pattern. In Context Tools ? Microsoft Vista, Office 12 Contextual Command Tabs 92 Leave a Light Footprint 5 Designing for Ajax Pattern. Live Ratings 93 Leave a Light Footprint 5 Designing for Ajax Pattern. Remembered Collection 94 Leave a Light Footprint 5 Designing for Ajax The Patterns 95 Auto Save. In Context Tools. In Page Action. Remembered Collection. Remembered Preferences. Auto Form Fill. Live Ratings. Leave a Light Footprint 5 Designing for Ajax 96 Watch your click weight Keep actions immediate and light Count ?clicks? Leave a Light Footprint 5 Designing for Ajax 97 Watch your click weight Keep actions immediate and light Design for engaging moments Use invitations Keep it fun, exciting and light Treat it like an impulse aisle Leave a Light Footprint 5 Count ?clicks? Designing for Ajax 98 Watch your click weight Keep actions immediate and light Use lightweight events Hover Blur, focus Click. Avoid double-click Leave a Light Footprint 5 Count ?clicks? Design for engaging moments Use invitations Keep it fun, exciting and light Treat it like an impulse aisle Designing for Ajax Shift. Multiple Happenings. 99 page-based transitions multiple transitions, single page Designing for Ajax Show transitions 100 6 Designing for Ajax Pattern. In Context Progress 101 Show Transitions 6 Designing for Ajax Patterns. Scale, Zoom 102 Show Transitions 6 Designing for Ajax Pattern. Active Spotlight 103 Show Transitions 6 Designing for Ajax Pattern. Quick Spotlight 104 Show Transitions 6 Designing for Ajax Pattern. Fade, Self-Heal, Slide, Collapse, Expand 105 Show Transitions 6 Designing for Ajax Transitions ? Brighten. Raise importance ? Cross Fade. One leaves, another enters ? Dim. Lower importance ? Expand. Open in context of others ? Fade In. Good for adds ? Fade Out. Good for deletes ? Flip. Edit configuration ? Animate. Change relationship, tweening ? Self-Healing. After delete or ?yank? ? Collapse. Close in context of others ? Slide. Similar to expand but child window 106 Show Transitions 6 Designing for Ajax The Patterns 107 Transition. Brighten Transition. Cross Fade Transition. Dim Transition. Expand Transition. Fade In Transition. Fade Out Transition. Flip Transition. Animate Transition. Self- Healing Transition. Collapse Transition. Slide Transition. Show Transitions 6 Designing for Ajax 108 Speak to the BRAIN Understanding attention processing Sending the wrong message Show Transitions 6 Designing for Ajax 109 Speak to the BRAIN Understanding attention processing Sending the wrong message What you can communicate Speed up time Slow down time Show state change Show relationships between objects Show Transitions 6 Designing for Ajax 110 Speak to the BRAIN Understanding attention processing What you can communicate Speed up time Slow down time Show state change Keep it sane ?Cut in half? rule of thumb Use a ?contrast knob? approach Don?t overuse Sending the wrong message Show relationships between objects Show Transitions 6 Designing for Ajax Simple observations ? The more rapid the change the more important the event. ? Rapid movement is seen as more important than rapid color change. ? Movement toward the user is seen as more important than movement away from the user. ? Very slow change can be processed without disrupting the user's attention. ? Animation can be used to communicate where an object was and now is 111 Show Transitions 6 Designing for Ajax Shift. Page to Objects. 112 page objects Designing for Ajax Think in objects 113 7 Designing for Ajax The shift to objects 114 Page-Based Web Rich Internet App Richer Model Document Rich Internet Object Longer Lifecycle Transient Permanent Community/ Sharing Bookmark Content, properties, and behaviors Think in Objects 7 Designing for Ajax Pattern. Shareable Object 115 Think in Objects 7 Designing for Ajax The Patterns 116 Rich Internet Object. Available. Selected. Identifiable Object. Think in Objects 7 Designing for Ajax 117 Rethinking the model What is the user?s mental model? How to distinguish from content? Think in Objects 7 Designing for Ajax 118 Rethinking the model What is the user?s mental model? The power of sharing Bloggable, shareable, findable How to dial-in community How to distinguish from content? Collections Think in Objects 7 Designing for Ajax 119 Rethinking the model What is the user?s mental model? The power of sharing Bloggable, shareable, findable How to dial-in community Web 2.0 as a platform Rich objects fit the SOA model Creates a good separation of concerns How to distinguish from content? Mashups Collections Think in Objects 7 Designing for Ajax 120 Questions? Designing for Ajax 121 Designing for Ajax 122 Participate? Designing for Ajax Have You Seen a Cool Example? ? Tag It! ? Use ?ypatternexample? tag in either delicious or Yahoo! My Web2 ? Use additional tags to identify the pattern name you think it belongs to ? Write a comment about what is interesting about the example or how to see the interaction 123

PARTAGER SUR

Envoyer le lien par email
2521
READS
4
DOWN
7
FOLLOW
5
EMBED
DOCUMENT # TAGS
#ajax  #RIA  #rich internet application  #web 2.0  #yahoo 

licence non indique


DOCUMENT # INDEX
WEB 
img

Partagé par  ced

 Suivre

Auteur:
Source:Non communique