Skip to content

Latest commit

 

History

History
261 lines (174 loc) · 28.1 KB

google-summer-of-code-2018.md

File metadata and controls

261 lines (174 loc) · 28.1 KB

Google Summer of Code 2018

Google Summer of Code 2018

How to apply

Applications for the GSoC 2018 season have now closed.

UPDATE September 8, 2018

The final list of successful 2018 GSoC Rocket.Chat projects and students/mentors is now officially available.

Our own final tabulation of the status for GSoC projects is as follows:

Status Student Project Mentors
PASS Mikael Mello Improve the integration of bots on Rocket.Chat Tim Kinnane, Diego Dorgam
PASS Aniket Singh Android and wear app Fiipe Brito, Lucio Maciel
PASS Jose Renan Rocket.Chat SDK for Javascript Clients Guilherme Gazzo, Diego Sampaio, Renato Becker
PASS Semih Serhat Karakaya Nextcloud as Storage and User File Provider Guilherme Gazzo
PASS Karan Bedi Rocket.Chat voice recognition APIs and built-in Speech2Text Engine integration Pierre Lehnen, Rodrigo Nascimento
PASS Nikhil Kaushik Integration with Google Drive and Dropbox Marcelo Schmidt, Martin Schoeler
PASS Samar Sunkaria Support for theming the Rocket.Chat iOS app Matheus Cardoso, Filipe Alvarenga
WITHDREW De Sheng Chuan Data integrity and consistency Diego Sampaio, Rodrigo Nascimento, Sing Li

UPDATE August 20, 2018 This final term has been a term full of changes. One good student - who had been doing great work up to this third term- has had health issues, been hospitalized, and is unable to complete his project. Upon advice from GSoC admin, he withdrew from the project and may resume outside of GSoC upon his recovery. The "turn around projects" in the second term continued to show major improvement this term - due mainly to the hard work of the affected students. Mentors and students are busy this term wrapping up their work, preparing for final GSoC evaluation requirements, plus scheduling presentations of their completed work to the larger Rocket.Chat team. Many of the presentations are recorded and are available here, here and here. As a final result for 2018, one out of our eight GSoC students has withdrawn, and mentors gave final passes to the other seven GSoC projects. Of the four independently funded projects, three passed and one failed (due to the student's disappearance). We congratulate the students and mentors on their achievements and sincerely hope all students now have enough of a taste of open source (and Rocket.Chat in particular) to continue on their life-long open source contribution as they embark on their next phase of personal development. We will continue to work through the backlog of GSoC project stories on the blog this term.

UPDATE July 15, 2018 Mentors and students continued to work towards their objectives during this second evaluation period. Due to internal organizational staff changes and other organization operational factors, three problematic projects were identified during this period. Extensive administrative intervention and turn-around was necessary to "salvage" these projects. Thankfully, the GSoC students worked with us every step of the way as we reassign mentors and realign mutually agreed project scopes. As a result, the (new in some cases) project mentors have decided to pass all enrolled students - both GSoC and independently funded projects for this term. Internally, the projects' blog post series is lagging significantly behind, we are working to catch up as soon as possible.

UPDATE June 15, 2018 The first evaluation period has come and gone. Our students have been coding feverishly over the past months and many of them have already demonstrated their work to their mentors and teams. We are proud to report that during this evaluation, our mentors have decided to pass all eight of the GSoC students. Our Rocket.Chat-sponsored projects also reported all passes for the three students. We have started to create blog stories around the projects featuring our students - the first story should be available in the next week or two. Due to some internal project logistical problems, one of the students has agreed, together with his mentors and team to switch topic from the second term onwards - to another one of his accepted final proposals - our list below has been amended to reflect the change. We have, through our working partner, been able to fund an additional (to the 11 that we already have) highly capable but non-GSoC selected student to work on a Rocket.Chat-related topic.

UPDATE April 25, 2018, AMENDED June 15, 2018 The list of official GSoC 2018 accepted students and projects is now available. First, we would like to sincerely thank every student who has submitted a proposal and many who had worked on PRs and assisted in our open source community - please continue the excellent work. Of the 93 proposals we received, there were many high quality ones. We have also interacted with many of the students in the prior month. The decision-making was difficult and mentors were competitive this year. Ultimately, EIGHT of the top students/proposals this year are accepted for GSoC 2018 (thank you, Google!):

Student Project Mentors
Mikael Mello Improve the integration of bots on Rocket.Chat Tim Kinnane, Diego Dorgam, John Szaszvari
Aniket Singh Android and wear app Fiipe Brito, Lucio Maciel
Jose Renan Rocket.Chat SDK for Javascript Clients Karl Prieb
Semih Serhat Karakaya Nextcloud as Storage and User File Provider Guilherme Gazzo, Bjoern Schiessle, John Szaszvari
Karan Bedi Rocket.Chat voice recognition APIs and built-in Speech2Text Engine integration Gabriel Delavald, Pierre Lehnen
Nikhil Kaushik Integration with Google Drive and Dropbox Marcelo Schmidt, Martin Schoeler
Samar Sunkaria Support for theming the Rocket.Chat iOS app Matheus Cardoso, Filipe Alvarenga
De Sheng Chuan Data integrity and consistency Diego Sampaio, Rodrigo Nascimento, Sing Li

In addition, due to the sheer number of high quality entrants, Rocket.Chat has decided to sponsor THREE additional top students for this summer:

Student Project Mentors
Pradeep Kumar Live Chat Reports and Analytics Renato Becker
Nitesh Saxena Intgration with IPFS Sing Li, Ankit Bhatia
Arthur Temporim Enhanced BOT Adapters Diego Dorgam, John Szaszvari

All of the eleven students have been contacted by mentors and have started the community bonding period.

UPDATE April 2, 2018 - 2018 is an incredible GSoC year for us, we have received a total of NINETY THREE proposals from students studying at every corner of the globe - Brazil, Turkey, USA, Armenia, India, China, Singapore, Hong Kong and more. Thank you, GSoC students, for the overwhelming interest on our project. Proposal topics covered almost all of the suggestions on our idea list - and even a few original ones. Our TWENTY FIVE Rocket.Chat core, guest, and community mentors are 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. Please keep in touch with us and continue to contribute to the Rocket.Chat project during this time.

UPDATE March 24, 2018 - Students PLEASE NOTE that your final proposal is due on March 27th. It must be in PDF format and submitted via the official GSoC Dashboard. Your Rocket.Chat Core and Guest Industry mentors are looking forward to receive and review your final proposals.

UPDATE March 12, 2018 - Proposal submission for GSoC 2018 has started! Interested students should visit the GSoC 2018 site to apply and submit their proposals. See the Project Ideas section below for some interesting ideas.

You can email the mentor(s) directly for discussion and further information. You can also find them, most of the time, on our community server for real-time chat. Many of the mentors are fluent in both Portuguese and English.

For current information on the 2018 program and general discussions, please see GSoC 2018 category on our discussion forums:

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

For some real-time help on next steps, please visit our community server Google Summer of Code 2018 discussion channel:

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

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

gsoc+2018@rocket.chat

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

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

Project Ideas

Global Search

  • Mentors: @rodrigo.nascimento
  • Description: Add global search to Rocket.Chat, allowing users to search across messages, rooms, files, users, etc in a single and easy to use interface. Like a macOS Spotlight search.
  • Desirable Skills: Familiarity with JavaScript development, MongoDB or other search engine.

Users Directory integration plus custom fields editor and search

  • Mentors: @marcelo.schmidt
  • 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 JavaScript development.

Storage integration with Google Drive and/or Dropbox

  • Mentors: @marcelo.schmidt, @martin.schoeler (co-mentor)
  • Description: (1) Enabling Rocket.Chat users to use Google Drive and/or Dropbox for storage of their uploads. (2) Within Rocket.Chat, allow access to Google Drive or Dropbox contents.
  • Desirable Skills: Familiarity with JavaScript development, and with Google Drive and/or Dropbox APIs.

Nextcloud Integration

  • Mentors: @guilherme.gazzo, @bjoern.schiessle (Nextcloud Guest Mentor)
  • Description: You will create a cross-platform GUI file picker interface for Nextcloud, integrated within Rocket.Chat, allowing any user to select files from a Nextcloud server (or hosted Nextcloud account) for utilization (such as file-sharing upload) within Rocket.Chat.
  • Desirable Skills: You should already be familiar with the operation of Nextcloud and Rocket.Chat and ideally have experience programming with Nextcloud’s API. Experience working with JavaScript GUI an fullstack frameworks such as Angular and/or React is a big plus. You will get a chance to work with the creators and architects of both Nextcloud and Rocket.Chat. Upon completion of this project, you will be able to claim experience creating a modern open source software component that will be used by hundreds of thousands of Rocket.Chat and Nextcloud users.

NextCloud as a Storage Provider

  • Mentors: @guilherme.gazzo, @bjoern.schiessle (Nextcloud Guest Mentor)
  • Description: (1) Enabling Rocket.Chat server administrator to use an NextCloud instance for storage of upload. (2) Within Rocket.Chat client user interface, allow access to the contents on a user's NextCloud instance
  • Desirable Skills: Familiarity with both Rocket.Chat and NextCloud development.

Snap Crafting

  • Mentors: @aaron.ogle, @sing.li
  • Description: Snap is one of the easiest and most popular method to install Rocket.Chat on Linux distributions. You can have a Rocket.Chat server up and running with database and SSL proxy fully configured with one simple command. The current snap installation build script, used by hundreds of thousands of community users, is in need of updating and enhancements. You will be crafting updates and new features for our snaps for this project.
  • Desirable Skills: Interest in system configuration, dev ops, system operations, and operating systems. Should be competent in shell scripting on Linux and one or more programming languages. Experience with docker or snapcraft a big plus.

Scaling to the edge of dreams

  • Mentors: @diego.sampaio
  • Description: Assist Rocket.Chat’s scalability engineers to scale Rocket.Chat to the next level. From tens of thousands of active connections, to hundreds of thousands to millions, to world-scale.
  • Desirable Skills: We are looking for an enthusiastic undergraduate, planning to enroll or already enrolled for masters or PhD work in a cluster computing or scalability discipline to join us for an exciting summer of hands-on practical fun. Working alongside our scalability expert – you will devise and test out various performance and scalability enhancements for Rocket.Chat’s deployment configurations. You will be able to practice everything you have learnt so far in your under-graduate study, pushes beyond their limits, with a real production clustered server project – having your work impacting thousands of global users – all within the span of a single summer.

Live Chat Reports and Analytics

  • Mentors: @renato.becker
  • Description: Add a panel to have analytical information about interactions in Live Chat.
  • Desirable Skills: Familiarity with JavaScript development.

Uniting “One Rocket.Chat” with Federation

  • Mentors: @gabriel.engel, @matthew.hodgson (Matrix.org Guest Mentor), and @sing.li
  • Description: Help Rocket.Chat to invent and implement networked federation for the next generation of collaboration platforms.
  • Desirable Skills: Suitable for an ambitious undergraduate planning to enroll or already enrolled for masters or PhD work in a cluster computing, networking or distributed systems discipline in computer science or engineering to join us for an exciting summer of incredible brain crushing yet hands-on fun. Working alongside our federation team – you will help design and test out your hypothesis against a next generation federation mechanism optimized specifically for Rocket.Chat servers – uniting them globally across all geo-political boundaries to dynamically form “One Rocket.Chat”. This work will leverage all existing current research in this domain. You must already be familiar with the work of giants – such as matrix.org – and be ready to break all conventions to improve and innovate upon existing paradigms. You will be rewarded with production working experience on this bleeding-edge discipline, in a world-leading open source team environment with a like-minded team. An incredible and unique opportunity in 2018.

Built-in and server themes for iOS

  • Mentors: @matheus.cardoso
  • Project repository: https://github.com/RocketChat/Rocket.Chat.iOS
  • Description: Be part of our iOS team this summer to push Rocket.Chat's native iOS App to the next level! You will - with our help - build the foundation for customizable user experience, support built-in themes for users to choose from and server-specific themes, allowing server owners to manifest the colors and feel of their communities. You will have the chance to exchange experience with our engineers and designers, plus your work will have a great impact on the experience of thousands of users!
  • Desirable Skills: We are looking for an undergraduate student who is familiar with team work, developing iOS Apps using UIKit, Auto Layout and Swift, as well as writing maintainable code with Unit Tests.

Apple Watch & Siri Support

  • Mentors: @rafael.kellermann
  • 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 like viewing the chat rooms and reading the messages. Let user ask Siri to read 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.

PDF/File preview

  • Mentors: @rodrigo.nascimento
  • Description: Add small previews for non image files improving the UI/UX allowing users to see a preview of the content before click to open the file, it includes PDF, Word Documents and similar, Excel Documents and similar, PowerPoint and similar, Text files, Sketch, Photoshop, etc.
  • Desirable Skills: Familiarity with JavaScript development. Experience hacking documents conversion and/or rendering libraries is a big plus.

Draw (Android)

  • Mentors: @rafael.kellermann
  • Project repository: https://github.com/RocketChat/Rocket.Chat.Android
  • Description: Allow user to draw something using our Android native app and send to Rocket.Chat channel. The draw would have different colors and "brush" options (pen, brush, pencil, etc). User will also be able to draw on top of an image selected from library or just shot.
  • Desirable Skills: Familiarity with Java or Kotlin development on Android. Previous experience with working on the Android App development and using open source libraries would be helpful. Ability to work in large multi-disciplinary teams.

Android Wear App

  • Mentors: @filipe.brito
  • Project repository: https://github.com/RocketChat/Rocket.Chat.Android
  • Description: Create an Android Wear application that replicates the most basic features we have in our Android app, such like viewing the chat rooms and reading the messages.
  • Desirable Skills: Familiarity with Kotlin development on Android. Ability to work in large multi-disciplinary teams.

Enabling global decentralized blockchain powered crypto communities

  • Mentors: @sing.li , @ankit.bhatia (Sapien Network Guest Mentor) and other leading blockchain industry guest mentors
  • Description: Working together with our crypto and blockchain team – you will help build the key enabler platform for the future of blockchain powered decentralized communities all over this world (and perhaps even beyond). Within this short summer, you will gain experience in working on a global-circulation production-grade blockchain-powered adoption-acceleration platform. You will also meet and work with leading visionaries and pioneers in the current blockchain / crypto field. Tangible potential to become an early architect of this brave new world, supported by Rocket.Chat.

Some projects that you can submit proposals for include:

Decentralized Crypto Exchange in Rocket.Chat

  • Description: Starting either from scratch or utilizing one of the compatible license open source DEX code bases – create a functional Decentralized Exchange within Rocket.Chat. You will create a DEX that takes advantage of strong cryptographic identity solutions such as Blockstack ID and wallet integration such as Metamask or ARK wallet in your work.

IPFS storage solution in Rocket.Chat

  • Description: Integrate IPFS into Rocket.Chat as a viable storage provider. Ideally IPFS can be used as a storage provider for uploaded Rocket.Chat contents. In addition, the ability to access IPFS within Rocket.Chat, to supply files that can be shared between users of Rocket.Chat is also essential. Leveraging integration with strong cryptographic identities such as Blockstack ID, the solution should include strong data-at-rest encryption of decentralized contents. Use of decentralized storage abstraction frameworks such as Blockstack Gaia should be considered to simplify this work. Use of IPFS as a decentralized storage for Rocket.Chat’s data should also be considered within the term.

Cryptocurrency Wallet and/or Portfolio Management in Rocket.Chat

  • Description: Enable the integration of wallet(s) such as Metamask, MyEtherWallet, ARK or other wallets or crypto portfolio management system within Rocket.Chat.
  • Desirable Skills: Looking for a unique fringe-dropout university student already committed to our inevitable decentralized future powered by Web 3.0 and continued blockchain technology innovations. While maintaining a high score on all your subjects, you should be finding your existing university education ridiculously limiting, and already have experience hacking smart contracts, minting tokens for friends and family, hacking ethereum, and trading cryptokitties. You eat truffle for breakfast and ride the open zepplin to school every day. Recent government (perhaps your own government) baseless advances into this area has significantly disturbed you. You already realized that you are way ahead of your time. And you will recognize this GSoC 2018 project to be the absolutely not-to-miss opportunity of your life.

Google Assistant

Performance tests

  • Mentors: @diego.sampaio
  • Description: Create an initial script to run performance tests of basic functionalities, it should be able to run in our CI and should track information to allow us and the community follow the performance changes.

Javascript SDK

  • Mentors: @karl.prieb @guilherme.gazzo
  • Description: Create a javascript SDK that can be used on our ReactNative, Live Chat and our webclient projects.

Game platform integration

  • Mentors: @pierre.lehnen
  • Description: Integrate a multiplayer-capable game engine that runs on the web browser (eg. Unity WebGL, Phaser, Three.js) with Rocket.Chat. Let room members start small multiplayer games and play together.
  • Desirable Skills: Experienced with JavaScript, web browser game engines, and networking.

Improve Hubot Integration

  • Mentors: @diego.dorgam, @john.szaszvari (Contributing Guest Mentor)
  • Description: Improve the internal hubot interface, by allowing users to set up their own repositories for Rocket.Chat to read and deploy a hubot instance from it. Also would be awesome if the user could just edit the scripts files, and get console logs, right from the Rocket.Chat interface.
  • Desirable Skills: Familiarity with JavaScript development and hubot architecture.

Open Source Bot Frameworks Adapters

  • Mentors: @diego.dorgam, @timkinnnae, @john.szaszvari (Contributing Guest Mentor)
  • Description: The objective is to widely open Rocket.Chat's bots ecosystem by developing connectors/adapters to open source bot frameworks available in the web, so their community can develop bots able to run on Rocket.Chat platform. The scope would include the following frameworks:
  • BotKit
  • Rasa.ai (Rasa Core)
  • BotPress
  • Desirable Skills: Familiarity with JavaScript and Python development.

Rich Messages and Payloads for Buttons and Cards

  • Mentors: @diego.dorgam, @timkinnnae, @john.szaszvari (Contributing Guest Mentor)
  • Description: Create UI components and develop the handling of message payloads to support new interactions for bots, like buttons, cards, images and more. Follow existing conventions to let bot developers migrate pre-built solutions to be delivered via Rocket.Chat. This opens the door for enhanced user experience and interaction flows in automated messaging, letting bots provide a much greater variety of utility; such as business apps, team workflows, even games and interactive narratives.
  • Desirable Skills: Familiarity with front-end design and development (JavaScript / CSS).

Use Voice Recognition APIs

  • Mentors: @gabriel.delavald

  • Description: Develop a voice recognition integration feature, by building a Settings pane to connect some of the well-known voice recognition and speech to text APIs on the market directly from within Rocket.Chat. By configuring API's connection and usage attributes, and giving rocket.chat's UI the ability to click a button, record a message, send to the desired API and return the results to Rocket.Chat editing message box. The project scope could include the following APIs:

  • IBM Watson's

  • AWS Lex

  • Google Assistant

  • Bing

    Different APIs can be proposed as a possible change of scope.

  • Desirable Skills: Familiarity with JavaScript development.

Built-in Speech2Text Engine

  • Mentors: @gabriel.delavald
  • Description: Integrate an Open Source speech to text engine to be used inside Rocket.Chat by users who prefer an On-Premise full featured installation. There are many opensource speech2text engines on the market, like CMUSphinx and pocketsphinxjs, annyang, JuliusJS, Mumble, Voix JS, voice-commands.js and Artyon.js. This project will include a feature matrix comparison between those engines and the best one to be implemented in Rocket.Chat bundle, giving the UI the ability to click a button, record a message, send it to the text2speech engine and return the results to Rocket.Chat editing message box.
  • Desirable Skills: Familiarity with JavaScript development and speech2text techniques.

Calendar Integration

  • Mentors: Mrinal Dhar (@mrinal.dhar)
  • Description: Implement a calendar within Rocket.Chat for scheduling events and reminders, offering standalone functionality as well as integration with other calendars out there (Google Calendar, for example). Desirable features:
    • Ability to schedule events and set up alerts for them.
    • Automatically detect dates and time from messages and allow creating events from them. For example: In the message "Lets meet tomorrow", "tomorrow" should be automatically highlighted and user can then schedule an event by clicking on it.
    • In a conversation, allow each user to select preferred time-slots and automatically schedule an event based on everyone's preferences.
    • A consolidated events view that lists all scheduled events for a particular day, week or month.
    • Integration with Google Calendar
    • Ability to search for an event
  • Desirable Skills: Familiarity with JavaScript development required. Previous experience with NLP (Natural Language Processing) or AI (Artificial Intelligence) would be helpful.