Applications for the GSoC 2019 season have now closed. Please see GSoC timeline for more details.
First evaluation has completed! Coding continues at a feverish pace. Progress has been smooth across the projects. Projects are ontrack based on weekly mini-milestones agreed between mentors and students. Mentors are busy making sure that every student receive his/her detailed evaluation and payment. Students have also completed evaluation for their mentor(s). Many students are preparing their project for interim demo and reviews by our core team. During this first evaluation, we have decided to fail one student due to no communications with mentor. We also had to remove a mentor due to lack of available participation time.
Coding has begun! This year continues to be the most active and productive GSoC year at Rocket.Chat. During the bonding period, our students continued to assist community in public channels, interact with core team, contribute to bug fixes and documenation updates. They have also worked with their mentors to add detailed schedule to their proposal, reflecting measurable goals/milestones. Coding and detailed design work have started across all active projects. In addition, we are happy to welcome a team of community mentors from Credit Suisse Singapore, already well experienced with our core and native mobile code bases, to assist us this season.
Unfortunately, during this time, we had to remove one student from the program due to extended inactivity.
2019 is an incredible year for GSoC at Rocket.Chat. Thanks to the ethusiastic early support from students and community (mentors), Google has graciously granted us SEVENTEEN project slots. This far surpasses any record from prior years. As a result, we are delighted to welcome these 17 active community members to work with us during the GSoC 2019 season:
VoiceOver Accessibility in Rocket.Chat iOS application
Matheus Cardoso, Samar Sunkaria
Noor Binte Amir
Theme Support for Rocket.Chat Android App
Filipe Brito, Peter Nguyen, Balaji Sanjeevi, Renji Raj
Karen Bedi, Peter Lepeska
Peter Lepeska, Karen Bedi, Ramkumar KB, Jian Hou
Livechat: Real-time Visitor Monitoring
Renato Becker, Diego Mello
Interactive APIs documenation
Martin Schoeler, Marcos Defendi
Integrating Google Calendar with Rocket.Chat
Douglas Gubert, Rodrigo Nascimento
Improve User Experience with Bots in Android App
James Hepburn, Peter Lepeska
Improve Test Automation in Rocket.Chat Android Repository
Eric Rosenthal, James Hepburn
Improve Rocket.Chat Auto-Translate feature
Marcelo Schmidt, Sing Li
Improve end-to-end testing infrastructure for ReactNative client
Diego Mello, Diego Sampaio
Implemenation of Newsfeed in Rocket.Chat
Devin Toth, Peter Lepeska
Implement iOS and Android share extension for React Native app (Rocket.Chat Experimental)
Diego Sampaio, Diego Mello
Enhancing ReactNative App with new features
Guilherme Gazzo, Diego Mello
Deeper Nextcloud Integration
Tasso Evangelista, Roeland Douma, Gulherme Gazzo
Apple Watch App
Samar Sunkaria, Thiago Sanchez, Balaji Sanjeevi, Renji Raj
Alexa Skill for Rocket.Chat
Sing Li, Gabriel Engel
It was a very difficult decision for many mentors to select from the large number of highly qualified students (we were able to engage the students early on in the GSoC cycle with open source contributions via the GSoC Leaderboard ).
Some high calibre open source contributors were not selected for GSoC; to accomodate these exceptional students, our community member Viasat has agreed to sponsor an additional FOUR projects this season. Rocket.Chat has in addition sponsored ONE qualified student with special circumstances to work with us for the term.
Rocket.Chat iOS Contact Sync
ReactNative Social Features
Making Rocket.Chat Android native app wonderful for consumers
Performance optimizations for ReactNative Client
Google Action for Google Home and Server-side improvements to support VUI
This, in combination, allowed us to accomodate a total of TWENTY TWO ethusiastic students this summer season.
All students and mentors are now busy mutually bonding and with our core team and greater community. Each mentor is also working with his/her student on refining the weekly and monthly milestones/deliverables within the proposal to better reflect achievable project objectives as well as making them measurable for the monthly evaluations. Meanwhile, all our students are continuing to contribute to the Rocket.Chat open source project(s) as they have been doing since the start of the GSoC 2019 cycle.
This year, Rocket.Chat received a record breaking ONE HUNDRED AND TWO proposals from students studying at every corner of the globe. It is the first year we attempted to build a students + mentors community prior to submission deadline. Thanks to an enthusiastic and dedicated students community, we are successful in creating a GSoC 2019 community of TWO HUNDRED AND FIFTY members on our dedicated community server channel:
Open source contributions from students have already reach an all time high, with over ONE HUNDRED AND THIRTY students signed up for our real-time contribution tracking leaderboard:
Our community of mentors is hard-at-work right now going through every one of the proposals, and will be contacting students for a video chat prior to deciding on proposal selection and slot assignments. All students are encouraged to continue their engagement with our community, and contribute to our open source projects.
For ideas, check out our list of ideas for some inspiration.
Come meet our global community of 200+ mentors and students for GSoC 2019 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 contributor community on GitHub:
Enthusiasm and interest are extremely high this year; over 100 candidate students have already started to interact with our community and contributing to the projects! Together, they have already contributed over 100 merged PRs to our various projects. We are maintaining a real-time updated leaderboard for at-a-glance student (candidates) contribution here:
The leaderboard project itself is open source, created and maintained by our student (candidates). All potential GSoC organizations are welcome to use and deploy it (the project has a super friendly MIT license - just like Rocket.Chat).
Mentors: @sameesunkaria @thiago.sanchez
Project repository: https://github.com/RocketChat/Rocket.Chat.iOS
Description: Create an Apple Watch application that replicates the most basic features we have in our iOS mobile client, such as viewing the chat rooms and reading the messages. Let the user ask Siri to read the latest messages, send messages or respond to a message.
Desirable Skills: Familiarity with WatchKit development on WatchOS & SiriKit. Ability to work in large multi-disciplinary teams.
Project repository: https://github.com/RocketChat/Rocket.Chat.Android
Description: Themes are very popular and they are part of what makes Android stand out from the rest. But the current Rocket.Chat Android app lacks the feature of applying different themes. This project aims to bring different themes support like dark mode and black mode into the existing Android client. It should enable any developer to create a theme for the Rocket.Chat Android app without the need to work with our core codebase.
Desirable Skills: Familiarity with Android development, Kotlin, and design patterns.
Mentors: @douglas.gubert @rodrigok
Description: The Rocket.Chat Apps Engine is here to make it easier to extend Rocket.Chat's functionality without having to deep dive into the code base. The goal of this project is to leverage the Apps Engine capabilities to create an integration with Google Calendar, using Slashcommands, custom API endpoints, custom Settings, etc.
Desirable Skills: Familiarity with TypeScript.
Mentors: @roeland.douma @guilherme.gazzo
Description: It's already possible to share a file from Nextcloud into Rocket.Chat. But the authentication is a bit clumsy. It would be great to have a single real sign in. So you only need to sign into Rocket.Chat and are automatically signed in Nextcloud of both talks to the same directory of course.
Desirable Skills: Familiarity with Rocket.Chat and Nextcloud development.
Description: One of the most popular features in Rocket.Chat is auto-translate, where users can set their language preference to have all messages translated. This feature works by translating every incoming message into the user language of choice. We would like the student to make it possible for the package also to translate every message the user sends into another language. As a plus, if the student can implement a channel language setting, it would be superb.
Desirable Skills: Familiarity with Rocket.Chat development and meteor packages.
Mentors: @renatobecker, @diegolmello
Description: The goal of Real-Time Visitor Monitoring is to provide an important feature for the Live chat team by displaying a list of visitors who are browsing the website where the Livechat widget is installed. Having this feature, it will be possible to track important information related to visitors, such as the current page, location, time on site, local time, and so on, even though the visitor has not yet started a conversation with an agent. In addition, an agent will be able to start a conversation with a specific visitor directly from the list, improving the proactivity of the Live chat team.
Desirable Skills: Familiarity with Rocket.Chat/Livechat development.
Mentors: @martin.schoeler @marcos.defendi
Project repository: https://github.com/RocketChat/docs
Description: Create an easy-to-use interface to let the user explore, test and get info about the existing endpoints of the Rocket.Chat's APIs - an API playground. The user will be able to connect and make requests directly from the UI, also being able to change the arguments of the requests and testing different flows of the APIs. Since our server APIs change constantly, it is important that the subset of API documentation within the playground is in precise synchronization with the code. This will require the integration of a documentation generation library.
Desirable Skills: Familiarity with Jekyll and Rocket.Chat Rest API.
Mentors: @karan.bedi, @bizzbyster
Description: Adding the functionality of Service accounts to Rocket.Chat. A service account is an account owned by a User (owner), having a basic profile (username, avatar, description, etc.). If any other User (initiating user) creates a direct messages(DM) session with this service account, this chat session is carried to the owner of the service account. The owner can then reply to this chat session, but to the initiating user, it would seem that the reply is coming from the service account. An authorized user should be able to create service accounts, transfer the ownership of the service account. Service accounts should be searchable; there should be a directory of service accounts. Also, users should be able to subscribe to service accounts, and a service account owner should be able to send broadcast messages to its subscribers. Automated tests should be written to cover the added functionality.
Mentors @eric.rosenthal @jaytat0
Description: The goal of this project is to enhance the current test infrastructure in the RocketChat repos and pipelines. Currently, there is some very minimal unit testing that needs to be expanded, and no integration or system level tests or infrastructure to support them. This project could focus on one of the repos, possibly the Android code base, or all. Once a test infrastructure and best practice is established, the goal is that no new code gets merged unless it has new tests that will be run at build time, and it passes all of the previous tests.
Project repository: https://github.com/RocketChat/Rocket.Chat.iOS
Description: VoiceOver is a gesture-based screen reader that lets you enjoy using iPhone even if you don’t see the screen. This is especially important for those with low or no vision. We want to make Rocket.Chat for everyone. A blind user should be able to easily add servers, change servers, read messages and send messages, as well as other additional functions such as editing profile and creating channels. A minimum acceptable scope is to be determined.
Desirable Skills: We are looking for an undergraduate student who is familiar with team work, developing iOS Apps using UIKit and Swift, as well as writing maintainable code with Unit Tests and having some familiarity with Voice Over and Accessibility.
Mentors: @jaytat0, @bizzbyster
Description: Implement a way for administrators to rebrand their instances of rocketchat - product name, icons, colors, etc. - for the android and ios apps, which currently do not support this. Besides adding this capability, another goal would be to make this branding across all the OS’s easy for an administrator that may not be too tech savvy. Ideally, this would only be a few easy steps. Besides this ease-of-use improvement, this would also make it less likely that people will fork rocket to put in their own branding.
Desirable Skills: Familiarity with Android and/or iOS development, specifically the Rocket.Chat.Android/Rocket.Chat.iOS code bases.
Mentors: @tasso.evangelista @guilherme.gazzo
Description: We've been working on our new Livechat solution and it's time to add two great new features that will make Livechat even more powerful: voice and video calls! The idea is to integrate Livechat with the providers already supported in Rocket.Chat, such as Jitsi, WebRTC, BigBlueButton and so on. With these two new features, Livechat users will be able to initiate video and audio calls between them and Livechat agents.
Desirable Skills: Familiarity with Rocket.Chat/Livechat development, ReactJS/PreactJS, Voice and Video communication
Mentors: @sing.li @gabriel.engel
Project repository: https://github.com/RocketChat/alexa-rocketchat
Description: Bring access of Rocket.Chat into the world of 100 million+ Alexa enabled devices. The project should aim beyond the obvious TTS <-> STT "Rocket.Chat bridging" of intelligent VUI terminal devices and create innovative, high valued user experiences to the Alexa ecosystem - powered by open source Rocket.Chat. Google Home/Assistant devices support, if possible, should also be considered concurrently.
Desirable Skills: Familiarity with Alexa skills development. Experience with interfacing external sources and systems into Alexa skills. Passion for global converstational interaction enablement. Familiarity with Google Action development ideal.
Mentors: @bizzbyster, @eric.rosenthal
Description: Rocket.chat trails both team and consumer chat platforms like Slack and Facebook Messenger/WeChat in terms of the richness of user interface components supported by bots. The goal of this project would be to add rich messages, persistent menus, welcome pages, webviews and other components to the Android, iOS, and web clients to allow chatbots to become comparable to web apps in terms of usability and UX.
Desirable Skills: Interest UI/UX and chatbots. Experience in iOS, Android, or web client front ends development. Excited to participate in the full life cycle development process in an open source community context.
Mentors: @bizzbyster, @karan.bedi
Description: Adding the functionality of newsfeed, which is similar to a customized read-only channel for every user. Every user (follower) can follow other users (followed user). Posts from the followed user appear in the newsfeed of their followers. Posts are threaded discussions, started by the followed user in any public channel (origin channel), their follower can or cannot be a part of the origin channel, but this post comes up in their wall with a permalink to the original post in the origin channel. This helps in discovering new conversations. Interns are encouraged to propose extensions to this like wall, where a user can post threads that show up in their follower's feed, status updates, etc. Automated tests should be written to cover the added functionality.
Mentors: @diegolmello, @renatobecker
Description: E2E testing is important to keep the entire app working throughout the implementation of new features. Currently there's 219 E2E tests developed and passing on iOS only and they aren't working on CI, because we need an E2E dedicated and configured server. This project aims to improve testing infrastructure by adding Android capability and making test to pass on CI. Also we need to make sure all tests are passing as fast as possible. If there's any time left, the student must add even more tests.
Desirable Skills: Familiarity with React Native and Rocket.Chat.ReactNative code base.
Mentors: @bizzbyster, @karan.bedi
Description: For every deployment of Rocket.chat, there is a team or community that generates a lot of content. Rocket.chat itself is the repository for much of that content but the rest typically resides in other applications such as github or jira or google docs, many of which are third party services and so the content is not owned by the community that hosts the Rocket.chat server. In one particular scenario, a user may want to write an article and "publish" it to groups or contacts within Rocket.chat. Today that would have to be done typically using a third party service. What if instead article creation, searching, and storage were integrated with Rocket.chat such that each user could maintain his or her own library of articles and contacts of that user could subscribe to see new articles posted by that user and to discuss those articles using something like Rocket.chat Threads. By default, each Rocket.chat user would essentially hav their own "blog" which could be accessed via a permalink including links to each "article." In general, the purpose of this project is to develop a minimum integration with another open source publishing platform (such as https://github.com/TryGhost/Ghost) that allows users (or bots or service accounts) to write and publish articles that get stored on a location configured by the Rocket.chat administrator so that the community maintains ownership of more of the content it generates.
Mentors: @diego.sampaio, @diegolmello
Description: Share extensions enables iOS or Android OS to share content between apps. This project aims to implement a share extension for React Native client to let users share data into Rocket.Chat from other apps. For example, a user should be able to send photos from the camera roll to a Rocket.Chat channel without opening the RC client.
Desirable Skills: Familiarity with React Native, iOS and Android development and Rocket.Chat.ReactNative code base.
Mentors: @guilherme.gazzo, @diegolmello
Description: In mobile apps, users must be able to do what they want in fewer taps as possible. Slash commands are faster ways to trigger trivial actions, like invite a user or archive a channel, and it should be available on React Native client.
Desirable Skills: Familiarity with React Native development, specifically the Rocket.Chat.ReactNative code base.
Mentors: @douglas.gubert, @rodrigok
Project repository: https://github.com/RocketChat/Rocket.Chat.Apps-engine
Description: Currently the Rocket.Chat Apps Engine does not support that apps include their own
node_modules dependencies, which can be very limiting in some use cases. The goal of this project is to modify our engine so that it can properly install and manage an app's dependencies, enabling app developers to unleash their full potential.
Description: Rocket.Chat already allows for users to add custom fields through a setting that accepts a JSON. We would like to create an interface to manage these custom fields. Each custom field must be composed of label, type (one of predefined: string, number, picklist, money, etc.), and an option to determine if this field must be displayed on registration or not. On Users Directory, users must be able to select multiple records from the results and do one of the possible actions: add to existing channel or group and create new channel or group; if only one record is selected, it should also be possible to start a direct message with the selected user.
Desirable Skills: Familiarity with Rocket.Chat development.
Description: Develop a suite (5+) of BOTs across our Chatbot support portfolio/platforms; integrating current ML, AI, NLP, CMS, CRM and big data access stacks. BOTs need to be contemporarily interesting, simple to construct, yet substantially functional. They also need to be adaptable across the bot frameworks that Rocket.Chat supports. They will be used as starter learning resources across our BOT repositories.
Desirable Skills: Deep interest in ML, AI, and modern BOT technologies. Experience in developing BOTs using NodeJS or Python. Clear methodical mind plus the ability to simplify and explain complex problems in simple terms. Technologically fearless.
Description: Rocket.Chat is currently capable of importing data exported from Slack and HipChat, but there's no importer for Mattermost data. This is a valuable feature that the application is still missing.
Mentors: @douglas.gubert, @rodrigok
Description: The Rocket.Chat Apps Engine is here to make it easier to extend Rocket.Chat's functionality without having to deep dive into the code base. The goal of this project is to leverage the Apps Engine capabilities to create an integration with Asana, using Slashcommands, custom API endpoints, custom Settings, etc.
Description: The goal of this project is integration with Rocket.Chat's admin webview page when the user has access. This helps administrators to change their servers behavior without the need to open Rocket.Chat on the web or the mobile version on their devices.
Desirable Skills: Familiarity with React Native development and Rocket.Chat.ReactNative code base.
Description: For better user experience, we need to group notifications by channel and allow the user to reply directly from the notification. Also, we should show notifications from other channels when the user is using the app.
Desirable Skills: Familiarity with React Native, iOS and Android development and Rocket.Chat.ReactNative code base.
Description: Themes, like dark mode, are very popular and everywhere right now, but the Rocket.Chat React Native app lacks the feature of applying different themes. This project aims to bring different themes like dark mode and black mode into the existing React Native client.
Description: Deep VoIP integration of Rocket.Chat with modern software and hardware SIP switches and VoIP SaaS. Intelligently add access to phone networks and SMS channels to the Rocket.Chat workflow. Enable multi-channel conferences with chat + phone calls + video. Empower Live chat with voice calls in workflow.
Mentors: @zi.lin, @eric.rosenthal
Description: In the Rocket.Chat native iOS application, add the functionality of listing all the contacts of a user, syncing in background these contacts with the server using existing APIs and displaying the intersection with public accounts on server. Integrating the APIs to invite users that do not have an account (via email/phone) or inviting via other applications on the phone. Support dynamic links in iOS app, allow the creation of links such that when invited through one, after installation of the app it opens a DM with the inviter, etc.
These functionalities are already implemented for Android in a fork.
Desirable Skills: Familiarity with iOS development.
Description: The most popular Rocket.Chat deployment method in the world is via snaps. Snaps are containerised software packages that are simple to create and install. The aim of this project is improve our snap installation process and features, bringing better support for our ARM architecture deployment, and expand our configuration options to set up Rocket.Chat in more diverse layouts adding support for loadbalancing between instances where Rocket.Chat will only be bound to the loopback interface, regular backups for our database configured as a replicaset and possible firewall configuration.
Desirable Skills: Familiarity with Linux. Good shell scripting skills. Aware of DevOps and containers based deployment technology.
Description: Rocket.Chat's data backend is MongoDB, a NoSQL database. NoSQL databases enable application developers to quickly add and change data schemas for new features without imposing rigid integrity constraints. While effective for small projects, this can create varied data inconsistency in long-lasting production server projects such as Rocket.Chat. Causes such as buggy code versions, crashes during migrations and/or schema updates, core customizations, and inadvertent DB admin modifications can all lead to a non-deterministic data schema. Some corrupted schema may break code, while others can go years without being detected. The goal of this project is to create a tool to help sanitize in production Rocket.Chat databases. Depending on the ingenuity of the tool design, the same code can one day be integrated into Rocket.Chat as a data integrity layer.
Description: Add deep integration with open source word processing, spreadsheet, presentation, email and content management suite(s). Create a full chat-centric office team collaboration environment.
Desirable Skills: Familiarity with development and extension/integration points for existing open source office suites. Ability to code and script in multiple programming languages. Preference to work with a team.
GSoC 2019 Timeline next due dates:
February 26 - March 25 Potential student participants discuss application ideas with mentoring organizations
March 25 18:00 UTC Student application period begins - How to write a Proposal
April 9 18:00 UTC Student application deadline
May 6 18:00 UTC Accepted student proposals announced