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 InternetNews.com 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
RESTful URLs
       - 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
         http://localhost:8080/share/service

Debugging Web Scripts
    Set log4j.logger.org.alfresco.repo.jscript to DEBUG  under WEB-INF/classes/log4j.properties
         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.