Patterns for Designing a Reputation System

June 10, 2008 at 4:15 pm by Christian Crumlish | In Design | 11 Comments

Reputation patterns

Recently, we released a family of related Reputation patterns to the Yahoo Design Pattern Library, the first of several collections of social-design related patterns that we’re working on. These patterns are somewhat different from the typical UI or rich-interaction type of pattern. They don’t tell you how to lay out a page or where to put an interactive widget. Instead, they address how to design a reputation system for your social software.

A key element in the Reputation family of patterns is one we call The Competitive Spectrum:

Competitive Spectrum

The Competitive Spectrum is the first pattern you should look at because it asks you to consider the degree of competitiveness in the community you are trying to build or foster. Are you aiming for a highly cooperative community, an arena for death-matches, or something in between? The answer to that question will inform which of the remaining Reputation patterns best apply to the design of your site or application.

The primary author of these patterns (and the creator of the sensitizing images) is Bryce Glass, a senior interaction designer on the Y! OS social team. Product manager Yvonne French deserves some of the credit as well. The patterns were developed for an internal reputation platform here at Yahoo! that was inspired and guided by online community guru Randy Farmer. We’re very pleased to be able to share them with the wider web community now and as always we welcome feedback and suggestions for improvement.

UPDATE: I forgot to mention that Bryce gave a great talk about reputation design at the IA Summit this year: Designing Your Reputation System (in 10 Easy Steps).

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

Implementation Focus: MiaCMS

June 9, 2008 at 2:44 pm by Eric Miraglia | In YUI Implementations | 8 Comments

Introduction: Chad Auld of the MiaCMS projectChad Auld is one of the principal developers of MiaCMS. MiaCMS is a relatively new open source project, but it’s starting out with a solid base from its roots in Mambo CMS. Chad spent about three years on the Mambo team in various roles including Lead Core Developer and Director on the Mambo Foundation Board; he was a member of the Mambo Steering Committee prior to retiring in February of 2008. Recently, Chad joined with other core Mambo developers to create MiaCMS which is now on its second release. Chad’s role on the MiaCMS team for the first two releases has been to help with the rebranding efforts, build the default WYSIWYG editors, implement the YUI Library, build a REST API for content access, and develop enhanced charting for general CMS statistics and poll results.

How does MiaCMS differentiate itself from other CMS projects out there? Why would someone choose MiaCMS over Drupal or Joomla or other well-known apps in this space?

Yes, there are quite a few content management systems to compete with. Luckily we aren’t really new to the game. Our team contributed toward making Mambo the CMS it is today. We will continue building on that same award-winning base with MiaCMS. (As a side note, it’s worth pointing out that Joomla was also initially based on Mambo about three years ago.)

Some of our current features are:

  • Simple Installation
  • WYSIWYG Content Editors
  • RSS Content Syndication
  • Powerful/Extensible 3rd Party Extension System
  • Flexible Site Theming Capabilities
  • Site Search
  • Sitemap Generation
  • REST Enabled Content & Statistics
  • User Management
  • Multilingual Core

MiaCMS will differentiate itself by making standard content management operations even easier and more flexible than they have been in the past. We will cleanup much of the old legacy code and enhance the extensions interface to simplify custom 3rd party extension development. With the 4.7 release the team will drop support for PHP4 to take advantage of the object-oriented capabilities of PHP5. The team plans to continue building close ties to the community and listening to their feedback. The next few releases will focus on building out many of the wishlist items we have already received from the community.

At some point, you and the development team made the decision to build YUI into MiaCMS. What were the factors that guided your decision?

YUI Menu and TabView on MiaCMS.

We based our decision on a number of important factors; maturity, browser support, documentation, support community, functionality, and flexibility. YUI has a large selection of time-tested components and continues to make valuable additions with each release. For us it is important that the selected framework continue maturing and growing right along side of us. We didn’t want to add yet another library to the system and so it was important to be able to replace existing parts of the CMS with canned components and/or have the flexibility to hook into the framework and use it as a building block for custom components. The YUI documentation is first-class. In fact, it represents some of the best documentation I’ve come across for an open source project. Between the user guides, cheatsheets, api browser, examples, and developer videos, you have just about everything you could ask for. Of course, sometimes documents just aren’t enough. Luckily, we’ve found the YUI support group to be a good place to find additional answers. Last but not least is the topic of browser support. While we’d love to support every browser in existence, it simply isn’t possible. But we do our best to test and code for as many as we can. We think Yahoo! has taken the right approach with its Graded Browser Support model.

What components of YUI are used in Mia?

We are currently utilizing the Reset-Fonts-Grids CSS, Dom Collection, Event Utility, Tabview Control, Button Control, Color Picker Control, Rich Text Editor, Animation Utility, Element Utility, Container Family, and Menu Control. Our production releases also make use of the YUI Compressor which we have integrated with our ANT packager to compress all the CSS and JavaScript in the system. The entire YUI library is included in the system so we are hoping our 3rd party developer community will make use of the library as well. Each custom component comes with its own set of unique requirements and we are confident that YUI can meet their needs, help improve their extensions, and reduce the number of 3rd party libraries the system must carry. In the last release we also build a dynamic loader into the system which allows MiaCMS users to decide between serving files from the local YUI library and serving them from the Yahoo hosting service for the advantages its CDN can bring.

YUI Rich Text Editor on MiaCMS.

Where do you see opportunities for deeper YUI integration with MiaCMS in the months ahead?

