BookBrainz: Gamification of submission system

Tags: #<Tag:0x00007fd6ff8c13f0> #<Tag:0x00007fd6ff8c12b0> #<Tag:0x00007fd6ff8c1170> #<Tag:0x00007fd6ff8c1030>


Personal information

Nickname: Quora/Heshoots
IRC nick: Quora
GitHub: heshoots
Twitter: heshoots


My proposal is based on the existing idea provided for BookBrainz to build a gamification system in order to encourage users to contribute regularly and make use of all the tools provided by the website. This can also be used to determine the most active members and provide them with accolades for contributing to the project. Care will have to be taken to ensure these achievements are encouraging positive behaviour in the community such as high quality submissions and community engagement and not rushed contributions and spamming other users.

Some example achievements that may be useful are:

  • Streaks, encouraging users to come back for multiple days and continue contributing

  • Providing good content, have content recognised by other users with higher reputation and greater understanding of style guides to encourage this behaviour

  • Add to another users contribution which aids in keeping the database up to date and following standards provided

  • Add new content type, gain achievements for each type of content and upgrading these achievements as the user continues to contribute, this encourages users to submit content other than books and will help increase the content types supplied by the database

All of these can be used to create a badge system which allows users to personalise their profiles, these badges can be unlocked through achievements and levelled up by continue to work on the achievements

This change will require an extra four tables to the database, the schema for this is shown here

It will also require system logic to determine if an achievement was unlocked, these will need to be implemented thoughout the site so knowledge of most of the systems will be required to implement these properly. Most of the ideas I can come up with will be based on the paradigm of checking on submission of a form. But others can be derived based on a schedule, this could be a “top submitter for the day” achievement, where the most active contributor is determined at a a set time and given the achievement. Different notification methods will need to be determined for these two paradigms. [1]

Shown above is a mock-up of how I envision badges to be implemented on the user profile page, I would like to keep it relatively simple looking and keep with the style currently maintained by the project.


Community bonding period (April-- 22nd May)

browse the relevant sections of code to my project, determine relevant differences between sqllite and postgresql and get to know the mentors of this project.

First-Term (Late May- Late June)

I will have completed my summer examinations and will be ready to start work on the project, I will begin by getting into the source code and determining where I believe changes will need to be made. To begin coding I will set up database schema (above) and interface design to allow for achievements and badges to be implemented. Unit testing for these will be added as I go to ensure they work as expected when added to the live project. Potential to begin adding basic achievements (fill out profile, submit a contribution) if I have time.

Mid Term
Work with mentors to produce evalution for GSOC.

Second term (Late June- early august)
Begin adding more advanced achievements, checks at a specified time and levelling to the badges to allow people to work towards reaching better badges and continue writing tests. Potential to add Discourse and Mozilla Open Badges integration along with a “Top Badges” page and editor leaderboards.

Final Week (early august - mid august)
Refactor and tidy code, write additional tests, prepare sample code final evaluation.

After GSOC
Continue working with the Bookbrainz project in my free time.

Detailed information about yourself

I am an undergraduate computer science student at the University of Bristol, I learned about GSoC after a representative visited our university, and have been getting started on setting the environment up and submitting pull requests to make doing so easier for new users.

Tell us about the computer(s) you have available for working on your SoC project!

My main work pc is an entry level gaming system (AMD 6300, AMD HD7770) I built before starting university, I now have my dream battlestation of three monitors and I love it. Hoping to upgrade to a smaller case and new graphics card over the summer. I also use a trusty old macbook from 2009 to do some work on the go.

When did you first start programming?
I started programming mainly when I began my course a year and a half ago, but had worked on a statistics tracker for league of legends and some web development before then.

What type of music do you listen to? (Please list a series of MBIDs as examples.) If applying for a BookBrainz project: what type of books do you read? (Please list a series of BBIDs as examples. (And feel free to also list music you listen to!))

I love pretty much any genre of music, im on a Taylor Swift (20244d07-534f-4eff-b4d4-930878889970) binge at the moment along with The Knocks (9157ad72-3893-47da-986a-0aa7313f7429) and Kendrick Lamar’s new album (c002fef6-2b03-4d98-ac41-39d45bb2d95c).

