Alfresco
Application Lifecycle Management
    Deploy and customize your favourite content platform your   way!
Agenda

ALM & ECM
•  Application Lifecycle Management decomposed
•  Enterprise ALM scenarios
•  ALM requirements for typical Alfresco projects

Choose your flavor for managing your Alfresco lifecycle
•  Ad hoc
•  Ant + Eclipse SDK
•  Maven Alfresco Lifecycle

Demo
•  Build & manage a fully fledged Alfresco 4.x project in 5 minutes
ALM & ECM
A FOOL with a TOOL is still a FOOL
What is ALM?
Application Lifecycle Management is not just “the build”
(although we will focus mostly on that subset)

•  Quoting Wikipedia:
   “Application Lifecycle Management (ALM) is a continuous process of managing
     the life of an application through governance, development and
   maintenance. ALM is the marriage of business management to
   software engineering made possible by tools that facilitate and integrate
   requirements management, architecture, coding, testing, tracking, and
   release management.[1]”


•  It’s not about the tooling
    it’s about how tools are connected to support processes

•  Spans through all software & business disciplines
ALM visuals
ALM 1.0 vs ALM 2.0

Limitation of ALM 1.0
•  The theory of unity
  •    Tries to solve too many problems at once
  •    Often offered as monolithic proprietary platform
•  Not flexible enough
  •    With respect to the development technologies
  •    With respect to the management process (Agile, UP variants …)


A vision for ALM 2.0
•  Open
  •    Open source and based on standard (open or de facto)
  •    Flexible and extensible
•  Divide et impera (divide and conquer)
  •    Start focused and solve general problems incrementally
ECM declination of ALM
ECM is enterprise (wide)
•  Enterprises (should) have standard mature app lifecycle
•  Might involve multiple development projects and team
•  Key  Cope with complexity over time

ECM is a people business
•  POC is a common practice
•  Process adaptation over imposition
•  Key  Fast prototyping and release cycles

ECM is open source powered
•  Frequent integration of open source products / libraries
•  Enable enterprise processes to cope with platform changes
•  Key  Dynamic answer to integration requirements & updates
Why Alfresco developers need ALM?
Alfresco is a content platform
•  Open platform designed for ECM “tailor making”
•  Huge spectrum of interdependent projects needing
  1.    Creation
  2.    Development
  3.    Testing and CI
  4.    Release
Alfresco is growing fast
•  In terms of product components & releases
•  Typical Alfresco customer penetration phases
  1.    POC
  2.    Departmental installation
  3.    Standard Content Platform for applications
  4.    Enterprise CM & Collaboration Foundation
Manual vs. Automated Lifecycle




   Constant Control    Predictable evolutions
Setting the stage
5 top objectives for Alfresco ALM
1.    IDE Integration
2.    Fast prototyping
3.    Manage / customize all Alfresco components
4.    External product Integration
5.    Integration in enterprise process / lifecycle

5 top stakeholders for Alfresco ALM
1.    Community / Enterprise Developers
2.    Project Managers
3.    IT / Operations
4.    Enterprise Architects
5.    Alfresco Support
Flavors of ALM for Alfresco
Cause everybody’s free (to wear sunscreen)
Available Approaches
Ad hoc
 •  Based on ad-hoc, potentially manual procedures
 •  Note: Strongly discouraged, error prone & no ALM coverage
Full rebuild
 •  Rebuild Alfresco starting from Trunk/Tags
 •  Requires enterprise ready process / need for contribution
Ant / Eclipse SDK
 •  Only fully supported Enterprise approach to date
 •  Covers mostly build / deployment related use cases
 •  Limited ALM support, difficult integration in Enterprise processes
Maven Alfresco Lifecycle
 •  Available at http://code.google.com/p/maven-alfresco-archetypes/
 •  Community artifacts available at http://maven.alfresco.com
Full rebuild from Sources
Rarely needed
 •  Only in specific contexts
 •  Community
   •     Patches
   •     heavily customized versions
 •  Enterprise
   •     Patches  But please check first for hotfixes
   •     Enterprise practices on software management
        •    Dangerous
   •     You might lose support and QA added value