We’ve still got a lot more planned for YUI. Mia is carrying a fair amount of legacy JavaScript code in the system since its Mambo base was started about 7 years ago. We’ll be rewriting a good chunk of the JavaScript in Mia over the next few releases and utilizing YUI where possible. Users can expect a drastic reduction in inline JavaScript. We also plan to move away from older styles of event handling like coding individual onclick/onmouseover events and instead rely on the YUI Event Utility to subscribe to DOM events and help us create custom events with the application. Future releases will make heavy use of the YUI Dom Collection as well as the Event and Selector utilities.

In addition to the custom JavaScript found in the CMS there are also a number of external JavaScript libraries included to handle specific functions like tooltips, menus, calendaring, etc. A goal for the project will be to reduce the number of external dependencies and rely on YUI where possible. Two such replacements have already been almost fully implemented within the CMS core and we have started to encourage our 3rd party developers to make the switch as well with their custom extensions. In past releases the menu system relied on JSCookMenu and all tabs within the system relied on WebFX Tab Pane. JSCookMenu has now been fully replaced with the YUI Menu Control and the WebFX Tab Pane conversion to YUI TabView is about 98% complete. We are currently in the process of replacing overLib tooltips with the YUI Tooltip Control. We will also soon replace “The DHTML Calendar” with the YUI Calendar Control. It would also be pretty safe to say you’ll eventually find ContextMenus, TreeView, DataSource, DataTable, Connection Manager, and JSON being used within MiaCMS. We recently selected Open Flash Charts, but as the YUI Charts Control matures and evolves out of an experimental state that may also find it’s way into Mia.

Having developed a complex application implementing YUI, what are your thoughts on the state of YUI as a toolkit? What’s working super well at this point? What weaknesses are you hoping the YUI team will address?

YUI is a feature-rich, well designed, state of the art toolkit. The available components cover a wide variety of the common tasks needed for web application development. We have had great success integrating YUI deeply into the MiaCMS core which we will continue to do with each passing release. The community feedback on the YUI-related changes has been very positive so far. Support for the major browsers is top-notch, the components degrade nicely, and performance is solid. Tools like the YUI Compressor and YSlow are also key in helping us take performance to the next level.

Nothing much to complain about. Overall we have been very happy with our selection of the YUI Library. One of the things I really like about jQuery is the powerful CSS style selectors. I am really looking forward to the YUI Selector Utility coming out of beta. We’ll probably start making heavy use of it even before then, but obviously the more stable it is the better. I also see a lot of potential for the experimental Charts component so I’d like to see it polished up with its functionality being continually expanded as well.

What are the next big frontiers for the MiaCMS project as a whole?

Below is the list of roadmap items in no particular order. Some are already being worked on, some are almost complete, and others are in the planning stages.

  • Improved ACL’s (User/Group Permissions)
  • Database Portability
  • LDAP Support
  • OpenID
  • Dublin Core Metadata
  • OAuth
  • N-Level Content Organization (remove the two tier section/category limitation)
  • Content Versioning
  • Multilingual Content Management
  • Writeable REST Interface
  • Multi-Site Management
  • Improved File & Image Management

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

Notoptimal Dev’s New YUI-Based Accordion Menu

June 6, 2008 at 10:04 pm by Eric Miraglia | In Development | 4 Comments

Visit Notoptimal Dev's blog post about the new Accordion Menu.

Visit Notoptimal Dev's blog post about the new Accordion Menu.Juan I. Leon at Notoptimal Dev went looking for the perfect Accordion Menu recently, but the search was not a success. The criteria:

  • be lightweight
  • use unobtrusive Javascript techniques (ie not have scattered Javascript all over the markup)
  • use simple CSS to make it look nice
  • needed to support both single and multiple sections opened at a time.

Writes Juan: “My search came up short. Most were overly complicated, or they required libraries other than what I already have running on my sites. Too much bloat. I guess I’d have to write my own. Since I already use the *radical* YUI libraries on my sites, making it YUI-powered was the way to go for me. I set my goal to <100 lines of good OO unobtrusive Javascript. The current version sits at 80 LOC with lots of comments.”

You can check out the blog article or jump directly to the example.

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

Implementation Focus: LinkedIn

June 5, 2008 at 10:10 am by Nate Koechley | In YUI Implementations, YUI Theater | 3 Comments

LinkedIn uses YUI throughout their site, so I recently sat down with three of their web developers to ask them about it. With the cameras rolling I asked Chris Saccheri (Director of Web Development, and their original web developer), Steve Ganz (Principal Web Developer), and Jamie Still how YUI fits into their development process, why they chose YUI, and what it’s like to work at LinkedIn (they’re hiring).

YUI allows LinkedIn to implement usability features that otherwise “wouldn’t have been possible within their regular development cycles.” It “helps us standardize [our code], simplifies everything, and takes care of all the cross-browsers issues so we don’t need to continually fight those ourselves.” Beyond those reasons, they picked YUI as their JavaScript library “because there’s a trust aspect there because it’s from Yahoo! and is therefore robust, and has been through the grind and tested on Yahoo!’s own high-traffic sites.”

Sorry, this video is no longer available.

As a personal fan and user of LinkedIn, I’m happy and proud to know YUI is playing a small part in their continuous evolution and improvement.

Thanks to Chris, Steve, Jamie and everybody at LinkedIn for taking the time to record this video!

If you’re using YUI and want to be featured in an upcoming Implementation Focus post on this blog, please leave a comment or send us an email.

Subscribing to YUI Theater:

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

« Previous Page
Hosted by Yahoo!

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

Powered by WordPress on Yahoo! Web Hosting.