Google Summer of Code 2020

Google Summer of Code 2020

How to apply

Application for Google Summer of Code 2020 is now closed.

Update September 8, 2020

The GSoC 2020 season has completed with one of the best experience ever for many of the participating students and mentors.

The final list of successful Google Summer of Code 2020 Rocket.Chat projects and students/mentors is now officially available. Of the seven official GSoC projects, every student has managed to pass their final evaluation. Congratulations to all the students of 2020 and their tireless mentors! Of the five additional sponsored projects, one student : the problematic one noted in the previous term, has been failed by his mentors. In this final term, we encouraged students to prepare a 30 minutes demo and presentation of their project for our community and core team. Reception was incredible! The list of invitees topped 80! Most presentations were well attended. Students showed off their work proudly alongside their mentors. For many students, it was the very first presentation experience in their entire life - and having it in front such a supportive audience made it extremely fulfilling. Attendees are delighted to discover the excellent work (and exciting features) that the student undertook. From the crop of excellent 2020 students, the Rocket.Chat team made an internship offer to one student and he has accepted and became a member of our team. Our long time community contributor, Viasat, has also independently made an offer to another student this year.

Update August 4, 2020

Second evaluation has completed. Once again, all mentors have decided to pass their students for this term. Of note is one potentially problematic student, mentor agreed to monitor the situation for the final term. Another student has pre-arranged with his mentor to start the term early and has completed his work by this evaluation.

Update July 12, 2020

First evaluation has completed! All students have passed this first term. Most projects have students that are tracking or exceeding planned schedules. There is one project that is slightly lagging and we will keep a watchful eye on it this second term. Progress has been relatively smooth across the projects. Mentors are busy making sure that every student receive his/her evaluation and payment. Students have also completed evaluation for their mentor(s). Some project(s) have decided to start mini virtual daily stand-ups to keep closer tab on progress once past GSoC mid-way mark. Two mentors have withdrawn from participation, one has left the Rocket.Chat organization/community altogether, another due to unanticipated personal obligations.

Update June 8, 2020

Coding has started on June 1st. All mentors and students are busy getting the first month milestones of the project under way. Many of them are engaged daily via our 24 x 7 community community server

We have two community sponsored projects with students dropping out during this time, one due to family obligations and another due to prolonged funding uncertainty, and replacement students have been located for these projects.

Updated June 8, 2020 ; Original on May 5, 2020

2020 is another exciting year for GSoC at Rocket.Chat. Thanks to the enthusiastic early support from students and community, the program has managed to sustain momentum despite COVID-19 downturn and reduced participation from core. Google has graciously granted us SEVEN project slots. As a result, we are delighted to welcome these 7 active community members to work with us during the GSoC 2020 season:

Student

Project

Mentors

Ashwani Yadav

Omnichannel: Add screen sharing feature in the Livechat widget

Guilherme Gazzo, Renato Becker, Tasso Evangelista, Marcos Defendi

Ritwiz Sinha

Apps-CLI: Hot reload apps during development

Douglas Gubert, Shiqi Mei, Rodrigo Nascimento

Ezequiel Reis

Full-screen composer option to send/edit long messages on mobile apps

Djorkaeff Alexandre, Ramkumar Kalpathy, Diego Mello, Rowan Youngson

Govind Dixit

Create F-Droid build

Diego Mello, Djorkaeff Alexandre

Adarsh Naidu

Alexa Skill(s) Improvement

Ashish Jha, Prajval Raval, Weng Wei

Murtaza Patrawala

Omnichannel: Chatbot support for RASA and Dialogflow

Renato Becker, Marcos Defendi, David Lassalle, Steve Stetak

Taimur Azhar

Download manager on desktop app

Tasso Evangelista, Guilherme Gazzo, Eduarda Cunha, Gabriel Henriques

It was a very difficult decision for us to select seven 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 ).

While some high calibre open source contributors were not selected for GSoC; to accommodate these exceptional students, our community member Credit Suisse APAC has agreed to sponsor an additional THREE projects this season.

Student

Sponsored Project

Mentors

Neil Agarwal

Audio Improvements on mobile apps

Nathan Khoo, Diego Mello, Djorkaeff Alexandre

Youssef Muhamad

Add Analytics to Mobile Apps

Noorul Ameen, Diego Mello, Djorkaeff Alexandre

Shreyansh Singh Tomar

Content Moderation Rocket.Chat App (Machine Learning)

John Eric Sobrepena, Karan Bedi

Furthermore, Viasat, one of Rocket.Chat's long-time community supporters, has agreed to sponsor TWO projects this season.

Student

Sponsored Project

Mentors

Subham Sahoo

Live agent and chatbot handoff app

David Lassalle, Steve Stetak, Renato Becker, Marcos Defendi

Kashish Jayasi

Rocket.Chat mobile site

Peter Lepeska, Eric Rosenthal, Karan Bedi

This, in combination, allowed us to accommodate a total of TWELVE enthusiastic 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. Many are also engaging with community members on the various public channels of our 24 x 7 community team server.

Update March 31st, 2020

First, we would like to thank all GSoC 2020 students for their ethusiastic support for Rocket.Chat. This year we have received a total of 86 proposals, including 81 final proposals. In the final pool, there are 13 proposals that are spam, without content, or not related to our projects.

Over the next month, our mentors will be reviewing the received proposals. Google Summer of Code will be announcing the selected projects and students on May 4th, 2020. Please see GSoC timeline for more details.

Meanwhile, we continue to introduce all active and incoming students to open source in general, and Rocket.Chat's ecosystem of open source projects in particular. Students will continue to make meaningful open source contributions in the form of issues & PR for our projects and interact with Rocket.Chat's vibrant community + team.

Update March 29th, 2020

Enthusiasm and interest from students are all time high this year; over 112 candidate students have already started to interact with our community and contributing to the repositories! Together, they have already contributed over 100 issues and over 50 merged PRs to our various projects. We are maintaining a real-time updated leaderboard for at-a-glance student (candidates) contribution here:

https://gsoc.rocket.chat/

The leaderboard project itself is open source, created and maintained by our former GSoC student (now mentor and team member). All potential GSoC organizations are welcome to use and deploy it (the project has a super friendly MIT license - just like Rocket.Chat).

https://github.com/lolimay/GSoC-Contribution-Leaderboard-Node

We have recnetly arranged for the TOP 8 student contributors to meet one on one with Rocket.Chat's project lead Gabriel Engel and great remote fun was had by all.

Mentoring interest from core team has been reduced this year, while community mentor participation is at an all time high. Proposals for projects are streaming steadily in since application open, the volume of incoming proposals is reduced compared to prior year - but the percentage of high quality propsals has increased.

About GSoC 2020

For ideas, check out our growing list of ideas for some inspiration.

Come meet our global community of potential mentors and students for GSoC 2020 and get some real-time help on next steps, please visit our 24 x 7 community server channel:

https://open.rocket.chat/channel/gsoc2020

For offline discussions, we have a discussion forum:

https://forums.rocket.chat/c/gsoc/gsoc2020/70

If you have ideas and proposals that are not on our ideas list, or if a mentor is not available, please email to:

gsoc@rocket.chat

Interested students are also encouraged to interact with our contributor community on GitHub:

https://github.com/RocketChat/Rocket.Chat

Project Ideas

Advanced Rocket.Chat administrators and operations toolkit

  • Description: Administration and management of a Rocket.Chat server is a very complex task, especially for servers that are utilized by thousdands of users on a daily basis. There exists many administrative and operational activities that require access to the system in ways that are not currently supported by our Administrative dashboard. This project creates small, standalone tools, to address this need. These tools will be immediately useful for anyone operating one-or-more large Rocket.Chat server(s) worldwide.

  • Desirable Skills: Familiarity with nodeJS fullstack webapp development. Experience with ReactJS or Vue.js ideal. Must have database skills, ideally MongoDB.

Download Manager on Desktop App

Omnichannel: Chatbot support for RASA and Dialogflow

  • Mentors: @renatobecker, @marcos.defendi

  • Description: The goal of this project would be to create new integrations to interact with popular BOT frameworks - RASA and Dialogflow. Also, support and adapt rich messages to the formats of these platforms, as well as the formats supported by Rocket.Chat.

  • Desirable Skills: Experience in working with Chatbots communication. Familiarity with Typescript and, ideally, experience with Javascript.

Omnichannel: Live Agent and Chatbot Handoff App

  • Mentors: @steve.stetak, @dlassalle, @renatobecker

  • Description: Enhance Omnichannel Rocket.Chat with an app to support the use of Chatbots, powered by NLP such as Dialogflow, in front of a larger existing infrastructure of Care Live Agents. The focus of this app being the seamless transfer between Bot, Live Agent, and Bot again. If the Chatbot is unable to solve their issue, the app will seamlessly route them to a Live Agent through a third-party queue system such as Salesforce. At the end of the conversation, the customer will be reconnected back to the chatbot for additional support or CSAT survey purposes, all within the same chat client window for the customer.

  • Desirable Skills: Familiarity with Rocket.Chat development, Salesforce, and NLP or Chatbot experience

Omnichannel: Add screen sharing feature in the Livechat widget

  • Mentors: @renatobecker, @marcos.defendi

  • Description: Add a new interface between Rocket.Chat and the Omnichannel Livechat widget, allowing Agents to get real-time screenshare on customer's devices. For this initial version, we will also create an integration with the Cobrowse.io, which will be the first screen sharing supplier supported.

  • Desirable Skills: Experience with Javascript and React.JS.

Alexa Skill(s) Improvement

  • Mentors: @ashish.jha @prajval.raval1

  • 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. The focus will be on devoting more time to improve the features which add more advantage and serve a frictionless experience when used via voice compared to features which have a limited use and are better performed using a GUI.

  • Desirable Skills: Familiarity with Alexa skills development and conversational design. NodeJS Server Development and Rocket.Chat source code. Experience with interfacing external sources and systems into Alexa skills. Passion for global conversational interaction enablement. Familiarity with Google Action development ideal.

Apps-CLI: Hot reload apps during development

  • Mentors: @douglas.gubert @shiqi.mei

  • Description: Add the option to the Rocket.Chat Apps-CLI to support apps development by hot-reloading the app in the development server on file saving.

  • Desirable Skills: Experience with Javascript and familiarity with Typescript.

Add Analytics to Mobile Apps

  • Mentors: @noorul.ameen @djorkaeff.alexandre @diego.mello

  • Description: We use Firebase to track some analytics, now we want to know data like 'how many people clicked on login?'. You need to add firebase analytics to our app and add track analytics of the most important features and events.

  • Desirable Skills: Familiarity with React Native and Firebase Analytics.

Audio improvements on mobile apps

  • Mentors: @nathan.khoo @djorkaeff.alexandre @diego.mello

  • Description: A new UI component to be rendered outside the room view allowing users to listen to the room’s audios when navigating to other rooms. Additions like listening speed are welcome.

  • Desirable Skills: Familiarity with React Native and Rocket.Chat codebase.

Full-screen composer option to send/edit long messages on mobile apps

  • Mentors: @rowan.work @ramkumar.kb @diego.mello

  • Description: A full-screen composer that could be opened from the current composer to provide a larger area for text input or edition, good to send or edit large texts.

  • Desirable Skills: Familiarity with React Native and Rocket.Chat codebase.

Create F-Droid build

  • Mentors: @djorkaeff.alexandre @diego.mello

  • Description: Create a build for the other store for Android apps: https://f-droid.org/

  • Desirable Skills: Familiarity with Android development, React Native and Rocket.Chat codebase.

Image/Video Content Moderation Rocket.Chat App using Machine Learning

  • Mentors: @johnathan.handoyo @jethro.lam @matheus.cardoso

  • Description: Create a Rocket.Chat App that can classify videos and images as SFW or NSFW and block them based on user or admin settings.

  • Desirable Skills: Familiarity with Rocket.Chat Apps and Machine Learning/Deep Learning or existing image classification services.

Uber Rocket.Chat App

  • Mentors: @marcos.defendi, @renatobecker

  • Description: The goal of this project is allow users to call their Uber rides directly from Rocket.Chat.

  • Desirable Skills: Familiarity with Typescript and OOP concepts.

Vocabulary Booster Rocket.Chat App

  • Mentors: @marcos.defendi, @renatobecker

  • Description: The goal of this project is to provide the user a way to improve his vocabulary in a certain language (English, for now), by sending him a message with a "new" word in certain periods of time (configurable). After that, the app should validate if the user has learned the meaning of the word, sending the definition and some word options, or some sentence with the word and a gap to fill. Also the app would show the user's performance. There are some API's to get the words and the meanings. e.g (WordsAPI, Datamuse, Oxford, etc) (needs to be evaluated deeply)

  • Desirable Skills: Familiarity with Typescript and OOP concepts.

Rocket.Chat Mobile site

  • Mentors: @karan.bedi @eric.rosenthal

  • Description: A client build for mobile-web, lite in size and functionality to bring down the site load time, with a better UI/UX customized for mobile screens.

  • Desirable Skills: Familiarity with Rocket.Chat and Responsive Design

OAuth/Account integration

Assets installation (emoji and sounds)

  • Description: Enable Apps to provide custom assets as emojis and sounds for use on the various related features on Rocket.Chat

