Welcome to the Alfresco TechQuest Hack-a-Thon 2024! This event will be held in Lisbon on 12th September 2024 as part of the Alfresco TechQuest event. Below you'll find all the information you need to get started, participate, and contribute to this exciting hack-a-thon.
Registration is required and can be completed at: https://university.hyland.com/pages/techquest-alfresco-hackathon
- Overview
- Event Details
- How to Participate
- Project Ideas
- Submission Guidelines
- Judging Criteria
- Prizes
- Resources
- Code of Conduct
- Contact
- Projects
The Alfresco TechQuest Hack-a-Thon 2024 is a collaborative event where developers, designers, and business professionals come together to create innovative solutions using Alfresco technologies. This year, we are excited to gather in the beautiful city of Lisbon to explore new possibilities and drive digital transformation.
- Date: 12th September 2024
- Location: Lisbon, Portugal
- Venue:
- Crowne Plaza Caparica Lisbon
- Largo Aldeia dos Capuchos
- 2825-017 Caparica, Portugal
- Time: 2:00 PM - 10:00 PM
Dinner and beverages will be provided
- Register: Sign up for the event on the official registration page.
- Form a Team: Teams can consist of 2-5 members. You can form teams beforehand or join a team on the day of the event.
- Join Discord: Connect with other participants, get updates, and ask questions on Alfresco Discord server.
- Attend the Kickoff: Be there for the kickoff meeting to get all the details and start hacking!
Participants are encouraged to work on projects that leverage Alfresco technologies.
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 people looking for an idea
If you're searching for ideas to kickstart your project, you've come to the right place. Below, you'll find inspiration drawn from past Hack-a-thon events, an overview of the latest features from Alfresco 7.x, and some exciting possibilities with Alfresco GenAI projects.
-
Previous Alfresco Hack-a-thon Events
-
New Features from Alfresco 7.x
- Synchronous and asynchronous Transform Engines
- Alfresco Out-Of-Process SDK for Java Developers
- Support for new component versions: Java 17, Angular 18, Tomcat 10, Jakarta EE 10, Spring 6, log4jv2, keycloak
-
Alfresco GenAI Projects
-
Community GenAI Projects
For everyone
The 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.
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).
Feel free to come up with your own ideas and be creative!
- Fork the Repository: Fork this repository to your GitHub account.
- Code and Document: Develop your project and ensure your code is well-documented.
- Submit a Pull Request: Submit the output of your project via a pull request to this repository.
- Presentation: Prepare a short presentation (5-10 minutes) to showcase your project that will happen in October Alfresco Tech Talk Live.
Projects will be judged based on the following criteria:
- Innovation: How creative and original is the project?
- Technical Difficulty: How complex and technically challenging is the project?
- Usability: How user-friendly and practical is the solution?
- Presentation: How well is the project presented?
Prizes will be awarded to the top teams. Details about the prizes will be announced during the event.
Here are some resources to help you get started:
We are committed to providing a welcoming and inclusive environment for all participants. Please read and adhere to our Code of Conduct.
For any questions or additional information, please contact us at [email protected].
We look forward to seeing you in Lisbon and can't wait to see what you create!
Happy hacking!
--
Provide an OpenSearch search subsystem for Alfresco Community
Idea owner: Angel Borroy
Description: The aim of this project is to provide an OpenSearch search subsystem for Alfresco Community.
The main objective is to develop a new application that utilizes the existing Repository SOLR endpoints to fetch information from the Repository and update the OpenSearch index using a polling process similar to the one currently employed in the Solr search subsystem.
Components to be developed:
-
OpenSearch Search Subsystem as extension for alfresco-community-repo
- Support for AFTS and CMIS search syntax
-
An application that can be run as a container (a basic implementation available in alfresco-neural-search)
- Indexing
- Metadata ingestion
- Content ingestion
- Permissions (potentially added to each OpenSearch document to reduce complexity)
- Paths (including cascade updating of Path properties)
- Configuration
- Model synchronizer
- Indexing
The implementation should be compatible with an out-of-the-box OpenSearch service, including basic authentication with TLS or mTLS communication modes.
Prep work:
- https://docs.alfresco.com/search-services/latest/
- https://github.com/Alfresco/SearchServices/
- https://github.com/Alfresco/alfresco-community-repo/
- https://hub.alfresco.com/t5/alfresco-content-services-blog/the-alfresco-content-tracker/ba-p/288185
- https://github.com/aborroy/alfresco-opensearch-neural-search/tree/main/alfresco-neural-search
Interested parties:
- [Put your name here]
Develop Repository Administration Console UI for JavaScript Console
Idea owner: Axel Faust (note: multiple ideas - I may/can only work on one and anyone interested may take over ownership of this idea)
Description: The aim of this project is to develop a (basic) frontend for the JavaScript Console functionality of the OOTBee Support Tools addon in the Repository-tier Administration Console.
Background: In version 1.2.0.0 of the OOTBee Support Tools an "as-is" fork of the JavaScript Console addon was included with the module. Considering that the Alfresco Share UI has been deprecated for a while and Alfresco is working on an ADF-based Control Center, it would be ideal if the JavaScript Console functionality no longer required Share (or any additional UI) as its primary UI.
While it would be the goal to eventually have feature parity with the existing Share frontend, this hackathon project's focus would be more on a working "minimum viable product" state with a web-based code editor library of choice that can be extended after the hackathon event towards the eventual full functionality.
Interested parties:
- [Put your name here]
Implement developer tooling to sync/deploy process, form, and app definitions with APS instance
Idea owner: Axel Faust (note: multiple ideas - I may/can only work on one and anyone interested may take over ownership of this idea)
Description: The aim of this project is to develop some developer tooling that helps to synchronise models in an APS runtime with models under version control.
Background: Not all projects in a Process Services context work with fully user-managed process, form, and app models. In quite a few use cases models may be provided by developers and may also be under source code version control. There currently does not exist tooling that helps developers work with version controlled models, automated deployment, and/or synchronisation with the runtime state of (local) dev instances. Exported app definitions in ZIP format do not lend themselves to be version controlled. Repeated import/export cycles result in changes to model IDs and versions, that can make it difficult to manually deal with references. Lastly, exported JSON models are unformatted, which also does not work well with text-based line-by-line diffing in version control.
At least two distinct use cases should be considered as very common and in need of support:
- (automated) deployment of (potentially updated) app definitions and models bundled with a JAR built from an extension project
- synchronisation of app definitions and models in an extension project with a Process Services runtime (dev) instance, compatible with common source code versioning practices
Interested parties:
- [Put your name here]
Implement open source library of (extended) ACS integration tasks
Idea owner: Axel Faust (note: multiple ideas - I may/can only work on one and anyone interested may take over ownership of this idea)
Description: The aim of this project is to develop an open source / community-managed library of process tasks for the integration with ACS that extends to core set of capabilities included in APS.
Background: Process Services comes with basic ACS integration tasks used in storing content in ACS and changing metadata of such content, including utilities for the convenient definition of such integrations in the editor. In some use cases, the set of this functionality may be too limited. Simple tasks such as copying or moving content, changing permissions, creating relationships etc. are currently (AFAIK) not possible out-of-the-box.
Interested parties:
- [Put your name here]
Further work on Alfresco GenAI Semantic project fork of Alfresco GenAI project
Idea(s) owner: Steve Reiner
Description: The fork of the Alfresco GenAI project into Alfresco GenAI Semantic project adds entity linking of documents in alfresco to Wikidata and DBpedia. The spaCy NLP python library along with spaCy projects are used for getting the entity links. Currently the 2 custom aspects have multivalue properties for the links, alfresco tags aren't used. Plan to change to hierarchy of category tags so can search say category auto and get documents with entity links to Honda and Toyota, etc. See [blog article on project] (https://integratedsemantics.org/2024/06/12/alfresco-genai-semantic-project/)
Performance could be improved by sending text renditions instead of pdf renditions to the python code. I could use help on this.
Knowlege Graphs
- Have entity links created in Neo4j and/or RDF datatabase like Ontotext GraphDB. Neo4j's rdflib-neo4j could be used for common schema.
- Have more a complete knowledge graph of a document created (also have relations) Bunch of projects like Neo4j's NaLLM and Knowledge Graph Builder are out there. Most focus on doing this all with LLMs (with and with out a constraining schema). Going to try with the entity links from spacy nlp and then have LLMs finish the job.
- Be able to display the graph for one document or multiple documents from the ACA client. Keep the graphs updated with repository changes.
- GenAI natural language could be used to search such graphs (with SPARQL or cypher queries generated under the covers by GenAI).
Interested parties:
- [Put your name here]
Idea(s) owner: not Steve Reiner, just suggesting:
Python API for Alfresco ACS Assume this would be a remote api on top of Alfresco Content Services REST API. Apache chemistry has a cmislib python client api. See Jeff Pott's blog cmislib topic. Note by Axel Faust: I have in the past started work on a python client lib for a customer who wanted to access Alfresco in a Chatbot client.
Python API for Alfresco Process Services This would be good to have also if it doesn't exist.
Interested parties:
- [Put your name here]
Idea(s) owner: not Steve Reiner, just suggesting:
Further work on GraphQL api
- GraphQL is more of style of doing apis than a very specific standard.
- Some work was has been done:
- GraphQL endpoint for Alfresco ACS
- Alfresco DevCon 2018: The Power fo GraphQL in Activiti Query API
New work on GQL
- Could Alfresco support the GQL query standard? GQLstandards.org GQL Wikipedia GQL Neo4j
- GQL could be supported standalone or within GraphQL.
- In regards to GQL, see mult-model below.
Interested parties:
- [Put your name here]
Idea(s) owner: not Steve Reiner, just suggesting:
-
Idea is to have is to have the graph capabilities more tightly integrated for application development and querying purposes.
-
Postgres + Apache AGE Graph Database Extension would be used with Alfresco Community or Alfresco Enterprise.
-
Postgres versions: Alfresco supports Postgres versions 13 thru 15. The versions of Postgres supported by AGE are 11 thru 16. Note: Amazon Aurora supports many Postgres extensions but didn't see AGE.
-
Commercial multi-model databases that support graphs like Oracle, MSSQL, etc. could also be supported without AGE with Alfresco
-
Could graph types be used in alfresco aspects?
-
Even more more extreme: could Alfreso folder and document content model be done in graph types? (May then not even need relational and could run on graph databases)
-
How to query: AGE has openCyper GQL like support that can be used with extensions to Postgres SQL. How would you also query Alfresco?
-
Note: vector support is being considered by Apache AGE: A proposal for applying PGvector to Apache AGE has been posted on GitHub
-
RQF and SPARQL could be suported: Open source code from Neo4j neosemantics server side java and/or rdflib-neo4j client side python could be adapted to work with Apache AGE + Postgres. With multi-model databases that support RDF like Oracle, IBM DB2, Virtuoso etc.
Read more Interested parties:
- [Put your name here]