Rocket.Chat has applied and intends to become a mentoring organization once again for the 2021 Google Summer of Code (GSoC) program.
Student application for GSoC 2021 will begin March 29, 2021.
In the meantime, any student interested in joining Rocket.Chat for the GSoC 2021 program is encouraged to visit our 24 x 7 GSoC 2021 community channel:
Please see Official GSoC 2021 schedule for more timeline details.
For project ideas, check out our growing list of ideas for some inspiration.
Come meet our global community of potential mentors and students for GSoC 2021 and get some real-time help on next steps, please visit our 24 x 7 community server channel:
For offline discussions, we have a discussion forum:
If you have ideas and proposals that are not on our ideas list, or if a mentor is not available, please email to:
Interested students are also encouraged to interact with our core team and contributor community on GitHub:
Description: This project aims to create a kind of channel in which the messages sent will vanish after a configured amount of time. This would be a room (channel) setting, in which you can define how long the messages are going to last. Messages from here cannot be retrieved after its deletion and the deletion cannot be deactivated, just postponed.
Desirable skills: Familiarity with JS Full Stack webapp development. Experience with MongoDB and PM2 are ideal.
Description: The ability to create voice channels would allow users to quickly enter and leave pre-existing voice calls from Rocket.Chat's own UI, enabling a more practical usage of audio features for team collaboration. This project would add the UI elements and integrate them with an established audio platform to handle the calls.
Desirable Skills: Familiarity with nodeJS fullstack webapp development.
Description: The goal of this project is to add new decentralised P2P based storage providers within Rocket.Chat. Decentralised solutions not only provide more security, but they are also more cost effective. Some example of decentralised solutions include Filecoin, Saicoin, Storj, etc. Via this project, the files uploaded on Rocket.Chat should be stored on the decentralised network and the uploaded files should be accessible within Rocket.Chat.
Desirable Skills: Familiarity with nodeJS fullstack webapp development. Experience with Rocket.Chat codebase and/or with any of the decentralised solution providers is ideal.
Description: This project aims to add a Help Center within the Omnichannel Domain of Rocket.Chat. This will allow the creation of content that will answer people’s simple questions faster. The focus of this project would be to provide an interface to create content (similar to how we can create an article on a Blogging platform like Medium) and then make allow users/agents and customers to search within these contents which will quickly answer their questions. This project will add a self-serve support layer that will help with scaling by automatically resolving repetitive questions with the help of such articles and guides, leading to faster answers for the customers and fewer questions to users/agents.
Desirable Skills: Familiarity with nodeJS fullstack webapp development. Experience with ReactJS is ideal.
Description: This project aims to improve Apps-Engine end-to-end testing by adding more testing cases. The Apps-Engine APIs should be covered as many as possible to ensure that APIs tested are working. This project requires you to work across multiple repos (Rocket.Chat and Apps-Engine). Checkout these links for the context:
Description: The poll app already allows anyone to instantly create engaging rich interaction polls within any chat room. This project aims to expand its scope and capabilities in a huge way: making it a tool for enhancing participant's engagement with interactive quizzes / trivias / live-polls. Some initial ideas include:
Better bar-graph visualisation for the responses (with a switch for anonymous responses - so 3 types: Open / Confidential / Mixed)
Ability to add user options in the poll response and show the response of those responses in a visual way (e.g. word-cloud)
Ability to create different types of polls (e.g. 1-to-5, Agree/Disagree, Overrated/Underrated)
Ability to add emoticons on the reponse options
Ability to create
/poll live or
/live-poll feature - it has 2 parts (prepare a set of questions before hand and retrieve it just before the live poll starts. During the live-poll a countdown timer for each question is shown and upon completion, the responses are shown visually) a.k.a. multi-question version of the single poll feature
(Stretch Goal) Ability to download the
live-poll response, once the poll is over
Enhance UIKit if needed, to meet the above goals
Description: Share Lingohub translation strings with the web client, so the same contributor is able to translate both frontend and mobile apps.
Desirable Skills: Familiarity with React Native and Rocket.Chat codebase
Description: Create internal scripts to extract translation strings from the source code and give some options:
Check if all strings are translated in the target languages (en by default)
List strings present in the target language that are not in the code anymore
Option to render a completion chart for all languages
Option to remove strings from all languages based on a target one
Option to import missing strings into the target language to easily add translations
Integrate the script on CI to block PR from merge if there are new strings without translations
Description: The outcome expected from this project is to support Video and Audio calls in one of the native Omnichannel entry points called LiveChat. LiveChat is a small and lightweight application designed to provide B2C communication between Agents and website visitors and is developed with PreactJS, which means that any ReactJS developer will be able to implement the new features using WebRTC framework.
Description: This project aims to save a text version of an audio in the file metadata. This should be done server-side upon receiving the audio.
Description: The idea is to add a page where you can discover new channels. This will allow users to find channels based on: Total number of users, number of messages, search for specific topics, if the channel has been trending lately, and any more ideas we can think of. The whole idea of this project is to improve communities using Rocket.Chat and add a sprinkle of social aspect to Rocket.Chat.
Description: This project aims to create a new kind of channel where instead of sending messages, users would be able to create task cards with several custom fields. Those tasks would then work as a thread header, allowing comments in the format of a thread. The basic additional information for a task message would be an assigned user and a status. The channel header should also list options to filter the tasks by those fields.
Desirable Skills: Familiarity with nodeJS fullstack webapp development. Experience with ReacJS is ideal.
Description: This project aims to improve the Image upload feature, allowing users to crop images before sending it to a channel. Adding text and the possibility to draw on images could be implemented too.
Description: Rocket.Chat currently uses a third-party package to filter bad words. This poses a few problems, such as having to update the package every so often, having to check which words have been added or excluded in newer versions and deciding if we would like to keep blocking or allowing words. This project is for building an App that can be enabled in our Marketplace that will filter out a list of default bad words but will allow admins to add or delete words from that list. The app will need to cover the following requirements:
Create a UI for managing the App settings
Load a list of words from a URL
Add/Remove words from a list
Add/Remove channels where the bad words filtering is enabled (with a toggle for "all channels")
Provide statistics on blocked words and offending users
Automatically deactivate users that go above a certain threshold
Project repository: _**_https://github.com/RocketChat/Rocket.Chat.Houston
Desirable Skills: TypeScript, Git, Shell
Description: Houston is the CLI tooling we use to release new versions of Rocket.Chat and generate our changelogs from merged pull requests. We want to:
Rewrite the tooling in TypeScript
Accept a new format of PR titles (conventional changelog)
Add a validation system for PRs titles via GitHub Actions
Add tooling to preview the generated changelog for the PR
Add new top level of separation for product type (like Enterprise and Community) based on labels
Support dependent repositories to import their changelogs, for example, import the changelogs of apps engine
Description: Currently the Apps-Compiler package uses the bare TypeScript compiler to process apps' code and generate the JS version. This has some limitations, e.g. we can't "simply" bundle the whole app in a single file, we can't bundle npm packages, and so on. By changing this compiler into a proper bundler (Webpack, Rollup, etc.), we would have access to a richer ecosystem of tooling to handle the compilation process of Rocket.Chat Apps.
Desirable Skills: JS/TS, familiarity with bundlers (using them, not necessarily writing one) would be interesting
Description: This feature consists of two new options for the end-users:
Stop Notifications: A list of options to stop notifications for a certain time (30min, 1h, 2h, 24h, custom date/hour).
Notifications Schedule: Option to configure (in user's settings) the availability time where notifications will be sent:
With the option to configure for every day from X time to Y time
With the option to configure for weekdays from X time to Y time
With the option to configure X and Y times for each day of the week manually
The same settings should be available for the workspace admin to configure a default value for all users
The implementation should cover the web and mobile applications
Description: Add support for sharing a current location from mobile apps. Mobile apps are going to fetch the current location and add coordinates as a message. Mobile apps are also going to show the appropriate map image.
Desirable Skills: Familiarity with React Native and Rocket.Chat codebase
Description: Improve the current `Typing` functionality to support, on web and mobile applications, two new things:
New properties to allow define new actions like `recording` or `uploading`, changing the current implementations to support and send those 2 new events and improve the end-user experience
Support specifies a context for the typing, allowing it to be shown inside a thread when users are typing in that context instead of in the main room.
Description: Rocket.Chat currently uses a package to provide message translations. This project aims to build that funcionality on an app, thus reducing the codebase of Rocket.Chat and allowing for easier configuration.
Description: This is a chat and networking platform that helps to manage, grow and connect communities through messaging, content and discovery. The goal of this platform is to provide an easier way to collaborate over any Github, Gitlab and others repository hosting services. The focus will be to add new features like User Management, Administration Module, etc - also improve the current features which add more advantage and provide a friction-less experience to all the fellow developers.
Desirable Skills: Familiarity with nodeJS fullstack webapp development. Experience with ReactJS and ExpressJS is ideal.
Description: This is a chat and networking platform that helps to manage, grow and connect communities through messaging, content and discovery. The goal of this platform is to provide an easier way to collaborate over any Github, Gitlab and others repository hosting services. The focus here will be to create a cross-platform mobile app for this platform
Desirable Skills: Familiarity with React Native, iOS and Android development.
Description: Develop an application/playground that allows developers to test UiKit Blocks and Interactions. Should allow developers to generate code used by Rocket.Chat apps and edit the content to preview the result
Project repository: https://github.com/RocketChat/Rocket.Chat.Livechat
Desirable Skills: Accessibility, React, SCSS
Description: Omnichannel users, including users with visual disabilities, must be able to perceive content at the Livechat widget. The main idea here is to give some options to Livechat widget users to active "Accessible mode", which means:
High contrast colors.
Icons accompanying text.
Bigger highlight over selected text or cursor active/hover using "tab" key.
Show a better solution when an Agent is typing.
Desirable Skills: Familiarity with matrix.org protocol; skilled in rust, golang, and TypeScript development
Description: Explore and improve existing Rocket.Chat to Matrix.org bridge(s) Investigate current state of development in dendrite and hydrogen. Start the work on migrating to native support of the matrix protocols.
Description: The embedded chat in Big Blue Button is already a Meteor based chat with similar structure to Rocket.Chat. However, other components in Big Blue Button also depends on the same Meteor stack working against the same MongoDB instance for proper operations. This project aims to create the ability to integrate an existing Rocket.Chat server into Big Blue Button, replacing the existing embedded chat component.