# Picard 3 alpha ready for testing

**URL:** https://community.metabrainz.org/t/picard-3-alpha-ready-for-testing/814124
**Category:** MusicBrainz Picard
**Tags:** pre-release, alpha, picard
**Created:** [January 27, 2026, 5:53pm UTC](https://community.metabrainz.org/t/picard-3-alpha-ready-for-testing/814124 "2026-01-27T17:53:59Z")
**Posts on this page:** 20
**Page:** 1

<div class="post-metadata">

### Author: ![outsidecontext](https://community.metabrainz.org/user_avatar/community.metabrainz.org/outsidecontext/32/90_2.png) [@outsidecontext](https://community.metabrainz.org/u/outsidecontext)
#### Post date: [January 27, 2026, 5:53pm UTC](https://community.metabrainz.org/t/picard-3-alpha-ready-for-testing/814124/1 "2026-01-27T17:53:59Z")

</div>

We finally did it, here is a pre-release for MusciBrainz Picard 3. We are looking for feedback, please see our blog post:

> **[Picard 3 Alpha Release – MetaBrainz Blog](https://blog.metabrainz.org/2026/01/27/picard-3-alpha-release/)**

---

<div class="post-metadata">

### Author: ![outsidecontext](https://community.metabrainz.org/user_avatar/community.metabrainz.org/outsidecontext/32/90_2.png) [@outsidecontext](https://community.metabrainz.org/u/outsidecontext)
#### Post date: [January 27, 2026, 9:42pm UTC](https://community.metabrainz.org/t/picard-3-alpha-ready-for-testing/814124/2 "2026-01-27T21:42:27Z")

</div>



---

<div class="post-metadata">

### Author: ![chaban](https://community.metabrainz.org/user_avatar/community.metabrainz.org/chaban/32/111349_2.png) [@chaban](https://community.metabrainz.org/u/chaban)
#### Post date: [January 28, 2026, 3:42pm UTC](https://community.metabrainz.org/t/picard-3-alpha-ready-for-testing/814124/3 "2026-01-28T15:42:32Z")

</div>

FYI, some of the download links don’t work in Chrome presumably because they lack HTTPS:

> **[Protecting users from insecure downloads in Google Chrome](https://blog.chromium.org/2020/02/protecting-users-from-insecure.html)**
>
> Update (April 6, 2020): Chrome was originally scheduled to start user-visible warnings on mixed downloads in Chrome 82. These warnings, as w...

---

<div class="post-metadata">

### Author: ![IvanDobsky](https://community.metabrainz.org/user_avatar/community.metabrainz.org/ivandobsky/32/11785_2.png) [@IvanDobsky](https://community.metabrainz.org/u/IvanDobsky)
#### Post date: [January 28, 2026, 4:29pm UTC](https://community.metabrainz.org/t/picard-3-alpha-ready-for-testing/814124/4 "2026-01-28T16:29:22Z")

</div>

With respect to testing - is it possible to run this as a standalone version with its own ini files avoiding disruption to my main Picard? Side by side testing style?

Some interesting looking changes.

---

<div class="post-metadata">

### Author: ![outsidecontext](https://community.metabrainz.org/user_avatar/community.metabrainz.org/outsidecontext/32/90_2.png) [@outsidecontext](https://community.metabrainz.org/u/outsidecontext)
#### Post date: [January 28, 2026, 4:38pm UTC](https://community.metabrainz.org/t/picard-3-alpha-ready-for-testing/814124/5 "2026-01-28T16:38:01Z")

</div>

> [@chaban](#):
>
> FYI, some of the download links don’t work in Chrome presumably because they lack HTTPS:

Thanks for noticing, fixed.

> [@IvanDobsky](#):
>
> With respect to testing - is it possible to run this as a standalone version with its own ini files avoiding disruption to my main Picard? Side by side testing style?

You can run it with the `--config` or `-c` parameter:

```auto
picard -c "path/to/picard.ini"

```

---

<div class="post-metadata">

### Author: ![outsidecontext](https://community.metabrainz.org/user_avatar/community.metabrainz.org/outsidecontext/32/90_2.png) [@outsidecontext](https://community.metabrainz.org/u/outsidecontext)
#### Post date: [February 10, 2026, 1:48pm UTC](https://community.metabrainz.org/t/picard-3-alpha-ready-for-testing/814124/6 "2026-02-10T13:48:07Z")

</div>

We have released a second alpha version of Picard with several fixes:

> **[Picard 3 alpha 2 released – MetaBrainz Blog](https://blog.metabrainz.org/2026/02/10/picard-3-alpha-2-released/)**

Thanks for all the feedback and issue reports.

---

<div class="post-metadata">

### Author: ![IvanDobsky](https://community.metabrainz.org/user_avatar/community.metabrainz.org/ivandobsky/32/11785_2.png) [@IvanDobsky](https://community.metabrainz.org/u/IvanDobsky)
#### Post date: [February 10, 2026, 3:18pm UTC](https://community.metabrainz.org/t/picard-3-alpha-ready-for-testing/814124/7 "2026-02-10T15:18:13Z")

</div>

Downloaded standalone Windows version to a Win10 PC. _MusicBrainz-Picard-3.0.0a2.exe_  
Ran okay as is. Started without issues.

I then deleted the folders created to make it “fresh” again.

Copied my current picard.ini file over and used:  
`picard -c "path\to\picard.ini"`

Got crash 💥 :

```auto
Traceback (most recent call last):
  File "picard\config.py", line 477, in run_upgrade_hooks
  File "picard\config_upgrade.py", line 621, in upgrade_to_v3_0_0dev10
AttributeError: 'ImageFormat' object has no attribute 'lower'

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "tagger.py", line 12, in <module>
  File "picard\tagger.py", line 1771, in main
  File "picard\tagger.py", line 255, in __init__
  File "picard\config_upgrade.py", line 717, in upgrade_config
  File "picard\config.py", line 479, in run_upgrade_hooks
picard.config.ConfigUpgradeError: Error during config upgrade from version 3.0.0.dev9 to 3.0.0.dev10 using upgrade_to_v3_0_0dev10()

```

Should I be stripping things out of my picard.ini? Do you want a copy buzzed to you via MB email? (I won’t post it here as it has auth tokens and other stuff in it) _(Have emailed it to you @outsidecontext and it looks like it should survive the mail system as text unmangled as I see the same my end as I sent)_

My picard.ini is old and messy and just been around for years through updates. But looking at that error I assume “ImageFormat” is a new setting?

As a test I then made a blank picard.ini and ran stand alone again. This time no crash and a selection of new settings added to the ini file.

But here is odd observation… the version numbers written at the top of picard.ini don’t make sense:

Successful run starting from an empty picard.ini file produces this:

```auto
[application]
version=3.0.0.alpha2

```

But when I ran with my original picard.ini, the crash had changed my original from:

```auto
[application]
version=2.13.3.final0

```

to:

```auto
[application]
version=3.0.0.dev9

```

---

<div class="post-metadata">

### Author: ![rdswift](https://community.metabrainz.org/user_avatar/community.metabrainz.org/rdswift/32/7032_2.png) [@rdswift](https://community.metabrainz.org/u/rdswift)
#### Post date: [February 10, 2026, 3:50pm UTC](https://community.metabrainz.org/t/picard-3-alpha-ready-for-testing/814124/8 "2026-02-10T15:50:15Z")

</div>

I believe this is a bug because it shouldn’t crash. Looks like it could be from a change I made to the way the target image format (for converting coverart files) is stored.

**EDIT:** I took the liberty of creating a ticket for this. [https://tickets.metabrainz.org/browse/PICARD-3192](https://tickets.metabrainz.org/browse/PICARD-3192)

---

<div class="post-metadata">

### Author: ![outsidecontext](https://community.metabrainz.org/user_avatar/community.metabrainz.org/outsidecontext/32/90_2.png) [@outsidecontext](https://community.metabrainz.org/u/outsidecontext)
#### Post date: [February 10, 2026, 5:29pm UTC](https://community.metabrainz.org/t/picard-3-alpha-ready-for-testing/814124/9 "2026-02-10T17:29:45Z")

</div>

> [@IvanDobsky](#):
>
> (I won’t post it here as it has auth tokens and other stuff in it) _(Have emailed it to you @outsidecontext and it looks like it should survive the mail system as text unmangled as I see the same my end as I sent)_

I didn’t receive it unfortunately. But I think @rdswift already identified the issue and we are discussing the fix. We should have enough information to create a test case.

---

<div class="post-metadata">

### Author: ![IvanDobsky](https://community.metabrainz.org/user_avatar/community.metabrainz.org/ivandobsky/32/11785_2.png) [@IvanDobsky](https://community.metabrainz.org/u/IvanDobsky)
#### Post date: [February 10, 2026, 5:40pm UTC](https://community.metabrainz.org/t/picard-3-alpha-ready-for-testing/814124/10 "2026-02-10T17:40:08Z")

</div>

Odd. I got my copy of the email from the MB emailing thing.

Let me know if needed and I’ll find an alternate way of doing it using one of them log paste sites or WeTransfer or magic pixies.

---

<div class="post-metadata">

### Author: ![outsidecontext](https://community.metabrainz.org/user_avatar/community.metabrainz.org/outsidecontext/32/90_2.png) [@outsidecontext](https://community.metabrainz.org/u/outsidecontext)
#### Post date: [February 10, 2026, 5:53pm UTC](https://community.metabrainz.org/t/picard-3-alpha-ready-for-testing/814124/11 "2026-02-10T17:53:07Z")

</div>

Oh, I found it now. Sorry, I was both looking at the wrong inbox and looking for a mail with attachment 😃

@rdswift it’s actually interesting, the config does not have the keys for `cover_tags_convert_to_format` or `cover_file_convert_to_format` (meaning it was never saved there, seeting kept as default). But as your fix shows the issue is independent of that.

---

<div class="post-metadata">

### Author: ![IvanDobsky](https://community.metabrainz.org/user_avatar/community.metabrainz.org/ivandobsky/32/11785_2.png) [@IvanDobsky](https://community.metabrainz.org/u/IvanDobsky)
#### Post date: [February 10, 2026, 5:54pm UTC](https://community.metabrainz.org/t/picard-3-alpha-ready-for-testing/814124/12 "2026-02-10T17:54:55Z")

</div>

I thought a messy old picard.ini would have something unexpected for you 😁

To be clear, the ini I sent is a copy direct from Picard2. Before Picard3 changes it. The crash happens when I tried to get Picard3 standalone to use this ini file using `picard -c "path\to\picard.ini"`.

Running that standalone does cause a big re-write of that ini file, but not to a state that will allow Picard3 to start unless I remove the ini file completely.

---

<div class="post-metadata">

### Author: ![outsidecontext](https://community.metabrainz.org/user_avatar/community.metabrainz.org/outsidecontext/32/90_2.png) [@outsidecontext](https://community.metabrainz.org/u/outsidecontext)
#### Post date: [February 10, 2026, 7:07pm UTC](https://community.metabrainz.org/t/picard-3-alpha-ready-for-testing/814124/13 "2026-02-10T19:07:58Z")

</div>

Right, it will currently always crash on such an upgrade. There are two workarounds that should work:

1. After it crashed the first time, set the version inside the .ini file to `version=3.0.0.dev10`. The config upgrade to this version is crashing, but the changes it does are not needed when upgrading directly from version 2.
2. First install the alpha 1. This version can perform the update properly. Once it has done so you can run alpha 2.

---

<div class="post-metadata">

### Author: ![IvanDobsky](https://community.metabrainz.org/user_avatar/community.metabrainz.org/ivandobsky/32/11785_2.png) [@IvanDobsky](https://community.metabrainz.org/u/IvanDobsky)
#### Post date: [February 10, 2026, 7:25pm UTC](https://community.metabrainz.org/t/picard-3-alpha-ready-for-testing/814124/14 "2026-02-10T19:25:44Z")

</div>

Confirmation to say I did Option 1 and no crash. Quick glance and I see settings I recognise. No other breakages yet.

~~Ah - spoke too soon. Dragged album in and it asks to authorise again… then realise I didn’t notice the error when it attempted to authorise first time. Paying attention this time I see. `Invalid "state" parameter.` in the browser.~~

Updated to add note to self. Don’t run Picard2 and Picard3 at the same time otherwise you get the above error. When I realised I had actually left both running I closed both, opened Picard3 on its own, and it has now logged in fine.

Will look closer another day and see what I can see and find out what else I can break.

---

<div class="post-metadata">

### Author: ![mmuffins](https://community.metabrainz.org/letter_avatar_proxy/v4/letter/m/a6a055/32.png) [@mmuffins](https://community.metabrainz.org/u/mmuffins)
#### Post date: [February 15, 2026, 8:19pm UTC](https://community.metabrainz.org/t/picard-3-alpha-ready-for-testing/814124/15 "2026-02-15T20:19:42Z")

</div>

I have [a small plugin](https://github.com/mmuffins/artist-resolver-musicbrainz-picard-plugin) that I wrote for my own convenience. It expands the artists of a track, e.g. to add individual members of a band, or real people behind fictional characters. I implemented rate limiting and a local cache and request queue to ensure that the musicbrainz servers are not queried multiple times if several tracks have the same artist. To make everything (somewhat) thread-safe I implemented the queue based on LockableObject in picard.util.

Today I had a look at how easy it will be to migrate the plugin to new api version, but noticed that the lockableobject class [has been dropped](https://github.com/metabrainz/picard/pull/2504/changes/f4c1f958d9d16c7e4bbac25ab04edcaeb99b57e3) from the master branch. Is it planned to have a replacement for this class, or a similar mechanism that should be used in plugins now?

If there is no direct replacement, is there guidance for the recommended pattern for this in the new API:

- shared in-flight request queue
- local cache
- deduplicating requests for the same artist across multiple tracks
- keeping threaded access around async web callbacks

I could probably have a look at standard Python locks but wanted to check what the recommendation is as I assumed that using lockable objects was the preferred way of doing this since it was provided in the picard library.

---

<div class="post-metadata">

### Author: ![outsidecontext](https://community.metabrainz.org/user_avatar/community.metabrainz.org/outsidecontext/32/90_2.png) [@outsidecontext](https://community.metabrainz.org/u/outsidecontext)
#### Post date: [February 16, 2026, 11:06am UTC](https://community.metabrainz.org/t/picard-3-alpha-ready-for-testing/814124/16 "2026-02-16T11:06:47Z")

</div>

The `LockableObject` got removed because it was not actually used. There were some classes inherting from it, but without actually using the lock functionality. Generally you could use any locking mechanism provided by Qt or Python, with a certain preference to the Qt. Picard itself is primarily using `QMutex` and `ReadWriteLockContext`.

What I would recommend for your use case if you need a read/write lock is using the `picard.util.ReadWriteLockContext` instead directly. This was also used by the `LockableObject` class. The `ReadWriteLockContext` is wrapping a `QReadWriteLock` to allow it being used with Python’s `with`:

```python
class MyClass:
    def __init__ (self):
        self._lock = ReadWriteLockContext()

    def get_some_data(self):
        with self._lock.lock_for_read():
            ...

    def write_some_data(self):
        with self._lock.lock_for_write():
            ...

```

---

<div class="post-metadata">

### Author: ![mmuffins](https://community.metabrainz.org/letter_avatar_proxy/v4/letter/m/a6a055/32.png) [@mmuffins](https://community.metabrainz.org/u/mmuffins)
#### Post date: [February 16, 2026, 8:07pm UTC](https://community.metabrainz.org/t/picard-3-alpha-ready-for-testing/814124/17 "2026-02-16T20:07:03Z")

</div>

Thanks for the clarification, appreciate it!

---

<div class="post-metadata">

### Author: ![rdswift](https://community.metabrainz.org/user_avatar/community.metabrainz.org/rdswift/32/7032_2.png) [@rdswift](https://community.metabrainz.org/u/rdswift)
#### Post date: [February 25, 2026, 7:05pm UTC](https://community.metabrainz.org/t/picard-3-alpha-ready-for-testing/814124/18 "2026-02-25T19:05:13Z")

</div>

A third alpha version of Picard has been released with several fixes:

> **[Picard 3 alpha 3 released – MetaBrainz Blog](https://blog.metabrainz.org/2026/02/25/picard-3-alpha-3-released/)**

Once again, thanks to all of you for the feedback and issue reports.

---

<div class="post-metadata">

### Author: ![outsidecontext](https://community.metabrainz.org/user_avatar/community.metabrainz.org/outsidecontext/32/90_2.png) [@outsidecontext](https://community.metabrainz.org/u/outsidecontext)
#### Post date: [March 20, 2026, 5:18pm UTC](https://community.metabrainz.org/t/picard-3-alpha-ready-for-testing/814124/19 "2026-03-20T17:18:02Z")

</div>

And another round of fixes and polishing, with a few more small features.

> **[Picard 3 alpha 4 released – MetaBrainz Blog](https://blog.metabrainz.org/2026/03/20/picard-3-alpha-4-released/)**

With this release we also moved the [Picard User Guide](https://picard-docs.musicbrainz.org/en/latest/) from GitHub Pages to ReadTheDocs. And thanks to the awesome work of @mfmeulenbelt the user guide is now translated into Dutch.

---

<div class="post-metadata">

### Author: ![karpuzikov](https://community.metabrainz.org/user_avatar/community.metabrainz.org/karpuzikov/32/41182_2.png) [@karpuzikov](https://community.metabrainz.org/u/karpuzikov)
#### Post date: [June 8, 2026, 10:21pm UTC](https://community.metabrainz.org/t/picard-3-alpha-ready-for-testing/814124/20 "2026-06-08T22:21:23Z")

</div>

is there a way to use api v1 and v2 plugins in this version?

[Next page](https://community.metabrainz.org/t/picard-3-alpha-ready-for-testing/814124.md?page=2)
