Monday, August 31, 2020

GSoC 2020: User Collection for BookBrainz | MusicBrainz Blog

Hi everyone, I am Prabal Singh currently studying in Indian Institute of Technology, Guwahati. This summer I participated in Google Summer of Code and developed a new feature – User Collections – for the project BookBrainz.

I was mentored by Nicolas Pelletier (Mr_Monkey on IRC) during this period. This post summarizes my contributions to the project.

I started contributing to BookBrainz in January 2020. Before GSoC (January–April), I mainly worked on improving revision pages (Editor Revision, Entity Revision, All Revisions), adding Editor Activity Graph and some minor bug fixes.

For the GSoC, I made a proposal that was aimed at developing a User Collection feature. User collections allow users to create, organize and retrieve collections, as well as add items and collaborate with multiple users on one collection.

First Coding Period

I started with creating tables in the database and writing models for the BookBrainz ORM.

I also modified ElasticSearch (our search engine) index to allow searching for other editors which was going to be needed while adding collaborators in a collection.

Later I developed the create collection route which allows users to create and edit a collection.

I also developed the delete collection route which allows users to delete their collections.

Screenshot of Collection creation page
Screenshot of Collection deletion dialogue

Second Coding Period

In the second coding period, I developed the collection view page, all collections page and also added the feature to add items in the collection from the entity page.

I also started writing tests using Chai and Mocha during this time which helped me find bugs and vulnerabilities in the code and made the developed feature robust.

Showing an Author collection
Showing the dialogue for adding an entity to a collection from the entity

Final Coding Period

In the final period, I extended the feature of adding items to a collection to the search result and collection view pages. I also added a feature to allow collaborators to stop collaboration.

We also deployed the User Collection feature on the BookBrainz test site. Everyone is invited to test it and provide your feedback. 🙂 We plan to release this feature on the BookBrainz beta site pretty soon.

“Add authors to the collection” dialogue
“Create Collection” dialogue
“Remove yourself as a collaborator” dialogue

Overall Experience

This was the first time I did a big project and I enjoyed it thoroughly and had lots of fun developing it. I plan to further improve the project and will try to complete my stretch goals.

I had a wonderful time working with Mr_Monkey and learned a lot working with him. He helped me whenever I was stuck and his multiple PR reviews really helped improve the code quality. Couldn’t have asked for a better mentor! 🙂

All the PRs can be found here: UserCollection Project.


No comments: