Projects and Teams Global Virtual Hack-a-thon 2017

Document created by afaust Moderator on Jul 9, 2017Last modified by cjose on Oct 13, 2017
Version 93Show Document
  • View in full screen mode

These are project ideas and teams for the 2017 Global Virtual Hack-a-thon.

The hack-a-thon demo is scheduled for Friday, October 6, 2017. The demo recording will be posted here: Office Hours: Global Hackathon Demo - YouTube 

 

 

Instructions

 

For people with a project idea

For each project, you should consider addressing the following:

  • The idea owner(s)
  • A brief description
  • Any prep work for the project, such as developer tools or skills participants should understand

 

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.

 

For everyone

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) and Google Hangouts.

 

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).

 

Projects

 

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...

Interested parties:

 

Extend core model to support properties on associations

Idea owner: Yogesh Kode

Description: Currently properties cannot be added to Associations. There are several situations were a qualified association is required. One way to get around this limitation today is to make the association with properties a "type" where in you end up creating two associations instead of one association. This creates a scalability issue. Let us take the following example: We can have several stake holders of a content. So we can define an association between Content and Person.

a type and put a property and then define two associations.

  <types>

    <type customContent >

        <associations>

            <association>

               between customContent and contentStakeHolder

            <association>

       </associations>

    </type> 

    <type name=contentStakeHolder>

      <property> stakeHolderType </property>

      <associations>

            <association>

               between contentStakeHolder and person

            <association>

       </associations>

      </type>

      <type person>

         ...

      </type>

</types>

 

As can be seen from above, one association is broken into 2 associations. This creates custom implementation and maintenance. It would be nice if the Association tag could be extended to support properties and associations - something similar to the following:

 

