ohej

Changes in the Developer Platform

Blog Post created by ohej Employee on Oct 19, 2015

Since our last major Alfresco One release we've been working hard to improve and shift gears on the developer platform. Over the coming months, Gab and I will be travelling around to the different Alfresco Days where we will be presenting on this topic. You can view our slides here.

You may have heard of Release Agility and Share Separation, which is just one of the things we've invested in since.

With Alfresco One 5.1 on its way, we wanted to share some of changes in the Alfresco Platform and explain how they affect you.

Share Separation

We covered this in-depth a while back, but the overall goal here is to split Share from the Repository. This way we can be more agile and release Share separately from the Repository and we provide compatibility between the different versions. This way you can upgrade the repository and leave Share as it is, or the other way around, which ultimately makes upgrading easier and more flexible

Upgrade Task Force

To make updates easier we're working on a tool called 'Update Assistant'. This tool will streamline and automate the process of installing hotfixes and service packs. It takes your customizations into account and only touches on the resources that has actually been changed for the update.

This tool will help you keep up to date on the latest service packs and hotfixes with ease. The tool will be available early next year and will support service packs and hotfixes for both the 5.0 and 5.1 code base.

Supported Extension Points

Alfresco is designed with customization in mind, but we have never defined a clear set of supported extension points, and we have not been doing a good job at hardening those extension points and APIs.

In the beginning of the year we did a big round of research where we talked to our customers and partners about various pain points relating to upgrades. One of the biggest issues we identified was customizations breaking between Alfresco releases.

With Alfresco One 5.1 and the Developer Platform project we aim to solve this by defining a clear set of supported Platform and Share Extensions.

Each extension point will be fully documented in the documentation. Eventually as we iterate through the list we will add both complete code samples, a test suite and a tutorial. You can already see some of the work in the docs. The testsuite will be running as part of the build, which helps us ensure we do not break customizations.

The list of extension points are not set in stone, and we will keep adding extension points as we find and validate them with our customers, partners and community. If you feel an extension point is missing we want to know about it! Leave a comment in JIRA, here on the blog or reach out to us by email.

The key take away from the idea of supported extension points: If you are customizing Alfresco and you keep your customizations within the supported extension points, your customizations are safe and should not break between upgrades within a major version.

Module support

Beginning from 5.1, we introduce a new way of loading modules. This means that there will be a new 'modules' folder in the installation directory. Here you can place your modules, and they will be loaded from here. No need to use MMT to install, simply drop your AMP or JAR in here - yes, we will officially support JARs as a packaging format beginning from 5.1.

We are working on Alfresco SDK 3.0 which will feature JAR support, while still supporting AMPs.

You can still continue using MMT to install AMPs, but the recommended way of installing modules will be to place them in the modules folder.

Developer Documentation revamp

We are in the process of completely revamping the developer section of the official docs. We have a completely new 'Developer Guide', 'Architecture Guide' and a 'Reference Guide'. We are taking a use case/task driven based approach, which means that the extension points will be the basis for most of the developer guide, along with tutorials and samples which lives on GitHub.

We will continue to update and publish more in-depth blog posts about these topics as we get closer to the release. We look forward to your feedback!

Outcomes