Skip to main content

Summer of Code 2018

In 2018, the Eclipse Vert.x team proposes subjects for Google Summer of Code through the Eclipse organization.

Project ideas are listed on the Eclipse Wiki page for GSoC. If you are interested by one of these subjects, send an email to the possible mentor (link on the Eclipse wiki page).

To submit your proposal, use the Eclipse organisation.

In addition to the GSoC proposal document, we ask candidates to implement a simple Vert.x application. This helps us make sure candidates have a basic understanding of asynchronous programming and the Vert.x toolkit. Submit your proposal even if not done with the assessment application! Google will not extend the submission period but we can continue reviewing assessments while evaluating the submitted proposals.

If you have questions, feel free to ask possible mentors via email or on community channels.


Archives

2017 ideas

Vert.x-Web purely functional handlers

Summary of idea:

Eclipse Vert.x is a toolkit for the Java Virtual Machine enabling the implementation of reactive, highly concurrent, polyglot applications. Use any function as a vertx-web handler, then provide an API to compose these functions in a "RouterBuilder API" way. This should be a totally separated project, keeping vertx-web as is for now and targeting "pure JVM languages" (Java, Kotlin, Groovy, Scala), especially those who have "first-level" functions (and maybe annotations).

What should be achieved:
  • any lambda can now be used as a vert.x web handler, automatically resolving lambda parameters.
  • provide the ability to deal with futures in vert.x-web, if a lambda is returning an AsyncResult, then:
    • the next handler should only be called once the future is completed.
    • the context should automatically been failed if the asyncresult is failed.
  • allow users to define custom parameters resolvers by implementing an interface such as Resolvable<RoutingContext, T> or AsyncResolvable<RoutingContext, T>.
  • create a "builder-like" API on top of vertx-web's Router to deal with such lambdas.

For further reference and examples see the following google group post.

Knowledge prerequisite: Java (8), Gradle or Maven is a plus
Skill level: Intermediate, Experienced
Contact(s) / potential mentors(s): [email protected], [email protected]

Administration Console for Vert.x Applications

Summary of idea:

Eclipse Vert.x is a toolkit for the Java Virtual Machine enabling the implementation of reactive, highly concurrent, polyglot applications. This topic is about implementing an extensible administration console.

The outcome should be able to be consumed as a Vert.x Web Handler, but also as guidelines to build such extensible dashboards.

What should be achieved (non exhaustive list):
  • Scaffolding the dashboard
  • Provide a view of the application content
  • Provide a logger view to get and set the log levels
  • Add a basic monitoring view
  • Add a service discovery view
  • Add a circuit breaker view
  • Add a CRUD view

For further reference and examples see the following google group post.

Knowledge prerequisite: Java (8), CSS, JavaScript Gradle or Maven is a plus
Skill level: Intermediate, Experienced
Contact(s) / potential mentors(s): [email protected], [email protected]

Vert.x on Embedded JDK

Summary of idea:

Eclipse Vert.x is a toolkit for the Java Virtual Machine enabling the implementation of reactive, highly concurrent, polyglot applications. More and more Vert.x is getting used on IoT fields now that we offer support for MQTT and are lightweight when compared to other Java frameworks. It is important that Vert.x applications can run as expected under the embedded JDK using the compact profiles (JEP-161).

What should be achieved:
  • Document how to work with Embedded JDK:
    • How to build and Vert.x application with a compact profile.
    • Identify if there are required changes to the core platform to cover this feature.
    • Write articles on this subject.
    • Work with the IoT community to identify usability issues and provide solutions.
Knowledge prerequisite: Java (8)
Skill level: Beginner, Intermediate
Contact(s) / potential mentors(s): [email protected], [email protected]

2016 ideas

Implementation of “blueprint” Vert.x applications

Summary of idea:

Vert.x is a toolkit for the Java Virtual Machine enabling the implementation of reactive, highly concurrent, polyglot applications. The idea of the project is to implement a set of applications using the Vert.x toolkit to illustrate how different classes of applications can be done. This project aims to provide guidelines to Vert.x users to implement various applications.

The project starts with an introduction to Vert.x and the implementation of small examples using the different modules available in the Vert.x ecosystem. Then, the first application is a web application to manage a todo list following the specifications of Todo Backend. The second application is a message-based application such as Kue. The third application is also message-based but illustrates the scalability of Vert.x. It provides a message processing system able to handle a large number of message per seconds. Finally, the last application is a micro-service application close to the Spring Micro Service example.

Live demo of the applications will run on OpenShift and OpenStack, to illustrate production deployment. All these applications will be available and documented on the Vert.x website.

Knowledge prerequisite: Java (8), Gradle or Maven is a plus
Skill level: Beginner, Intermediate
Contact(s) / potential mentors(s): [email protected], [email protected]
Associated JBoss community project(s): Vert.x

DevOps tooling for Vert.x applications

Summary of idea:

Vert.x is a toolkit for the Java Virtual Machine enabling the implementation of reactive, highly concurrent, polyglot applications. The idea of the project is to implement a set of tools / guidelines to implement Vert.x using a “devops” approach. This cover continuous integration, continuous deployment, production settings and so on.

The project starts with an introduction to Vert.x and the implementation of small examples using the different modules available in the Vert.x ecosystem. In this project, you are going to:

  • provide the different settings to use different log aggregator that can be used with Vert.x application. This includes Graylog and Heka.
  • monitor applications based on New Relic, Netflix Servo are studied.
  • provide deployment recipes for Ansible and Chef
  • provide guidelines to implement continuous delivery of Vert.x application, in a zero-downtime environment
Knowledge prerequisite: Java (8), Jenkins, Gradle or Maven is a plus
Skill level: Intermediate, Experienced
Contact(s) / potential mentors(s): [email protected]
Associated JBoss community project(s): Vert.x, Ansible, Jenkins, Heka, Servo,...

Event bus clients for C, Objective-C, and Rust applications

Summary of idea:

Vert.x is a toolkit for the Java Virtual Machine enabling the implementation of reactive, highly concurrent, polyglot applications. Thanks to its eventbus, any application can interact with Vert.x applications. The idea of the project is to provide a set of libraries to ease the integration of Vert.x applications with applications developed in Go, Rust and C.

The project starts with an introduction to Vert.x and the implementation of small examples using the different modules available in the Vert.x ecosystem. A focus is made on the integration capabilities and the event bus bridges.

At least 3 languages are covered in this project: C, Objective-C and Rust. Proposals for other languages are definitely welcome. For each language, a library is developed in order to let an application developed with the language to interact with the Vert.x Event Bus. The communication is based on TCP and JSON.

Knowledge prerequisite: Java (8), some notion of C, Go and Rust
Skill level: Intermediate, Experienced
Contact(s) / potential mentors(s): [email protected], [email protected]
Associated JBoss community project(s): Vert.x, Rust