Web Framework 3.0

April 2nd, 2008

Over the past few weeks, I’ve spent a lot of time migrating core code from the Dynamic Website project into Alfresco Web Framework 3.0.

As many of you know, the Web Framework 3.0 work is a new project that was started not too long ago. It is an entirely separate web-tier project that provides a lightweight backbone for building web applications and web sites. It includes Alfresco Web Scripts and Freemarker processing engines and now also includes a ready-to-go dispatcher, object model and web script APIs for building your own web sites.

The Web Framework 3.0 project forms the foundation at Alfresco for several initiatives. The two most important ones are the Web Client 3.0 and the Alfresco Network products. These two applications will use the Web Framework 3.0 project as a foundation and then build upon it to deliver the end-user applications.

One of the best things about this whole process was that we were able to take a community-built project (Dynamic Website) and pull it apart to separate out the very best bits. As such, the Web Framework 3.0 now includes:

  • A rich XML object model for describing navigation, pages, templates, components, component bindings, content associations and request context.
  • A lightweight servlet-based dispatcher that quickly assembles your web application by consulting the XML configured for request states.
  • Interfaces for request context factories, page mappers, link builders, persistence and more. These elements and more are driven from configuration files, allowing you to plug in your own dispatching behaviors (for instance, URL mapping behaviors).
  • The full Alfresco Web Script and Freemarker Processing engine.
  • Enhanced support within Web Scripts to make one or more remote calls to server endpoints to fetch data (JSON, XML) and merge into data sets for downstream processing. Think of the Web Script Engine as an aggregator of remote services on behalf of the client end user.
  • Support for templates / layouts written in Java, HTML, JSP, Freemarker or as WebScripts (Freemarker with a Javascript behavior). That’s the list, so far. There will also soon be support for dynamic, drag and drop layout assembly. This is something that was in Dynamic Website that I have not yet ported. But I will!
  • Support for page components written in Java, HTML, JSP or as WebScripts.
  • Several prebundled web components. So far, these include things like Markup Components, Image Components, Navigation Components and the like. These are being assembled into a “Web Component Library” from which you will be able to draw more advanced components like Google Gadgets, Maps, Newsfeeds and more.
  • Sample implementations provided out of the box for a Public Web Site, Intranet and Project workspace. These provide reference implementations to help you get up and running quickly.
  • The ability to self-assemble your own Alfresco Web application and Web Experience.

It’s very exciting stuff and progress is moving swiftly!

One of the very interesting and fun to solve problems in doing a migration like this is that you have to figure out where to “draw the line”. The goal is to keep the framework as lightweight and snappy as possible while still providing the efficiency gains that come from ease-of-use.

To do so, I feel we made several good decisions.

First, we kept the Web Script Framework isolated and on its own. Thus, folks who want to just build the Web Script engine and produce a WAR file with the Web Script engine standalone can still do so.

Second, we created the Web Framework project and ported over only the dispatcher and model pieces from Dynamic Website. Thus, the Web Framework itself can build and remains lightweight. It produces a fairly small JAR file.

Finally, we retained within the Dynamic Website project all of the bits that make up the user interface. Thus, Dynamic Website will continue into the future. It will be one of many applications that utilize Web Framework 3.0.

Over the next few weeks, attention will shift to focus on Web Client 3.0 and the application of this framework toward Project Spaces, Document libraries, Activity tracking and group workspaces.  Very cool stuff!

Stay tuned for more news!

Alfresco Dynamic Website

February 29th, 2008

Boy, what a week!

I’m sitting in Heathrow airport at the moment after a very exciting week of strategy and technology discussions with Alfresco and its talented engineering team.  The subject - Alfresco Dynamic Website and our approach as a company going forward.

Over the past few months, several of us have started the process of building a modern, open-platform and open-source web application framework for use with Alfresco WCM.  Alfresco WCM has been around for some time but up until today, Alfresco hasn’t offered a web application and web site “construction tool”.  We now aim to offer one.

The impetus for doing so is that we feel that we’re able to deliver a solution that far exceeds the offerings of proprietary companies.  Not only are these offerings usually far too expensive to purchase or maintain, but they also generally don’t work very well.

Why is that?  Well, for the most part, they’re based on a 1998 architecture that solved a very static problem.  They’re based on what legacy companies had to do in order to best leverage the products of multiple acquisitions.  They aren’t unified frameworks.  Far from it.

That’s why this week was so much fun.  We brought together a number of best practices and perspectives from ex-employees and consultants from the legacy WCM application vendors - principally, Vignette, Interwoven and Documentum.

From a technical perspective, we considered what worked and what didn’t work.  We looked at feedback that we’ve received from our customers - information about what they liked about legacy products and what they disliked.  We looked at hidden costs of owning a legacy system.

All through this, we asked the important question - how do we deliver superior customer satisfaction?  How do we make the framework intuitive and easy?  How do we leverage the best of open source components today to build something that is fresh and new?  Something from 2008… not 1998.
This is a great time for Alfresco.  After several years of product maturity, we’re now in a position to bring to market a WCM web site and application building solution that uses all of our prior investments to apply the mashup site building concepts to the age old WCM web site problem.

We will deliver a great solution.  Ten times the power.  Ten times cheaper.

We have a great community.  A great commitment to open source.  Great customers and great feedback.  Great partners and a great pool of technical talent from which we can draw.  I’m very excited.

As we move forward on the development work, I will post blog entries here to share my thoughts and our vision for WCM.  But if you want that vision in a nutshell, consider your current legacy WCM solution.  Imagine if it worked the way you hoped it would.  Imagine that it didn’t cost you a fortune in up-front licensing and maintenance.

Stay tuned!

Michael