You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 27 Next »


General Information

The JBoss Community is planning to participate in Google Summer of Code in 2020.


All students & developers are welcome to participate in the https://summerofcode.withgoogle.com/   program with the JBoss Community (once JBoss Community is accepted by Google)!


You can take look on org page of Summer of Code website for proceeding with the application process.


If you are a student looking forward to participate in the GSoC 2020 with the JBoss Community, feel free to browse the growing idea list below. Please don't hesitate to contact the mentor(s) indicated in the proposal for any related clarification and to discuss proposals. Students can submit the proposals in 2020.

If you want to suggest an additional idea, please use the page GSoC 19 Student Ideas (you'll need a free JBoss Community account to edit the page). Interested mentors can check the student ideas page and sign up to be a mentor by moving the idea onto the main page.

You can also look at GSoC-16 Ideas2017 Ideas2018 Ideas and 2019 Ideas for suggestions from last years.

A note to mentors

MENTORS: Red Hat employees can change this page directly to add ideas. Please be extra careful to not get other mentor's edits discarded.
Red Hatters should have linked their jboss.org account with Red Hat and can be checked on https://sso.jboss.org/login

Non Red Hatters can add a comment to the page and admins will make sure the idea is added to the page.


Table of Contents

Administrators and Mentors

We will list the potential mentors in this place. For now, if you have any questions, please contact the GSoC administrators:

George Zaronikas (gzaronikas) Ali Ok (@aliok_tr) and Anuj Garg (@KeenWarrior).


Communication channels

Gitter    : JBossOutreach/GSoC - Gitter 


Please take note - These channels are about generic doubts. For project specific doubts you will need to contact project mentors and channels specified in the project description.


Notes for students

Points to consider while choosing any project

1. You meet at least 50 percent of prerequirements. Remaining skills can be honed on the go, so don't worry if you lack some.

2. You can relate with the project idea and you have used something related to the project as user.

3. You are willing more toward learning the skills and less toward boasting about the skills you have already.


Suggested steps after choosing favourite project

1. Start to use product/tool/api as user or hello world client application.

2. Setup the development environment for project and start to use your own build.

3. Look for new comer bugs and try to get your head around them.

4. Let us know if you feel stuck at any stage.


Idea template (for mentors)

Project title

Summary of idea:

-Idea

-Feature A

-Feature B

Knowledge prerequisite: Languages/Technologies goes here

Github repo:

Skill level: Beginner/Intermediate/Advanced

Contact(s) / potential mentors(s): Mentor(s) name and contact details

Associated JBoss community project(s):


Idea Proposals

AeroGear - NodeJS based Data Synchronization engine on top of Apache Kafka, Debezium and GraphQL Subscriptions 

Summary of the idea:

GraphQL Subscriptions allow developers to build reactive data-driven applications where each client actively subscribes to new data and receive it immediately after is available.
However in traditional messaging systems when a client subscribes for the first time it is not 

going to get any previous messages. Purpose of this  will be to provide offline enabled data synchronization platform on top of GraphQL, Debezium and Apache Kafka 

Project references

Candidates are going to work closely with the JBoss community by contributing to the following projects:


Note: This project can incorporate more than one topic/student as it can be focused on client and server-side exclusively.
Candidates should pick client or server-side implementations when doing a proposal.

Required knowledge

  • Node.js (Understanding performance implications of event loop etc.),
  • TypeScript 
  • Basics of GraphQL, React
  • Apache Kafka (Basic concepts, Consuming messages, Partitioning) 
  • Knowledge of one of the relational and NoSQL databases (Postgress, MongoDB)
  • Familiarity with the event streaming principles
  • Engagement with AeroGear and Debezium communities is essential!


Definition of the problem

When building microservices architecture various parts of the system can interact with the source database. Using publishing events from the server application is not always possible and it might require modifications in various servers that are often legacy.

When utilizing Debezium and Kafka we can connect directly to the database to get notified about any change that happened in the database instantly.

Debezium will be only involved in collecting and publishing the data to Kafka. The purpose of this work is to build an opinionated Node.js layer that will consume Kafka messages to apply some specific filtering and publish messages back to clients using GraphQL subscriptions.


Possible goals:

Diagram: https://media.discordapp.net/attachments/632235423300714507/669530559701319691/Screenshot_2020-01-22_at_13.15.08.png

Technologies: Nodejs, GraphQL, AeroGear DataSync, React, Apache Kafka

Github Repo: https://github.com/aerogear/GSoC-2020

Skill level: Intermediate 

Contacts: wtrocki@redhat.com  dzuccare@redhat.com ephelan@redhat.com

Associated JBoss community project(s): AeroGear

EAT  - Testing Infinite Software Project Versions

Summary of idea:

The innovative part of EAT is creating the test once and testing with any version of the tested software. It may be firstly applied for the JBoss Servers, but, in general, a similar structure, can be used for creating tests about any software with multiple versions or for multiple software programs that have a part of the testsuite in common. EAT is a project under the ΙΔΕΑ statement.


Possible tasks for this project :

Go through the EAT workshop, extending the existing AT testsuites, creating a new testsuite using the AT Structures, improving the dependency AT analyzer (dynamic testing), etc


Github repo: https://github.com/jboss-set/eap-additional-testsuite

Contact / potential mentors: Panagiotis Sotiropoulos (psotirop@redhat.com)

Associated JBoss community project: EAT


Knative - A GraphQL subscription Knative source

Summary of idea:

Implement a Knative eventing source for GraphQL subscriptions.

  • Create a subscription
  • Receive subscription events
  • Create CloudEvents from them
  • Send those cloudEvents to other Knative resources, using the standard Knative mechanisms


Possible tasks for this project :

  • Implement the source
  • Implement unit tests, e2e test
  • Implement performance tests
  • Write documentation
  • Prepare demos


Required knowledge

  • Kubernetes
  • Knative
  • Containers and tooling (e.g. Docker)
  • GraphQL
  • Golang

NOTE: all the skills listed above are big things. We don't expect students to be experts in any of these. However, we expect students to have experimented with these technologies and have experience in majority of them.

Github repo: https://github.com/knative/eventing

Contact / potential mentors: Ali Ok (aliok@redhat.com)

Associated JBoss community project: Knative upstream


Knative - Scaling GraphQL Subscriptions on Serverless environments using Knative

Summary of idea:

GraphQL subscriptions work with websockets or some other persistent connection. When a mutation happens in the GraphQL engine, a subscribed client receives the event of that mutation over that persistent connection.
In the current case, the piece of software that sends the subscription events runs all the time.
How about scaling to zero if there are no subscribed clients?

This project will need some level of research in these areas, before the implementation:

  • How to use Websockets with Knative
  • How to scale resources with regards to Websocket connections
  • See if KEDA could be used to scale the subscription manager

Possible tasks for this project :

  • Implement the endpoint
  • Implement unit tests, e2e test
  • Implement performance tests
  • Write documentation
  • Prepare demos
  • Investigate how KEDA could help

Required knowledge

  • Kubernetes
  • Knative
  • Containers and tooling (e.g. Docker)
  • GraphQL
  • Websockets
  • Golang (must)

NOTE: all the skills listed above are big things. We don't expect students to be experts in any of these. However, we expect students to have experimented with these technologies and have experience in majority of them.

Github repo: https://github.com/knative/eventing

Contact / potential mentors: Ali Ok (aliok@redhat.com)

Associated JBoss community project: Knative upstream


Project Starfish - Open anything anywhere in any IDE/editor

Summary of idea:

Implement a client side app that supports urlhandlers (i.e. ide://clone-url?url=https://github... , ide://open-file?, ide://open-debugger?port=..&project=url, etc.)

Then integrate these various actions to perform and setup in vscode, eclipse, intellij, emacs, vi, etc.

Make it work across Linux, OSX and Windows so it can be used from anywhere.

Possible make browser extensions to enable it on various websites like github, gitlab, etc.

This project will need some level of research:

  • How to setup url handlers on all three major platforms
  • Understand the basic functionallity of at least three IDEs/Editors open/clone features to show it will work
  • Explore extendability of browers or IDE's as needed

Possible tasks for this project:

  • Implement cross-platform app
  • Add tests
  • Write documentation
  • Prepare demos

Knowledge prerequisite: 

  • Open choice on language, but most likely Java, Go or Python based
  • Basic understanding of IDE and/or Browser extensions
  • Access to more than one of the Operating Systems, virtual machines okey.

Github repo:

Skill level: Beginner/Intermediate

Contact(s) / potential mentors(s): Max Rydahl Andersen (manderse@redhat.com)

Associated JBoss community project(s): Quarkus, vscode extensions, JBoss Tools


Extend Apache Tomcat Kubernetes operator

Summary of idea:

Extend the current tomcat operator . Functionality and planning should be discussed between mentors and students

Knowledge prerequisite: Go, Kubernetes, Java, Tomcat

Github repo:  https://github.com/web-servers/tomcat-operator

Skill level: Intermediate

Contact(s) / potential mentors(s): Petros Prokopiou (pprokopi@redhat.com

Associated JBoss community project(s): JWS / Apache Tomcat


HTTP/3 Tomcat connector

Summary of idea:

Create and demo HTTP/3 connector for Tomcat using java h3 libs.

Knowledge prerequisite: Tomcat, Java, HTTP protocols (HTTP)

Github repo:  N/A for the moment, should be created from scratch

Skill level: Intermediate

Contact(s) / potential mentors(s): Jean-Frederic Clere, George Zaronikas

Associated JBoss community project(s): JWS / Apache Tomcat / Apache httpd


Add Kubernetes dynamic proxy configuration to Apache httpd

Summary of idea:

The purpose of this project is for a student to create a custom Kubernetes dynamic proxy configuration for Apache httpd

Knowledge prerequisite: Kubernetes, httpd

Github repo:  Should be added here https://github.com/web-servers

Skill level: Intermediate

Contact(s) / potential mentors(s): Jean-Frederic Clere

Associated JBoss community project(s): JBCS, Apache httpd


k3s vs k8s 

Summary of idea:

The purpose of this project is for the students is to research, evaluate, compare k3s & k8s by building their own clusters and compare middleware and jboss offerings on these. Student should conduct experiments and investigations that will conclude in community blogposts. This project idea is open for discussion between students and potential mentors

Knowledge prerequisite: Kubernetes

Skill level: Beginner

Contact(s) / potential mentors(s): Jean-Frederic Clere

Associated JBoss community project(s): Apache Tomcat, Wildfly, Apache httpd and more upon discussion.



Teiid Translators for AVRO,

Summary of idea:

Teiid (https://teiid.io) is Data Virtualization system that allows reading data from various different data sources and data types. The idea of this project is to extend the support for Apache AVRO, Apache Paraquet files on HDFS or in any other store. The Serializers and deserializers for these are already defined https://docs.aws.amazon.com/athena/latest/ug/avro.html and https://docs.aws.amazon.com/athena/latest/ug/parquet.html 

Teiid has a concept called a Translator, one need to write a new translator(s) for above where they need to use these SerDes from these links and convert the data.

Knowledge prerequisite: Java, Spring Boot

Github repo: https://github.com/teiid

Skill level: Intermediate

Contact(s) / potential mentors(s): Ramesh Reddy, Steven Hawkins

Associated JBoss community project(s): Teiid

  • No labels