GSoC 2024: Configuration wizard for Picard

GSoC 2024: Configuration wizard for Picard

Edit: Link to the Document for comments

About Me

I am Suryansh Shakya, a newcomer at Scaler School of Technology, and I am deeply intrigued by the field of Computer Science and its applications. My aspiration is to eventually become a computer scientist. Presently, I am an active member of the Open Source club at Scaler School of Technology. This club operates under the Innovation Lab, where we focus on developing software solutions to address real-world challenges, both within the college environment and for external entities such as Bhashini, Zolo, Urban Clap, etc. In my spare time, I am enthusiastic about expanding my knowledge by exploring new frameworks, technologies, and research papers. Besides my interests in development and technology, I also have a passion for photography, football, and watching anime ;p.

Why Choose Me?

  • I am dedicated to seeking solutions to challenges and continually learning from them.
  • I possess previous experience with PyQt and have completed several personal projects using this framework.
  • I am actively involved in the MetaBrainz community and have resolved various issues within MusicBrainz Picard, thus gaining familiarity with the codebase

Why MetaBrainz?

  • During my childhood, I frequently used MetaBrainz without realizing it was open-source software. I was captivated by how it organized my music collection and added original album covers to the songs. Trust me, it felt like magic at that time!
  • As I delved into the codebase and interacted with some of the maintainers on Discourse or tickets, I discovered more about the MetaBrainz Foundation. I found it to be a vibrant and welcoming community for newcomers.

My Contributions to MetaBrainz

Proposed Project

Project Overview

The Setup Wizard for Picard aims to provide new users with a streamlined and user-friendly interface to configure the software according to their preferences and requirements. This wizard will guide users through the initial setup process, helping them to configure key settings, customize preferences, and familiarize themselves with Picard’s features.

Project Goals:

  1. User-Friendly Interface: Develop an intuitive and visually appealing interface for the Setup Wizard that guides users step-by-step through the configuration process.
  2. Configuration Options: Implement options for users to configure basic settings such as preferred music directory locations and file naming conventions.
  3. Feature Introduction: Introduce users to Picard’s core features and functionalities during the setup process, providing brief explanations and tutorials where necessary.
  4. Customization: Allow users to customize Picard’s interface layout, keyboard shortcuts, and other preferences to suit their workflow and usage patterns.
  5. Feedback Mechanism: Incorporate a feedback mechanism within the Setup Wizard to gather user input and suggestions for improving the software.

Plan of Action:

  1. Research and Planning: Conduct user research to identify common pain points and user preferences. Develop a detailed plan for the Setup Wizard’s features and functionality based on user feedback and requirements.
  2. Interface Design: Collaborate with in-house UI/UX expert to create wireframes and mockups for the Setup Wizard interface. Iterate on design concepts based on user feedback and usability testing.
  3. Development: Implement the Setup Wizard functionality within Picard’s codebase using appropriate programming languages and frameworks. Ensure compatibility across different operating systems and versions of Picard.
  4. Testing and Feedback: Conduct thorough testing of the Setup Wizard to identify and address any bugs, errors, or usability issues. Gather feedback from users through beta testing and iterate on the design and functionality as needed.
  5. Documentation and Support: Prepare comprehensive documentation and user guides for the Setup Wizard, including tutorials, FAQs, and troubleshooting tips. Provide ongoing support to users and address any questions or concerns related to the Setup Wizard.

UI Mockups:

The scenes are just for illustration and the actual wizard might differ from the initial one.


  • Pre-Community Bonding Period: Brainstorm on UI and important features that need to be added to the wizard
  • Week 1 and 2: Finalizing UI Ideas (I have some ideas to make UI interactive as Window’s first boot screen)
  • Week 3: Start writing code for the UI
  • Week 4: Add animations and other features
  • Week 5 and 6: Add functions to the UI components of the wizard probably we will use Picards executable commands to add functions as mentioned by twodoorcoupe
  • Week 7: Finalize the wizard and take feedback from the community.
  • Week 8: Make changes if needed.
  • Week 9: Cushion period
  • Week 10: Cushion period
  • Week 11: Cushion period
  • Community Bonding Period: Finalize UI mockups and seek mentor feedback.

