Google Summer of Code 2017 @ Teem

Hi ! This blog post is a summary of the awesome experience that I had throughout the Google Summer of Code 2017 working with the Project Teem under Berkman Klein Center of Internet and Security, Harvard University. I would like to thank Berkman Klein Center for selecting me for the project Teem for this summer!

While writing this post I was thinking, how fast did we reach the end of Google Summer of Code? Really, time just flies when you start enjoying something!

Introduction to the project

Teem is a web application meant for collaborative development through commons based peer production. I liked the idea that Teem is a decentralised application, meaning that you can host on your own! As I was reading a bit about decentralised technologies I found an interest in contributing towards Teem!

I started exploring the suggested ideas page given by Berkman and there was one line written over there that caught my attention and there was one line that caught my attention, it was:

Internet applications do not exist as independent islands but rather as a part of a live ecosystem where everything is connected.

I started darfting my proposal keeping in mind the above written line and hence came up with the proposal containing three major goals to be covered over the entire summer. These 3 major goals were:

Link previews in Teem

We all like to see how facebook or whatsapp show us a small contextual link preview of the URL’s we paste in the those websites. Why not add this to Teem also, after all our goal is to have a application that is an all round place for collaborative development. We don’t want this place to be lagging from other social web applications!

Better sharing of Teem pages

Since Teem entirely depends on javascript for rendering all the data, we need to take care in some cases where data has to be fetched by a web crawler. Since a web crawler will not allow Teem to execute javascript, it will not be able to render any useful data. Thus, in order to have better sharing on social networking sites, I decided to add this as the next goal.

Integrating third-party apps

We want Teem to be a one stop collaborative development environment and in order to do so, we have to add integrations in Teem that allow people to do more! So I decided to work on to integrate Trello with Teem so that people can better track what work they have done!

With all this given in the proposal I was ready to start the summer.

GSoC 2018 Question tool – Report

I would like to thank my mentors Ellen Popko and Justin Clark for constantly supporting me, guiding me and reviewing my code during the GSoC project. This post is a summary of work done by me on Question Tool as a part of Google Summer of Code 2018 with Berkman Klein Center.


Question Tool is a free, open source discussion tool which can be used either during a class/lecture or during an online discussion.

Gene Koo, Fellow at the Berkman Center, said, “It’s an effective way to keep feedback focused, direct speakers to audience interests, and potentially prevent the mic from being hijacked by that weirdo.”

The participants can add their instances to start a discussion or they can reply to or upvote a question which they want to get answered. It’s a great tool to be used for an online lecture where the online audience can post questions in the tool and the speaker can address them. The most important questions are sorted towards the top.

Project Description

GitHub Repository –…

During the summer I worked on solving bugs in the tool and adding some new features to it.

Question div UI

Changes were made to the question card’s UI. The upvote button was been given a separate div on the left side to prevent any confusion, flags were changed, share icons moved to a single option and ‘show x replies’ and ‘reply’ are now two similar buttons beside each other.

Editing Advanced features for admins and moderators

Each instance has its advanced features like maximum response length, social media sharing and so on which were decided when the instance was getting set up and remained the same throughout. I implemented an additional tab where the admins/mods can change the advanced options anytime.

Revert Upvote

Right now there is no option for users to cancel their upvotes. Once upvoted, on clicking again they get an error message saying ‘already upvoted’. This was solved by showing a pop up when the user clicks on an already upvoted question which acts as a confirmation for canceling the upvote by asking the user yes/no

Admin Interface bugs

Solved bugs present in the admin interface. Proper checks were implemented when adding a moderator. Earlier it was possible to add more than the maximum number (four) of moderators if the user presses the done button instead of plus. This and other minor errors in the admin interface were solved.

A Bug in the Presentation Mode

This was a small issue but an important one. This solves the error of hidden questions being visible in the presentation mode. Presentation mode is likely to be used in a projector screen so it was important to hide the hidden questions (visible to admins and moderators) once admin/mods enter to presentation mode.

Change Password

Added the ability for users to changes their passwords.

Future work

The PRs for some of the above tasks are still not merged. Firstly I’ll finish the unmerged changes. Then I plan to make changes based on the reviews I get from users using the new version of the tool. Apart from that, there are two major things which can be added to the tool in future.

Side div

Currently, when opening the ‘show reply’ box, the popover template covers the full screen and hides other questions but after this functionality, the user can easily view one question’s replies and all other questions simultaneously as shown in the screenshot below since the reply box will be moved to a separate div on the right side of the screen.

Increased functionality to Revert Upvote

After the addition of revert upvote functionality, there arises a single issue which needs to be solved to avoid any misuse of it. This is not a present problem but there can be some cases where users may try to change the ranking of questions through their ability to un-upvote. To prevent that we can add a time limit for the users to be able to cancel their upvotes which will serve the sole purpose of canceling accidental upvotes.


This summer has been a great learning experience for me. I have learned a lot from my mentors while working on the project.

I am very grateful to my mentors Ellen Popko and Justin Clark, and the entire Berkman Klein community for giving me this wonderful opportunity.

Thank you