After the rating system being implemented in CritiqueBrainz, it is being planned to migrate the ratings which already existed on MusicBrainz to CB. This change will be more effective when all the entities existing on MB can be rated/reviewed on CB.
Presently, on CB, a user can review/rate only three entities i.e.
Places. By allowing them to rate/review more entities like
Artists, not only it will help to migrate the ratings of MB to CB but it will also target the interest of more people and engage them to use CB.
Being related to music which is an art in itself, I feel that the current UI needs to be more vibrant which will keep the existing reviewers engaged as well as attract the interest of new users.
As my Google Summer of Code project, I aim to extend the functionality of CB by adding support of reviewing more entities i.e.
Labels as well as improve the current UI system.
My proposed idea is divided into two major objectives:-
Implementation of CB-270. - Adding support
Labelsin the current review/rating system.
Improving the UI - The way of listing reviews is very much cluttered. The UI needs to be changed to something like a list of reviews with each review’s excerpt.
1. Implementation of CB-270 :-
The database of MusicBrainz is already present in the docker-image
Database Query functions have to be written for getting entity info from the database for
recordings. This can be done using joins on the various tables like it is being currently implemented for the existing entities. Other relationships and related entities can be retrieved by separate query functions.
frontend/external/musicbrainz/ the following files will be added to access data from DB:-
- label.py -
- get_label_by_id(): To fetch data of the label such as name and other details using its mbid.
- get_release_rels(): To fetch the releases by the label.
- get_multiple_rels(): To fetch various artists, work, places related to the label.
- work.py - Functions like
- get_work_by_id(): To fetch data of the place such as name and other details using its mbid.
- get_multiple_rels(): To fetch various artists, work, places related to the work.
- recording.py - Functions like
- get_recording_by_id(): To fetch data of the recording such as name, length using its mbid.
- get_multiple_rels(): To fetch various artists, work, places related to the recording.
frontend/external/musicbrainz/tests/ folder various tests will be added to test the above functions.
Making changes to the UI for the new entities
- Entity Pages:- There should be entity pages for artists, labels, work, and recordings displaying the average rating of all the reviews on that particular element. Here is an example of entity pages of
Note:- The entities
work will have similar pages as shown above.
- Review Pages for new Entities:- Have to make changes in the review editor for the user to review the new entities.
- Able to browse reviews by new entity types.
2. Improving the UI:- The current UI needs improvement. For example - Presently, all the reviews are being shown in a cluttered manner. This can be replaced by a list of all reviews with their ratings(if any) and with a short excerpt.
Note:- All the UI mock-ups depicted in the proposal are mere representations of how I envision the changes to be incorporated that suits the current design of the site. There may well be a better suggestion and final implementation at the completion of the project could be different.
Community Bonding (April 24 – May 13):-
In this period, getting myself familiar with the environment, I will fix existing bugs of CB. I will be in constant touch with the mentor discussing and finalizing the roadmap for the project.
Phase 1 (May 14 - June 11):-
In this period, I aim to complete the database access functions for
artist entity type, and make necessary changes to the UI allowing users to review Artists. After completing the implementation of
Artists, I will start on with implementing review system for
Labels on CB.
Phase 2 (June 12 - July 9):-
In this period, I will complete the implementation of the
Work entities on CB and will discuss and finalize the improvements to be made on the current UI system.
Phase 3 (July 10 - August 6):-
In this period, I will implement the review system for
Recordings and will be making changes to the UI as per decided before. I will be working on improving user experience and I will be also spending time documenting stuff and fixing bugs.
Will continue to work on CritiqueBrainz and on other MeB projects too. Planning to make a Statistics Page for CB based on user reviews using Data Visualization and the project will be based on d3.js.
Detailed Analysis of my Timeline:-
Week 1:- Will be fixing existing bugs of CB and be setting up the environment.
Week 2:- Complete writing database query functions for artists and tests for them.
Week 3:- Will make necessary changes to the UI so that the review system for
Artists is ready. Also start writing the DB query functions for
Week 4:- CUSHION WEEK: Will be completing all the stuff and fixing the bugs if any, and prepare for the Phase 1 evaluations.
Phase 1 evaluations
Week 5:- Working on the feedback of the mentors and complete the Database query functions along with their tests for
Week 6:- Complete integrating Frontend and Backend of the
Labels entity type.
Week 7:- Complete integrating Frontend and Backend of the
Works entity type so that both the entity types can be integrated into the current review system on production server.
Week 8:- CUSHION WEEK: Fixing all the bugs if any, and start discussing and finalizing with mentors about the New UI by making wireframes and mockups and prepare for Phase 2 evaluations.
Phase 2 evaluations
Week 9:- Complete the database access functions for
Recordings and start integrating it with the Frontend.
Week 10:- Complete adding support for the review system for
works and start working on the Finalized UI mockups/wireframes as per discussed with the mentor.
Week 11:- Finish all the work on proposed UI and fix existing bugs if any.
Week 12:- Finish Documentation and start working on Optional ideas.
Week 13:- Pencils down week. Prepare for final submission making sure that everything is OK.
I am a first-year Electronics undergrad at Thapar Institute of Engineering & Technology, Patiala. I came across the world of open-source during Google Code-in 2014. In 2015, I came across MetaBrainz due to my love for music and since then, I have been contributing to various projects of this organization. I was also selected as a finalist in both Google Code-in 2015 & 2016 for my contributions. Here is my list of PRs to MusicBrainz, BookBrainz and CritiqueBrainz. I also have a blog on which I seldomly post but I plan to use it regularly through the programme blogging about my progress with the project.
Question: Tell us about the computer(s) you have available for working on your SoC project!
Answer: I have an HP laptop with Intel i3 processor with 8GB Ram and 1TB HDD running a dual boot of Windows 10 and Ubuntu 16.04 LTS.
Question: When did you first start programming?
Answer: I was introduced to QBASIC in my 6th Grade in school and to JAVA in my 9th Grade. I started on with Python mostly in 10th Grade and since then I am trying to make small projects and Web applications.
Question: What type of music do you listen to?
Answer: I mostly listen to romantic Indian tracks. Arijit Singh and Atif Aslam are my favorite singers.
I also like Ed Sheeran and The Chainmokers. Here are some of my favorite albums/songs:-
Question: What aspects of CritiqueBrainz interest you the most?
Answer: I like to watch movies, read books and mostly I love to listen to music. But most of the time I find out that a person’s review about something is different from the famous critics. Here, CB makes me interested. In CB, one can write his own reviews and browse reviews written by people who have similar taste in music and this makes me love it.
Question: Have you ever used MusicBrainz to tag your files?
Answer: No, but I will definitely try it out.
Question: Have you contributed to other Open Source projects? If so, which projects and can we see some of your code?
Answer: I have made code contributions to MetaBrainz Foundation only till now about which I have written earlier but I also did some contributions to Sahana Software Foundation by reporting bugs on their tracker and by making changes to their wiki.
Question: What sorts of programming projects have you done on your own time?
Answer: I have made a small quiz game in Java and was working on a Flask based website for my school.
I also made a website which translates a webpage when its link is entered in various Indian languages in a hackathon. This project was based on Flask, BeautifulSoup of Python. Here’s the link (there may be some glitches in it).
I am also in the team working on the college’s computing society’s Flask based website. Here’s the link (This is in its initial stages).
Question: How much time do you have available, and how would you plan to use it?
Answer: I have my summer holidays during most of my GSoC period and I plan to work full time(40-50 hrs per week) on the project.
Question: Do you plan to have a job or study during the summer in conjunction with Summer of Code?
Answer: No, if selected for GSoC.