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!

El Amor Verdadero es lo mejor del mundo, a excepción hecha de los caramelos para la tos…

William Goldman en La Princesa Prometida

Si estás leyendo estas líneas, probablemente sepas que he estado muy involucrado en la Comunidad de Alfresco en estos últimos años:

Y además, hace unos meses, también acepté ser Docker Community Leader para el Zaragoza Chapter.

Cuando me incorporé a keensoft a finales de 2012, no podía haber imaginado que todo esto era posible. Es cierto que ha requerido un poco de pasión y algo de trabajo duro, pero la mayor parte del mérito se debe al apoyo incondicional de mis dos compañeros Santiago Navarro y José Antonio Matute.

Ahora que estoy dejando la compañía para incorporarme a Alfresco, muchos compañeros, proyectos y clientes vienen a mi cabeza. Ha sido una época dorada en mi carrera y guardaré un cálido recuerdo en mi memoria de todos estos maravillosos años.

Gracias a todos los que habéis compartido vuestro tiempo y pensamientos conmigo a lo largo de esta etapa.

Sin embargo, como decía antes, me incorporo a Alfresco como Senior Software Engineer en una semana. Me emociona bastante haber tomado esta decisión, ya que voy a ser capaz de devolver algo de todo lo que este producto me ha dado y me permitirá trabajar codo con codo con personas a las que conozco (y admiro) desde hace muchos años. Por otra parte, ahora que Alfresco está evolucionando tan rápido, es el momento perfecto para entrar a formar parte del equipo de ingenieros.

En realidad, seguiré trabajando desde España, y seguiré involucrado en la Comunidad de Alfresco (y en la de Docker). Así que muchos de vosotros no percibiréis demasiados cambios.

La aventura comienza, ¡icemos las velas y veamos a dónde nos lleva el viento!

Abre puertas distintas. Podrías encontrar en ellas a un tú que ni siquiera imaginabas que podías llegar a ser.

Mary Poppins (película clásica)