Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Info
titleGeneral Information

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


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


We are welcoming Code for Cause under the umbrella of JBoss Community for GSoC 2021. 


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


If you are a student looking forward to participating in the GSoC 2020 2021 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.

2021.


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


STUDENTS: You may find a Sample GSoC proposal document here which was for this ideaYou can also look at GSoC-16 Ideas2017 Ideas2018 Ideas2019 Ideas, and 2020 Ideas for suggestions from last years.


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

...

Associated JBoss community project(s): Drogue IoT

...


EAT  - Testing Infinite Software Project Versions

Summary of idea:

In Drogue IoT we have an example/demo/PoC, which implements a voice assistant based on our Drogue IoT cloud deployment. There is wake-word/keyword/trigger-word detection, which initiates the audio recording. Once the snippet is recorded it will be processed by a speech-to-text backend and is further processed.

For the wake-word detection we are currently using Pocketsphinx. However, the detection rate is pretty bad. Also it doesn't run on embedded devices.

The outcome of the project should be to use Tensforflow (Lite) to create a model for wake word detection. Additionally a program (script) which continuously listens to audio input (microphone). Once the trigger is detected, it records for up to X seconds, or until it detects silence. A single command is sufficient ("hey rodney"), no full speech-to-text model is required. It is perfectly fine to re-use existing data sets and scripts, as long as they are open source, and we can build this ourselves.

This should be able to run on a Raspberry Pi like device, with the prospect of being able to run on embedded devices (microcontroller) using Tensorflow Lite. Bonus points for actually porting that to a micro-controller, but that is not required.

Knowledge prerequisite:

  • AI/ML - Tensorflow
  • Python (probably)
  • Linux
  • Embedded programming (optionally)

Github repo: https://github.com/drogue-iot/drogue-cloud, https://github.com/drogue-iot/hey-rodney

Skill level: Advanced

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, etc (the students should make their proposals)


Github repo: https://github.com/EAT-JBCOMMUNITY/EAT

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

Associated JBoss community project: EAT


Classrooms and Doubt Forum Feature in Mobile Application 

Summary of idea:

Product focuses on 100% education as well as upskilling developing countries and rural areas.  This idea expects completing mobile application features.

  • Doubt Forum
  • Gamification board (Scoring by helping others and being active)
  • Contests and Statistics Dashboard
  • Classrooms (For streaming lectures, managing recordings, managing assignments and contests)

Knowledge prerequisite:

  • JavaScript
  • ReactJS
  • Mobile development Experience in Any Tech (optionally)
  • Ionic / Capacitor (optionally)

Skill level: Medium

Project Chat: Discord  #gsoc Channel at  https://discord.gg/dydQp2Q

Github repo: https://github.com/codeforcauseorg/edu-clientProject Chat: https://matrix.to/#/#drogue-iot:matrix.org

Contact(s) / potential mentors(s): Jens Reimann Anuj Garg (jreimann@redhatanuj@codeforcause.comorg)

Associated

...

Sub Organisation: Code for Cause https://codeforcause.org


Create and Enhance APIs related to Education Platform

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, etc (the students should make their proposals)

Product focuses on 100% education as well as upskilling developing countries and rural areas.  This idea expects completing NestJS server application.

  • Doubt Forum API
  • Scoring API 
  • Contest  API
  • Assignments API

Knowledge prerequisite:

  • JavaScript
  • NestJS
  • Docker (Optionally)

Skill level: Medium

Project Chat: Discord  #gsoc Channel at  https://discord.gg/dydQp2Q

Github repo: Github repo: https://github.com/codeforcauseorg/EATedu-JBCOMMUNITY/EATserver

Contact(s) / potential mentors: Panagiotis Sotiropoulos (psotirop@redhat.com)(s): Anuj Garg (anuj@codeforcause.org), Ganga Chaturvedi (ganga@codeforcause.org)

Associated Sub Organisation: Code for Cause https://codeforcause.orgAssociated JBoss community project: EAT

Drools - Executable Model Compiler 2.0 

...

