How I converted Mises.org to Web 2.0 (Part 1)
During the period of late August -
mid September 2007, I redesigned the architecture of Mises.org from the ground
up from a largely-static "web 1.0" era site to a future-oriented database and
user driven "web 2.0 enabled" site. In
the next few posts, I will present a somewhat-technical overview of my changes and
share the tools and applications which I created. I hope that this will help the users and
contributors of Mises.org as well as anyone contemplating a similar conversion.
Part one: Overview
First, let's look at a high-level
overview of my goals, some implementation challenges, and how I resolved them:
Building
an online community
Goal: create an online community - including forums, blogs, and live chat
Challenge: Distinguish between approved and
professional content and user-contributed content
Solution:
- Create the community site on a new
mises.com domain to complement the existing mises.org site.
- By branding the two sites differently, we
make it clear which site represents "official" content and which is created by
users.
- Community Server provides blogging and forums, phpFreeChat provides chat functionality.
Goal: create a user profile-management system to tie
together the mises.org and mises.com sites.
Challenge: A single integrated authentication system
is necessary to tie together the new content-management system behind mises.com
with a variety of legacy application mises.org
Solution: Use the built in ASP.Net 2.0 authentication
framework to share membership information between sites.
Separating
content from presentation
Goal: Allow all content to be presented under any
template. For example, a biography can
be dynamically presented in the about, web resources, or publication section
depending on context
Challenge: the
site content existed in a variety of web applications and formats. For example, articles, e-Books, mp3s, store
products, PDF's.
Solution: (Detailed
in a future post.)
- Migrate
text content in static files to the database
- Collect
metadata from all binary files referenced in the database
- Tag
all content with the collected metadata.
- Assign
all content a unique identifier
- Dynamically
load content-specific controls based on the type of object requested. For example, video files render a video
player, text files show in browser, external URL's redirect.
Sharing
and personalizing content
Goal: Create a library of reusable controls which
can be used across web applications to present views of various site data
Challenge: There are many different kinds of data - lists
of links, books, resources, media, etc.
Solution: Create a standard set of "Sidebar" controls,
and populate them with self-contained user controls which can be reused across
all Mises domains.
Goal: Allow all content to be syndicated via RSS
Solution: Use
RSS Toolkit to dynamically generate RSS/podcast feeds based on a variety of parameters. More here and here.
Goal: allow users to tag, save, and share all content
on the site
Solution:
- Tagging: Create a tagging framework which allows
users to tag any content. Make tagged
content available within the site as well as via RSS feeds. (Detailed here.)
- Favorites: Any page can be saved to a list of
personalized favorites or sent by email.
- Social bookmarking: Standard metadata makes social bookmarking easy.
Goal: Enable users to customize the site's content and appearance
Solution:
- Customizable homepage: convert
user controls to web parts to allow users to select their preferred data view
from a web part catalog. (Detailed in a future post.)
- Themes: (See below)
Creating
the "Web 2.0" look
Goal: Visualize documents from a variety of source and formats via tag clouds
Solution:
- Aggregate tag clouds,
as well as statistics on user-contributed tags can be viewed centrally.
- As users tag documents,
the site creates a "personal tag cloud" for each user
- To do: Integrate
subject-specific tag clouds into the site
Goal: Make navigation more simple and intuitive
Solution: Replace a drop-down menu with dozens of redundant
selections with a main menu containing of a few categories and then provide detailed
links in section-specific sidebars
Goal: Implement the "Web 2.0" look
Solution: New theme: gradients, large uniform fonts,
simple color palette, standard feed icons, rounded content containers.
Goal: Allow customizable user themes.
Solution:
- Mises.com runs Community Server, which has
themes built in.
- For Mises.org migrate
all formatting to use the ASP.Net 2.0 Themes feature
- (To do:) allow users to
choose their own theme.