Running thesis

Event sourcing for Narayana LRA

The goal is to investigate on event sourcing. Find what it is and how it is used in the microservice architecture. Then design and change the current Narayana LRA implementation to be capable to store its state changes as events by saving them in the event source log storage. Narayana LRA is an implementation of “saga transactions” as effort to add transaction capabilities to the MicroProfile (set of specifications transferring Java EE development approaches to the microservice environment while boosting them to the next level). Saga is concept of transaction processing where transaction manager does not ensure full ACID guarantees. […]

Transaction analyser tool for Narayana

The goal is to design and implement an application that would gather information about the transaction processing occurring within Narayana transaction manager. Narayana normally runs as part of the WildFly application server but has more integration. Having a good solution for monitoring can help users to understand and solve issues connected with the transaction processing. Having the universal tool is more important in the present time where Narayana is integrated with many different systems as WildFly, Spring Boot, Camel or Apache Tomcat.

High-availability for PostgreSQL in OpenShift

PostgreSQL database system by default offers replication with one master server and several read-only replicas. That design also allows to implement high-availability (HA), but only with several other tools and further configuration done by administrator. In OpenShift PaaS, implementing such HA is even more challenging, but it’s very important in fully automatic cloud environment. The goal of the project is to investigate how existing solutions work and implement one or more container images based on Fedora packages, which would deliver HA with automatic fail-over in OpenShift environment.

Gantt Chart Tool

Goals The main goal of this topic is to develop an online tool for creating Gantt charts. It must support creating, editing and storing diagrams per registered user. The student will get familiar with developing web applications using modern JavaScript technologies and frameworks (NodeJS, ExpressJS), NoSQL databases (MongoDB) and securing web applications leveraging passport.js and Auth0 IdM Platform.

Web-based customers cases aggregation and reporting tool

Currently, there is no efficient way how to get notified about customer cases in Quality Engineering department. Quality Engineers would be interested in how the product is used in real life, to be able to adjust testing scenarios accordingly and provide better services for end customers. Employees have to go manually through the list of reported cases and find what they need. In order to make their work easier, it would be useful to implement a web-based application that would send reports with information about cases to subscribed users according to certain criteria. This way, they would get fresh information […]

Recommender System for Web Articles

Red Hat Developer website brings resources to help developers build modern and innovative apps and services. It includes everything from downloads to developer how-tos and getting-started guides to tutorials, videos, books, and latest new. Goal of this thesis is the implementation of a recommender system, which brings new, personalized experience into the website. Using machine learning techniques, it should combine user’s website browsing history together with website articles characteristics, and recommend most interesting content to the user. It should provide good balance of the content exploitation vs exploration to the user, which is crucial in the ever changing landscape of the […]

Brno University of Technology

Transformation of native upstream repositories into Fedora dist-git format

Fedora GNU/Linux distribution is using a custom repository structure for package sources called dist-git. This repository contains a recipe how to construct a binary package and a reference to archive with pristine upstream sources. Working with this repository is cumbersome and we are trying to modernize the workflow for Fedora maintainers. We are going to move the development efforts of packages to a repository which resembles upstream format. In order to automate manual tasks, we will need a tool which will translate source code between these two repository formats. The goal of this thesis is to develop such a tool […]

Analyze & improve the filters in GNOME Photos

GNOME Photos is an application to access, organize and share your photos on GNOME 3. It has some common image processing features built into it so that users can quickly tweak and enhance their photographs after importing them from the camera. One such feature is the ability to apply some preset effects to an image. Unfortunately, most of the algorithms behind these filters were not scientifically developed or tested. They are merely implementations of approaches described by various people on the Internet. One exception is the Caap filter which is based on an algorithm developed by Corey Hoard. Scientifically analyzing some well-known […]

Performance Testing of Linux Kernel

The goal of the thesis is to develop a tool for graphic interpretation of results of kernel performance measurement. The tool should also be able to automatically detect and report performance regression. The student has to study existing benchmarks for measuring the performance of Linux kernel scheduler and means of storing of the benchmark results.

Research of Fedora Status for Machine Learning

Machine learning and artificial intelligence gain a lot of popularity lately. Fedora distribution wants to become a distribution of choice for developers who develop applications in this field, and the focus is on Python language. This project is mostly a research and the goal is to identify pain points in Fedora distribution in this new, progressively developed field, and prepare content on the Fedora Developer Portal to help new-comers to begin in this field. Except the research, there are some coding part: one is to prepare an example application from the machine learning field, and others are bringing the missing […]

LSP clients generator

