Development/Summer of Code/2021/Picard: Difference between revisions

From MusicBrainz Wiki
Jump to navigationJump to search
(Added "Allow Picard to be run as single instance application" idea)
(→‎Ideas: Remove "Picard concurrency re-write")
Line 2: Line 2:


==Ideas==
==Ideas==

=== Picard concurrency re-write ===

Proposed Mentors: ''samj1912'' / ''zas''<br>
Languages/skills: Python, PyQt5<br>
Difficulty: Hard<br>

Currently Picard uses threads to offload I/O tasks. Since threading is notoriously detrimental in Python at times, due to its GIL, we were looking for someone to re-write the Picard concurrency code and switch it to a multi-processing model or make use of the new py3.6 asyncio features. This will allow us to improve and cater to a much requested feature of allowing Picard to mass-tag files, something Picard is unable to do so currently without staying responsive.

For more info see:
[https://tickets.metabrainz.org/browse/PICARD-975 PICARD-975]



=== Integrate the AcousticBrainz client into Picard ===
=== Integrate the AcousticBrainz client into Picard ===

Revision as of 14:23, 18 February 2021

MusicBrainz Picard

Ideas

Integrate the AcousticBrainz client into Picard

Proposed Mentors: zas / outsidecontext
Languages/skills: Python, C/C++, language bindings, software build experience

The AcousticBrainz project has a separate client application for analyzing and submitting the analyzed information to the AB server. We believe that our community would likely help in submitting tracks to AcousticBrainz while also submitting tracks to AcoustID, so adding this feature to Picard makes sense. This would also allow us to deprecate the standalone AB analyzer software.

This project would entail the following components:

  1. Add the necessary UI elements to allow users to use the AB analyzer.
  2. Add the necessary preferences/options needed to configure the AB analyzer.
  3. Write necessary layer to call the underlying AB analyzer binary.
  4. Possible migrate the AB analyzer binary to be part of the Picard build process.

Related ticket Add AcousticBrainz analyzer features


Allow Picard to be run as single instance application

Proposed Mentors: zas / outsidecontext
Languages/skills: Python

Currently launching Picard always opens a separate instance of Picard. This has the implication that opening a file with Picard on Windows or Linux will always launch a new Picard with only this file loaded. It would be preferable to allow opening the file in an existing instance.

In addition such a setup would allow us to better handle crashes of the main Picard process.

This project would entail the following components:

  1. Research for the best cross platform solution to handle single instance applications
  2. Implement a launcher, that opens a new Picard process if none exists.
  3. If a Picard process is already running, the launcher would pass all arguments to the existing process and raise the application window
  4. Handle crashes of the launched main process and show relevant crash details to the user
  5. Test the implementation on Windows and Linux.

Related ticket Option to open new command line requests in an existing instance, Display and log crash details