Friday, January 29, 2010

What's new in Alfresco Enterprise 3.2?

Alfresco 3.2 is out.  In general, I'm very pleased with this release.
In particular, Alfresco Share is really shaping up and is sure to have some very interesting implementations.
Here is a rundown on some of the highlights with a little bit of commentary on this new release.
There's really a lot there.
High Availablity, Scalability and Improved Administration 
(Available in the Enterprise version only)
     Alfresco is being used for some very large systems.  [As an aside.  Alfresco has been benchmarked to have 100 million objects, and this year there is talk that they will try to do a benchmark with one billion objects.  That's pretty big.]  With this release Alfresco introduces tools to ease the administration of production systems, especially useful when considering large production systems.  And much of the new magic is made possible with something called JMX (Java Management EXtensions).  JMX is a Java technology that is helps you dynamically monitor and manage Web-based systems.

     Alfresco with JMX is pretty cool because, with it, you can probe the inner workings of Alfresco while it is running and view the status on a dashboard.  You can reconfigure things without ever restarting the server.  You can see things like server memory usage and active database connections.  And you can also see the configuration and workings of Alfresco 'subsystems'.

     Alfresco is modular and consists of subsystem components.  Subsystems include things like Authenticaion, the User Directory, the File Server, Image transformations, the IMAP server, and others.  From a JMX console you can now browse through Alfresco subsystems and change any of the configuration parameters.

    What are the benefits?  System administration with JMX becomes much easier.  There are fewer downtimes -- lower maintenance costs.  It lets you monitor your system and look for any bottlenecks --easier troubleshooting.  It simplifies the management of error and log files.  It is cluster-aware -- make a change while you are live and the change will propagate out throughout your cluster.

   Alfresco's implementation is 100% compliant with 'standard' JMX.  That means that you can use any JMX client as your dashboard diagnostic tool.  That includes JMX clients like JConsole, jManage, or any other.

   A partner of Alfresco, RightScale, was able to use Alfresco JMX and combine it with Amazon EC2 infrastructure to provide a smart-sizing version of Alfresco running in the cloud that lets you scale up or down your Alfresco server resources as the demand calls for it.

Storage Policies or Lifecycle Management 
(Available in the Enterprise version only)
   Another great addition that is only in the Enterprise version is the ability to specify Storage Policies.  This basically lets you control what media you will store/archive selected content to.  This ties in with the concept of a 'lifetime' associated with content.  Some content may be highly relevant today, but a year from now will be considered stale -- you don't want to get rid of it, but then you'd prefer to store it on a cheaper slower-access disk.

   The idea is that you might use SSD drives for your most important information, and based on business policies that you control, gradually move the data to cheaper drives like FC or SATA as it becomes less important.  This way you can more cost effectively manage the storage of your data.  This concept of Information Lifecycle Management (ILM) is something that EMC has talked about for some time.

New Deployment Options
    The 'original' Alfresco is deployed like traditional software, 'on premise'.  You buy a server and install the software on it to run on your intranet.

In 3.1  Alfresco enabled their explorer client application to run as a multi-tenanted solution.  With this approach, you can install Alfresco one time and partition the installation so that content belonging to one group of people can be kept separate from another group.  Now, with the 3.2 release, Alfresco Share can be configured as a multi-tenanted application also.

With the 3.2 release Alfresco is also pointing out that Alfresco can be easily set up to run in the 'cloud'.  I don't think that there is too much new here.  People at Alfresco have talked about this as an option for some time, but perhaps with the rise of cloud computing they want to point it out again.  As mentioned above, their partnership with companies like RightScale show that running in the cloud is now easy to do.
Improvement in Alfresco Share
   Alfresco has been fairly open with the fact that their 'Explorer' client which is based on JSF technology is no longer being actively developed.  While JSF is still around and actively used at a lot of places, it is a 'heavier' technology compared to a lot of whiz-bang Web 2.0 stuff.  Alfresco is now investing development cycles in Alfresco Share.

    Early versions of Alfresco Share lacked some basic repository capabilities that the JSF client had and which you would expect to find in a content management system.  The focus was to start building out team collaboration capabilities, like multiple project site areas, wikis, blogs, and calendars.

   With the 3.2 release a lot of the document management capabilities are starting to show up in Share's 'Document Library' area.  Things like changing the type of a piece of content, adding or removing an aspect, or assigning a workflow are now available.  The document library capabilities in Share out-of-the box are now pretty slick.  Alfresco can read property data from common file type headers and automatically populate content metadata.

    Share's built-in Flash viewer is also great.  It only works with some common file types like PDF, MS Office and some common image types, but it can convert the file to Flash on the server and allow it to be viewed on the client.  It lets you zoom and page through the document.  It looks great and it seems pretty speedy.  Since the file is converted on demand on the server, the whole file need not be transmitted to the client before you can open and view it.  And you don't need the native authoring application.  Hopefully there will be some more file types added to the list of the currently supported ones.

   Along the lines of viewing, Share 3.2 also includes a new smart dashlet that has an image 'lightbox' viewing technique that lets you visually navigate across your image content.  You can see thumbnail images on a grid, scan through them and then select one to expand that opens with a lightbox effect on top of the thumbnail grid.

   Speaking of smarter dashlets, the new Share also allows user dashlet preferences and size settings to be remembered.  Set them, log out, log back in and all your settings are still there.  Maybe that behavior is something you would have expected all along, but it works now.

   Share now takes advantage of a new forms system in Alfresco.  Change your metadata and content type and forms will automatically reconfigure to reflect those changes.

    Share sites can now be public or moderated.  Users need to first apply to a moderated Share site and be accepted before they can become contributors.

   Share also now includes some Administrative capabilities.  Early versions of Share were a bit awkward since they relied on having to administer users and groups from the JSF explorer client.  The 3.2 release includes administration of both users and groups from within Share.  And the design of the Share Administration module is pluggable.  Have other custom administration configurations that you need to manage? -- Create a component that can plug into the Share administration console.

   Since Share is about Collaboration, you often would like to bring collaborators onto a project that are external to your organization, maybe partners or vendors.  This new version of Share will let you do that.  And Alfresco has done a lot of work in improving the scalability of Share, claiming that it will support scalability into the tens of thousands of users.

   And while not strictly part of Share, there has been a lot of changes going on with Surf, the web development framework that Share is built with.  Alfresco Surf has been donated to an Apache incubation project and will jointly be overseen by the people from SpringSource, the developers of the popular Spring framework.  The project is called SpringSurf.

Email Archive
   The 3.2 release also adds some interesting generic support for connecting with email systems.  Alfresco is calling it their 'Virtualized IMAP support'.  (IMAP stands for Internet Message Access Protocol. Like POP, it lets you access your email on the email server.)

   The IMAP support means that any email client can become a client of Alfresco.  Basically Alfresco looks like an email server.  You will be able to see the Alfresco folder hierarchy from within the email client you are using.  This means that you can easily drag and drop emails from your inbox directly into folders within Alfresco.

    When used with Share this means that you no longer have to forward emails to project members.  Just save them directly to the Share document library for the project site.  Since it is based on the IMAP standard, no plugin or extra client install is required for this to work.

5015.2 Records Management
   This is a big announcement, and actually it was removed from the 3.2 release, so including it here isn't quite right.  It is now scheduled for release near the end of February as part of an Enterprise release being dubbed 3.2.1.  But anyway, it is a big announcement, so I'l include some information here.

   In the fall of 2009, the Alfresco Share 3.2 Community version of the software was certified for 5015.2 Records Management compliance.  This will allow Alfresco to be used by federal government agencies for management of their records.  It is based on a specification created by the Department of Defense.  There are only a small number of products and vendors that have been able to get certified, and Alfresco is the first Open Source solution.  Clearly Alfresco worked a lot on this, and if you are looking for an RM solution, I think you'll like it.  Here's a video demo.

    Records management is important for companies to achieve goals related to governance, retention and compliance.  Alfresco's ultimate goal is for the Alfresco Records Management solution to be fully CMIS-enabled.

Web Content Management
    Web Content Management (WCM) also saw some changes with the 3.2 release, although there has been some talk that some major restructuring around WCM may be coming soon.  Currently the Alfresco WCM and DM repository stores are structured differently, and there is talk about 'unification' of the two.

   The 3.2 release saw some improvements in how a web page can be previewed and also in how it is rendered.  There were changes that now allow web content authoring to happen more easily in a clustered environment.

   And there were some improvements that let Alfresco WCM interact better with 'fast delivery channel' mechanisms and services like those of Akamai.

For more information about 3.2 features, check out the Alfresco 3.2 Enterprise page .

Thursday, January 28, 2010

Alfresco Moves to LGPL Licensing for the Community Version

"Big News!" says Nancy Garrity, Director of the Alfresco Community.  And it is.  Yesterday John Newton, CTO and Chairman of Alfresco, announced plans to switch the license used by the Alfresco Community version from GPL to LGPL.  The change is to go into effect for the Alfresco 3.3 release.

(Note that there is some information about licensing presented here, but the caveat is that this is not legal advice.  Always be sure to consult with a lawyer when doing anything related to licensing.)

Also remember that the Enterprise version of Alfresco comes with a standard commercial license.  Open Source licensing is used only with the Community version.

Open Source licensing does tend to be confusing...  Alfresco changed Open Source licenses once before, from Mozilla Public License to GPL in February 2007.  At that time, an article wrote "There are many companies that are afraid of the GPL, Alfresco isn't one of them."  On the current legal FAQ page on the Alfresco site, Alfresco describes the reasons for why they originally moved to GPL.

When Alfresco did move to GPL, version 3 of GPL had not yet been finalized, so Alfresco explicitly called out GPL version 2 when referencing the license in Alfresco code, unsure of what conditions would be included in version 3.  Alfresco source code files now say "version 2 of the License, or (at your option) any later version."  (Alfresco has also considered some complications around trying to combine a GPL-licensed piece of software with other Open Source licenses, and Alfresco has some 'exception' language that describes that.)

First, just what are the differences between GPL and LGPL?
Well, both licenses give you complete access to the source code and the ability to build working software.

The GPL license allows you to use, redistribute and change software, but you're then required to make the source code available to users of the new software, and those users can in turn redistribute and modify the software subject to GPL.  For some commercial software vendors and even at companies where software is being developed in-house, GPL is considered a bit toxic and people avoid it at all costs to make sure that their commercial or proprietary code will not come into contact with GPL and the possibility that their source code would need to be released.

LGPL is similar to GPL but differs in that it allows LGPL software to be treated as a blackbox or as a self-contained library.  It allows you to cordon off a certain set of code as LGPL.  If you change the inner workings of the LGPL piece, then you're pretty much bound to standard GPL and will need to contribute back any changes you make to the code.  The difference comes when there are software pieces that integrate with LGPL and that are outside the scope and code boundaries of the LGPL.  These other pieces are not bound to the same conditions as the LGPL piece.  Because of that, LGPL is sometimes considered to be a bit more friendly, at least to commercial developers.

Second, what will the change enable Alfresco to do?
As John Newton wrote: "What the LGPL license provides over GPL is the ability to link in the Alfresco repository without affecting proprietary software that links it."

John is a strong promoter of the CMIS (soon-to-be) standard.  CMIS will enable many different applications and repositories to interact, and an LGPL license will make people more willingly consider combining Alfresco in solutions composed of a variety of software components.   John wrote:
"We do this in the spirit of making Alfresco available as a CMIS platform and a general ECM platform to build content applications without inhibiting your business opportunities. What we hope is that your applications will build demand for Alfresco services from Alfresco Software, particularly in larger enterprise environments."
I think that this move to looser licensing terms should further encourage activity around the Alfresco ECM platform, and that, of course, is good.

Monday, January 25, 2010

Resources for Getting Started with Alfresco Web Scripts

If you're going to be doing any development with Alfresco, you'll find that at the heart of much of the development are Web Scripts.  Alfresco calls their Web Script technology "agile script-driven MVC".

Web Scripts enable very quick web application development.  Instead of a single monolithic system, Web Scripts use a very focused light-weight approach for building components that can be combined and reused.

Alfresco has two types of Web Scripts:
    Data Web Scripts
       - Based on
       - Can return structured data as XML, JSON, or CSV
    Presentation Web Scripts
       - Renders the UI
       - Can call data web scripts

There are three components to a Web Script:
      - Descriptor file
      - Controller file  (Javascript makes it easy.  Java is more capable).
      - View file  (Typically uses Freemarker, but can use things like XSLT and XSL-FO)

Alfresco has dashboards to see which Web Scripts are available:
  eg.,  http://localhost:8080/alfresco/service  or

Debugging Web Scripts
    Set to DEBUG  under WEB-INF/classes/
         logger.log will write to catalina.out

Other Resources:

Alfresco Webinar on Web Scripts.  A high-level overview.
Alfresco Web Scripts -- PDF Document by Alfresco/LifeRay.  A bit light on specifics, but great graphics.
Alfresco Web Scripts Wiki page.  A good place to get started.
Web Script Examples Alfresco Wiki page.  Large number and variety of cookbook examples.
Alfresco Developer Guide by Jeff Potts.  Chapter 6, 'Exposing Content through RESTful APIs with Web Scripts'.  Great resource.  A similar version of this chapter is available here.
Best Practices and DRY.  Break up Web Script files and use 'import' and configuration files.
Using 'Remote' in Web Scripts.  Lets Alfresco Share Web Scripts call into Alfresco repository and external services.

Saturday, January 23, 2010

Alfresco Turns Five

Birthday greetings go out to Alfresco this month.  The Open-Source ECM vendor is celebrating its five year anniversary.  Over just five years Alfresco has managed to put together a next-generation ECM product that competes well against traditional vendors like EMC/Documentum, IBM/Filenet, and even Microsoft/Sharepoint.

This week CIO magazine recognized the momentum behind Alfresco by naming it one of the top 20 tech companies to keep an eye on in 2010.   CIO magazine said that "Alfresco is already well known to open-source types and has the giants of the enterprise content management space coming over all defensive. It already has a large user base and converting that mindshare into real money is the challenge for 2010, assuming it doesn't get picked off by one of said giants."

Monday, January 18, 2010

Alfresco and IBM Join Forces

Alfresco announced yesterday at IBM Lotusphere 2010 in Orlando integration of Alfresco with IBM's Lotus Quickr, Lotus Notes,  Lotus Connections and Websphere Portal.  Alfresco has named the integration Alfresco Content Services for Lotus, and it is scheduled to be available in Spring 2010.  The announcement described it as "economical, scalable and open."

Although it isn't clear exactly how long it took to pull off the integration of the two products, press releases boast that they managed to do it within 'record time', attributing much of their speedy development to the use of REST Web Services and CMIS, the new Content Management Interoperability Services standard, something which both Alfresco and IBM have been pushing hard for.

The CMIS standard (or more correctly, soon-to-be standard) has the potential to be the enabler for a whole new category of Content Management (CM) applications -- integrated collaborative content management (ICCM), ones that can blend data and information from multiple data sources, which could enable collaboration between users regardless of the exact collaboration tools that are being used.

Highlights of the Alfresco-Lotus integretion include:
  - Integration with Microsoft Office using Alfresco's implementation of Microsoft Sharepoint protocol
  - Integration with Alfresco's 5015.2-certified implementation of Records Management
  - Ability to provide 'cloud-computing' deployment

"Lotus Quickr users can manage, store and retrieve documents, and kick off transformations and workflows through Alfresco without having to change anything on the front end," says John Powell, president and CEO of Alfresco.

Here is a demo prepared by Alfresco that shows the integration with Lotus Quickr:

Clearly Alfresco is aiming at Microsoft with this announcement.  John Newton, Alfresco's CTO called the combination of Alfresco with IBM Lotus a "real SharePoint killer".

And that brings up the question of 'why Alfresco' and not IBM's own FileNet.  Actually IBM already has a FileNet integration with Lotus.  Kathleen Reidy, 451 Group senior analyst said that Alfresco is being positioned as a leaner and lighter-weight option than FileNet.  "IBM can't tell customers evaluating Lotus vs. [Microsoft] SharePoint that they need to use FileNet if they want ECM. That is what this Alfresco integration says to me," she says.  But the decision to add Alfresco must be causing some concern within IBM's FileNet group.

Monday, January 11, 2010

Alfresco Spring Surf using Roo

Well, I saw Alfresco's SpringSurf webinar last week and I was inspired by the presentation to give it a go. SpringSurf combines the SpringSource Spring framework with Alfresco's Surf  to create a rapid webapp development environment that focuses on scripting.

After some false starts, SpringSurf Milestone 2 was released over the weekend.  I downloaded it and gave it a try by going through a fairly nice SpringSurf tutorial.  But near the end of the first chapter I hit a roadblock.  The version of the SpringSource Tool Suite (STS) that I downloaded bundled roo version 1.0.0.RC4.  The tutorial shows roo 1.0.0.RC4 -- so it seemed right.  But -- it didn't work for me.

Using the RC4 version of roo, my maven deployment went into an endless loop trying and failing to download dependencies.  I ultimately downloaded roo version 1.0.0.RELEASE and, after that, things went a lot more smoothly.  I got past the deployment and I saw my first roo-generated surf app!  It was pretty cool when things went smoothly.

Overall the tutorial is good.  Andrew Miller points out a couple of typos in the sample code in Chapter 2 that can cause some problems, and his solution saved me some time.  After the tutorial's second chapter, a lot of the material is stubbed out, still to be written.

Overall, my impression is that SpringSurf can be used for setting up new sites and the building out of new web pages fairly easily.  But it is still a bit rough around the edges -- definitely in an 'early adopter' phase right now.

It will also be interesting to see how Alfresco WCM capabilities will also be woven into the picture.  Hopefully this will be one item that Alfresco addresses in the upcoming presentation of the Alfresco 3.3 and 4.0 WCM roadmaps.

Monday, January 4, 2010

Changing the default Alfresco Share Theme

Alfresco Share is an open-source enterprise-class collaborative content management application based on the Alfresco content repository. 

Share was built using Alfresco's web development framework called Surf.  Surf is a flexible platform that allows quick and easy development and customization of web applications, like Share.  The framework evolved as Alfresco engineers needed a tool for quickly building content-rich applications.  Surf is Alfresco's second generation architecture for building web applications.   First generation Alfresco applications were based on a web client built using Java JSF, a technology significantly more difficult to develop with than Surf.  

From the beginning, Alfresco technology has been built up around the Java Spring framework.  Surf continues to use Spring.  In fact the developers of Spriong at SpringSource were so impressed with Surf that they agreed to cooperate jointly with Alfresco on a project under the Apache banner called the Spring Surf Extension.

"Alfresco and SpringSource share a common vision for providing more modular and productive web application development frameworks.  We welcome this contribution and are pleased to have Alfresco as an active member of the Spring community," said Rod Johnson, General Manager of the SpringSource Division of VMware and the creator of Spring.

Spring is all about the 'wiring' of interchangeable components.  Alfresco Surf/Share has adopted Spring application configurability and also introduced additional XML configuration files.  Most Surf customizations and changes start by making a change to an XML property file.

As a simple example of how this wiring plays out, I'll show here how the 'theme' or color scheme can be changed in Alfresco Share.  By default, which theme to use is defined in the file: share/WEB-INF/classes/alfresco/web-framework-config-application.xml.

Not too surprisingly, the default theme is called default.  If you look into that xml configuration file you will find code similar to the following: 

There are three out-of-the-box themes that ship with Share and the definitions for those themes can be found in the directories under the themes directory:

By changing the theme for the application, you can change the color schema for the application.  For example, shown on the top below is the standard default theme for Share, and below that you can see the greenTheme for Share.

                 The default Alfresco Share Blue Theme

                          The Alfresco Green Theme

A quick way to test out how well a new theme will look is to simply include the theme parameter at the end of the URL, as in:  http://localhost:8080/share/page/user/admin/dashboard?theme=default.  (Although this trick doesn't seem to be swapping out the new theme images; it only changes the theme css files.)

To change the theme globally so that it will be applied to every page, it is necessary to make changes to the file:  share/WEB-INF/classes/alfresco/web-framework-config-custom.xml.  If the file doesn't exist, you should create it in that directory.  Otherwise the existing file should be modified to include the following content:

As shown above, each theme is grouped into its own directory and contains a folder of images along with two CSS files, one for the login page (login.css), and another for all other pages in the application (presentation.css).  To create a new theme, just create a new directory under themes -- the easiest way to get started is to copy over the default theme and then start editing and replacing.

Often the first step in customizing the Share site is to change the logo.  With themes, swapping in a new logo is easy.  By looking into the images directory, we find that there are images called logo.png (the logo displayed on the login page) and app-logo.gif (the logo displayed in the upper left of all other application pages).  Making new files with identical file names and placed within your new theme area will override the default logos.

Next you should have a look at how to change the css files for your new theme.  The presentation.css file holds most of those definitions.  But looking at the presentation.css file can be a bit daunting.  It is about 800 lines of css, including a lot of hex color codes.  A good way to get a handle for what's going on in this file is to compare the presentation.css files between two out-of-the-box Alfresco themes.  For example, do a diff between the presentation.css file of the greenTheme with the default one.

For example, using a source diff tool (like the free SourceGear DiffMerge) you'll quickly see that there are  a lot of differences between the theme files, but things begin to make some sense.   You'll need to rename skin references in the file to use your new theme name -- something which occurs in more than 100 places in the file.  For example yui-skin-default will need to be renamed yui-skin-NewTheme.  Global replace will quickly help with that.  

Because the browser can be forced to reload the image and css files, the theme files can be modified and reloaded without having to stop and start the web server.

From there on it is possible to experiment with some of the colors.  It is also a good idea to investigate using a point and click tool like Firefox/Firebug to visually examine the css.  You'll find that about the last hundred lines of presentation.css is marked as "Theme background colors".  This is a good place to start making changes.  After changing colors there and also changing the dashlet-title-bg.png file, which is the image file used to produce a gradient color effect on the dashlet titlebars, you'll be pretty far along in transforming the skin of the application.

Creating a new theme is obviously tedious, but Alfresco has done a great job in separating out css from the markup, which at least makes the job possible.

Here are some screenshots of the Alfresco optional Green Theme: