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

From MusicBrainz Wiki
Jump to navigationJump to search
(Created page with "==MusicBrainz Picard== ==Ideas== === Qt5/Py3 Port === Proposed Mentors: ''zas''/''bitmap''<br> Languages/skills: Python, PyQt5<br> Picard is going to be receiving a complet...")
 
 
(4 intermediate revisions by the same user not shown)
Line 2: Line 2:


==Ideas==
==Ideas==
=== Qt5/Py3 Port ===

Proposed Mentors: ''zas''/''bitmap''<br>
Languages/skills: Python, PyQt5<br>

Picard is going to be receiving a complete make-over code/feature/UI wise for v2.0.
A part of the v2.0 plans is porting the existing code to PyQt5/Py3 from PyQt4/py2 to allow for future support and better encoding compatibility along with new features of Qt5(such as High DPI scaling, better Widget and networking support and better cross-platform compatibility) and along with all the bug fixes that come with PyQt5 which will help cleaning up the code-base for Picard.

For more information see:
[https://tickets.metabrainz.org/browse/PICARD-588 PICARD-588]
[https://tickets.metabrainz.org/browse/PICARD-960 PICARD-960]


=== Picard Plugins API v2 ===
=== Picard Plugins API v2 ===


Proposed Mentors: ''zas''/''bitmap''<br>
Proposed Mentors: ''samj1912'' / ''zas''<br>
Languages/skills: Python, PyQt5, Flask<br>
Languages/skills: Python, PyQt5, Flask<br>


Picard 2.0 is going to be PyQt5 based, which means all the existing plugins have to be ported to PyQt5/Py3. Since Picard v1 plugins will be incompatible with v2 and vice versa, we need to implement a new v2 end-point for the Picard website. There is also a need of providing a uniform GUI api for plugins to allow quick GUI option settings, i18n support and UI uniformity with the rest of the Picard code. Also, additional metadata headers need to be implemented to allow cross-platform compatibility checks.
Picard 2.0 is going to be PyQt5 based, which means all the existing plugins have to be ported to PyQt5/Py3. Since Picard v1 plugins will be incompatible with v2 and vice versa, it gives us the opportunity to modify the way our plugin system works. There is a need of providing a uniform GUI api for plugins to allow quick GUI option settings, i18n support and UI uniformity with the rest of the Picard code. Also, additional metadata headers need to be implemented to allow cross-platform compatibility checks.


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

=== 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]

Latest revision as of 11:59, 18 January 2018

MusicBrainz Picard

Ideas

Picard Plugins API v2

Proposed Mentors: samj1912 / zas
Languages/skills: Python, PyQt5, Flask

Picard 2.0 is going to be PyQt5 based, which means all the existing plugins have to be ported to PyQt5/Py3. Since Picard v1 plugins will be incompatible with v2 and vice versa, it gives us the opportunity to modify the way our plugin system works. There is a need of providing a uniform GUI api for plugins to allow quick GUI option settings, i18n support and UI uniformity with the rest of the Picard code. Also, additional metadata headers need to be implemented to allow cross-platform compatibility checks.

For more info see: PICARD-977

Picard concurrency re-write

Proposed Mentors: samj1912 / zas
Languages/skills: Python, PyQt5
Difficulty: Hard

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: PICARD-975