GSOC 2021: Musicbrainz Android App: Dawn of Showdown

Personal information

Nickname: Akshat
IRC nick: akshaaatt
Email: tiwariakshat03@gmail.com
GitHub: akshaaatt
Time Zone: UTC+05:30

Project Overview

MusicBrainz Android App has always possessed the ability to represent the MetaBrainz Foundation in the best way possible. This project aims to continue on its development further and complete the tagger implementation, revamp the UI to beautify the results, work on documenting the Code, Design, GitHub repository and all the implementations in the best manner possible while moving the codebase to Kotlin completely.

My PRs: Check Out

My Commits: Check Out

Features

  • Testing and Fixing the current tagger implementation with a future prospect of adding a WebView to the application.

  • UI revamp with grid views instead of linear layouts to beautify the results.

  • Filter search results based on the type.

  • Complete Kotlin Supremacy with the codebase supporting the latest Jetpack libraries.

  • Precise documentation of the codebase and the features involved.

  • Fluid animations on activity and fragment transitions.

  • Enhanced README and Wiki Section in the GitHub Repository.

UI Mockups

Implementations

  1. Convert the Linear Layouts to Grid Views to support more content and better user interface for the end users.

  2. Filter search results on the basis of type.

  3. Beautify the entity results with a more friendly UI.

  4. Replace the image assets with vector assets.

  5. Document the app codebase and tests.

Documentation

  • Adding relevant comments to the codebase with a well structured and discussed design flow.

  • Enhancing the GitHub README:

    • Project Overview

    • Description

    • Table of Contents

    • Installation Guide

    • Usage

    • Contributing

    • Credits

    • License

  • Adding a Wiki Section to the Repository.

TIMELINE

Here is a detailed week-by-week timeline for the 10 weeks of GSoC coding period which I intend to maintain and follow.

Pre-Community Bonding Period ( April ) :

My First priority before GsoC starts would be getting familiar with other entity implementations and discussing the design flow in a more explicit manner.

During this phase I will invest my time understanding the codebase more intensely.
Also in the meantime I will work on the existing issues to make the Android App more efficient.

Community Bonding Period :

Fix Existing bugs, help to merge pending PRs, and close issues.
Discuss with my mentor about Roadmap, Finalizing the UI Updates and get a clean sight of the Plan of Action.

Week 1-2-3 :

Fix the current tagger feature, test it and add the ability to lookup songs in the browser. Upon successful completion, add a WebView to the app for enhanced end user abilities within the app. Write the documentation for the Tagger implementation and complete it.

Week 4-5 :

Update the UI to garnish the entire application with the agenda for a robust and powerful app which is super user friendly. Replace the image assets with vector assets. Add in more fluid animations to the app for an amazing user experience.

Week 6-7 :

Add the ability to filter results on the basis of type for all entities, fix the implementation of all results and add a few more entities to the search list.

Week 8 :

Add a few tests to the app and complete the codebase documentation with the relevant comments.

Week 9-10 :

Clean up the code and start with the GitHub documentation.
First complete the proposed README then move on to the Wiki Section for the repository.
Discuss with my mentor the relevant changes before final submission of the work.

Stretch Goal

  • Start with the implementation of AcousticBrainz in the app.
  • Continue the work on ListenBrainz in the app and enhance it.

Detailed information about yourself

My name is Akshat Tiwari ( I go by @akshaaatt online), and I am currently in the 3rd year of my B.Tech Degree from Delhi Technological University (DTU), India.

I stumbled upon the MusicBrainz Android App while surfing through the internet and found it really interesting. The entire MetaBrainz Foundation fascinates me. I hope to learn and contribute here as much as I can.

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

    I own a Dell Vostro 3478, Core i3 8th Gen Processor with 12 GB RAM.

  • When did you first start programming?

    I remember learning QuickBASIC in 6th Grade, Fun times!

  • What type of music do you listen to? (Please list a series of MBIDs as examples.)

    I love Linkin Park, Bring Me the Horizon, Nirvana and many more such bands and artists!

  • What aspects of the project you’re applying for (e.g., MusicBrainz, AcousticBrainz, etc.) interest you the most?

    While MusicBrainz is what grabs my attention the most, I aim to encounter and fuse the aspects of ListenBrainz, CritiqueBrainz and AcousticBrainz into the Android App as well in future.

  • Have you ever used MusicBrainz to tag your files?

    Yes, I have! :smiley:

  • Have you contributed to other Open Source projects? If so, which projects and can we see some of your code?

    I regularly contribute to Open Source Projects, publish a few libraries and add a few OS projects myself as well.

    Google-IAP    Swarogya   Media-Picker

  • What sorts of programming projects have you done on your own time?

    Other than Open Source Projects, I love developing apps on Android. I currently have 20+ production ready deployed apps on the Playstore which constitute of games, social media apps and much more with 5000+ downloads.

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

    I am prepared to invest 40+ hours a week starting May since my college ends in April and I want to learn as much as I can through this project and make use of my skills in the process.

  • Do you plan to have a job or study during the summer in conjunction with Summer of Code?

    I am free during the summer. I will study a bit in conjunction with Summer of Code and be happy about making progress on the Summer of Code project with every passing day :slight_smile:

5 Likes

Hi @akshaaatt, thanks for your proposal!

Overall, the proposal looks good. However, I would like to see a few changes.

  1. We should prioritise working on the Tagger feature. Let’s move it to the start.
  2. You should add a few mockups of how the UI would look after you do the redesign.
  3. Previously, we have fallen in the trap of postponing tests and documentation to the end of the project. I, myself, am guilty of that as well. As a result, the code lacks testing and documentation at many places. Learning from the past experiences, we should do that side by side now.
  4. Filters. I have wanted to add filters to the search for some time now but its a bit of work doing that with RecyclerViews. I have experimented using Jetpack Compose in the application. That might ease the process a lot. This is however an implementation detail. We can discuss how to work it out later.
  5. An issue with auto search results is that our API requests are ratelimited. With auto search results, we might end up exhausting it quickly. I believe we should leave it out for the time being.
  6. Also, I think the conversion to Kotlin is almost complete (thanks to you :smile:). We should be able to do test in and release before GSoC begins. You can omit that from the schedule. Feel free to replace it with another task or keep a week as buffer time.
4 Likes

Hello @amCap1712, thanks for your guidance at all times!

I agree with your opinions and have made the relevant changes to the proposal.

  • UI Mockups have been added.
  • Tagger implementation has been moved up to cover the first 3 weeks of the timeline.
  • Auto search results implementation idea has been discarded.
  • Codebase documentation has taken the priority jointly with the relevant coding timelines.
  • Instead of a buffer period, I will allot a week’s time to write a few tests and precisely document the code.

Thank you and really appreciate your insights :smiley: