Alfresco Global Virtual Hack-a-thon – Spring 2019

Language detection during indexing

This year Alfresco has celebrated a Hack-a-thon in Spring, in addition to the classic Autumn Global Virtual Hack-a-thon happening in October during the last years.

A hack-a-thon is an event in which software developers, architects, interface designers and – to a lesser extent – project managers collaborate in a restricted time span on a project of their choice outside of the normal work environment and its restrictions. The projects can be anything – experimental prototypes and extensions to existing functionality that people normally don’t get around to coding are popular options. In the context of the Alfresco community we have expanded this meaning to cover anything related to the Alfresco product, its ecosystem and community. You can find a detailed view of the projects developed during this hack-a-thon in the Community page.

This year I’ve been focused during the event on language auto detection during indexing. On current Alfresco versions, content language is set at Alfresco Repository by using client locale configuration. When indexing, SOLR takes this language from repository to perform the indexation. However, when working on cross-locale environments, some users are uploading content in a different language from client language settings. Having the right language identification will provide better results when searching.

A first approach to this concept has been drafted at:

I was using LangDetect library in class SolrInformationServer to inspect the first 10k characters of text from every document in other to set the locale based on this language detection. This little tweak allows the content to be indexed with the right locale, without relying on the erratic previous behaviour, based in repository browser detection one.

During the session, this auto detection feature has been tested with a wide document catalog in different languages (English, Spanish, French and Tagalo) and the results were very accurate.

I was using URLs like the following one to inspect the property of the locale field in SOLR, as using the facet.field property allows to select what Document properties are being returned by the query:


At the end of the day, this is my recap:

  • When reading all the document to auto detect the language, execution time grows proportionally to document extension. This could be useful if Alfresco SOLR Model were storing locale property as a multiple value, but this property is simple by now. This is why I included a text length limitation, to control the performance of the feature.
  • Tika also provides a langdetect library, but this library relies in Google Guava 16.01, that is incompatible with Alfresco SOLR Maven project. Externalising the auto detection could be considered for using Tika or any other tool like Textract for language detection.

I’ve been sharing the day in the Hacker Room with my former colleagues Daniel Fernández and David Martos and virtually with many other well-known Alfresco Developers. As in the past years, Axel Faust and Francesco Corti have been following the session during all the Sun-to-Sun day.

If you didn’t participate this year, it’s time to prepare the Alfresco Global Virtual Hack-a-thon – Autumn 2019!

Alfresco Meetup Seville 2019

9th April 2019

The first Alfresco Meetup in six years in Seville, happened yesterday at the University of Seville.

The event was organized by Miguel Sánchez, an Alfresco enthusiast and long experienced developer in the platform. The meeting was celebrated in The Chapel room, a reconditioned space decorated with stained glasses that reminded us of the old days.

Miguel Sánchez started the day with an introductory session to Alfresco and its relation with business models. Alfresco is used around the world and the requirements in every zone are different, but it’s still possible to work globally for an expert in the platform.

Next session was delivered by Angel Borroy, Alfresco Engineer, who explained the features and the news of the Alfresco Search & Insight Engine product. “Alfresco Search Services” is the name of the Community version of this product, while “Alfresco Search and Insight Engine” is the name for the Enterprise version. Since both are Open Source and they share the same core, Insight Engine provide additional features (like JDBC connector) and the source code is only available for customers.

During the live demo, the attendees learnt how to configure Search Services for cross locale environments, where users are managing content in different languages at the same time, and they could understand how searching is applied in many different components of the platform. After the playing time, the new JDBC syntax for SOLR was presented. This connector allows the user access SOLR as a database, what improves the ability to build control panels with tools like Apache Zeppelin, Qlik or Tableau.

On the next session, the comparative between Alfresco Process Services (APS) 1 and APS 2 was explained by Miguel Sánchez. APS 2 relies on a new paradigm based in Cloud Native Architecture concepts, what makes it hard to compare with the existing product in terms of development and deployment procedures. However, regarding the user features, the Activiti Team has been focused on providing an equivalent (and compatible) set of tools for developers. For instance, the new Model Application is producing resources (BPMN XML and JSON Forms) that are mainly compatible with previous version. Despite the UI has been migrated from AngularJS to ADF (based in Angular), the movement is painless as there were many developers just building applications with ADF over APS 1. Although, when migrating previous projects, some work needs to be re-done, the transition seems not to be that hard.

The last session was provided by Miguel Ángel Martín, Engineer at Ixxus. He presented a message based approach to design connectors for APS 2.0, where events are triggered by listening to topics in these message queues. On a thrilling live demo, Miguel Ángel used Slack as translating tool by connecting the service with DeepL through an APS 2 Connector. The process was initiated from a message in Slack and the translation was sent again back to Slack by using a new message.

It was a great day, with attendees coming even from Portugal (thanks to Sergio, Eva and Tiago), but we missed some student in the session. Anyway we’ll keep on spreading the word, as Alfresco is also Community and Community is built on passion, personal relations and the will to help to the others.



Thanks for all your effort Miguel and see you all next time!

True love is the best thing in the world, except for cough drops!

William Goldman from The Princess Bride

If you are reading these lines, probably you know that I’ve been deeply involved with Alfresco Community in the last years:

  • I’ve been participating and speaking in every Alfresco Developer Conference from 2013
  • As member of the Order of the Bee, I was collaborating in the organisation of BeeCon 2016 Brussels and BeeCon 2017 Zaragoza
  • I authored many Alfresco related blog post in different sites: keensoft, Order of the Bee and Alfresco Community mainly.
  • I’ve recorded tutorial videos and I’ve participated in Tech Talk Live sessions in Alfresco YouTube Channel and also in keensoft YouTube Channel
  • I’ve been contributing to about 75 Open Source repositories related to Alfresco mainly at keensoft GitHub
  • I’ve been training in Alfresco to more than 200 people
  • I’m moderator at Alfresco Community and usual suspect at IRC/Discord Channel

And apart from this, I’m also Docker Community Leader for Zaragoza Chapter.

When I joined keensoft in 2012, I couldn’t have imagined that all this was possible. Obviously, a bit of passion and some hard work has been required, but the key has been to rely on a so confident teammate like Santiago Navarro and José Antonio Matute.

Now that I’m leaving the company to join Alfresco, many colleagues, projects and customers come to my mind. It has been a golden season in my career, and I’ll keep a warm place in my memory from these years.

Thanks to all of you who shared your time and thoughts with me at this stage.

But, as I announced before, I’m joining Alfresco as Senior Software Engineer in one week. I’m really excited about this movement, as I’m going to be able to give back some to the product and to work with fellows I know (and admire) from many years ago. And now that Alfresco is moving forward so fast, it’s the perfect time to be involved in the product.

I’ll be still based in Spain, and I’ll be still involved in Alfresco (and Docker) Community. So, no major changes will happen for many of you.

Let’s hoist sails and let’s see where the wind blows us!

Open different doors. You may find a you there that you never knew was yours.

Mary Poppins movie