The goal of this thesis is to design and implement a tool for creating LSP clients for different IDEs (Eclipse, Eclipse Che, VS Code, …). On the input will be an LSP server. The output will be LSP clients for this server with instructions on how to install them into particular IDEs. The tool should be able to generate clients for the Apache Camel LSP server first. Although, it should be able to produce clients for an arbitrary LSP server. The implemented tool should be easy to use and build on top of modern technologies and approaches.

Application-specific passwords / Multiple passwords for one user in FreeIPA

FreeIPA is an authentication and authorization server. At the moment, FreeIPA does not currently allow users to have more than one password. Aim of the thesis is to allow to use multiple passwords for single user. Motivation There are many possible use cases for multiple passwords for single user account: Several fall under a category that could be broadly defined as ‘application specific passwords’ (as Google refers to it), or possibly ‘partially trusted credentials’, or something. For instance: I have my mail server configured to use FreeIPA authentication via PAM. I have three computers, two phones and a tablet configured […]

A static analysis tool detecting bugs in signal handlers

POSIX signals are commonly used in C/C++ programs for IPC (Inter-Process Communication). One of the key advantages of using signals is that they can be handled asynchronously to the main control flow of the program. However, this advantage does not come for free. Developers of C/C++ programs must follow strict rules while implementing signal handlers. If these rules are violated, such programs do not work properly and may suffer from occasional crashes, freezes, or even data loss. Moreover, these issues are usually difficult to test and difficult to debug because they are timing-dependent.

ManageIQ Expression Editor

ManageIQ is an open-source management platform that delivers insight, control, and automation functionality allowing enterprises to manage hybrid IT environments. The ManageIQ application collects information about various entities such as Virtual Machines, Hosts, Containers, etc., with numerous attributes and relationships.

Mobile applications for EvMan

The aim of the thesis is to create a mobile application for platforms Google Android and Apple iOS, using which the user will be able to perform some processes on the EvMan event management system. The first milestone is to analyze the EvMan information system and build a list of requirements for the mobile application. The second milestone is to design and build API that will be used for communication between the mobile application and the EvMan information system. The third milestone analyze available tools for building cross-platform mobile applications and choose the one that will be used. The fourth […]

Using DNS for verifying integrity of software packages

Currently it is common that software packages are cryptographically signed using methods of public-key cryptography. Software vendor signs package using his private key and signed software package is then distributed along with vendor’s public key. This vendor’s public key can later be used in automatic software update verification process.

rcm-pdc opensource and test coverage

Open sourcing and test coverage for RCM Internal library “rcm-pdc” which used to generate “transport layer” for internal release train. “Transport layer” is really a transformation of data in product build to match the format of the internal tool used to push product to Satellite 5 or Satellite 6 (an internal equivalent of opensource project spacewalk).

Deep Neural Networks Used for Customer Support Cases Analysis

There is a big number of resolved Support Cases by Red Hat, therefore an idea was proposed to use these data for data mining and information retrieval in order to ease a resolution process of the Support Case. This work will tries to create Deep Neural Network models for prediction of features which could help during the resolution process.

Extracting a configuration parser from the application source code.

Get acquainted with means of compilation of C programs using LLVM compiler infrastructure – clang, LLVM Internal Representation, AST, LLVM optimisations. Propose a solution to statically transplant a subset of a C program that is dedicated to parse configuration files of an application. This subset should be extracted from the original program and synthesised as an independent binary. Design and implement the proposed solution in a tool having an appropriate form (standalone application or LLVM plugin). Test the implemented tool on standard linux server daemons used in Red Hat Enterprise Linux distributions.

Git reporting tool

Git reporting tool to enable project leaders to see statistics such as Git commits per person, by time period, per product, per component Size of git commit, e.g. differences in lines (added or removed) Additional characteristic (merges etc.)

Git reporting tool

Git reporting tool to enable project leaders to see statistics such as Git commits per person, by time period, per product, per component Size of git commit, e.g. differences in lines (added or removed) Additional characteristic (merges etc.)

Test shield for ARM-based boards

Get fimiliar with ARM-based boards (“ABB”) RaspberryPi, Cubieboard and BeagleBoneBlack.

Determine applications affected by upgrade

Pokud je aktualizovaná knihovna, která je právě používaná nějakou aplikací (i třeba tranzitivně), tak je stará knihovna používaná dokud se aplikace nerestartuje. Zjistit, které aplikace je třeba restartovat není pro uživatele triviální. Tato práce by mu měla poskytnout nástroj, který by uživateli navrhl, které aplikace by bylo vhodné restartovat.

Palacky University in Olomouc

SelfTest tool improvements and fixes

Úkolem sudenta bude implementovat několik vylepšení a nových funkcí (například možnost přerušit test a vrátit se k němu později…). Výsledkem práce bude série patchů implementujících potřebné změny v takové kvaltě, že je bude možné přímo použít.

Brno University of Technology