Once we determined that cross-browser compatibility was the #1 issue in 2008, we asked a few follow up questions. One of the questions we asked people who developed larger community based applications how they kept their users from causing compatibility issues.

George Evanko Communications, creators of Open Secrets, a non-partisan guide to money’s influence on U.S. elections and public policy starts with a rock-solid and proven CSS stylesheet, which defines styles for all basic HTML elements. They then “made sure the templates (they are separate from the site templates) used for these pages used the exact same standards” to insure that the blog portion with outside contributors doesn’t break things.

Sean Colombo, developer of LyricWiki.org says that he make sure user-contributions work through the “MediaWiki software we use (it is an open source package that powers LyricWiki and Wikipedia) lets users type in a special format called “wikitext” which the system then turns into a very basic layout. By keeping the options limited and only using simple layouts, most problems can be avoided, but this obviously isn’t appropriate for most sites.”

Taking there advice the following guidelines can be followed for designing for user contribution sites:

  • Start with a rock solid and tested design. Fix your own problems first.
  • If users are creating their own designs, keep them separate from the site design.
  • Limit users ability to cause problems for the site by having either a wikitext style syntax or scrub the code before saving it.
  • Let users know what limits you are placing on them and provide guidance. This is far better than forcing them to find workarounds that could cause problems for your site.
  • Provide a set of predefined templates or an architecture for creating site “skins.” This will allow users to get the custom look they desire without reducing usability and compatibility.

User interaction is the cornerstone of useful and modern websites and applications. Encouraging it is important, but also be alert to the problems it could cause and make sure that the site is designed from the very beginning to reduce these issues, either by starting with a framework that has that has these pieces in place or by putting them in place yourself.