As for books I love cheesy young adult fiction, I really enjoy the mortal instruments series by Cassandra Clare (fc1bc139-60a7-44b6-adeb-ba76f0cc39e2) and Freakonomics series by Steven levitt and stephen dubner (unable to add to the system at the moment).

What aspects of the project you’re applying for (e.g., MusicBrainz, AcousticBrainz, etc.) interest you the most?
Bookbrainz interests me since I really like the idea of keeping data open and free for the public to use, I think the project could be interesting for keeping track of books you have read and potentially creating communities between people interested in similar titles.

Have you ever used MusicBrainz to tag your files?
Yes, I used picard and it worked really well.

Have you contributed to other Open Source projects? If so, which projects and can we see some of your code?
I have not contributed to other open source projects since I haven’t really worked on large projects up until now and didn’t feel confident in my abilities, this year we have worked with a client to produce a large group project and I think this has encouraged me to collaborate on this type of project.

If you have not contributed to open source projects, do you have other code we can look at?

The latest project available publicly is a visualisation of data that has been made available by our local council… The code for this project is available here

This is written in C# using Unity. I have learned C#, SQL and the unity engine during this project and worked with a team of four other students to build a substantial project.

What sorts of programming projects have you done on your own time?
Mostly web development based prototypes to learn node, django and electron.

How much time do you have available, and how would you plan to use it?
I plan on having 8 hours per weekday available to work on this project making up the 40 hours a week to work on this project

Do you plan to have a job or study during the summer in conjunction with Summer of Code?
Should I be accepted I do not plan on taking on further employment, And should I pass my exams as I am on track to do I would not need to spend this time doing studies. My only plans over the summer is a weekend trip to a LAN party which should not effect my project.

[1] Paradigms of achievements:

This is a draft submission for GSoC

Gamification of MusicBrainz editing: ways to increase perceived pay-off of editing?
Alternative ways of contributing for barely and low IT skilled people?
GSoC 2019: Gamification of CritiqueBrainz for Users

Apart from s/Bookbrains/BookBrainz/, I don’t really have anything to add. Seems like an excellent proposal to me. :+1::smiley:


I’ve edited it to fix that, thank you very much. :smiley:


Hey, thank you for applying to be BookBrainz’ first GSoC student!

Your proposal seems quite solid so far and while it isn’t supposed to be a complete design doc, I’d like to ask some questions:

  1. You mention both badges and achievements, how would you distinguish these?
  2. Do you have any ideas for how a karma system in BB could look like?
  3. I’ve considered implementing various user ranks with increasing privileges (similar to how Discourse uses them), what do you think about those?

These questions are by no means requirements for your proposal, I’m just interested in your idea of gamification for BB. :slight_smile:
I feel both Discourse and Stackoverflow but also Wikia have done a pretty good job at implementing it, so maybe we could steal ideas gather some inspiration from them.

I’d suggest you join us on the #metabrainz IRC channel on freenode for real-time discussion and if possible for the next BB meeting at Saturday 16:00 UTC.

Thanks again and I’d love to see you join the BB team! :smiley:


This is really great!

You’ve clearly understood what we’re looking for with this idea, and from what I can tell your proposed system would work well.

As Leo said, please could you define what you mean by “achievement” and “badge” and (importantly) the difference between the two. Do multiple achievements unlock a badge? Are badges only awarded for certain achievements?

Perhaps we could also have a “top badges” page or something displaying a leaderboard of editors? Or some other way of comparing your own achievements with other contributors?


My only input (and I’m not a BB team member so I’m just sneaking this in anyway) is that I really like this idea!

A great aspect of ‘gamifying’ the user system is that you can also encourage other (sorely needed) elements, like encouraging experienced users to help out/ mentor new users, and to add or edit things that are a pain/nobody does. So once a system is in place hopefully it would allow us to use it to reward (eg more or less) specific types of edits or behaviour!

I also think picking Bookbrainz for this (to start) is a really good idea, might be less hurdles compared to some other Brainz projects :smirk:


Just a quick idea from my side, even so I have nearly no idea of BookBrainz itself.

