Alfresco SDK Past, present and future. Ole Hejlskov Product Manager, Developer Platform &

Slides:



Advertisements
Similar presentations
Introduction to Maven 2.0 An open source build tool for Enterprise Java projects Mahen Goonewardene.
Advertisements

Developing in CAS. Why? As distributed you edit CAS 3 with Eclipse and build with Maven 2 – Best Practice for Release Engineering – Difficult edit-debug.
Introduction to Maven Michael Youngstrom. Notes This is a training NOT a presentation Please ask questions Prerequisites – Introduction to the Java Stack.
Build your Android App with Gradle Android new build system.
Java Build Tool Comparison HJUG - April 29th, 2009 John Tyler.
Maven: Build and project management in the 21th century.
Eclipse Architecture Dwight Deugo Nesa Matic
Presented by IBM developer Works ibm.com/developerworks/ 2006 January – April © 2006 IBM Corporation. Making the most of Creating Eclipse plug-ins.
Microsoft ASP.NET AJAX - AJAX as it has to be Presented by : Rana Vijayasimha Nalla CSCE Grad Student.
Agile Testing with Testing Anywhere The road to automation need not be long.
Web Applications Basics. Introduction to Web Web features Clent/Server HTTP HyperText Markup Language URL addresses Web server - a computer program that.
G51FSE Version Control Naisan Benatar. Lecture 5 - Version Control 2 On today’s menu... The problems with lots of code and lots of people Version control.
Open source administration software for education research administration Lin-Long Shyu System Analyst Kuali Coeus Technical Team Indiana University
Alfresco – An Open Source Content Management System - Bindu Nayar, Bhavana Mohanraj.
Chris Hyzer University of Pennsylvania
Maven & Bamboo CONTINUOUS INTEGRATION. QA in a large organization In a large organization that manages over 100 applications and over 20 developers, implementing.
MAVEN-BLUEMARTINI Yannick Robin. What is maven-bluemartini?  maven-bluemartini is Maven archetypes for Blue Martini projects  Open source project on.
Sumedha Rubasinghe October,2009 Introduction to Programming Tools.
What’s new in Stack 3.2 Michael Youngstrom. Disclaimer This IS a presentation – So sit back and relax Please ask questions.
Platform Upgrades As A Service Raj Nagarajan, Robert Enyedi.
COLD FUSION Deepak Sethi. What is it…. Cold fusion is a complete web application server mainly used for developing e-business applications. It allows.
© 2005 by IBM; made available under the EPL v1.0 | May 19, 2005 Tim deBoer WTP Server Tools Open House.
240-Current Research Easily Extensible Systems, Octave, Input Formats, SOA.
JAVA EE 6 Best Practices for Migrating Spring to WTF ?!?
Build Systems Presentation December 14, 2015 Noon-1pm Kathy Lee Simunich Bldg. 203/ D120 Brought to you by: Argonne Java.
Version Control and SVN ECE 297. Why Do We Need Version Control?
Maven. Introduction Using Maven (I) – Installing the Maven plugin for Eclipse – Creating a Maven Project – Building the Project Understanding the POM.
Modern Development Technologies in SharePoint SHAREPOINT SATURDAY OMAHA APRIL, 2016.
#SummitNow Lessons Learnt From Share Extras Alfresco Summit 2013 Will Abson
Apache Maven as a Community & Enterprise enabler Gabriele Columbro Principal Architect, Alfresco Software.
Unlocking the Secrets of Alfresco Authentication Mehdi BELMEKKI, Consultancy Team Alfresco.
The Maven Alfresco SDK™ At the end of a journey, there is always a new beginning…
Platform & Maven2 David Šimonek. Certified Engineer Course Agenda What is Maven? Why Maven? NB IDE & Maven NB Platform & Maven.
Sitecore upgrades The Past, The Present, The Future.
XNAT 1.7: Getting Started 6 June, Introduction In this presentation we’ll discuss:  Features and functions in XNAT 1.7  Requirements  Installing.
Alfresco 5.1: separating Platform and Share Samuel Langlois Build engineer at Alfresco.
PTC Navigate & Thingworx based App Development
Data Virtualization Tutorial… SSL with CIS Web Data Sources
Open-O Integration Project Introduction
Top 8 Best Programming Languages To Learn
Portals: Background, Development & Conversion
Maven 04 March
CS520 Web Programming Introduction to Maven
Build Automation with Gradle
Business Directory REST API
Software Testing.
Understanding SOAP and REST calls The types of web service requests
Google Web Toolkit Tutorial
Play Framework: Introduction
of our Partners and Customers
Brian Leonard ブライアン レオナルド
prepared by hasan.we4tech.com
Why Magento 2.0 Is Best E-commerce Solution ?
Haritha Dasari Josue Balandrano Coronel -
Software engineering – 1
Migrating Oracle Forms Using Oracle Application Express
Lecture 1: Multi-tier Architecture Overview
Introduction to SharePoint Framework
ESIS Consulting LLC (C) ESIS Consulting LLC. All rights reserved
JENKINS TIPS Ideas for making your life with Jenkins easier
Agile testing for web API with Postman
Discussing an OVS/OVN Split
Journey to the Cloud – Guidance and Lessons Learned
David Cleverly – Development Lead
Introduction to ASP.NET Parts 1 & 2
Overview on CI Use JJB (Jenkins Job Builder) to manage Jenkins jobs.
Session Abstract This session will provide an overview of the latest improvements and enhancements made to the Ed-Fi ODS/API in 2016, as well as a preview.
SSDT, Docker, and (Azure) DevOps
Presentation transcript:

