Funkwhale, account deletion
yay, account deletion is now fully supported, and starting in #Funkwhale 0.20, users will be able to request deletion without admin intervention!
This is broadcasted over federation, and we also keep a local copy of the username to ensure new users cannot signup with this username.
She helped designing new features, spin up our collective, maintaining our blog, ensuring our community is welcoming and safe, and plenty other things.
If you value the work we're doing with Funkwhale, please, please, consider subscribing to her Patreon. Any amount helps!
Thank you ❤️
Funkwhale, smart search [long post]
One day, I should really document this, because it's one of the lesser known feature in #Funkwhale that I'm really proud of, and can be really useful sometimes, when you're an admin.
So, what do I call smart search?
It's search syntax/UI borrowed from GitHub (see https://help.github.com/en/articles/searching-issues-and-pull-requests#search-by-mention) that let you apply some search filters directly in the search field.
For instance, on Mastodon issues, you can input "is:open is:issue author:EliotBerriot docker" to list all the open issues I created that contain the word "docker" (https://github.com/tootsuite/mastodon/issues?utf8=%E2%9C%93&q=is%3Aopen+is%3Aissue+author%3AEliotBerriot+docker)
To some extent, you can do the same in various places, in Funkwhale's admin. Take the page that list reports, for example.
- "resolved:no" will list all unresolved reports.
- "target:track" will list all reports that are linked to track objects
- "target:track:42" will list all reports linked to the track with ID 42
- "category:takedown_request" will list reports with the "Takedown request" category
- "submitter:user1" will list all reports submitted by local user "user1"
- "assigned_to:moderator1" will list all reports assigned to moderator1
As you can see, filtering on specific fields is done with <fieldname>:<filtervalue>.
If you input free text, like "hello", then it's a text search. For reports, it will filter reports where the content contains the world "hello". For artists, it will search in the artist name, etc.
And you can combine all this!
- List all unresolved reports assigned to moderator1: "assigned_to:moderator1 resolved:no"
- List all resolved takedown requests submitted by user1: "category:takedown_request resolved:yes submitter:user1"
- List all reports linked to libraries, that contain the world "copyright": "target:library copyright"
This is definitely a feature intended for power users, people who are using these interfaces a lot, and may have really specific needs that are not easy to cover in a UI that works for everyone.
A typical use case? Let's say you want to delete all public libraries that contain a specific artist work. Doing it one by hand would be slow and error prone.
So instead, you go to /manage/library/libraries, fill in "artist_id:42 privacy_level:everyone" in the search bar, use the batch delete feature and boom, you're done!
I've included a small video to show you how it actually works on the report page, and how it syncs with other filters next to the search bar.
Funkwhale, API, rate-limiting
So, looks like we're going to have configurable API rate-limiting in the 0.20 release.
https://dev.funkwhale.audio/funkwhale/funkwhale/merge_requests/877 (the MR is huge but half of it is documentation and tests).
Even if it's not perfected and relies on IP address for anonymous requests (which can be bypassed if you send requests from a pool of different IPs), I have to say, it is a relief to know pod owners will benefit from this additional protection.
It will make it harder for an individual to abuse (willingly or by mistake) a #Funkwhale server ressources, e.g by generating spam accounts or reports, brute force credentials or simply exhaust server resources by sending lots of requests.
Attached video shows what happens in the UI when you reach the limit.
Funkwhale CLI, documentation
Just took a few hours today to document installation and usage of #Funkwhale CLI, a small Python software that can interact with any Funkwhale server and help you automate stuff such as:
- uploading content
- downloading content
- retrieve artists, albums and tracks
- manage your libraries, uploads, favorites and more!
The documentation preview can be found at http://funkwhale.pages.funkwhale.audio/-/funkwhale/-/jobs/27329/artifacts/docs-review/cli/index.html
I've also included an examples page at http://funkwhale.pages.funkwhale.audio/-/funkwhale/-/jobs/27329/artifacts/docs-review/cli/examples.html#mirror-an-artist-discography-locally to showcase some interesting uses.
And this is the corresponding Merge Request, if you want to leave some comments:
Funkwhale, install script 🎉
So, now that the documentation is live (https://docs.funkwhale.audio/installation/index.html#quick-install), I can elaborate a bit more.
One legit critic we often get is that #Funkwhale is hard to configure, install and maintain.
Over the past two months, I've been working on two shell scripts to help with that, and they are now live and ready for use on Debian and Ubuntu servers.
sudo sh -c "$(curl -sSL https://get.funkwhale.audio/)" will get you a running Funkwhale instance in minutes, and take care of everything, including installing and configure Nginx, PostgreSQL, Redis, SystemD, Python and it's dependencies, etc.
sh -c "$(curl -sSL https://get.funkwhale.audio/upgrade.sh)" will upgrade an instance installed with the previous script to the latest version.
So, if you tried deploying your own Funkwhale pod but gave up because it was too hard, you may want to try again with this new method!
I'm looking for a few beta testers for the new donation/membership system for #Funkwhale. If you have a credit card, two minutes and 1€ to spare, would you mind trying https://funkwhale.audio/support-us#donate and confirm everything worked smoothly?
Also, if you want to become an member of the Funkwhale association, we could also use some testing of our signing up process at https://funkwhale.audio/support-us#membership
You'll need to pay a minimum fee of 1€ for this one and fill in the membership form, so it's a bit more involved .
Let me now how it works for you, thanks ❤️
Hey, if you have a debian or ubuntu server and are willing to help the project and also have a Funkwhale instance, would you mind having a look at https://dev.funkwhale.audio/funkwhale/ansible/merge_requests/1 ?
It's a single shell script that should give you a fully functional #funkwhale instance within a few minutes.
I've personally tested it on Debian 9 and 10, but the more tests and feedback we get, the more robust and useful it will be!
Funkwhale, dev, tags
So, here we go, the first MR related to the tags UI that will ship in #funkwhale 0.20 🎉
- Adding tags, using the existing "Edit" feature, from artists, albums and tracks pages
- Display tags on artsts, albums and tracks pages
- Added support for filtering by one or more tags on Artists and Albums browse
- A brand new "Tag" page, where you can see artists, albums and tracks matching a given tag
As always after working for weeks on the backend, switching to the UI is a pleasure!
Funkwhale, security, review wanted
If you have some knowledge in web security and Content Security Policy, would you mind having a look at https://dev.funkwhale.audio/funkwhale/funkwhale/merge_requests/826 ?
This is an attempt to harden the security of the web UI via a CSP (and some additional HTTP headers) and to reduce the attack surface in case of exploits.
Quite happy with the current state of the CLI (https://dev.funkwhale.audio/funkwhale/cli)
Here is a one liner to download all your favorite tracks from your Funkwhale instance to your local ~/Music directory
funkwhale tracks ls --filter "favorites=true" --ids --limit 0 | xargs funkwhale tracks download -d ~/Music
The part before the pipe grabs all the ids of tracks you favorited, while the the second part download all the the tracks found in the first part :)
There will be an official announcement once it's completely done and merged, but basically, the implementation of allow-listing in #Funkwhale is ready!
It means that you can now disable federation with unknown nodes by default, and reenable it for domains you actually trust, as shown on the video below.
If you want to review this, or try the live demo, everything you need to know is here: https://dev.funkwhale.audio/funkwhale/funkwhale/merge_requests/800
This is the first of the three big features that will be delivered in the 0.20 release, the other two being:
- Easier Discovery of music via genres/tags
- Reports (on users, tracks, artists, etc.)
Retribute, the forum
Discussing on fedi is nice. But sometimes we need more than that.
That's why we're launching a dedicated Loomio group to discuss about it, structure our discussions, leverage advanced decision tools and, hopefully, move to the next steps together!
And we're doing this on top of #Funkwhale's existing infrastructure ❤️
You can of course continue to follow me, read my blog or check the #Retribute hashtag from time to time, but joining and watching this group will be easier:
See you there!
Earlier this week I was working on allow-listing and thinking about implementing a basic Message Rewrite Facility (as Pleroma does), do make the implementation of advanced #moderation tools easier in #Funkwhale.
The initial implementation is done, but having some input/reviews would definitely help!
If you're interested, have a look at https://dev.funkwhale.audio/funkwhale/funkwhale/merge_requests/789/
(it contains link to the proposed documentation as well)
Retribute, organization poll
I'm starting to think about our community organization for Retribute. Doing it early is important.
It means we can use Funkwhale GitLab, Loomio server, pads, etc. And benefit from the existing community structure (non-profit, CoC, moderation, etc.).
It would spare us _months_ of work.
What's your opinion on building Retribute under the Funkwhale umbrella?
Retribute, PeerTube support
It will use your viewing history to extract donation links from channels description and support fields, as well as channel owners bio.
#Funkwhale support should be good too now (but your instance needs to be running on develop for better performance though)
Today, I'm getting back to work on #Funkwhale dev after 18 days.
It's been a while :D
Retribute, Initial Proof of Concept
You may remember I talked about automating the act of supporting creators on the fediverse, and elsewhere, a while ago (https://eliotberriot.com/blog/2018/05/11/funkwhale-content-monetization-trust/)
The video below features a basic proof of concept that uses #Mastodon profiles and favorites to suggest you creators to tip.
The social network of the future: No ads, no corporate surveillance, ethical design, and decentralization! Own your data with Mastodon!