Associated JBoss community project(s): Debezium

Knative Autoscaling: Experiment with different algorithms and improve the existing one

Summary of idea:

Knative Serving is a building block for creating a Serverless platform on top of Kubernetes. Its scaling capabilities are among the most important features. However, Kubernetes is not necessarily easy to deal with, when it comes to scaling pods especially if you want to minimize the so called cold-start latencies (a request having to wait until an entire container is spun up), that customers have to take.

Currently, Knative Serving collects traffic metrics from various sources, aggregates them by taking an average over all datapoints and generates its recommendation based on the resulting data.

Your mission is to come up with a much finer hammer than "average the data" that takes the Kubernetes environment into account (i.e. scales down slower than it scales up) and to make sure that the new algorithm doesn't break users of the existing algorithm. As such, the creation of a great experimentation harness will be necessary.

  1. Understand and analyze the environment (Kubernetes, Knative, Serverless) and understand the characteristics that the algorithm has to have.
  2. Create an experimentation harness that allows you (and us) to play with different algorithms.
  3. With that harness, come up with an improvement over the current algorithm.

Knowledge prerequisite: Golang, Statistics, Serverless/FaaS (optional), Kubernetes (optional)

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


Create JWS Openshift Operator in Java

Summary of idea:

JWS can be deployed in Openshift via the JWS Operator. Currently, JWS Openshift operator is written in Golang using the operator-sdk. The mission of this project is to study and develop JWS Operator in Java, using java-operator-sdk (https://github.com/java-operator-sdk/java-operator-sdk).

Students can get the main idea from our Golang operator which is here: https://github.com/web-servers/jws-operator and adapt its functionality to the new java-operator-sdk based one.

Knowledge prerequisite: Java, Golang, Kubernetes/Openshift, Operators(optional)

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

Skill level: Advanced

Contact(s) / potential mentors(s): Jean-Frederic Clere (jfclere AT redhat DOT com), George Zaronikas (gzaronik AT redhat DOT com)

WildFly Elytron: Adding Encryption to the Filesystem Security Realm

Summary of idea:

The WildFly Elytron project provides a set of APIs, SPIs, and implementation to the WildFly application server to provide the required security capabilities in an application server environment. WildFly Elytron was integrated back during the development of WildFly 11. We are now getting ready to make a WildFly Elytron based configuration the default within WildFly and are looking to define our new out of the box security policies.

One of the components provided by WildFly Elytron is a security realm used to store representations of identities and their credentials using the local filesystem. For our new policy, we are looking to make use of this security realm instead of the previous approach of using property files. A missing feature in the filesystem realm is the ability to securely encrypt the identities that are stored on the local filesystem. The purpose of this project is to work on the addition of this encryption support and related tasks required to make this available out of the box in WildFly.

A minimal level of support would be for a SecretKey to be provided to the filesystem realm as it is initialized. The level of encryption required will need to be determined. Different levels could have different policies. Some examples of things to consider include:

  • Encryption of credentials.
  • Encryption of attributes.
  • Complete obfuscation of the username.
  • Signing of sections of an identity or the complete identity.
  • Integrity of the whole realm.

Possible tasks for this project:

  • Research data at rest recommendations for user credentials and sensitive data.
  • Create a document that describes how you plan to approach the problem.
  • Implement the ability to securely encrypt identities that are stored in the filesystem security realm.
  • Implement appropriate test cases.
  • Write documentation.
  • Create a blog post that gives an overview of your project.
  • Add the ability for the WildFly Elytron Tool to take an existing clear text filesystem realm and convert it to an encrypted one.

Knowledge prerequisites:

  • Experience with Java
  • Git
  • Maven

Github repo: https://github.com/wildfly-security/wildfly-elytron

Elytron website: https://wildfly-security.github.io/wildfly-elytron

Elytron getting started guide: https://wildfly-security.github.io/wildfly-elytron/getting-started-for-developers

Skill level: Intermediate

Contact(s) / potential mentor(s): Darran Lofthouse (darran.lofthouse@redhat.com), Farah Juma (fjuma@redhat.com), and Diana Krepinska (dvilkola@redhat.com)

Associated JBoss community project(s): Elytron, WildFly


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

This would be a continuation of work done in 2020 where it was made to work across Linux, OSX and Windows so it can be used from anywhere.

Also a browser extensions to enable it on various websites like github, gitlab, etc.

Possible tasks for this project:

  • Implement actual basic commands and have it work for all major IDE's
  • Make distribution using jbang and/or jreleaser
  • Integrate it with Quarkus open code in IDE feature
  • Add tests
  • Write documentation
  • Prepare demos

Knowledge prerequisite: 

  • Java
  • Basic understanding of IDE and/or Browser extensions
  • Access to more than one of the Operating Systems, virtual machines okey.

Github repo:

       https://github.com/starfix/starfix for having a place of discussion/conversion.

       If you want to explore/work in this area and show your experience/interest you can look into contributing to projects like  https://github.com/maxandersen/jbang or  https://github.com/quarkusio.  Basically any project that relates to developer tools, desktop tools, scripts or browser extensions will be useful experience. 

Slides:

        An outline of the idea with some screenshots/overview can be found here - feel free to comment.

    

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


Quarkus  - API validation and tracking for Quarkus and Quarkiverse

Summary of idea:

Quarkus does timeboxed releases every 4 to 6 weeks which includes Quarkus core and 180+ extensions. We aim for not breaking users and extensions writers but we also don’t want to stand still and not be able to innovate. Today we manually maintain a migration wiki page on what needs migrating if anything between releases. Project idea is to utilize the already existing revapi.org setup and expand it to properly detect and generate documentation for api breakages in a way that help users and extension writers.

When this is done it will be a key central element in Quarkus releases and used heavily across all extensions. If done right it will have a massive impact on enabling Quarkus to continue to innovate.

Expected Technologies to be used: revapi.org, java, quarkus, asciidoctor

Internship Tasks

- Learn to use revapi

- Enhance the current revapi reporting to be useful

- Automate revapi usage in Quarkus CI build

- Document and script for daily usage of revapi

Stretch goals:

- Implement additonal revapi checks for i.e. property, library and configuraton changes


Intern Benefits

You will get to work with one of the fastest growing Java frameworks in newer times.

You will work with a 100% remote and distributed team.

You will learn about how to write frameworks, how to keep API stable and how to evolve them.

When successful this revapi integration will have many year impact on ensuring Quarkus development team and users will be able to upgrade and migrate for years to come. It will be used daily by development team and on each monthly release of Quarkus the whole ecosystem will benefit from this work. 

Project Contribution Information

As part of the application process, all applicants must make at least one contribution to be accepted as an intern for this project. Only applicants who make a contribution will be eligible to be accepted as interns. This community requires applicants to complete a tutorial before they can make their contributions.

Please follow https://quarkus.io/get-started/ and https://quarkus.io/guides/rest-json to learn the basics of Quarkus.

You can read https://github.com/quarkusio/quarkus/blob/master/CONTRIBUTING.md to get an idea on how things works but not a first time requirement.


Applicants can contribute to this project through the project repository or contribution page. The project uses an issue tracker to keep information about bugs to fix, project features to implement, documentation to write, and more. Applicants can look for newcomer-friendly issues to use for their first contributions by looking for the following issue tags in the project issue tracker: good first issue

Work with your mentor on identifying and/or create github issues with description on what you plan to do.

You can see https://quarkus.io/community/ for community resources.

Especially https://groups.google.com/g/quarkus-dev is the mailing list and https://quarkusio.zulipchat.com/login/

Contact "maxandersen" on Zulip to get started.

Skill level: Beginner/IntermediateSkill level: Intermediate/Advanced

Contact(s) / potential mentors(s): Markus Thoemmes (mthoemmes AT redhat DOT com) Max Rydahl Andersen (manderse@redhat.com), Lukas Krejci (lkrejci@redhat.com) (co-mentor)

Associated JBoss community project(s): Quarkus, revapi