...
Info | ||
---|---|---|
| ||
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 Ideas, 2017 Ideas, 2018 Ideas, 2019 Ideas, and 2020 Ideas for suggestions from last years. STUDENTS: You may find a Sample GSoC proposal document here which was for this idea. |
Warning | ||
---|---|---|
| ||
MENTORS: Red | ||
Warning | ||
| ||
MENTORS: Red Hat employees can change this page directly to add ideas. Please be extra careful to not get other mentor's edits discarded. Non-Red Hatters can add a comment to the page and admins will make sure the idea is added to the page. |
...
Project Chat: Discord #gsoc Channel at https://discord.gg/dydQp2Q
Github repo: https://github.com/codeforcauseorg/edu-client
Contact(s) / potential mentors(s): Anuj Garg (anuj@codeforcause.org), Kunal Kushwaha (kunal@codeforcause.org)
Associated Sub Organisation: Code for Cause https://codeforcause.org
...
Project Chat: Discord #gsoc Channel at https://discord.gg/dydQp2Q
Github repo: https://github.com/codeforcauseorg/edu-server
Contact(s) / potential mentors(s): Anuj Garg (anuj@codeforcause.org), Ganga Chaturvedi (ganga@codeforcause.org)
...
Associated JBoss community project(s): Debezium
...
Create JWS Openshift Operator in Java
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.
- Understand and analyze the environment (Kubernetes, Knative, Serverless) and understand the characteristics that the algorithm has to have.
- Create an experimentation harness that allows you (and us) to play with different algorithms.
- 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/
Skill level: Intermediate/Advanced
Contact(s) / potential mentors(s): Markus Thoemmes (mthoemmes AT redhat DOT com)
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
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: Advanced
Contact(s) / potential mentors(s): Jean-Frederic Clere (jfclere AT redhat DOT Max Rydahl Andersen (manderse@redhat.com), George Zaronikas (gzaronik AT redhat DOT com)Lukas Krejci (lkrejci@redhat.com) (co-mentor)
Associated JBoss community project(s): Quarkus, revapi