Internships
Register
Copyright © 2000—2025 JetBrains s.r.o.

RPC Protocol and Library APIs Design

Description

Important:

This is a research internship, where the majority of work will be about gathering information and writing a design proposal for a network protocol. The actual implementation of the protocol is a non-goal of this internship.


Overview

We are building the kotlinx-rpc library for the Kotlin ecosystem: https://github.com/Kotlin/kotlinx-rpc

This library idea is to gather RPC implementations, provide unified Kotlin first APIs for them and make them work with Kotlin Multiplatform with no additional hassle.

Currently, we have two protocols available: gRPC and kRPC:

  • gRPC - is a widely used RPC protocol, and we are working heavily now to support it natively in KMP

  • kRPC - is our in-house Kotlin-first protocol, which was the heart of the original implementation of the library. It is a very simple protocol, which serves some external users for their pet projects as well as some internal JetBrains projects. However, it has a lot of long-standing issues that we want to resolve, and we need to do it all together. Researching the new approach for this protocol will be the goal of this internship. 

Internship Goal

The goal of this internship will be to conduct a comprehensive research that will outline the new kRPC protocol design and the design of the library APIs supporting the protocol implementation focusing on it being KMP first and documenting the results.

Non-goals

  • Creating a second gRPC

  • Creating a general-purpose polyglot RPC protocol

  • Protocol implementation

Internship Tasks

The tasks will be:

  • Establishing the formal requirements for the protocol and the library APIs

  • Researching other protocol implementations, like gRPC, tRPC, JSON-RPC, RMI, CORBA, etc.

  • Researching relevant library APIs design questions

  • Gathering user requests and feedback both internally and externally

  • Iterating over the design proposal with the team and, optionally, invited experts

End product

In the end we expect the design document to be present with all the relevant topics covered and backed by the extensive research. The aspects of the protocol that will be relevant to the internship project will be decided at the start of the internship and probably will contain a set of most important topics, excluding some others. The research, however, must account for the further developments.


Other Considerations

This project is mostly about reading, understanding and writing. In the age of LLMs this presents us a challenge with finding a candidate that can do these things without relying on LLMs. The candidate must understand that ChatGPT is no more than a tool amongst others, and it must not replace all other skills, including but not limited to - thinking.

Expect appropriate checks for that matter before and during the internship.

In the spirit of these requirements: this and other texts on the project's page are written by hand.


Tasks for the project application have a time limit on the platform. Please, fell free to ignore it (while respecting the submission deadline). You can send your solutions via email to me, if you will exceed the platform's time constraint.

Requirements

  • Excellent knowledge of the Kotlin language and its best practices

  • Good knowledge of Kotlin Coroutines

  • Research skills beyond ChatGPT:

    • Finding information online using search engines

    • Reading and understanding RFCs: https://www.rfc-editor.org  

  • Good soft skills, not for the sake of soft skills themselves:

    • Candidate is to be able to communicate their decisions to the team, explaining them clearly

    • Candidate is to be able to reason during discussions, making sure their point is heard and that they too understand the opposite opinion if one is presented

    • Candidate is to be able to reach out, on their own initiative, to other people in JetBrains who might provide them with additional knowledge on the subject

  • Excellent English reading and writing skills


Good, but not required:

  • Computer networks knowledge

  • Java knowledge

  • Experience in computer science related research (please, tell us about it in your application)

  • Experience in open-source development

Admission

Internship projects 2025-2026

Contact details

internship@jetbrains.com

Preferred internship location

Armenia
Cyprus
Czechia
Germany
Netherlands
Poland
Serbia
UK

Technologies

Concurrency
Gradle
Kotlin

Area

Development
Research

Internship timing preferences

Full-time preferable
Start ASAP

Candidate graduation status

Final-year students preferred