Blog post week 2020-19: starting the work on Funkwhale 0.21.1 and 1.0

What has happened since last time?

Squashing bugs in Funkwhale 0.21

With the new features and the player/queue redesign introduced in v0.21, we've introduced new bugs and issues.

As a result, we've started to work on fixing these, and will release a patch release, v0.21.1, probably by the end of the month.

This release will only include bugfixes and fully backward compatible enhancements that can be backported from the incoming 1.0 release.

It will also bring several enhancements that have been requested by the community regarding the import_files command, and in particular:

  • Support updating metadata on existing in-place imported files when performing a scan
  • A new --watch flag to react to filesystem events (file creation, update, removal, move)
  • A --prune flag to easily prune library from dangling metadata after a scan

If you've encountered new bugs in Funkwhale 0.21 that are not yet scheduled for the 0.21.1 milestone, don't hesitate to open new tickets!

Planning Funkwhale 1.0

As already announced during our last community consultation when building the roadmap for Funkwhale 0.21, Funkwhale 0.22 will in fact be 1.0.

Let's take a moment to review the reasons and implications of that.

Longstanding issues and technical debt

The current Funkwhale codebase will be three-years old on June 23, 2020. Over the years, we've introduced a lot of new features, and barely removed any. This means that the amount of existing bugs has grown in the app.

In addition to this, working on new exciting features meant we have postponed some important enhancements that were requested by our community:

  • Our search experience is suboptimal as we don't have a dedicated search page
  • It's not possible to change your email
  • We have several accessibility issues (we'll talk more about this in a dedicated post) that need to be fixed

This list is not exhaustive.

Finally, we've accumulated a fair share of technical debt. For instance, we're still supporting Python 3.5, which was released in 2015, and is not supported anymore by many of our dependencies, leading to a wide range of bugs and unexpected behaviours (as well as some performance or security issues).

Other examples of technical debt that currently exist in the project:

  • We have two authentication schemes in place (JWT for the Web UI and OAuth for third-party apps)
  • Our theming system needs to be reworked to be easier to deal with
  • Some components (library cards, radio cards) don't match the latest improvements in the UI

Here again, the list isn't exhaustive.

Our first stable release

Funkwhale 1.0 will allow us to address these issues and work on the overall stability of the project. By releasing our first stable version (that's what 1.0 means), we're also sending a signal to our community.

When Funkwhale 1.0 is released, it means we consider Funkwhale is mature enough for you to use, and we're committed to keep it that way.

We won't break Funkwhale REST API compatibility in future minor releases (1.1, 1.2, etc.), meaning developers can safely build new clients, apps and integrations on top of it.

However, to get there and ensure Funkwhale 1.0 is as stable and clean as possible, we will have to break compatibility in some places (e.g by removing JWT auth, or Python 3.5 support). As always, we'll document such breaking changes and offer guidance to upgrade.

Finally, the 1.0 release will be an opportunity for us to complete the API documentation, as many endpoints are not currently documented.

Thank you for staying with us, and let's build an awesome and stable 1.0 release!

By @Funkwhale in