Thursday, April 19, 2007

Unveiling Revolution Pages

With the official launch, we're pleased to unveil the beta of codename "fabric"—the "Revolution Pages" platform. Our users will create 'long tail' topic-oriented pages that will help other users find resources on both the arcane and the mundane. The premise is that a page on 'Chemotherapy in Des Moines' could be inherently more interesting/useful than a page on 'Cancer'.

We believe that this application really shows off the capabilities of our home-grown Ruby portal server. Within our portal, most resources are implemented as 'modules' (and any un-modularized blocks of functionality are quickly being converted.) Fabric is simply a layer of client-side functionality (i.e. a boatload of javascript) that sits on top of our existing rendering/page composition capabilities.

Fabric provides the following capabilities:

1. The ability to 'clip' any module on the site into your private clipboard. Try it for yourself—register, then visit any page on the site (try healthy living or conditions for target-rich environments) and click on the scissors (in the upper right, with the page tools.) The modules that are clippable will illuminate.


2. The ability to syndicate most modules on the site (the capability exists for all, but we don't syndicate everything for a variety of reasons.) Enter clipping mode and hit syndicate instead—you'll be given a chunk of javascript to paste into your website/blog/etc.

3. The ability to perform full-text search against every module that has ever been rendered on the portal (with a few exceptions where we explicitly choose not to ingest.) This means that not only can we surface pages based on full text, but we can also surface individual components of a page independently. We're using the power of SOLR via acts_as_solr (along with some stomp) for this, and it came out really clean. Props to the SOLR guys (expect some acts_as_solr enhancement patches + commentary on this topic shortly.)


4. The ability to build pages using modules gathered via #1 and #3, with a few 'special' modules that bring in external resources (RSS feeds, rich text editor, image upload, YouTube, etc.) We even give you two means to lay out pages—columns and float. For the technical audience, think static vs. absolutely positioned. In float mode, you get Photoshop style snaplines; enable columns and you get 'straightjacketed' slots.

5. The ability to browse pages built via #4, either by full-text search or tag selection.

We developed some interesting client-side techniques to pull this off, and we'll be releasing some of the more generic stuff eventually.

Feel free to poke around and create a page for yourself:

Watch the full demo (still under development):

Recommended Browsers: FF 2.0, IE 7.0
Supported Browsers: Recommended browsers + IE 6
Potentially reasonable, but unsupported: Late versions of Opera, Webkit, Safari


Andrew Kuklewicz said...

Hey - saw the brief mention you are using stomp - wondering what you are doing with messaging, and if there are any lessons learned or ideas I could try to do something with on ActiveMessaging .

I heard a rumor you guys might be doing something with memcached as a messaging channel/queue substrate; I'd be curious to hear what you are up to and if there is a way ActiveMessaging could either be useful to you, or support for an additional messaging protocol/broker could be added based on what you are doing.

Anyway, thanks for the excellent articles, and pushing the state of the art for rails.

-Andrew Kuklewicz,
PRX - Public Radio Exchange

andrew at beginsinwonder dot com

Erik said...

Great stuff folks!

I'm keen on seeing what you've done with acts_as_solr and other ideas you have on Ruby/RoR+Solr integration. I'm going to delve into bring acts_as_solr into the solr-ruby project, and get it built into a Solr distribution itself. I'd love feedback on how others would like to see that done.

Eddie said...


Good to hear from you--we saw your lightning talk at Rails Edge and were impressed. acts_as_solr has failed to disappoint. We've got some enhancements that we'd like to give back, but I'll let Aaron get in touch with you directly to coordinate that. We'll do some follow-up blogging on the solr piece since there seems to be some interest there. Will you be at RailsConf? We'd love to pick your brain on a few things.


Neat stuff you're doing with messaging... we've been trying our darnedest to KISS, but eventually the needs do catch up to you. Will you be at Railsconf? Would like to go over a few things with you as well... especially regarding a few ActiveMQ 'idiosyncrasies'

Markus Fischer said...

All in all incredible impressive. When I see all the functionality and 1000 of modules you always mentioned, I'm wondering: how the heck do you manage all the data, what's your CMs like?

Where you able to use existing solutions or did you have to built the content management and maintenance for the platform yourself too?

Eddie said...


Thanks for the compliment :-)

Our portal server, our revlets (our name for our portlets), and the entire platform that glues them all together are all home-grown.

There's also a signifigant backoffice component in the whole equation.

All standing on the shoulders of giants, of course :-)