These are project ideas and teams for the 2018 Global Virtual Hack-a-thon.
The hack-a-thon is scheduled for Friday, October 5th, 2018.
For people with a project idea
We encourage you to keep your project idea short and provide any additional details in separate document or blog post within the Collaborate space. This may also allow you to coordinate with potential team members via the comments there without being mixed in with any discussions on this page.
For people looking to join a project
Please feel free to add your name to any project(s) you are interested in participating. Don't hesitate to add your name to multiple projects if you are considering multiple at this point. We encourage you to use this platform to contact the owner of an idea to discuss any details you are unsure about or even improve upon the idea.
Apart from any plans you make with the owner of an idea, you are not bound to actually participate in the project you indicated here. When you join the hack-a-thon on the day of the event you can check with other project teams and join a different project, if that turns out to be a better fit for you.
The global virtual hack-a-thon is as much a social event as it is a coding one. This means a lot of the attendees for this event often use it to exchange ideas and discuss other matters in the general Alfresco context. To do this, everyone that attends the global virtual hack-a-thon should be prepared to join any of the commonly used communication channels for this event. In the past the main tools have been the IRC chat #alfresco (via chat.alfresco.com or a desktop client), Zoom and Google Hangouts. This year we also have an #alfresco channel on Discord.
After the event has come to an end, we encourage everyone that worked on a specific project idea to update the listing on this page with an overview of the project team and a link / reference to the results of the project (e.g. a GitHub repository, document or blog post in this space).
Community Platform / Engagement
Platform Document Review + Action Plan
Idea owner: Axel Faust
Description: In September 2016 the existing community wiki contents were migrated "as-is" from the old MediaWiki-based system into the Jive community platform. This includes a lot of content that was already marked as obsolete in a bulk operation by Richard Esplin since the Alfresco product had outpaced the community efforts (or lack thereof) to keep the information up-to-date. This information still is the bulk of the "documents" inside the ECM space today and only a few documents have been added since.
As part of this project, the community should review the documents that are currently contained in this platform, determine content that would be important to update / add and define an "action plan" of priorities / topics that should be covered. It may be unrealistic to try to make this platform into a full fledged wiki again (and keep it up-to-date/relevant), but if we can identify areas where documents could provide a significant "added value" to the official documentation, efforts could be much more concentrated and efficient, e.g. considering the "work/points balance".
*Logistically, if we can add a tag to the things you evaluate and deem obsolete, we could move these items to an archived space, pulling them out of the ECM space and moving them down in search results. (Kristen)
Prep work: None really, but it sure does not hurt to look through the existing content and maybe think about what important contents you have been missing before...
- Or you, ma'm?
- Maybe you, sir?
Gradle SDK for Alfresco
Idea owner: Thijs Lemmens
Description: Gradle has gained a lot of popularity in the last couple of years. With this project we would like to start a Gradle plugin supporting the development of Alfresco customizations. Support could go from dependency management to packaging as an amp, or maybe even in a docker image. Plugin development would be done in Java.
Prep work: Get familiar with the Gradle concepts, and how to write a plugin.
Better Trash Management (cont'd)
Idea owner: Axel Faust
Description: Current trashcan management tools in out-of-the-box Alfresco are extremely underwhelming. The page to clear / restore items is extremely user unfriendly (you can either clear everything of have to wade through a sea of checkbox-marking + data reloading; you cannot search and only see the top level deleted item) and the trashcan cleaner (both as an addon and as an integrated tool in 5.2) is a brute force job that deals with large amounts of deleted items extremely inefficiently.
This is a continuation of the efforts from the Global Virtual Hack-a-thon 2017 and the DevCon 2018 Hack-a-thon. A basic UI already exists and simple navigation / recovery works. The UI needs a bit of polishing, some utilities for custimisation of individual archived items, and especially functionality to access / deal with non-file/folder items in the trash can.
Prep work: Work with the current solutions and fuel your motivation with the pain + suffering that they inflinct... And maybe have a good understanding of how to write Aikau UIs.
Persistent, runtime subsystem configuration (OOTBee Support Tools)
Idea owner: Axel Faust
Description: Alfresco subsystems always provided an API to change their configuration at runtime, be restarted and use an abstract backend to hold persistent state. This is part of the Alfresco core, so it should not be quite simple to fill in the few missing pieces to get a similar "runtime configuration" experience that Alfresco Enterprise always provided to its users. This could then be used as a basis for OOTBee Support Tools to provide the UI tools for administration users.
Prep work: Check out OOTBee Support Tools, get to know our approach to adding new tools and maybe try to work on a small contribution for an issue in our backlog to get acquainted with our contribution process...
What has been achieved:
- Implemented a PropertyBackedBeanPersister to collect events from PropertyBackedBean instances (primarily subsystems) and persist modified properties via AttributeService
- Implemented an extension to the proposed "command console" tool in OOTBee Support Tools to allow runtime interaction with subsystems (listing of instances, listing of properties, modification of properties)
- GitHub - AFaust/ootbee-support-tools at persistent-subsystem-config-with-subsystem-console (consolidated branch of persistence feature with secondary feature to actually interact with subsystem configuration)
Idea owner: Piergiorgio Lucidi
Description: A new functionality to enable monitoring capabilities for each Alfresco Java API Service. We could add a DropWizard integration inside the Alfresco repository to make easier storing metrics of Java services against any monitoring platform such as ELK or Apache Solr. We could have different ways to implement this idea: a new subsystem or a new set of interceptors to add in Spring proxies or simply implementing all the needed Java behaviours around services using each specific policy.
What we have done
This new plugin allows you to get some data from the execution of Alfresco Java Services, at the moment it supports only the NodeService but it can be extended very easily with all the other services. Actually it includes the following libraries:
- DropWizard Metrics (Core, Servlets)
- Metrics ElasticSearch Reporter provided by Elastic
For tracking Java Service you can use two different approaches:
- adding the Monitoring Aspect to contents and set which Behaviors you want to trace (similar to the cm:indexControl aspect)
- overriding the Alfresco Public Services (Java API) adding the related MonitoringMethodInterceptor (now you only see the NodeServiceMonitoringInterceptor)
- GitHub - OpenPj/alfresco-monitoring-services: This is an Alfresco plugin to add Monitoring capabilities to track Alfresc…
- GitHub - OpenPj/share-monitoring-services: This is the Share extension of the Alfresco Monitoring Services plugin
Material Design Share theme
Idea owner: David Webster
Description: Using Share's built in CSS theming capabilities, I'd like to explore how easy it is to create a theme that enables Share to look visually similar to the Material Design principles now used across other Alfresco developed UIs. I think we should be able to make decent progress and create an open source theme that everyone in the community could use to increase the consistency of the user experience when Share is deployed alongside ADF based applications.
The new simple workflow
Idea owner: Angel Borroy
Description: Since Alfresco 6, using bundled Activiti workflows is discouraged, as the integration of Activiti and Alfresco Repository will be removed soon. Without default approval workflows, it will only remain the simple approval workflow available for the users. However, this feature has some limitations:
- Approval users cannot be selected
- Only allowed actions after approval / rejection is to copy or to move the document
- No notifications are sent to stakeholders
- No feedback (i. e. comments) is gathered from approval / rejection actions
The main target for this module is to provide a Repository design for a simple approval/rejection workflow including those missed features and easy to integrate in ADF.
The customisation of this module will not require Alfresco SDK (Maven) skills.
Turning Content Services into a Jetty-based fat JAR executable
Idea owner: Axel Faust
Description: Currently, Alfresco Content Services typically runs inside a Tomcat application container. While he is no longer with Alfresco, Richard Esplin has previously stated that Alfresco may be looking into turning Content Services into a simple, self-contained executable process. I myself have recently been looking into GraalVM, and its constituent component SubstrateVM which is used in compiling regular Java applications into executable binaries without the need for a JDK. While it is a long way off to turn Alfresco into an executable binary, the first step invariably entails turning Alfresco into a simpler, self-contained executable Java application. This project would focus primarily on getting Content Services to run in a Jetty server, and building a fat JAR out of all the necessary components (Jetty JAR, Alfresco WAR(s), and maybe some typical addon JARs/AMPs like ootbee-support-tools).
I have already done some preparations in the last couple of weeks to create initial fat JARs and Runner projects.
Update Alfresco SDK to work with ACS 6.X
Idea owner: Ole Hejlskov
The Alfresco SDK does not support ACS 6 in its current form. Multiple issues are present: It is not possible to leverage H2 anymore, artifacts have changed, renamed or removed. A new approach could be to leverage Docker containers to take care of spinning ACS 6 up. Alfresco already provides docker containers for ACS 6, so we could leverage fabric8.io which is a Maven Plugin to build and run containers. This would greatly reduce the complexity of the Alfresco Maven Plugin, however it will break backwards compatibility with the SDK. This is an unfortunate side effect, and it would be worth discussing and exploring different options as part of the hackathon. The main issue to solve would be to figure out how to apply JARs and AMPs into the ACS 6 container, and as a bonus to enable hot reloading using JRebel or HotSwap Agent.
Automatic transfer of obsolete versions to different content store
Idea owner: Filip Bruska
In case you use versioning in your repository, you can save some money if you move obsolete (not latest) versions to slower disk. Based on my understanding. the content store selector feature is not available in CE. Our aim would be to implement something similar for community.
- Alfresco team in Tieto
Finding: It is not so easy to transfer versions :-)
Idea owner: Filip Bruska
This "have some fun" application displays map of the world with pins from photos stored under specific folder in Alfresco. Google Cloud Vision API is used in order to get GPS coordinates.
- Alfresco team in Tieto
Result: ADF app which displays world map with pins from photos stored in Alfresco.
Source and more info about architecture: GitHub - FilipBruska/photo-map: Tieto Project for Alfresco Hackathon 2018
Assignment of Workflows to Other Users (Vacation Re-direct)
Idea owner: Vidhi Panchal from ContCentric
When a user in Alfresco goes for a vacation, his workflows are stuck. We aim to create a configuration where a user who is planning to go for a vacation can assign each of the workflows, where he has a compulsory role to act, to another user by selecting a from & to date & time. This way, the business processes are not stuck and the administrator doesn't have to fire-fight.
- Alfresco team at ContCentric i.e. Bhushan Kothari Kintu Barot Yash Patel Rahul Pethani prachi shah Rahul D Paul ClintonShyam Ghodasra
Use Activiti 7 Messaging system to store Tasks and Processes in a graph database
Idea owner; Mario Romano
Description: Activiti 7 along side with a lot of cool things introduce a messaging system based on Spring Cloud Streams, the objective is to catch the events fired by the engine to store them in a graph structure inside Neo4j Graph DB. The produced artefact will be a ms, most likely built with springBoot.
Application Development Framework
Edit /Offline extension for Example Content App
Idea owner: John Knowles
A few implementations of the "Edit " feature (leveraging the AOS module in ACS) are already available as ADF components. With the release of the Alfresco Example Content Application 1.4 we have introduced extensibility features which enables developers to create modules that extend the application. It would be a great addition to see the Edit (using AOS) and/or Edit Offline updated and wrapped into a plugin module to easily enable it inside the app.
Content Editor for ADF and Example Content App
Idea owner: Eugenio Romano
ADF does not currently have the capability to edit text or HTML documents stored in ACS. The Monaco Editor is already available in some ADF projects and it would be great to use this for things like editing plain text files and markdown. We could also consider another WYSIWYG editor such as TinyMCE. Added bonus for wrapping this as an extension for the Example Content App.
Automated plugin and library installations for ADF/ACA
Idea owner: Denys Vuika
Description: For the time being ADF/ACA extension libraries require several steps to get integrated into an application: installing from the NPM, then configuring JSON definition, optionally adding extra dependencies and asset files. The idea is to define some sort of convention for an ADF plugins and its artifacts, and have a command line tool that is able to install the library, configure all assets, and even change the "app.module.ts" file to register extra Angular modules.
Look through the following libs:
Project link: GitHub - DenysVuika/alfresco-hackathon-2018
Use the extension mechanism of ACA to include AOS (again)
Idea owner: Angel Borroy
Last year we ported AOS Edit feature to ADF as component. After that we tested a practical integration of this NPM component into ACA, what resulted in a blog post available at Our approach for extending Alfresco ADF applications - keensoft. Also Kasper Reijnders wrote (again) a new NPM module for this AOS feature some months later. In fact, this two versions of the component (Kasper Reijnders version is more or less the same as the previous one) are available at npm together with an electronic signature one as the only ADF packages from the Community.
As AOS Edit feature is not included by default in ADF nor in ACA, we are going to explorer how to use the new extension mechanism provided by ACA (Alfresco Content App) to include this feature in the "Open With" actions list. We'll share our experience in a form of blog post, video or (hopefully) source code.
Use ADF framework with Activiti 7 Cloud
Idea owner; Maurizio Vitale
Description: Create a PoC that shows how an ADF component like the ProcessListComponent is able to render process instances created with the Activiti 7. The new component will also integrate the material pagination and sorting to have a concrete solutions.