Google Summer of Code 2018 Work Product Submission



coala

Shrikrishna Singh

I am a final year Computer Science and Engineering undergraduate at Shri Mata Vaishno Devi University. As part of the GSoC’18 I worked on community and webservices project to build a gamification system for all the active newcomers at coala.


Patches Tarball


SHA-256:

43e4291bf4a8b6d83b004483d260cf2dfdd0d3ae139d598f40e473d05513f9c6

Bonding

Phase 1

Phase 2

Phase 3


Links to commits and repositories I've worked on:

Repository Link to Commit/s Description
c  coala-bears View

GitCommitBear: Parse remote with giturlparse

c  coala View

Jinja2.py: Add support for ignore comments

c  cEPs View

cEP-0020: Add Newcomer metrics and Gamification system

w  webservices View

org/cron.py: Use dict.get method to r_json

w  webservices View

Add IGitt Cache mechanism

w  webservices View

requirements.txt: Use == for installing IGitt

w  webservices View

Serialize coala issues on GitHub and GitLab

w  webservices View

Implement logging

w  webservices View

Add teams to Contributor Model

I  IGitt View

Repository: Add filter_merge_requests method

w  webservices View

backend/db.sqlite3: Add old database files

w  webservices View

org/: Only pass valid usernames to methods

w  webservices View

org/cron.py: Fix contributors cron job

w  webservices View

Serialize coala mrs on GitHub and GitLab

c  community View

data/tests/: Add tests for data app

c  community View

test_management_commands.py: Fix webservices error

c  community View

data/: Fix import_contributors_data command

c  community View

test_models.py: Fix tests

c  community View

Get 100% test coverage for the data app

w  webservices.coala.io View

Generate a fake api similar to coala’s webservices

c  community View

data/: Import IGitt data

c  community View

data/: Add url field to Issue and MergeRequest model

c  community View

Add gamification app

w  webservices View

org/: Use igitt_django models to save igitt data

w  webservices View

org/: Make an api to show active newcomers

i  igitt-django View

Switch to sqlite3

c  community View

[WIP] gitter/: Messages, Analysis and Import

w  webservices View

[WIP] Serialize messages on gitter by newcomers


Newcomer Metrics and Gamification

This project is about automating the recognition of activities performed by people who join the coala community, and encourage them to progress towards obtaining the role of “Developer” in the community.

This project incorporated a gamification system which allows us to track the progress of newcomers activities and assign some points to each of the activities they do. The newcomers will get some score which will be the sum of all the points they have earned by performing several activities. The score they get will be a deciding factor for the current ‘Level’ of the newcomer and the activities they perform will be a deciding factor for ‘Badges’ they have earned.

coala always tries to be a welcoming organization for newcomers, giving them clear pathways and as much direct assistance as possible. However, it is already known that newcomers face many barriers while attempting to contribute to open source for the first time, and additional barriers while attempting to contribute to projects run by the coala organization. On the other hand, gamification is widely used to engage and motivate people to accomplish tasks and improve their performance.

Thus, the goal of this project is to use gamification to orient and motivate newcomers to overcome onboarding barriers to contribute and engage with coala and its community.

Work Done

Creating the APIs

To build the gamification app, there was a need of constant data supply of all the activities newcomers do, i.e. Getting a pull request merge, Creating an issue and sending messages to the gitter channels. The work to achieve the same has been done in the webservices repo. And the output of all the script can be viewed at webservices.coala.io which is a workaround to get a fixed URL for all the APIs until there is the integration of continuous deployment in the webservices.

Building the Gamification system

The second and the important part of my work, from importing the useful newcomers data to building the gamification app has been done in the community repo. And now we have a leaderboard which shows the score, current level and the badges earned by all the active newcomers at coala.

Challenges

The biggest challenge for me was to design the models of the gamification system and choosing the correct path to implement the process. I almost did the wrong implementation of the process twice but again because of well written cEP and the guidance of my mentor John I had a clear idea of what I have to achieve. So, I did some more thinking and research on Django and get the basic work done. And once the algorithms were in place everything went smoothly with the reviews of my mentors.

Work to be done

1). Integration of continous deployment to the webservices.

2). Use real webservices APIs.

3). The leaderboard on community website is very basic. It could be prettified and improved.

4). Add support of Gitter messages analysis to the gamification app. WIP.