<type customContent>

             .....    

       <associations>

            <association name=contentStakeHolder>

                between customContent and Person

                 <properties>

                    <property name=stakeHolderType>

                    </property>

                 <properties>

                  <associations>

                        <association>

                              between contentStakeHolder and XXXX [this is a contextual association that is valid only for certain content to person association for example.

                        <association>

                  </associations>

            <association>

       </associations>

</type>

 

In a nutshell the OOTB core should be extended to support qualified and contextual associations. (Edit by Axel Faust: idea was triggered by discussion on a "does this feature exist" type of question)

 

Prep work:  None really

Interested parties:

  • be the first...

 

Content Services

 

Better Trash Management

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.

It should be pretty straight forward to build a far better experience using Share/Aikau and Alfresco's full-text search capabilities.

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.

Interested parties:

Result:

  • Ensure archived items are SOLR-queryable by the user that archived them (permissions weren't guaranteed to be set to support SOLR)
  • Aikau page for simple query / filtering of archived items
  • Fix support for renditions / thumbnails on archived items (workaround for a 6-year old workaround for ALF-6192 and ALF-4119)

Source Code: GitHub - AFaust/alfresco-better-trashmanagement: Project of Alfresco global, virtual hack-a-thon 2017 


Data Load via V1 REST API

Idea owner: Andrei Rebegea
Goals:

  1. Leverage the power of the V1 REST APIs to showcase interactions with the Alfresco repository;
  2. This tool could be used to assess if the community version/single instance Alfresco could be enough to be used by an organization that requires a certain amount of load on the system.

Description: Extend the benchmark framework ( https://github.com/AlfrescoBenchmark/alfresco-benchmark ) to leverage the V1 REST APIs for doing data load on a repository
This includes the creations of users, sites and files.
Simulate real world scenarios where average is not everything: have folders with huge number of child items; have very complex and deep folder structures; huge files; have very popular sites(lots of members and lots of files);
Find a way to load the content with popular file formats (some that can be indexed by solr) : txt, html, pdf, documents, images, videos... (maybe do a web crawler for different formats - start the search with Alfresco related keywords)
Try to create folder rules(APIs for this may not be available yet), move/copy(/delete/lock for edit) items around, simulate files that are changed very often - versioning/history;

Interested parties:

 

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...

Interested parties:

 

Alfresco Website Inventor (test the new Alfresco Java Client SDK)

Idea owner: David Ciamberlano

Description: Alfresco Website Inventor is an open-source project that aims to build a fully functional website on top of an Alfresco Site.
In that way  you can navigate the repository contents as if it were a (real) website.
* each folder will be rendered as a webpage (its subfolders will become linked webpages)
* each content of the folder will be shown on the page:
    * txt, html, MD are rendered as formatted texts
    * images are shown
    * other file types become downloadable objects

Target: I would like to migrate the existing CMIS based classes to the new Alfresco java client SDK. It could be a good opportunity to test it on a "real" project.

Prep work: Familiarity with CMIS and Spring MVC (and maybe Alfresco REST API ?)

Related work: https://github.com/david-ciamberlano/website-inventor  / https://github.com/Alfresco/alfresco-client-sdk  

Interested parties:

  • Valerio Vaudi

 

Usable Aikau Forms Service

Idea owner: Axel Faust

Description: Last year, Dave Draper worked on an enhancement to the Aikau library that would allow reusing legacy-style form definitions within Aikau. While this is all nice and well, it does not address an important problem when it comes to Aikau-style forms: How to ensure they are consistent across all contexts and only require a single, central definition without any code duplication? In effect Aikau needs to have a similar configuration option for forms as we have with the legacy-style forms. This project idea would look at adding this reusable forms engine.

Prep work: Familiarisation with Aikau and Surf configuration service concepts; especially configuration evaluation (evaluators + conditions), merging of configurations and Aikau widget dependency collection/lifecycle

 

Interested parties:

  • be the first...

 

Add Dynamic-extensions generator to generator-alfresco

Idea owner: Younes REGAIEG

Description: Implement a new set of generators into the alfresco-generator addon making it possible to create new DE bundle project with Alfresco generator. The effort should aim also at adding a couple new generators to generate sample DE extensions for alfresco (annotated webscripts, actions policies ....). Check this issue for more details on what needs to be done.

Prep work: Familiarity with generator-alfresco and with java-script development, familiarity with dynamic-extensions and yeoman generator is a valuable plus

 

Interested parties:

  • be the first...

 

Send as e-mail attachment/Send e-mail from document

Idea owner: Mark Tielemans

Description: Add a feature to send e-mail from a document in Alfresco, using the configured outgoing e-mail server. The following milestones can be considered:

  1. Send a document as e-mail attachment, with a custom action and a minimal form ('recipient', 'subject', 'e-mail template')
  2. Add choice: 'link' or 'attachment'
  3. Send multiple documents as e-mail attachment, with a multiselect action
  4. Add ability to edit e-mail before it is sent instead of using a template

Prep work: Understand forms, custom actions and possibly SMTP.

Results: GitHub - MarkTielemans/alfresco-mail-attachment 

Interested parties:

 

Image Face Analyzer

Idea owner: David Antón

Description: Alfresco add-on to analyze people photos and extract information about the gender, the age, face expressions and others. So you can make a bulk photo import to Alfresco, and then make searches (for example, to know how many 30 age people photos are in the repository).

Prep work: Alfresco SDK, Alfresco Repository webscripts, Alfresco Share customizations and Java knowledge.

Related workhttps://github.com/keensoft/alfresco-google-vision / https://github.com/deas/contentreich-ecm-google-ms

Interested parties:

 

User managed metadata extraction on Text PDF

Idea owner: David Antón

Description: We would like to continue Beecon's 2017 Hack-a-thon project with some new functionalities:

  • Support to extract information from regex
  • Automatic image extraction from the pdf, and upload to Alfresco as a child of it.
  • QR and Barcode extraction
  • Coordinates selector with a user friendly interface

Prep work: Alfresco SDK, Alfresco Repository webscripts, Alfresco Share customizations and Java knowledge.

Interested parties:

 

Better Version Management

Idea owner: Douglas C. R. Paes

Description: Improve the way Alfresco handles objects' versions, allowing to keep different sets of properties, permissions and assotiations for different versions of the same object.

The idea is trying to implement something similar to what is presented in the following blog post http://www.tsgrp.com/2017/08/14/alfresco-versioning-how-to-make-it-better-with-the-tsg-chain-version-module/ , but as an open source module.

 

Interested parties:

  • be the first...

 

Healthy Repository addon

Idea owner: Filip Bruska

Description: Let's implement a new addon which will review a repository health. There are several Alfresco recommendations which should be followed. For example:

  • Limit the maximum number of nodes in a folder
  • Limit Groups hierarchy to 5
  • Limit the folder hierarchy depth
  • ...

Most of them will be implemented as jobs and results could be seen in Alfresco Administration Console. Those healthy checks are inspired by Luis Cabaceira blog (chapter 8)

Interested parties:

  • Tieto people working with Alfresco - We are going to have a dedicated hacker room as well. More info will follow on Local Hacker Rooms

Results:

GitHub - Vitezslav-Sliz/tieto-alfresco-repository_monitor: Project for Tieto Ostrava Alfresco Hackathon 2017 

 

Monitoring Alfresco with Prometheus

Idea owner: Sujay Pillai

Description: Prometheus is an open-source systems monitoring and alerting toolkit. It already has a JMX exporter for exposing JMX Beans via HTTP for Prometheus consumption & Alfresco too has JMX read-only monitoring beans. The main purpose is to scrape some Alfresco JMX readonly values in Prometheus and expose it on Grafana dashboard.

Also would like to make use of the alerting mechanism in Prometheus based on events/conditions at Alfresco side.

Prep work: 

  • Prometheus & Grafana application to be run as Docker Containers, so basic understanding of Docker is required.
  • JMX Monitoring & Management extensions available in Alfresco.

Interested parties:

  • Jan Vonka
  • Waiting for others to join the list

 

Test the Backups: Automated Recovery Verification

Idea owner: Boriss Mejias

Description: Implement a service that automatically restores Alfresco backups on a daily basis. The service will run Alfresco from the restored data, and then it will run verification tests to check how healthy and reliable the backups are. Reports will be generated on the verification status. We need help to write verification tests, and generating reports. It doesn't matter if you don't have previous knowledge on the topic. Feel free to join us just to understand how backup and restore works.

Prep work: There are three big parts: Infrastructure, tests, reporting. The infrastructure might be the less reusable part as we want to run the project based on how we run Alfresco at CIRB-CIBG. But tests and reporting will definitely be reusable for other projects, and they should be runnable on other infrastructures. We would actually be happy if someone wants to join using BART. That would make the infrastructure part also reusable

 

Interested parties:

 

ContentCraft - Visualizing and interacting with a Content Hierarchy in Minecraft

Idea Owner: Roy Wetherall

Description:  ContentCraft is a Minecraft server plugin that connects to an Alfresco Content server and builds a three dimensional representation of content hierarchies in Minecraft.  Using a standard Minecraft client, users can then interact with a "real" content library, by walking through rooms and reading books!

Source: GitHub - rwetherall/ContentCraft: Bukkit plugin for Alfresco. 

Objectives:

   * Update source to latest Alfresco Community, Minecraft and Spigot versions

   * Update server to use V1 Alfresco REST API rather than CMIS

   * Optimize macro feature to allow directional changes, compress recorded files, allow replay (ie update)

   * Investigate "pull" refresh.  Allowing the content representation to change and be updated as the underlying content is changed.

   * investigate new ways of representing folder hierarchies more than 3 deep!

   * Host Alfresco and Minecraft server on AWS for everyone to connect to

Interested Parties:

  • Kaz Kono

 

Collect, organize and create pull requests to validate the new contribution process

Idea owner: Douglas C. R. Paes

Description: Collect projects containing Alfresco fixes, organize them, check what is still valid and create pull requests for the several open projects in order to validate the new contribution process.

Some know projects containing fixes:

GitHub - loftuxab/alfresco-community-loftux: Alfresco Community by Loftux 

GitHub - loftuxab/share-community-loftux: Alfresco Share Community Edition by Loftux AB 

GitHub - ecm4u/share-5.2.d-patched 

GitHub - ecm4u/community-edition-5.2.e-patched: Patched version of Alfresco Share 5.2.e 

GitHub - ecm4u/ecm4u-alfresco-bugpatches: This module contains a collection of bug fixes for Alfresco, both the reposito… 

GitHub - deas/alfresco: alfresco "core" fixes 

Interested parties:

  • be the first...

 

Delivering Documents, a Folder Share Action

Idea owner: Daniel E. Fernández Pera

Description: When uploading multiple documents to Alfresco from external sources, sometimes is required to deliver each one to an Alfresco user. This addon will provide a configurable rule to match the name of the document with the user and also a configurable delivering action. For instance, a data list can be filled with a pair of document name / email as matching source and moving to user home folder as delivering action.

Prep work: Familiarity with Alfresco SDK 3 and Alfresco Repository Java-backed web script / service implementation and Share forms customisation are recommended to get the most from participating in this project

Results:

https://github.com/keensoft/alfresco-classifying-action

Interested parties:

 

Node Properties table partitioning

Idea owner: Raúl Sampedro

Description: ALF_NODE_PROPERTIES table stores every metadata value for Alfresco objects: contents, folders, users... Commonly, this table is filled with millions of rows, as it stores about 30 properties per node. Using a table partitioning approach will improve performance and will reduce maintenance operations. This project will produce a shell tool to perform table partitioning on living or brand new Alfresco PostgreSQL databases and also a guide for automatic partition generation will be drafted. A simple "Node Id" partitioning pattern will be provided.

Prep work: Familiarity with Alfresco database structure, PostgreSQL table partitioning and shell scripting are recommended to get the most from participating in this project

Results:

https://github.com/keensoft/alfresco-node-partitioner

Further work:

  • Port this work to other database products (MySQL, MariaDB)
  • Re-consolidate partitions into a single table for Alfresco upgrading
  • Provide dynamic partition insertion based on patterns (local and global properties) and evaluating QName based expressions

 

Interested parties:

 

IN-flight workflow Aikau dashlet

Idea owner: Rupesh Sawaliya

Git-hub source :GitHub - rupeshsawaliya/alfresco-inflightworkflow: Alfresco based Inflight workflow 

Demo Video:In flight workflow dashlet - YouTube 

Description: Our goal is to develop an Aikau dashlet for in-flight workflows of Alfresco, it is going to be used for and by Admin user for having status of all the in-flight workflows.
Admin user will have permission to see the workflow status and reassigning from one user to other system.
Future enhancement would be:

  1. Approve and complete workflow.
  2. Integration of dashlet with APS services with configuration.
  3. Search capablity for the in-flight tasks.
  4. Configurable dashlet columns for in-flight workflows.

Prep Work: Not really

Interested parties:

  • Khushbu Watwani
  • Pradip Patel

 

Process Services

 

Salesforce Integration with APS

Idea owner: Francesco Malagrino 

Description: Integration of Salesforce in APS using Java delegates

Prep work: Familiarity with Salesforce API, Java Delegates and APS Workflow

Project link: https://github.com/Vegetam/APS-integration-with-Salesforce/

Interested parties:

 

Improving Activiti Cloud Kubernetes Deployment Descriptors

Idea owner: Mauricio Salatino

Description: Activiti Cloud provide an out of the box deployment to a kubernetes environment. During the hackathon we will improve these descriptors and work together with community members to improve the documentation on how to get these deployment working. 

Prep work: Take a look at Activiti Cloud meets Kubernetes (and they like each other) – Salaboy (Open Source Knowledge) 

Interested parties:

  • be the first...

 

Alfresco Process Services CI/CD sample

Idea owner: Ciju Joseph / Francesco Corti

GitHub source: 

Description: Alfresco Process Services has a standard way to develop custom Java Delegates in a maven project. The standard JUnit tests can be used, as usual, to test their behaviour. From a BPM perspective, the APS package named APP, should be managed together the Maven project, being part of the deployment. The goal of this project is to work on some samples, to manage the entire lifecycle of a standard APS project, to define improvements and automatic tasks to be used in CI/CD environment.

Prep work: Take a look at activiti-examples/activiti-project-structure at master · cijujoseph/activiti-examples · GitHub 

Interested parties:

CI/CD of APS Apps

Blog: APS CI/CD Example 
Unit Testing in APS
Blog: APS Unit Testing Part I 
Blog: APS Unit Testing Part II 

 

Example BPM Project

Idea owner: John Doe

Description: TBD

Prep work: TBD

 

Interested parties:

  • Tabrez Diwangi
  • Amruta Wandakar
  • Ethan Wong

 

Application Development Framework

 

Alfresco Share ADF Components

Idea owner: Mikel Asla

Description: Create new ADF Components to port Share features to the new development framework:

  • "Edit in Office" link to use AOS capabilities
  • "Manage rules" for folders
  • "Version history" for files
  • "Tags" for files and folders
  • Simple workflow
  • Tree navigation
  • Tag navigation
  • Create document & folders from template
  • tesseract.js integration
  • ...

Prep work: Familiarity with Alfresco ADF and Alfresco SDK is recommended to get the most from participating in this project

Results: 

https://github.com/keensoft/ng2-alfresco-aos-editonline

Interested parties:

 

A Rapid Application Development experimentation using ADF

Idea owner: eugenio romano

Description: The goal of this project is to experiment a visual setup of pages (and layout in general) using the ADF Components. The main idea is to define a Rapid Application Development experimentation using Angular, to be used in the Alfresco Application Development Framework.

Prep work: Familiarity with Alfresco ADF to get the most from participating in this project.

 

Interested parties:

ADF Chat Component

Idea owner: Kalpesh Patel

Description: 'ADF Chat Component' can be a very useful tool for the Alfresco users. Allowing users to communicate within Alfresco would definitely add value to Enterprise collaboration objective.

When we talk about Knowledge Management and similar kind of applications of Alfresco where users can share their knowledge and solutions to various problems, chat can be a very handy tool. The selective conversations can be treated as 'Knowledge Repository' and provided as a 'Learning Material' to others, too. Initially we are planning to develop basic features like Chat initialization, Group chat, Profile Settings, Manage Contacts and Chat notifications. However, we want this component to be extensible up to the 'chatbot' kind of functionality in future.

Prep work: Familiarity with ADF components, Overall Alfresco and share customization

Results: ContCentric / alfresco-adf-chat · GitLab 

 

Interested parties:

9 people found this helpful

Attachments

    Outcomes