My Google Summer of Code 2022 summary

What and for whom

Organization: MetaBrainz Foundation
Project: MusicBrainz Picard
Mentors: Laurent Monin (zas) & Philipp Wolfer (phw)
Main focus: Introducing single-instance mode in Picard 3.0
GSoC website: Link

What has been done: TL;DR edition

  • Picard works in single-instance mode by default, allowing to force-spawn a new instance
  • Picard accepts not just file paths but also URLs, MBIDs and commands as command-line arguments
  • The command-line arguments are sent to the existing instance (and processed by it) if possible
  • Picard can execute commands passed by the command-line interface; e.g. save all files, show the Picard window or close the app
  • Picard can also load the commands from a text file

List of pull requests

Single-instance mode

  • Picard#2116: A big commit where the whole single-instance mode for Picard was designed and introduced (only for file paths though)
  • Picard#2135: Fixed problems with exiting the app, caused by Picard#2116
  • Picard#2130: Supported URLs (with MBIDs) and mbid:// links (documented there) can be passed with file paths via CLI to an existing (or to a new one) instance
  • Picard#2137: Supported commands (like QUIT or SHOW) can be passed via CLI to an existing instance

Picard remote commands enhancements

  • Picard#2141: REMOVE_EMPTY & REMOVE_UNCLUSTERED commands added
  • Picard#2142: LOAD command, extending the positional arguments’ functionality, added
  • Picard#2143: FROM_FILE command, executing a command pipeline from a given file, added
  • Picard#2144: CLEAR_LOGS command added
  • Picard#2145: Fixed errors with the FROM_FILE command
  • Picard#2146: WRITE_LOGS command, allowing to save Picard logs into a file, added

Code refactoring

  • Picard#2080: Code explicitly marked as deprecated got removed, my initial commit to get to know the Picard’s codebase and workflow
  • Picard#2127: Minor patch, unparsed args are now ignored as they were not used anywhere
  • Picard#2139: Refactored the whole process of passing arguments to Picard, replaced ‘%’-formatted strings with f-strings, more than one arguments can be passed correctly to a command

Other

What have I learnt during GSoC 2022

  • How to work with other people on GitHub
  • How to improve my git experience (e.g. hooks)
  • How one can handle inter-process communication, basically I have researched:
    • pipes
    • named pipes
    • sockets
    • dbus
  • How to use Windows API with Python
  • Differences between Windows and Unix pipes
  • \0 is the only character that is prohibited on both Windows & Unix in path names
  • /tmp is not the recommended way to store non-persistent app data on *nix
  • os._exit might be useful when pythonic threads get broken
  • Importing a tuple in Python is underrated. git diff gets cleaner, as one sees only the additions

Some personal thoughts

  • Python is a really decent language that helps with starting one’s programming journey but the deeper I went, the more annoyances I have encountered (that is why I ended up starting to work as a C++ dev)
  • Ultra-safety is a double-edged sword: good luck terminating Pythonic futures/threads with file operations
  • CI/CD and testing in general is as important as decent codebase
  • If one can plan their time well, flexible work hours make their work both more effective and more enjoyable
  • Python sometimes change for worse or breaks the code without any reason (e.g. they have switched from using a mode into w on pipes, ref: LINK)
  • I will not start any new personal project in Python (especially one using multi-threading, multiple processes etc.), unless forced to do so. Nu for scripting, filling the niche & exploring the functional programming, some statically-typed languages for bigger projects, games, research, etc.
  • Impostor syndrome is just an another excuse to procrastinate. Do not be scared to learn & do new things but also ask smart questions. Everyone makes mistakes but if you made it to this org, you are a good fit and have enough qualifications

Special thanks

The whole MetaBrainz community is awesome and I am glad I have become a part of it, but I would like to express my special gratitude to the people I have directly worked with in any way 🙂 (alphabetical order by github username)

Picard 2.8.3 released

Picard 2.8.3 is a maintenance release for the recently released Picard 2.8 which fixes a potential crash in the album search dialog and provides updated translations.

The latest release is available for download on the Picard download page.

The detailed changes for this maintenance release are below. For an overview of the new features since Picard 2.7 please see our detailed release announcement for Picard 2.8 and the changes in Picard 2.8.1 and Picard 2.8.2.

Thanks a lot to everyone who gave feedback and reported issues.

Continue reading “Picard 2.8.3 released”

Picard 2.8.2 released

Picard 2.8.2 is a maintenance release for the recently released Picard 2.8 with fixes for reported issues and updated translations.

The latest release is available for download on the Picard download page.

The detailed changes for this maintenance release are below. For an overview of the new features since Picard 2.7 please see our detailed release announcement for Picard 2.8 and the changes in Picard 2.8.1.

Thanks a lot to everyone who gave feedback and reported issues.

Continue reading “Picard 2.8.2 released”

Picard 2.8.1 released

Picard 2.8.1 is a maintenance release for the recently release Picard 2.8 with fixes for reported issues and updated translations.

The latest release is available for download on the Picard download page.

The detailed changes for this maintenance release are below. For an overview of the new features since Picard 2.7 please see our detailed release announcement for Picard 2.8.

Thanks a lot to everyone who gave feedback and reported issues.

Continue reading “Picard 2.8.1 released”

Picard 2.8 released

The Picard team is happy to announce that the final version 2.8 of MusicBrainz Picard is now available for download. MusicBrainz Picard is the official tag editor for the MusicBrainz database and helps you get your music collection sorted and cleaned up with the latest data from MusicBrainz.

This release brings many changes, including long requested features like Windows long path support and advanced relationships for huge box sets. See below for the highlights.

Continue reading “Picard 2.8 released”

Picard 2.8 Release Candidate 2

We have decided to put out another release candidate Picard 2.8.0rc2 for the upcoming Picard 2.8. We got some valuable feedback and fixed some new bugs as well as some older ones that just got detected while testing the first release candidate. Thanks a lot to everyone who reported those issues.

This is a pre-release we put out for wider testing and to gather feedback on the changes before the final 2.8 release. Please report any issue through our bug tracker and give us feedback on this beta release on the Community Forums.

Continue reading “Picard 2.8 Release Candidate 2”

Picard 2.8 Release Candidate

The Picard team is happy to announce the availability of the first release candidate for the upcoming Picard 2.8. This is a pre-release we put out for wider testing and to gather feedback on the changes before the final 2.8 release.

Please report any issue through our bug tracker and give us feedback on this beta release on the Community Forums.

Thanks a lot to everybody who contributed to this release with code, translations, bug reports and general feedback. This release contains code contributions by Philipp Wolfer, Bob Swift, Laurent Monin, jesus2099, Adam James, cybersphinx and Aerozol.

Continue reading “Picard 2.8 Release Candidate”

Picard 2.7.3 fixes macOS packages

Picard 2.7.3 fixes a packaging regression for macOS, which caused the app to be reported as damaged when trying to launch it. This affected especially users of macOS 10.13, see PICARD-2395 for details.

There are no other changes in this release. If you are running Picard on a different operating system or if you are using macOS but could start Picard without an error message than you don’t need to upgrade.

The latest release is available for download on the Picard download page.

Picard 2.7.2 released

Picard 2.7.2 is a maintenance release for the recently release Picard 2.7, with fixes for reported issues and updated translations, but also a few small improvements.

The latest release is available for download on the Picard download page.

The detailed changes for this maintenance release are below. For an overview of the new features since Picard 2.6 please see our detailed release announcement for Picard 2.7 and for Picard 2.7.1.

This release contains code contributions by rdswift, zas and outsidecontext. Thanks a lot to the translators and everyone who gave feedback and reported issues.

Continue reading “Picard 2.7.2 released”

MusicBrainz App 2021 Updates

Greetings, Everyone!

2021 has been a great year for the MusicBrainz Android App. The app has received updates regularly throughout the year!

Now that we are very close to 10,000+ users on the Playstore, it is evident that the app caters to the needs of a number of users, which is wonderful!

We have plans to introduce new features, involving those of ListenBrainz and CritiqueBrainz in the app. We are confident that the app serves its purpose of introducing everyone to the MetaBrainz world very soundly.

The app now features both a light and dark mode for the users!

Notable feature updates made this year can be found at https://blog.metabrainz.org/2021/07/30/musicbrainz-app/

During the end of the year, we have made some remarkable technical updates to the codebase by introducing Fastlane to the app. This eases the process for the developers and allows us to make a release with the click of a button. This means now we can have a production release every month, day, or hour.

Although going strong and steady, the MusicBrainz developers would love more contributors to join in and share their knowledge with us, while we dive deep into the world of music.

Play Store: MusicBrainz – Apps on Google Play

F-Droid: MusicBrainz | F-Droid – Free and Open Source Android App Repository

Github: metabrainz/musicbrainz-android

Thank you!