Federation Whitelisting

  • Mentor: @alan.sikora

  • Description: Enable Federation-enabled servers to whitelist other servers, avoiding unwanted chat requests and improving security

Permissions system - Feature Manifest

  • Description: Currently there is no way for an admin to know during the installation of an App which Apps-Engine features are going to be used and what kind of access the app will have to the workspace's data. The idea is for the App to provide a manifest with the features and access it is going to require, and the Apps-Engine will only allow the defined features to be used by the App.

Improve test coverage and enable visual regression tests

  • Description: Re-enable all current skipped tests, start a visual regression test for each relevant UI part using the same tooling (Cypress) and add tests to features without tests.

Lightweight UI for single room access (embedded UI)

  • Description: Rocket.Chat already has an option to load the UI as embedded layout, although it still loads a lot of unnecessary data, the objective here is to find the most efficient way to render a single room UI with the minimum data possible in a way that the UI can be embedded in a website using an iframe and be performatic when reloading within the site navigation

UI to see videos outside the room, using popouts

  • Description: A new UI component to be rendered outside the room view allowing users to listen to the room’s videos when navigating to other rooms.

UI to listen to audio files outside the room (like telegram) + "user is recording audio" indicator (as the typing one)

  • Description: A new UI component to be rendered outside the room view allowing users to listen to the room’s audios when navigating to other rooms. Additions like listening speed are welcome.

Pre-installed apps

  • Mentors: @douglas.gubert and @shiqi.mei

  • Description: Make Rocket.Chat have a list of default apps that are going to be installed during the first run of the server.

Improve Documentation Framework (Versioning)

  • Description: The main objective of this project is to add a versioning capacity to the documentation, while maintaining a relatively simple file structure and ease of use. In addition, add support for multi-lingual documentation and increase the ease of use of the documentation generation and hosting framework to ease the barrier of entry for contributors trying to run the environment on their own machines, making it more contributor friendly.

  • Desirable Skills: Familiarity with Javascript development. Working knowledge of Jekyll and documentation generation framework highly useful.

Google Action Improvement

  • Mentors: @ashish.jha @prajval.raval1

  • Description: Bring access of Rocket.Chat into the world of 1 Billion+ Google Assistant 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 Google Assistant ecosystem - powered by open source Rocket.Chat. The project will aim towards making current action compaitable with Multisever proxy and publishing of Google Action of on its store, of course while adding more features to it such as Interactive Canvas, App Actions etc. This project will also focus on making current documentation more streamlined and "easy to refer" for newcomers.

  • Desirable Skills: Familiarity with Google Actions development, Dialogflow, NodeJS Server Development and Rocket.Chat source code. Experience with interfacing external sources and systems into Google Action. Passion for global converstational interaction enablement.

Use Lingohub on mobile apps

  • Mentors: @djorkaeff.alexandre @diego.mello

  • Description: Share Lingohub keys with the web client.

  • Desirable Skills: Familiarity with React Native and Rocket.Chat codebase.

Share Location on Mobile Apps

  • Mentors: @djorkaeff.alexandre @diego.mello

  • Description: We have this feature on our web client, server has an implementation about this, you only need to implement this feature on our Mobile Client and ability to select and share a location (based or not on user's location), custom message to show the location shared and need to be able to open this location on maps apps.

  • Desirable Skills: Familiarity with React Native and Rocket.Chat codebase.

Mobile Apps Accessibility

  • Mentors: @matheus.cardoso

  • Description: Android and iOS both support gesture-based screen readers that let you enjoy using the phone 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. The proposal should contain a per-screen study of the current App's state of accessibility (what is missing and what needs to be improved), and a roadmap to take it to a delightful state.

  • Desirable Skills: We are looking for a student who is familiar with team work, developing mobile Apps using React Native and JavaScript, as well as writing maintainable code with Unit Tests and having some familiarity with Voice Over (iOS), TalkBack (Android) and Accessibility. Knowledge of Swift/Objective-C and Kotlin/Java may be needed for some of the trickier tasks.

Omnichannel: Create integration with Zoho Desk CRM

  • Mentors: @renatobecker

  • Description: In order to have a complete customer service experience, it is essential to have quick access to customer data, create service tickets, etc. The aim of this project is to provide that experience by creating an integration between Rocket.Chat and Zoho CRM, a complete CRM platform that will bring an even richer experience to the Omnichannel Customer Service.

  • Desirable Skills: REST, Experience with Javascript and familiarity with Typescript.

Omnichannel: Support for Voice and Video Calls

  • Mentors: @gazzo, @tazzo

  • Description: We've been working on our new Omnichannel solution and it's time to add two great new features that will make Omnichannel even more powerful: voice and video calls! The idea is to integrate Omnichannel with the providers already supported in Rocket.Chat, such as Jitsi, WebRTC, BigBlueButton and so on. With these two new features, Omnichannel users will be able to initiate video and audio calls between them and Omnichannel agents.

  • Desirable Skills: Familiarity with Rocket.Chat/Omnichannel development, ReactJS/PreactJS, Voice and Video communication

Houston Improvements - Rocket.Chat release/changelog generator

  • Description: Huston is the CLI tooling we use to release new versions of Rocket.Chat and to generate our change logs from merged pull requests. We want to:

    • Rewrite the tooling in TypeScript;

    • ~Improve the changelog generation getting more information from the PRs like description, images, etc;~ (already done)

    • Accept a new format of PR titles (conventional changelog);

    • Add a validation system for PRs titles via GitHub Actions;

    • Add a 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

Add Support for Bixby

  • Mentors: @ashish.jha @prajval.raval1

  • Description: Last year we explored the possibilities of having a Rocket.Chat Amazon Alexa Skill and a Rocket.Chat Action on Google. This project should aim to explore adding a Samsung Bixby Capsule for Rocket.Chat. Bixby is a next-generation, conversational assistant platform that was created to help users get things done in a more efficient, personalized and natural way. The way Bixby focuses on a multimodal approach from the very start could help eliminate the nuances involved in building an intricate voice-only experience.

  • Desirable Skills: Familiarity with VUI/Bixby development. Experience with interfacing external sources and systems into Alexa skills. Passion for global conversational interaction enablement. Familiarity with Javascript ideal.

Apps-CLI: Generate boilerplate components

  • Mentors: @douglas.gubert @shiqi.mei

  • Description: Add commands to the Rocket.Chat Apps-CLI that generate the boilerplate needed to add new components to the app being developed, such as Slash commands, API endpoints, etc.

  • Desirable Skills: Experience with Javascript and familiarity with Typescript.

Nextcloud Video Management

  • Mentors: @guilherme.gazzo

  • Description: Add the ability to manage and access recorded and previously live streamed video within the Rocket.Chat integrated Nextcloud environment. Similar to Youtube but with a chat-centric access interface.

  • Desirable Skills: Familiarity with Rocket.Chat and Nextcloud development. Deep understanding of current digital streaming and recorded media standards a big plus.

Apple Watch App

  • Mentors: @djorkaeff.alexandre @diego.mello

  • 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, Familiarity with React Native.

Target official/experimental Mobile apps using GitHub Actions (CI)

  • Mentors: @djorkaeff.alexandre @diego.mello

  • Description: Create build of our 4 apps on GitHubCI, 2 Android Apps and 2 iOS Apps (Official and Experimental).

  • Desirable Skills: Familiarity with React Native, FastLane, Android & iOS build apps.

Timeline

Edit on GitHub
Contents
How to apply
Project Ideas
Advanced Rocket.Chat administrators and operations toolkit
Download Manager on Desktop App
Omnichannel: Chatbot support for RASA and Dialogflow
Omnichannel: Live Agent and Chatbot Handoff App
Omnichannel: Add screen sharing feature in the Livechat widget
Alexa Skill(s) Improvement
Apps-CLI: Hot reload apps during development
Add Analytics to Mobile Apps
Audio improvements on mobile apps
Full-screen composer option to send/edit long messages on mobile apps
Create F-Droid build
Image/Video Content Moderation Rocket.Chat App using Machine Learning
Uber Rocket.Chat App
Vocabulary Booster Rocket.Chat App
Rocket.Chat Mobile site
OAuth/Account integration
Assets installation (emoji and sounds)
Federation Whitelisting
Permissions system - Feature Manifest
Improve test coverage and enable visual regression tests
Lightweight UI for single room access (embedded UI)
UI to see videos outside the room, using popouts
UI to listen to audio files outside the room (like telegram) + "user is recording audio" indicator (as the typing one)
Pre-installed apps
Improve Documentation Framework (Versioning)
Google Action Improvement
Use Lingohub on mobile apps
Share Location on Mobile Apps
Mobile Apps Accessibility
Omnichannel: Create integration with Zoho Desk CRM
Omnichannel: Support for Voice and Video Calls
Houston Improvements - Rocket.Chat release/changelog generator
Add Support for Bixby
Apps-CLI: Generate boilerplate components
Nextcloud Video Management
Apple Watch App
Target official/experimental Mobile apps using GitHub Actions (CI)
Timeline