Our new Community site here uses Discourse, which itself has a gamification system by issuing badges to users for certain activity. One can define custom badges inside Discourse and issue them to users using the Discourse API. Discourse itself utilizes this on their own discussion page to grant badges for e.g. people who contributed to the source code.

I think it is worth looking into this, as this could strengthen the community around MetaBrainz. From what I can see you still would need to implement and manage the badges inside BookBrainz if you want to display them there, but pushing the badges also to Discourse could be an extra step and not hard to implement.


Great idea, I didn’t know Discourse supported custom badges, but it would probably make a lot of sense to allow people to show off BB ones here.

@kuno mentioned on IRC, which seems to be focused on skills but could also be added as a badge export option.


Sorry it took a little while to get back to you guys, moved out for spring break yesterday.

So my thought was that achievements should be small stepping stones to achieving a badge, so you could have a tutorial track which can teach you features of the site, “send a message”, “add a creator”, etc. Which leads to a badge you can display on a profile or perhaps use as a profile picture. And perhaps further, once a badge is earned you can perform further achievements to upgrade the badge.

Im unsure of an automated karma system, I think perhaps a way of users honouring content they thought was complete and followed guidelines well is probably the way forward since rewarding contributing a lot of bad content may not be in the interest of the project.

As for user ranks with privileges, it could be worth looking into, but there doesn’t seem like much to limit at the moment, perhaps limiting messaging for new users to prevent spam and potentially limiting the amount of contributions someone could make on signing up.


I really like that idea, I think its something that could definitely be worth adding if time allows. I will add it under further work should I have some spare time at the end.


Thank you very much :smiley:


I saw the notifications pop up here but never clicked them to see what they were, a good thing to take into account to make sure people actually understand what they are earning. I thought I was simply getting more priviliges on my account. Definitely worth adding though if this discussion board is the main way you guys engage with each other.


I had no idea about this system but its seems great. A great way to get people engaged in communities like this and another thing to add to a CV. Another good thing to add.

Thanks for the feedback :smiley:


Don’t know how the other team members feel about it, but personally it strikes me as premature to propose schema before engaging on the project and having a firm high-level plan. Far from a blocker, but it’s something I consider worth keeping in mind.

However, I would like some attention paid to social aspects of the proposal in addition to technical. If this came before me as a feature proposal, the first thing I’d bring up is the potential for gamification to create perverse incentives and to cause friction in the community. While it’s primarily a social problem, there can be technical disincentives to abuse, and I’d also like that consideration reflected in the ideas for whatever form of achievement users can earn.


Yes, that is a fair point. It was recommended to include schemas and mockups along with the proposal in the document that is given to use when we first open a GSoC topic on this forum otherwise it may get completely overlooked. The schema and design I have specified here is in no way final and just to get my message across :slight_smile:

As for Incentives I am aware of how they can cause issues, and referred slightly to it in my previous post. We will have to be really careful especially when it comes to things like leaderboards for contributions where it would be preferable to create leaderboards for higher quality contributions. That is of greatest importance for me when it comes to this. I want the system to encourage people to contribute great content and get involved in the community first and foremost. I will reiterate this in my proposal.

Thank you very much for bringing it up.


Quoting sttaylor in #gsoc (IRC) last night:

Remember a Final PDF must be submitted before the March 25th 19:00 UTC deadline to be considered for GSoC 2016
also if you submit your final pdf now you can upload a new one up until the deadline on March 25th
but I strongly encourage students to submit at least 6 hours before the final deadline - we do not extend the deadline under any circumstances
every year students miss the deadline because their wifi goes out or their computer dies and they have to wait until the next year to try again

So consider this a heads up and a reminder :wink:


Thank you for the reminder :slight_smile:

I have submitted the final pdf to the program site and it is available to view here:

I am still able to make changes if possible, any further feedback would be appreciated.

Cheers, Quora.


I would personally prefer to keep discussion here on our forums rather than move it to Google Docs.


Yeah, thats alright.

I’ve just made the Google Docs file to get it into PDF for submission, its pretty much exactly the same as here just with some extra formatting. :slight_smile:


This would be really useful for getting the folksonomy populated on MusicBrainz, too.