Alfresco SDK Past, present and future

Ole Hejlskov Product Manager, Developer Platform &

Some of you may know me as ohej Works at Alfresco as Developer Evangelist Transitioning into product management –I’m responsible for Developer Platform & API’s 6 years of experience working with Alfresco Co-founder of Order of The Bee Community contributor –SDK contributions –Aikau tutorials –Almost always online in Open Source enthusiast About me Ole Hejlskov Product Manager m m

About me The Good, The Bad and The Ugly The Past, Present and Future Demo Questions 4 Agenda

The Good

Alfresco SDK has gained traction Easy to get started Example code and tests Hot reloading SDK 2.0 and 2.1 really improves productivity More and more fixes in product rather than SDK Integrates easily with IDEs Combined with hot reloading it gives the Save’n’refresh feel Debugging is easier Easy to get help If you are facing an issue with your code, having it all in an SDK project it is easy to send the whole project and have get help in the community This also applies to Developer Support! A lot of good resources SDK Video tutorial (a bit old, but still valid) SDK Video tutorial Revamped documentation

The Bad

Alfresco SDK was created before Alfresco was fully “mavenized” This means that a lot of hacks was made in the SDK H2 support ended in limbo Solr artifacts changed in 4.2.f, 5.0.c and 5.0.d Solr SSL / Repo SSL hacks Replacer plugin to comment out sections in web.xml Complex compatibility matrix

The Bad

Alfresco SDK was created before Alfresco was fully “mavenized” This means that a lot of hacks was made in the SDK H2 support ended in limbo Solr artifacts changed in 4.2.f, 5.0.c and 5.0.d Solr SSL / Repo SSL hacks Replacer plugin to comment out sections in web.xml Complex compatibility matrix Java 7 vs Java 8 SDK 2.1 was Java8 only SDK reverted this so it once again works with Java7 SDK 2.2 is compatible with Java7 and Java8, but 5.1 only works with Java8 SDK 2.2 is only compatible with Alfresco 5.1 and onwards

The Ugly

AMPs + Custom directory layout + hot reloading == Messy classpath alfresco-maven-plugin installs AMP into the WAR Also copies everything to target/classes + target/test-classes Same resources present in three locations, which one wins? Resources are loaded twice (at least) Will every IDE respect all the instructions to make sure files are put in the right place? YES – but it takes ~150 lines of Maven configuration Archetype changes between almost every release Static copy of H2 dialect DB scripts causes incompatibility Upgrading a SDK project is a major pain

The Past, Present and Future

The Past

Alfresco Maven SDK Founded by Gab and Maurizio - All-in-one + Repo AMP archetypes - Limited features - Mostly focused on building AMPS and running 2013 Alfresco Maven SDK Remote unit test runner - JRebel support - Solr support -Code migrated to GitHub -2.0 released -First release on Maven Central -Fully supported by Alfresco -Renamed to “Alfresco SDK” -Hot reloading -Spring loaded for Java hot reloading -Functional and regression testing -Share AMP support released -Improved hot reloading -Full documentation revamp

The Present

2.2 released Number of bug fixes Dedicated H2 artifact (Thanks Samuel!!) Remove Java8 dependency However 5.1 is only supported on Java8 ONLY Compatible with 5.1 No spring-loaded Security issue in spring-loaded causes trouble not compatible with 5.1 Works if you manually patch with H2 scripts or use an external DB

The Present Features of the Alfresco SDK 2.2 Today All-in-one, Repository AMP and Share AMP archetypes Hot reloading Java classes (spring loaded) Static resources (client side Javascript and CSS) Server side javascript Spring Beans Can be added by using JRebel, but we have seen a number of issues regarding behaviours being loaded multiple times Dynamic “refresh web scripts” when compiling/process-resources IDE Integration Eclipse and IntelliJ IDEA works mostly out of the box

The Present is not compatible with 5.1.x 2.2 is only compatible with 5.1 but not introduced a new table for authorization The SDK contains a copy of the PostgreSQL DB scripts that H2 uses The H2 scripts are now out dated This issue also affects and SDK projects The solution was to create an H2 artifact that is released along with the repository – including community edition We now have this from 5.0.d and onwards SDK can be modified to work with 5.1 Working example can be found herecan be found here

The Future

Let’s step back for a minute..

What is the problem we are trying to solve?

“As a developer I need simple, agile, and future- proof tools to extend Alfresco so that I can meet the needs of my evolving business” Modern, Industry-Standard Conventions and Tooling, Comprehensive and Reliable Public APIs and Supported Extension Mechanisms That Work Across Versions of the Product I expect to achieve this with

Requirements Lifecycle managementLifecycle management ToolingTooling Hot reloadingHot reloading Seamless integration with IDEsSeamless integration with IDEs Based on standards and conventionsBased on standards and conventions Small footprint on projectsSmall footprint on projects Easy to upgradeEasy to upgrade Compatibility across versionsCompatibility across versions Users should not have to be a Maven expert to get the SDK runningUsers should not have to be a Maven expert to get the SDK running

It all starts with a JAR 25

The Future AMP vs JAR FeatureAMPJAR 3 rd party dependenciesYesNo Control module load orderYesNo Isolated and separated class pathNoYes Transient dependency managementNoYes Works for both repo and shareYes Invasive/Complex Maven setupYesNo Seamless integration with IDEsNoYes Easy to create cross project dependenciesNoYes

The Future JAR Support in 5.1 ${ALF_HOME}/modules/[platform|share] Simple module, no 3 rd party dependencies Include module.properties Put static assets in META-INF/resources Servlet3 specs takes care of this Put web fragments in META-INF/web-fragment.xml Allows additive changes to web.xml Look at Alfresco SDK Samples in GitHub for references 5.1 still support AMPs – no change Install with MMT as usual Supports 3 rd party dependencies

The Future JAR Support in 5.1 ${ALF_HOME}/modules/[platform|share] Simple module, no 3 rd party dependencies Include module.properties Put static assets in META-INF/resources Servlet3 specs takes care of this Put web fragments in META-INF/web-fragment.xml Allows additive changes to web.xml Look at Alfresco SDK Samples in GitHub for references 5.1 still support AMPs – no change Install with MMT as usual Supports 3 rd party dependencies Neither AMPs or JARs are module systems!

The Future Why not just go OSGi? OGSi would be a major effort and investment Some efforts has been tried in a community project Extremely invasive Not all our dependencies are available The foundation for OSGi is a JAR

The Future.. But Java 9 has this new cool thing It sure does, and we’re following it closely… but it is simply not there yet

The Future Alfresco SDK 3.0 is under development JAR Support is a key feature Makes IDE integration effortless – “it’s a JAR, it just works” Standard directory layout – no more src/main/amp/* AMP as an optional assembly Consolidate “runner” logic into a plugin mvn alfresco:run Can run repo, solr and share – or each individually Optional parent pom Testing (Unit, integration and functional testing) Hot reloading Integration with Alfresco SPK Yeoman generator – Thanks Bindu!!!!!

Demo 32

The Future JARs are just the first step We are actively investigating a new module/plugin system for Alfresco OSGi does not seem to be the answer, but it has not been fully ruled out By reverting to a JAR with AMPs as an optional assembly it becomes easy to support a new format while still ensuring backwards compatibility We do not currently have a timeline for the new module system

@alfresc o Questions? 34

@alfresc o Thanks! </presentation>