Other Information

  • The device that I currently use:

    • Lenovo Ideapad Flex 5, with AMD Radeon 5500U Processor with Integrated AMD Radeon graphics and 16 GB LPDDR5 RAM running on Windows 11, but for development I use Debian running on WSL 2 in Windows 11 on the same computer.
  • When did I first start programming?

    • In 2013 When I was in 3rd Class with a language called LOGO(Logic Oriented Graphics Oriented), then further moved to QBASIC, Visual BASIC .NET, C#, HTML CSS Javascript, Java, and Python.
  • What type of music do I listen to?

    • I mostly listen to pop, EDMs, phonk, and sometimes Lo-fi music.
    • I also have a taste for Indian Classical music.
  • What aspects of the project I am applying for (e.g., MusicBrainz, AcousticBrainz, etc.) interest me the most?

    • MusicBrainz Picard interests me the most
  • Have you ever used MusicBrainz to tag your files?

    • I used MusicBrainz Picard in childhood to organize my music directory.
  • Open source projects I have contributed to:

  • What sorts of programming projects have I done in my own time?

    • GitHub - nullHawk/Imagit: Image editing software made in JavaFX : Image Editing Software made using JavaFX
      • This is image editing software that does simple matrix operations on images like adding filters by changing the values by some factor or rotating the image by multiplying images by eigenvectors. Cropping the image by chopping off some of the values in the matrix.
    • GitHub - nullHawk/anonythreads: Anonymous Confession website made in django : Anonymous confession website made using Django
      • This website was made by me during an overnight hackathon conducted by our college
    • GitHub - nullHawk/NullHawk-s-Play: Music Player made in pyqt5 which feteches music from youtube : Desktop Music Player which fetches data from YT music made using PyQt
      • This is a desktop mp3 player that scrapes data from YT Music and plays it on a desktop, It was part of a Hackathon conducted at SST.
    • Ediary : Desktop Ediary made in PyQt
      • This was my class 11 annual project, although I had made it several time in other languages like VB .NET, and Java Swing in class 8th and class 10th. But this time I added features such as the customized RSA algorithm for encryption and hashing the password making the diary more secure.
    • Hangman: A game made in Python using the turtle library, this was the remake of the hangman game that I had previously made using a language called LOGO.
    • Bell Program: It was my first major project made in Visual Basic in class 8th. It was a bell program that used the speakers present in every room of our school to ring the bell at the given intervals and also had a mic feature to listen and make announcements at a given time.
  • Tech stacks that I am familiar with:

    • Languages:
      • Python
      • Java
      • C
      • Javascript
      • Bash
      • C#
    • FrameWorks:
      • Desktop Development:
        • PyQt
        • JavaFx
        • Visual Basic .NET
      • Web Development:
        • Django
        • Spring Boot
        • Express
        • Vanila JS
      • Android using Java
      • Game Development:
        • Pygame
        • Unity
  • How much time do you have available, and how would you plan to use it?

    • I will be able to commit 30 hrs per week and I have no other commitments during the interval of GSoC

Hi @outsidecontext, sorry for the delay. I’ve been figuring out exactly what to write, and I’m still a bit confused about the timeline part. Your views would be extremely valuable.


@nullhawk thanks for your proposal.

1 Like

Hello, @nullhawk , welcome to MusicBrainz, and thank you for your interest in contributing to MusicBrainz through GSoC.

My name is Jim, and I am an ordinary contributor, not a MusicBrainz or GSoC authority. So my comments are just those of an interested user.

I can see the value of a configuration wizard for Picard. One aspect of the design which I don’t see much in your first writeup is “personas”. What kind of user will this work benefit? A persona describes that user, what they have, what they want, what they do now, and what obstacles they encounter. The idea of making clear personas is that they help you make wise choices during design and implementation: you can just ask yourself, “What would the Mary Music-Collector persona want?” So, perhaps consider including descriptions of personas in the design.

The persona that would benefit from this is someone with a lot of digital music files, a desire to get them better organised and tagged, and not much awareness of MusicBrainz. The persona might be similar to the you of years past. I, on the other hand, am a different persona. I have used Picard for a long time. I take advantage of its plugins and detailed settings. I often make edits to MusicBrainz metadata to control what Picard ends up writing to my music files. I have finished configuring Picard, and don’t need a wizard anymore.

An interesting goal for the configuration wizard might be to suggest to the user that they consider contributing metadata to MusicBrainz. Maybe there will be a point in the workflow where the user discovers that the album they want to tag is not in MusicBrainz, or it is in MusicBrainz but some details are wrong. The configuration wizard won’t edit MusicBrainz for them, but it might lead them to create a MusicBrainz user ID, and start to learn about MusicBrainz editing.

A different but related project is one which would really help me: make Picard able to write its metadata to a local file, and able to read metadata from a local file instead of from MusicBrainz. I would use this for unpublished albums which I want to tag and play in my music collection, but don’t want to add to MusicBrainz. For example, when my chorus makes an archival recording of a performance which, for business reasons, we are not allowed to distribute. Or, a rip of the audio from an opera DVD, where I break the audio into more helpful “tracks” than the original DVD used. A possible format for the local data might be the XML data file which MusicBrainz can deliver via a Release’s “Details” tab. Maybe this could be an extra “stretch” goal.

I hope these ideas are encouraging and helpful for you. Again, I am just another MusicBrainz contributor. If these ideas conflict with what you and MusicBrainz need for a successful GSoC, feel free to disregard them. Best of luck!


Interesting idea. If it’s not already there, you might want to enter a ticket for that in the ticket tracker so that it isn’t forgotten and someone can pick up and run with it.


Done! Added ticket PICARD-2852 Allow Picard to read metadata from and store to a local data file, as well as from MusicBrainz.


Thanks a lot for the proposal. I don’t have much to add for the general direction above what already has been said. The overall approach is fine. On the details we will need to work as part of the project. The duplicate handling would be out of scope, as there are currently no options for this. But cover art I would add to the list.