•  Check
   •     http://wiki.alfresco.com/wiki/Alfresco_SVN_Development_Environment


•  Basically at your own risk ! 
Alfresco SDK

Available with every CE / EE release
http://wiki.alfresco.com/wiki/Alfresco_SDK

Features
•    Integrated with Eclipse
•    Builds with Ant
•    Alfresco & 3rd party libraries available in classpath
•    Possible to attach sources & javadoc
•    Offer samples (amongst others) for
      •    Custom Repository Extension
      •    Custom AMP
      •    Ant script to integrate in an alresco.war
Alfresco SDK How To

Get ahold of it
 •  Download it from
   •    Community: http://wiki.alfresco.com/wiki/Alfresco_SDK
   •    Enterprise: http://support.alfresco.com
 •  Understand it
   •    Samples
   •    SDKAlfrescoRemote & SDKAlfrescoEmbedded projects


Use it
 •  Import it with Eclipse
 •  Configure alfresco-global.properties to proper DB/data
 •  Use the samples
   •    Custom JSF / Foundation services
   •    Custom AMP
A good tool to begin with…
5 top objectives for Alfresco ALM
1.    IDE Integration
2.    Fast prototyping
3.    Manage / customize all Alfresco components
4.    External product Integration
5.    Integration in enterprise process / lifecycle
5 top stakeholders for Alfresco ALM
1.    Community / Enterprise Developers
2.    Project Managers
3.    IT / Operations
4.    Enterprise Architects
5.    Alfresco Support


             Covers only the development & build!
Maven Alfresco Lifecycle

Vision
 “Provide a flexible standard based approach to support the full
 lifecycle of an Alfresco application, from inception to release and
 integration in enterprise processes”

State of the nation
 • Mature project  Releases available since 2009
 • Backed by http://maven.alfresco.com
 • New 4.x compatible release just out! (3.9.0)

Get it
http://wiki.alfresco.com/wiki/Managing_Alfresco_Lifecyle_with_Maven
Maven Alfresco Lifecycle 4.0
Development features
•  4.0 ready Multi module archetype
  •    Repo/Share
  •    AMPs
•  Dependency management
•  Integrated support for TDD
Runtime features
•  Run embedded in favorite appserver
•  Per environment separate configuration
Process
•  Mandatory integrated versioning!
•  Release & distribution for free
•  Integration with other ALM tools (e.g. Jira)
Why Maven & Alfresco ?

Standard de facto
1.    Alfresco (and AMPs / JARs) is a <dependency> away
2.    Standard lifecycle commands
3.    Foster build reuse & packaging standardization
4.    Enable simple integration with OSS J2EE best of breed

Get your lifecycle to the next level
1.    Support the lifecycle from inception to (maintenance) releases
2.    Integrated with code quality & task management tools
3.    Scales from single community dev to multiple enterprise teams
4.    Legal & Licensing focus
5.    Can track usage
In other words…the glue for your process!
Maven Alfresco Lifecycle 4.0
Development features
•  Multi module archetype
  •    Repo/Share/Solr
  •    AMPs
•  Dependency management
•  Integrated support for TDD
Runtime features
•  Run embedded in favorite appserver
•  Per environment separate configuration
Process
•  Mandatory integrated versioning!
•  Release & distribution for free
•  Integration with other ALM tools (e.g. Jira)
Demo
  Afresco 4.0 up and running in 2 minutes

Quicker than the installer and ready to roll 
Demo objectives
Create a new Alfresco 4.0 project
 1.  Open your favorite Maven compatible IDE  Eclipse
 2.  Create a project from prototype  Maven Archetypes
 3.  Manage / customize all Alfresco components  Multi module
   1.  Alfresco Repository
   2.  Alfresco Share
   3.  Solr


Run it & release it (early and often)
 1.  Run in embedded (supported) Tomcat
 2.  Manage versioning
 3.  Simple 1 command release
Maven Alfresco Lifecycle 4.0
Deterministic and reproducible builds
 •  Zero pre-requisites
 •  Learning curve as complex as ‘mvn clean install’
 •  Suitable for CI servers

Quick Testing deployment support
 •  Embedded run
 •  Environment safe
 •  Selenium integration
Flexible
 •  Valid for starters and evaluators
 •  Scale to the enterprise
 •  Non IDE dependent
Alfresco & Maven
Community Support
•  Maven Alfresco Lifecycle Available as of 2007
•  Artifacts on http://maven.alfresco.com as of 2009
  •  4.x Community artifacts already available
  •  Using Sonatype Nexus (http://nexus.sonatype.org/)
•  Join maven-alfresco@googlegroups.com

Enterprise Support
1.  Target: 4.x EE deployed on http://maven.alfresco.com
  1.  Only JARs / WARs
  2.  NO POMs
2.  Refreshed version of Maven Alfresco Lifecycle available
  •  Working to get that integrated as “alternative” SDK
You don’t want to say “it’s just work” ™

5 top objectives for Alfresco ALM
1.    IDE Integration  Any Maven compatible IDE
2.    Fast prototyping  Archetypes
3.    Manage / customize all Alfresco components  Multi module
4.    External product Integration  Most OSS builds with Maven
5.    Integration in enterprise process / lifecycle  Seamless

5 top stakeholders for Alfresco ALM
1.    Community / Enterprise Developers
2.    Project Managers
3.    IT / Operations
4.    Enterprise Architects
5.    Alfresco Support
And now deep in the ALM space…
Future integrations
 1.  JIRA
   •  Mylin
   •  maven-changes-plugin
 2.  Hudson
 3.  Sonar
In the spotlight
 •  Open Source
   1.  CALM  http://code.google.com/p/maven-calm/
   2.  ALM with Maven  http://jabox.org
   3.  Web project hosting  http://www.redmine.org/
 •  Proprietary
   •  Insight (http://www.sonatype.com/Products/Sonatype-Insight)
BP-5 Application Lifecycle Management
BP-5 Application Lifecycle Management

BP-5 Application Lifecycle Management

  • 1.
    Alfresco Application Lifecycle Management Deploy and customize your favourite content platform your way!
  • 2.
    Agenda ALM & ECM • Application Lifecycle Management decomposed •  Enterprise ALM scenarios •  ALM requirements for typical Alfresco projects Choose your flavor for managing your Alfresco lifecycle •  Ad hoc •  Ant + Eclipse SDK •  Maven Alfresco Lifecycle Demo •  Build & manage a fully fledged Alfresco 4.x project in 5 minutes
  • 3.
    ALM & ECM AFOOL with a TOOL is still a FOOL
  • 4.
    What is ALM? ApplicationLifecycle Management is not just “the build” (although we will focus mostly on that subset) •  Quoting Wikipedia: “Application Lifecycle Management (ALM) is a continuous process of managing the life of an application through governance, development and maintenance. ALM is the marriage of business management to software engineering made possible by tools that facilitate and integrate requirements management, architecture, coding, testing, tracking, and release management.[1]” •  It’s not about the tooling  it’s about how tools are connected to support processes •  Spans through all software & business disciplines
  • 5.
  • 6.
    ALM 1.0 vsALM 2.0 Limitation of ALM 1.0 •  The theory of unity •  Tries to solve too many problems at once •  Often offered as monolithic proprietary platform •  Not flexible enough •  With respect to the development technologies •  With respect to the management process (Agile, UP variants …) A vision for ALM 2.0 •  Open •  Open source and based on standard (open or de facto) •  Flexible and extensible •  Divide et impera (divide and conquer) •  Start focused and solve general problems incrementally
  • 7.
    ECM declination ofALM ECM is enterprise (wide) •  Enterprises (should) have standard mature app lifecycle •  Might involve multiple development projects and team •  Key  Cope with complexity over time ECM is a people business •  POC is a common practice •  Process adaptation over imposition •  Key  Fast prototyping and release cycles ECM is open source powered •  Frequent integration of open source products / libraries •  Enable enterprise processes to cope with platform changes •  Key  Dynamic answer to integration requirements & updates
  • 8.
    Why Alfresco developersneed ALM? Alfresco is a content platform •  Open platform designed for ECM “tailor making” •  Huge spectrum of interdependent projects needing 1.  Creation 2.  Development 3.  Testing and CI 4.  Release Alfresco is growing fast •  In terms of product components & releases •  Typical Alfresco customer penetration phases 1.  POC 2.  Departmental installation 3.  Standard Content Platform for applications 4.  Enterprise CM & Collaboration Foundation
  • 9.
    Manual vs. AutomatedLifecycle Constant Control Predictable evolutions
  • 10.
    Setting the stage 5top objectives for Alfresco ALM 1.  IDE Integration 2.  Fast prototyping 3.  Manage / customize all Alfresco components 4.  External product Integration 5.  Integration in enterprise process / lifecycle 5 top stakeholders for Alfresco ALM 1.  Community / Enterprise Developers 2.  Project Managers 3.  IT / Operations 4.  Enterprise Architects 5.  Alfresco Support
  • 11.
    Flavors of ALMfor Alfresco Cause everybody’s free (to wear sunscreen)
  • 12.
    Available Approaches Ad hoc •  Based on ad-hoc, potentially manual procedures •  Note: Strongly discouraged, error prone & no ALM coverage Full rebuild •  Rebuild Alfresco starting from Trunk/Tags •  Requires enterprise ready process / need for contribution Ant / Eclipse SDK •  Only fully supported Enterprise approach to date •  Covers mostly build / deployment related use cases •  Limited ALM support, difficult integration in Enterprise processes Maven Alfresco Lifecycle •  Available at http://code.google.com/p/maven-alfresco-archetypes/ •  Community artifacts available at http://maven.alfresco.com
  • 13.
    Full rebuild fromSources Rarely needed •  Only in specific contexts •  Community •  Patches •  heavily customized versions •  Enterprise •  Patches  But please check first for hotfixes •  Enterprise practices on software management •  Dangerous •  You might lose support and QA added value •  Check •  http://wiki.alfresco.com/wiki/Alfresco_SVN_Development_Environment •  Basically at your own risk ! 
  • 14.
    Alfresco SDK Available withevery CE / EE release http://wiki.alfresco.com/wiki/Alfresco_SDK Features •  Integrated with Eclipse •  Builds with Ant •  Alfresco & 3rd party libraries available in classpath •  Possible to attach sources & javadoc •  Offer samples (amongst others) for •  Custom Repository Extension •  Custom AMP •  Ant script to integrate in an alresco.war
  • 15.
    Alfresco SDK HowTo Get ahold of it •  Download it from •  Community: http://wiki.alfresco.com/wiki/Alfresco_SDK •  Enterprise: http://support.alfresco.com •  Understand it •  Samples •  SDKAlfrescoRemote & SDKAlfrescoEmbedded projects Use it •  Import it with Eclipse •  Configure alfresco-global.properties to proper DB/data •  Use the samples •  Custom JSF / Foundation services •  Custom AMP
  • 16.
    A good toolto begin with… 5 top objectives for Alfresco ALM 1.  IDE Integration 2.  Fast prototyping 3.  Manage / customize all Alfresco components 4.  External product Integration 5.  Integration in enterprise process / lifecycle 5 top stakeholders for Alfresco ALM 1.  Community / Enterprise Developers 2.  Project Managers 3.  IT / Operations 4.  Enterprise Architects 5.  Alfresco Support Covers only the development & build!
  • 17.
    Maven Alfresco Lifecycle Vision “Provide a flexible standard based approach to support the full lifecycle of an Alfresco application, from inception to release and integration in enterprise processes” State of the nation • Mature project  Releases available since 2009 • Backed by http://maven.alfresco.com • New 4.x compatible release just out! (3.9.0) Get it http://wiki.alfresco.com/wiki/Managing_Alfresco_Lifecyle_with_Maven
  • 18.
    Maven Alfresco Lifecycle4.0 Development features •  4.0 ready Multi module archetype •  Repo/Share •  AMPs •  Dependency management •  Integrated support for TDD Runtime features •  Run embedded in favorite appserver •  Per environment separate configuration Process •  Mandatory integrated versioning! •  Release & distribution for free •  Integration with other ALM tools (e.g. Jira)
  • 19.
    Why Maven &Alfresco ? Standard de facto 1.  Alfresco (and AMPs / JARs) is a <dependency> away 2.  Standard lifecycle commands 3.  Foster build reuse & packaging standardization 4.  Enable simple integration with OSS J2EE best of breed Get your lifecycle to the next level 1.  Support the lifecycle from inception to (maintenance) releases 2.  Integrated with code quality & task management tools 3.  Scales from single community dev to multiple enterprise teams 4.  Legal & Licensing focus 5.  Can track usage
  • 20.
    In other words…theglue for your process!
  • 21.
    Maven Alfresco Lifecycle4.0 Development features •  Multi module archetype •  Repo/Share/Solr •  AMPs •  Dependency management •  Integrated support for TDD Runtime features •  Run embedded in favorite appserver •  Per environment separate configuration Process •  Mandatory integrated versioning! •  Release & distribution for free •  Integration with other ALM tools (e.g. Jira)
  • 22.
    Demo Afresco4.0 up and running in 2 minutes Quicker than the installer and ready to roll 
  • 23.
    Demo objectives Create anew Alfresco 4.0 project 1.  Open your favorite Maven compatible IDE  Eclipse 2.  Create a project from prototype  Maven Archetypes 3.  Manage / customize all Alfresco components  Multi module 1.  Alfresco Repository 2.  Alfresco Share 3.  Solr Run it & release it (early and often) 1.  Run in embedded (supported) Tomcat 2.  Manage versioning 3.  Simple 1 command release
  • 24.
    Maven Alfresco Lifecycle4.0 Deterministic and reproducible builds •  Zero pre-requisites •  Learning curve as complex as ‘mvn clean install’ •  Suitable for CI servers Quick Testing deployment support •  Embedded run •  Environment safe •  Selenium integration Flexible •  Valid for starters and evaluators •  Scale to the enterprise •  Non IDE dependent
  • 25.
    Alfresco & Maven CommunitySupport •  Maven Alfresco Lifecycle Available as of 2007 •  Artifacts on http://maven.alfresco.com as of 2009 •  4.x Community artifacts already available •  Using Sonatype Nexus (http://nexus.sonatype.org/) •  Join maven-alfresco@googlegroups.com Enterprise Support 1.  Target: 4.x EE deployed on http://maven.alfresco.com 1.  Only JARs / WARs 2.  NO POMs 2.  Refreshed version of Maven Alfresco Lifecycle available •  Working to get that integrated as “alternative” SDK
  • 26.
    You don’t wantto say “it’s just work” ™ 5 top objectives for Alfresco ALM 1.  IDE Integration  Any Maven compatible IDE 2.  Fast prototyping  Archetypes 3.  Manage / customize all Alfresco components  Multi module 4.  External product Integration  Most OSS builds with Maven 5.  Integration in enterprise process / lifecycle  Seamless 5 top stakeholders for Alfresco ALM 1.  Community / Enterprise Developers 2.  Project Managers 3.  IT / Operations 4.  Enterprise Architects 5.  Alfresco Support
  • 27.
    And now deepin the ALM space… Future integrations 1.  JIRA •  Mylin •  maven-changes-plugin 2.  Hudson 3.  Sonar In the spotlight •  Open Source 1.  CALM  http://code.google.com/p/maven-calm/ 2.  ALM with Maven  http://jabox.org 3.  Web project hosting  http://www.redmine.org/ •  Proprietary •  Insight (http://www.sonatype.com/Products/Sonatype-Insight)