Personal information
Nickname: Quora/Heshoots
IRC nick: Quora
Email: m@xprettyjohns.com
GitHub: heshoots
Twitter: heshoots
Proposal
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.
#Timeline
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
https://bitbucket.org/uobkappa/data-dome/src/9b89b991e2a9?at=master
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.
sources
[1] Paradigms of achievements: web - An achievement system like here on stackoverflow in php? - Stack Overflow
This is a draft submission for GSoC