GSoC 2019: Gamification of CritiqueBrainz for Users

Tags: #<Tag:0x00007f8d6ce2c2b8> #<Tag:0x00007f8d6ce2c178>

Personal information

Name: Shashank
Nickname: silverstar
IRC nick: silverstar


I plan on taking the project Gamification of CritiqueBrainz for users and I feel it’s a good initiative to encourage users to contribute regularly to CritiqueBrainz.Also this would help recognize most active contributors.
I’d like to mention that I’ve referred to this GSoc 2016 proposal by @Quora while writing mine so parts of my proposal might resemble.

Some example achievements that can be rewarded are:

  • Streaks
  • First review of a particular release/group
  • First actions on CritiqueBrainz (review, edit, etc)
  • Recognizing good content

These achievements can be rewarded in the form of badges which would be visible on the profile of users.

The badge system can be extended further by introducing a system much similar to Reddit Coins. Coins can be awarded to users when badges and achievements are unlocked and can be spent to reward other users for good content. As a strech, coins can be awarded to users who support MetaBrainz as a Thank-You. Personally, I feel the coins system might need deep changes (might be wrong) but I think it’s a good initiative to gamify contributions across MetaBrainz Projects.

For doing this couple of changes are needed in the database as illustrated in the image

Also it will require changes to show the badges and achievements on the profile page of user and maybe on posts.


Community bonding

  • Get to know mentors of the project and familiarize with CritiqueBrainz code base by the first week

Phase 1 (Late May-Late June)

  • Start by creating new tables and other changes to database schema (Estimate: 1 Week)
  • Populate the new tables with badges, achievements and rewards.
  • Add functions and helpers to reward users with badges and achievements when unlocked and write tests for the same (Basically back end functionality to reward badges) (Estimate: 2 Weeks)
  • Buffer time

Mid Term (Late June- Late July)

  • Focus on front end to render badges and achievements on user’s profile (Estimate:1 Week)
  • Discuss and work on coin functionality (Estimate: 1-2 Weeks)
  • Functionality to award good content with a medal of sorts and corresponding coin transactions
  • Buffer time

Final Phase (Late July- Early August)

  • Finish pending work from previous phase(s) (Estimate:1-2 Weeks)
  • Finish writing tests and documentation (Estimate: 1-2 Weeks)
  • Testing the finished project and changes based on community opinion

After GSoc

  • Contribute to CritiqueBrainz in my free time

Strech Goals (optional)

If time permits and with community approval, I would like to:

  • Initiate work on rewarding coins to supporters as a Thank-You

Detailed information about yourself

My name is Shashank and I am an undergraduate student at International Institute of Information Technology (IIIT), Hyderabad, India. My timezone is UTC +5:30. I came to know about MusicBrainz and subsequently MetaBrainz through Google when I looking for a metadata service for songs for a hobby project of mine. When I saw MetaBrainz featured in GSoc orgs I wanted to contribute to this wonderful organization :blush:

About the computer(s) you have available for working on your SoC project!
I have a Predator gaming laptop. 8th gen Intel i7, 16GB RAM, 6GB Graphics Card.

When did you first start programming?
I started programming about 2 years ago as part of college curriculum. During school we were taught Qbasic, MSW Logo (this was during grade VI)

What type of music do you listen to?
I like listening to Pop music. Some of my favorite artists are Dua Lipa, Enrique Iglesias and also Bollywood artists Arijit Singh

If applying for a BookBrainz project: what type of books do you read?
Although not applying for a BookBrainz project I like reading books by John Grisham especially the Theodore Boone series.

What aspects of the project you're applying for interest you the most?
The idea of an open place for reviewing music and releases interest me the most.

Have you ever used MusicBrainz to tag your files?
Don’t want to lie but no, I haven’t used Picard although I have used python-musicbrainzngs in one of my current hobby projects I’m working on.

Update: Just used Picard and it’s awesome!!

Have you contributed to other Open Source projects?
I have a couple of hobby projects and Open Source contributions on github

What sorts of programming projects have you done on your own time?
Most of my programming projects are simple scripts and hacks to make life easier. Some I’d like to mention.

  • Sci-hub A python script I wrote for downloading/viewing research papers and articles off sci-hub.
  • Movie-Downloader : The name says all
  • Hackathon submission This is a game that our team built for a college hackathon
  • Community Programming Book Basically an online book about the history of programming languages. Written about a couple of programming languages.

How much time do you have available, and how would you plan to use it?

I can work full time during summer with 6 - 8 hours dedicated to Soc per day

Do you plan to have a job or study during the summer in conjunction with Summer of Code?
During the last phase in early August college semester would begin but I feel I would have finished most of the work by then save some minor things

This is my proposal for GSoc and any questions or suggestions are welcome :grinning:
I’m slightly unsure about how the coins system might work so I really need suggestion and your thoughts on it.

I now have a working local installation and I was going through the code-base and understanding it.


Hi @silverstar, thank you for submitting the proposal. Really great work here :). I have some additional questions to add whose answers you can add to your proposal (they are just some questions to consider, but no means requirement for the proposal) :slight_smile:

  1. How would the typical coin reward system look like on front-end for reviews? How do users get notified about receiving coin rewards or votes? This is a pain point in CB (votes) which needs improvements and it would be awesome if you cover this in your proposal as well.

  2. It would be awesome if we could engage users for a long time and get quality content for entities. This may not be in the scope of the project but do you have ideas on attracting more users somehow (like integration with other popular projects like ListenBrainz)?

Perhaps we also would like to advertise the gaming system on the home page somehow? What are your thoughts on that?

Thanks again and feel free to ping me in case of any doubts (@ferbncode). :smiley: