- MCP server with stdio transport for local use - Search episodes, transcripts, hosts, and series - 4,511 episodes with metadata and transcripts - Data loader with in-memory JSON storage 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
622 lines
53 KiB
Plaintext
622 lines
53 KiB
Plaintext
Episode: 3808
|
|
Title: HPR3808: Funkwhale A social platform to enjoy and share music
|
|
Source: https://hub.hackerpublicradio.org/ccdn.php?filename=/eps/hpr3808/hpr3808.mp3
|
|
Transcribed: 2025-10-25 05:46:25
|
|
|
|
---
|
|
|
|
This is Hacker Public Radio Episode 3,808 for Wednesday the 8th of March 2023.
|
|
Today's show is entitled, Funkwell a social platform to enjoy and share music.
|
|
It is hosted by Ken Fallon and is about 61 minutes long.
|
|
It carries a clean flag.
|
|
The summary is, Ken interviews Keuron Ainsworth about Funkwell that lets you listen and share music.
|
|
Hi everybody, my name is Ken Fallon and you're listening to another episode of Hacker Public Radio.
|
|
Today we're going to have an interview, a chap that we met at the Fostem, at the Fostem,
|
|
so yes, come over to the HPR booth and that would have a chat.
|
|
So, can you introduce yourself, tell me who you are and where you're from?
|
|
Yes, my name is Keuron Ainsworth, I'm known online as SPARF and I am a technical writer from England
|
|
currently living in Berlin.
|
|
Here in the Irish ancestry there in the background somewhere?
|
|
Yes, Irish ancestry and Welsh ancestry.
|
|
Oh, very good.
|
|
Elves, Elves is strong on this one.
|
|
Yes, very Celtic, a little bit of French in there somewhere as well.
|
|
So, you know, no part of me likes the English part, let's put it that way.
|
|
No, no, no, it's fine, it's fine.
|
|
You had no passport?
|
|
No, no, unfortunately, all too far out to get the European passport,
|
|
that's why I moved here, it was to sort of rejoin myself.
|
|
So, you're in Germany now, so does that mean you can travel anywhere within Schengen?
|
|
Yes, so I have a visa that basically enables me to travel freely in the EU and yes, Schengen.
|
|
And my British passport does still obviously get me anywhere that isn't Europe perfectly fine,
|
|
so yes, but it was important to me to get the sort of visa so that my sort of travel within
|
|
Europe was unrestricted.
|
|
And of course, you can still travel to Ireland without anything
|
|
movement area.
|
|
Yeah, I mean, I think, I don't know about, I actually never looked into traveling to the
|
|
Republic, but certainly on my British passport, of course, I can just get into North and then
|
|
travel down and there's no restrictions.
|
|
Yeah, you don't even need the passport, just like an energy bill or something.
|
|
Yeah, exactly, just weird make-way, you know.
|
|
Yes, I'm back.
|
|
Yes, so we've had a lot of people.
|
|
Okay, so you were, we were talking actually and you followed up with some suggestions,
|
|
we were handed out leaflets for the free culture podcast that we were trying to gather.
|
|
As many shows as possible that were released under the free culture license,
|
|
and we followed, you recommended the VST now.
|
|
Yes, yeah.
|
|
So, a show I listened to a lot, I was a little bit surprised because I sort of,
|
|
I'm friends with a few people from a few other podcasts on your network, such as
|
|
Bugcast and Linux ads and things like that.
|
|
And I listened to BugBSC now a lot and I was like, oh, it's interesting that they aren't
|
|
sort of represented, but then as long as it's a license issue more than anything.
|
|
Yep, and actually due to, I already had pinged them back in September,
|
|
when you were going to post them.
|
|
And I pinged them again since, and it looks like they've agreed to release under a
|
|
Creative Commons license, albeit a non-free one, but something's better than nothing I'm guessing.
|
|
Okay, well, yeah, there we go.
|
|
Some good game with that.
|
|
Yeah, exactly, exactly.
|
|
Yeah, yeah, I did ask, you know, the non-convertial one, like,
|
|
you know, could you not opt-as, you know, but you're really going to be,
|
|
are you really going to make so much money from the commercials, you know?
|
|
Because anybody who's going to steal your stuff is going to steal your stuff.
|
|
And yeah, good luck trying to get my team of crack lawyers from an
|
|
yeah, international, international copy-ride case on onions,
|
|
trying to point that stuff.
|
|
It's very in keeping with BSD, though, isn't it?
|
|
Like, obviously with Linux, the whole thing is, you know, if I released it freely,
|
|
you've got to release it freely, whereas BSD, it's more, I release it freely, do what you like.
|
|
Yeah, I want to do commercial stuff, go for it.
|
|
Yeah, but the BSD license, and I was given this example to the one person
|
|
who didn't know the greater commons license.
|
|
So I'm familiar with the, you know, the BSD licenses and the MIT and the
|
|
PPL. So yeah, well, I would have ranked, like, you've got the public domain stuff,
|
|
is CC zero, and then CC, so CC just greater commons by would be a BSD license, I would have thought.
|
|
So you can do what you want.
|
|
You, there's no requirement in you to, no, we're not preventing you from sharing it.
|
|
We're not preventing you from reusing it.
|
|
We're not preventing you from doing everything.
|
|
The only thing is you have to get credit.
|
|
That's a BSD license, I would have thought.
|
|
Yeah, I could say that.
|
|
Yeah, I'm not, I'm feeling that directly from the creative commons website, so.
|
|
Well, you know, it's, it's whatever, if, you know, they were previously releasing it under no license,
|
|
so all that just was copyright Alan.
|
|
So, you know, anything is, like you say, anything's better than nothing.
|
|
And yeah, it's, it's just nice to be able to get in touch with people.
|
|
It's encouraging that you can just get in touch with them and talk to them.
|
|
And it's great that they did release it.
|
|
Well, great thing is a few people have come back to me,
|
|
no, you're wrong there.
|
|
When I say, you know, if you don't release it under a credit commons license by default,
|
|
um, it's my default copyright all rights reserved and then it falls back to whatever website.
|
|
So, the terms and conditions of the website that you download in the front.
|
|
And a lot of people are saying, no, that's not correct.
|
|
But definitely you can download and share and that's all fine.
|
|
And I'm going, I don't think so, but then again, I'm not a lawyer, so I'm trying to get
|
|
a follow-up, but that's not why we're here.
|
|
That's not why we're here.
|
|
We're here because of Honk Whale.
|
|
Tell me about Honk Whale and why we're talking about this.
|
|
Yeah, so, Honk Whale is a project that I sort of work on outside of my job.
|
|
It was started originally as a one person project by Agap Berrio back in 2015.
|
|
And basically, she originally devised it as a self-hosted free software alternative to
|
|
Groofshark, hence the name Honk Whale. It's a play on the title.
|
|
Sure. What's that?
|
|
Oh, it was, it was a sort of music streaming platform where you could build radios and playlists
|
|
and that kind of thing. I believe you just uploaded your content to it. Like, I don't think they
|
|
hosted themselves. It was kind of just a tool kit for building things, although I'm not entirely
|
|
sure, because it was extinct by the time I came to look at it. But Wikipedia says.
|
|
Wikipedia says, well, word-based music streaming service owned and operated by escape music.
|
|
Users could upload it to the radio files streamed and organized and playlists.
|
|
That's exactly what I thought it was. So, that was originally the use case for Honk Whale,
|
|
as well. It was basically, it was a place for Agap to upload her music onto her own server
|
|
and play it back and organize it into playlists and all that lovely stuff.
|
|
And over time, other people picked it up and were sort of like, hey, this is neat. I like
|
|
having this, you know, the ability to listen to music from wherever. And they started asking
|
|
for more things like multiple users and multi-accounts and then multiple libraries per user,
|
|
the ability to share music. And over time, it kind of snowballed into this thing where eventually,
|
|
it basically gained activity pub support and became a federated platform,
|
|
which is quite an interesting little challenge.
|
|
Works outside of like, you know, micro-blogging, which is, you know, activity pubs,
|
|
bread and butter, really. You start getting into the into the Wild West of what activity pub can
|
|
actually do. So, peer-tube does video and cast-apopt does podcasts and funquels does music and we're
|
|
all sort of there going, how do we make this work? How do we federate these things?
|
|
And it's been a sort of a wild ride. I joined the project sort of back in 2018.
|
|
At the time, I had been using Spotify quite a lot. And weirdly enough, I think the reason I stopped
|
|
using them was because they removed, they might be Giants album that I had in my collection.
|
|
Like, for some reason, it wasn't accessible. I remember writing to the he might be Giants on Tumblr
|
|
and asking them, do you know why? This is gone. And John Lennell, and John Flanzberg actually responded
|
|
like, ah, it's not our thing. That's our, you know, that's our record label. We don't do that.
|
|
So I was like, okay. And I kind of realized, well, I have this big CD collection, lots of MP3s.
|
|
I should really just like host my own music. So, I was learning Docker at the time because I wanted
|
|
to, I was going into Sys Admin work and I'd recently started hosting Masterdom and was looking
|
|
for something to host a music on. I came across all the sort of usual suggestions like your
|
|
rampatchy and things like that. And at the bottom of a random Reddit thread, somebody said,
|
|
hey, how about Funquale? It's, you know, activity pub driven and it does all this stuff. And I was
|
|
like, oh, that's great because I'm running another activity pub thing. I'm running a Masterdom
|
|
server. Great. So I went to try and install it and I failed miserably. It just went orderly.
|
|
So I went into the chat room and I was like, help. And I got actually picked up my case and
|
|
started talking to me. It took me through the install process. Over time, I started helping other
|
|
people. And then I basically said, well, you know, the reason is going so badly for everyone is
|
|
because the documentation needs work. And I often to go and do that. And then over time, I also
|
|
started picking up, you know, front end bugs and eventually some even API bugs and stuff like that.
|
|
And kind of just worked my way into the project over time through sort of sheer contributions
|
|
and things like that. And nowadays, I spend most of my time on documentation. So we spent the last
|
|
year sort of reworking everything, which includes a complete rewrite of the documentation from scratch.
|
|
So it's been a sort of an interesting journey into the sort of open source field.
|
|
Considering I came from absolutely no technical background at all, it's been quite a pleasant
|
|
journey. I must say, the website here is excellent. I shouldn't do this when I'm doing interviews
|
|
around the website and start getting involved in the project, but it is, it's very, very well,
|
|
very clear. It looks, I just described it for our, our, none, what do we call them? None,
|
|
full-time people, like, my craze of this world, who has vision impairment.
|
|
So the website itself, isn't it just via the website, or can I, so what am I doing? I've got
|
|
my black paws. I'm hoping the flag will be supported. I put it on my fun quilt server here in my
|
|
house and I open up new ports with my firewall and button boomerick and share my music when I'm in
|
|
work. Yeah, yeah, absolutely. So basically, there are really two component parts to fun
|
|
quail. There's the API and there's the web app. Yeah, most people, when they think of fun quail,
|
|
they think of the web app, but really, the API is the, is the thing, you know, it's the,
|
|
the actual app behind it. Yeah, I mean, it's, it's basically something you can put onto a server,
|
|
can run on anything from a Raspberry Pi app. And you can store your music on, on there,
|
|
using either just a simple hard drive or S3 compatible store and sort it into libraries.
|
|
You can then share those libraries with other people, or you can make them public if it's sort of
|
|
creative, common, creative, common audio or freely licensed audio. And you can even publish
|
|
music or podcasts directly onto fun quail, which people can then follow, like a mastodon account,
|
|
like a channel, as we call them. So you can be on mastodon and you can follow a fun quail channel,
|
|
and when somebody posts a new episode or posts a, you know, a new track, you will get that in
|
|
your feed and you'll be able to listen to it. So yeah, it does, it does a few things. The project,
|
|
if you're looking at the website right now, is very different from, from what it once was.
|
|
This last year has been a lot of refactoring and sort of upgrading everything,
|
|
including a complete rewrite of the, the web app and lots of cleanup on the back end.
|
|
And Giorg, who is our sort of technical maintainer, is currently actually rewriting this website,
|
|
because it's, it's a bit of a heavy site, it's written in view, which is the same as the web app,
|
|
or fun quail. And we don't need that for a website. So it's currently just being rewritten as a
|
|
nice pretty static site, which was designed by our designer Matthew. Very good. So the websites,
|
|
it's all looking at the screenshots of the application. You got my account,
|
|
settings, notifications, logouts, which you'd expect browse library, favorites, play this,
|
|
and add content, yeah, fair enough. And administration, a few things there that you'd expect to
|
|
download on the bottom left hand corner. We've got your typical album art with a hard sign,
|
|
the name of this track, album and artist, and your play controls, obviously, somebody's play.
|
|
And in the main window, we've got a person I presume is loved in, Lee Rosenberg. That's an artist.
|
|
That's an artist, okay? Yeah. They've got 187 tracks and 28 albums. And then we got start video,
|
|
play all albums, search Wikipedia, and embed uncle, albums by artists, music inspired by, then we've
|
|
got four different roles, four different albums available for me. Yeah. It's an interesting
|
|
experience looking at this screenshot, because it's quite an old one and a lot has actually changed
|
|
before, like this last year at work. So the bottom left player is now basically a player bar
|
|
along the bottom, which you can pop up into a full screen player, which is the album art and stuff
|
|
like that. The left hand side bar and a lot has changed there. The queue is now a virtual queue inside
|
|
the sort of collapsed play bar. So a lot has changed since then, but a lot more is going to change
|
|
in the future as well. So it's a bit of a snapshot of history at this point in time,
|
|
we'll be trying to update. Up at the top of Godbrows, albums, artists,
|
|
radios, and playlists. So I can just search my media there. Yeah. So there's a search bar in the
|
|
top left corner, which basically performs a quick search, and we'll return results, matching albums,
|
|
albums, artists, and sort of tracks. But then there's a full screen search as well, which you can
|
|
go into to do more sort of in-depth search on particular things like podcasts or albums or artists.
|
|
Right. So what does this, I am no intention of installing this just by the way.
|
|
I'm going forward to the next weekend, but I'm really good for the game.
|
|
So it'll run on a Raspberry Pi and I've got a lot of music, a lot of CDs that are on in
|
|
Plac format, but the method is all over the shop. So what happens there?
|
|
So we actually, let's go back. So I'm going to, what do I need to say I have a Raspberry Pi
|
|
and one terabyte hard drive with my music in all sorts of directories. Then what do I do?
|
|
So if you want to basically leave all of that music kind of where it is,
|
|
you can do what's called an in-place import. So you can basically, as long as the directory is
|
|
visible to the server, you can basically say import in place. And all that does is it says to Funquale,
|
|
just take a note of where these tracks sit in the sort of file system. But move them, don't do
|
|
anything with them, just reference them there. And then when I click play, that's where you access them.
|
|
You can also do, yeah, you can also do like an import where you actually basically
|
|
copy the files in from another place. Or you can just drag and drop files from your local hard drive
|
|
onto your server through the web interface and upload them that way. So it depends where it is,
|
|
but yes, you have options for in-place imports and things like that.
|
|
All three covered. Excellent. Okay. Yes. As for tagging.
|
|
How do you install it, by the way? How do you install it? Well, we've got a few ways to install.
|
|
So the two sort of simplest ways are we have a quick install script where basically you run the
|
|
script and you point it at a server and it goes and basically installs everything for you,
|
|
assuming a sort of a devian-based server. So it gives you some options like do you want to install
|
|
a reverse proxy, do you want to set up all these different things and then it just installs the
|
|
software for you. The other way to do it is to run sort of a Docker compose sort of setup,
|
|
which is how I run it, which is just a very sort of straightforward, we ship a compose file,
|
|
you basically just make the relevant directories and then run the compose file and it will create
|
|
the relevant sort of the Docker containers for you. Yeah, there are also guides available for,
|
|
so you can install it directly on Debbie and yourself if you want to. You can also,
|
|
somebody maintains a arch installation, instructions, there's why you know host or you know host,
|
|
if that's your fancy. So there's a few different ways to install it.
|
|
What's the underlying technology PHP or? It's Vue.js, so that's our front-end framework.
|
|
It's a, it's basically a JavaScript framework for creating single-page applications,
|
|
so with Funquale, you want certain things to remain on screen at all times. For example,
|
|
the player, you don't want that to disappear when you sort of go to another page,
|
|
so it's a single-page application, it will reload the stuff that you ask it to,
|
|
and it will leave the stuff that's currently doing something in place.
|
|
And then on the back end, it's Django Rest Framework, so that's Python-based.
|
|
The database that we sort of support is Postgres SQL and Postgres SQL, I guess some people say
|
|
to me, it's not SQL. I used to be a SQL administrator, I called it SQL this whole time,
|
|
nobody told me. And yeah, it also uses Redis for some caching and task management stuff,
|
|
specifically to do with Federation. So to, in order to sort of process lots of different
|
|
Federation tasks, we have a queue set up by Redis, which then sort of fires them off at the API,
|
|
or Fetchers Data from the database, or something like that. So it allows you to keep running things
|
|
smoothly, while it deals with the ins and outs of a federated service.
|
|
Cool, and that website is ujs.org, so Victor, Uniform, Echo, ULS, Sierra.org, or org.
|
|
Yeah, it's a very popular framework at the moment, and it's going from strength to strength
|
|
with its new sort of newly-rood sort of new sort of focus on VIT, which is a very fast sort of
|
|
JavaScript compiler and things like that. So they really go from strength strength at the
|
|
moments, and we recently moved from View2, which was their previous sort of major release to View3,
|
|
and from JavaScript to TypeScript. So basically Casper, who's one of our sort of contributors,
|
|
developers, took on that Herculean task pretty much single-handedly, and I don't envy him for
|
|
it at all. It was a lot of work, like every single front-end file had to be changed.
|
|
Right, so now I have the thing installed, presumably I go to a webpage and create an account
|
|
and log in. Yeah, so during the install process you will create a super user account,
|
|
that's done with a management script. So you create an admin account, and when everything is set up,
|
|
you can go to your sort of web frontend. So in my case, I have Tanuki Tumes, that's my front file server,
|
|
and I could just log in and then basically I land on a brand new. So you'll just land on a blank
|
|
page with nothing, and you'll be prompted to upload some content. And you have three options for
|
|
how you want to load content. Basically, you can upload things like your personal content,
|
|
your CD collection, or the stuff that's on your server. You can upload those into libraries,
|
|
and each library has sort of three possible privacy settings. So there's sort of private,
|
|
which means over you and people that you directly invite to see the content can actually listen.
|
|
There's instance only or local, which means anyone who has an account on your instance can see it
|
|
in player, and then there is public, which means everyone, everywhere, all the ones.
|
|
So you can sort your music, depending on how you want to do it. So for example, I have a
|
|
very big private library. I mean, it's very big by my standards. It might not be you by your
|
|
standards, but it's about 16,157 tracks. And then I have a creator commons library, which is about
|
|
1,000 tracks. And that one is public so that everyone can listen to it, share it, have it open
|
|
air pod, have it on my pod. And then the private one, obviously, it's just for me, and a couple of
|
|
friends. So do you? Okay, I'm thinking of this very practical things here, actually, because
|
|
my kids have got, everybody's got their own taste and music and stuff. And my daughter now works.
|
|
And she has a, the alternate switching scene here and being in the town where she works.
|
|
So I could have a library and then have just a sign that library to her. And then she could,
|
|
yeah. So you can share it with her. So you can, you can make the library and then you can,
|
|
basically, you get a sharing link with that library. You can grant her access to it as a private
|
|
library. And then basically when she says, yes, I'd like access, you just prove that to make
|
|
sure that everything is in order. And then she's able to access everything in that library.
|
|
A lot of where I'm going with this is, you know, will the FBI knocking on my door when
|
|
I start using funquil, which is from the frequently asked question. Yeah. Yeah.
|
|
Yeah. And I mean, you know, obviously don't publish and publicize music that you don't own
|
|
the copyright to. That's that's kind of where this comes down to. Sharing content, sharing music
|
|
is something that, you know, people do and always have done. Most of my music actually comes from
|
|
my dad. And so I share the library with him. You know, so it's, it's sort of private in that
|
|
sense. We don't publish it. We don't broadcast if play. And, you know, we promote people
|
|
publishing music publicly. If using creative comments or Libra, I was it. LiSense are Lib
|
|
licenses. And that stuff can be published fine. But admins have controls that they can use
|
|
to, you know, take, take a content down. You can report it. You can make sure that the
|
|
moderators know about it. And it's really the responsibility of the individual admin to do that.
|
|
We are hoping to introduce better controls. So for example, ensuring that only creative
|
|
comments license media or freely license media can be made public in the first place is something
|
|
you might like to do. It's just not there yet. But it is something we're trying to do.
|
|
It's a good start. I have a clear separation. I'm like, really kind of stuck and
|
|
stuck like previously was collected. Yeah. I mean, it's not. Yeah, it's one of those things where,
|
|
you know, collection management is a hugely complex topic. And this, this sort of way that we've
|
|
done it, which is having these kind of, you know, you're able to create as many libraries as you
|
|
want. But they're all locked to those three privacy levels. And everything in that library
|
|
is at that privacy level. So you can't have, you know, if you start uploading and you upload to
|
|
a certain library, you upload 80 tracks and then you think, Oh, actually, I wanted this one to be
|
|
public. It's not particularly easy to move that, which is something we're trying to address in
|
|
in sort of later updates where we're moving to a collection space sort of way of handling things
|
|
where everything can just be dropped onto your fun quail. It doesn't need to go into a library.
|
|
It just kind of gets, you know, it's part of your library. But then you can create collections.
|
|
And those can be as generic or as specialized as you want. And you can, you know, basically share
|
|
individual tracks with people or you can share like whole content collections, whatever you want to
|
|
do. So we've got big plans to have to manage that because at the moment, that's something that
|
|
people, you know, are really sort of aching for is this really solid, you know, music management.
|
|
And when am I importing that as the renoption to, you know, correct the metadata anyway?
|
|
So currently, no, but it is something we'd like to do. Basically, what we suggest is we back
|
|
onto music brains per card or music brains, rather the database for music. And so we suggest music
|
|
gets tagged with the card. Now that's fine for, you know, some content, you know, that you're uploading
|
|
from CD collection, from your server, whatever. But it's a bit of an upfront load. We do have a
|
|
minimum amount of metadata that is required, like to have some way that's in app so that you don't
|
|
have to go, oh, no, it failed. I have to go and tag it with the card and then come back and try it
|
|
again. But, you know, that's something we're sort of trying to work out at the moment. We're
|
|
actually working with the Metabrains team to figure out a good way to do that. Of course,
|
|
some people don't want to use music brains at all. So we have to have, you know, four backs for
|
|
other tagging systems and supporting the sort of their minimum of ID free tagging.
|
|
So at the moment, it's kind of a two-step process. You tag the music first and you upload it to
|
|
funquel. If it's got a music brains ID, you're going to have a great time.
|
|
You know, it can be a little bit hit on this because it was just never really designed to do
|
|
anything but. So I also see that you have loads of clients for very strong platforms that
|
|
Android, iOS, etc. Yeah. And continue, actually. Yeah. And this is because basically, sorry,
|
|
blah, blah, blah. Sorry. And HCTP, DIRFS, use FS. Interesting. Yeah. So in terms of
|
|
actual official funquel, sort of apps, you basically have obviously the web app. We have an
|
|
official mobile client for Android, funquel for Android. And we have a Mopadee plugin.
|
|
So Mopadee, if you don't know, is the, is a sort of music, to Python-based command line music
|
|
server. And you can plug directly into a funquel server from that if you prefer to listen to
|
|
music using a command line client. But the majority of these actually are using subsonic.
|
|
So funquel supports a subset of the subsonic API. You can use your existing subsonic apps to
|
|
listen to your music collection off of funquel. If you, you know, are, for example, if you're on
|
|
an iOS device, we don't have an app that will you at the moment. I'm sorry. I say this, I'm an
|
|
iOS using myself. So, but, you know, if you have a subsonic app, you can listen through that.
|
|
Which is kind of our stopgap solution to, um, intel people, you know, support the funquel API
|
|
in their apps directly. Very cool. So why is there, yeah, I can understand having a media library
|
|
and whatever. Why would I want to publish this on the third of us?
|
|
So in terms of publishing your music on the third of us. And remember, this isn't probably a
|
|
meeting and another user. It's an interesting question, though, because it was one of those things
|
|
where it was like, um, how, how do we, you know, we got Fediverse support around 0.17 was the
|
|
release, I think when we started to support, uh, activity pub and we started to support federation.
|
|
And mostly this was kind of for into funquel communications. So sharing libraries and those
|
|
kinds of things, it didn't really use activity pub all that much. It was more about, you know, funquel
|
|
to funquel API or sort of navigation. But what we decided quite early on, um, one of our
|
|
guts big goals was to be a place for podcasters. Because at the time podcasters were asking for
|
|
publishing on the Fediverse. They wanted to be able to have a podcast that you could subscribe to
|
|
using the normal mechanisms of RSS, but also you could follow it like a master on the game and see
|
|
the new episodes and things like that. So it became this big kind of R&D effort by Agats and, uh,
|
|
some more people on our sort of team to talk to podcasters and figure out what exactly they needed
|
|
from this, how we could build them. And, um, obviously being a music shop, we also decided this
|
|
was a good thing for artists. If you're an artist who publishes their work currently on things like
|
|
SoundCloud, um, funquel is a, you know, free and open alternative for you, but people can follow
|
|
your work and interact with it in some way, um, and play it on their pod, uh, you know, and whatever.
|
|
So the idea is how it works is that if I follow a, an artist channel on my funquel pod, they publish
|
|
a new, a new sort of track on their pod. It immediately shows up in my pod and I can stream it.
|
|
So yeah, so I don't know if that was clear, but that's kind of how it works. If you have a library
|
|
of content on your pod or a channel where you upload something, I can follow it on my pod,
|
|
which is what we call servers, um, and it basically shows me all of that content in my pod.
|
|
When I then click play, it goes to your server and says, hey, I'm playing this now, I would like
|
|
to stream the data from there. And basically that's what it does. It streams from wherever you've
|
|
stored it and caches it on your local server for later use. So if I play an album like, for example,
|
|
you have a, an album by Robin Gray on your server, I'm following that library, I play that album,
|
|
it will stream it to my server, cache all the content in case I listen to it again later,
|
|
and that's how it all sort of pulls together. So it's about creating this interconnected
|
|
network of people publishing, uh, basically freely licensed content. Right. Now I'm suddenly
|
|
interested in this. Yeah, the way to discover new music, you basically follow other people
|
|
who are posting music shows. Yeah. Absolutely. A lot of Dave podcasts, um, still, and yes, so they,
|
|
they published the, it's tracks that they have, then I could follow them and the people that they
|
|
follow, etc, etc. Exactly. They could create like, for example, because they've,
|
|
gets a lot of music from like, gemendo, for example. Um, there's no reason that you couldn't have
|
|
a cloud channel where he basically pushes, uh, the content that they play and, you know, it could
|
|
be like an album called, you know, the name of the week of the, of the episode, and you can go back
|
|
and listen to all the tracks they played there, and that would be a use case for it. Um, a better use
|
|
case that would be to follow through and those artists follow those artists themselves, so that,
|
|
you know, did like one song, but yeah, I want to follow the entire, uh, their entire work.
|
|
That's kind of where playlists come into it, and, uh, that's something that, so we do playlists,
|
|
playlists are a thing, and we are currently in the process of trying to expand those to be
|
|
federated as well, because currently, yeah, playlists are kind of locked to a specific
|
|
fun-quail instance, um, but I'm locking the ability to actually follow playlists and interact
|
|
with them, build them across people, like that sort of thing is one of the, one of the goals,
|
|
really, okay, is that, that's, that's a, that's a big use case, and it's one of those, uh, things
|
|
that aren't currently, I would then need to follow each podcast similar to, yeah, the artists,
|
|
in order to, basically, I'm asking, how do I, how do I find new artists, and how do I, so, yeah,
|
|
so content, uh, so content that is, um, so on a pod like mine, for example, I've got several
|
|
hundred users, not many of them are active, but, you know, there's some there, and basically,
|
|
when somebody who has an account on the same server that you do follows a channel, for example,
|
|
that shows up on your home screen, so if they start following a, um, you know, a musician,
|
|
and that channel appears for them, it also shows up for you.
|
|
All of that content shows up, and you could search for it, and you can fill to buy like,
|
|
you know, let's say you start a radio, and you're like, I don't really care, I just want
|
|
something that's tagged with heavy metal. Yep. Any content that is known to your pod, and is known by
|
|
followers, uh, by, by people on your pod, and people they follow, uh, that is accessible to you,
|
|
will start playing, basically, and you can discover new music like that, you'll pull in some tracks that
|
|
you've never heard from, you know, somebody followed someone random from open.audio, and they
|
|
have to be making metal music. Right, that's now accessible to you, so you'll hear it in that radio,
|
|
and you can like it, and you can follow them yourself, and you can, you know, sort of get involved
|
|
with that sort of thing. And the more people sort of follow, obviously, it's very similar to
|
|
mastered on in this way. Um, if it's a single person pod, it's very lonely. It's entirely usable,
|
|
you can upload your music content, you get all the features, that's great. But discovery wise,
|
|
not much, it gets better when you have more people on the pod, and they start following people
|
|
from across Funquale, all the different Funquale pods, they go over and they go, hey, uh, Funquale.uk
|
|
has this really cool artist or podcaster who's making something cool. I'm going to follow them,
|
|
and then you, being on my pod tonic, you tunes, you see, all of that content appear,
|
|
and you can just start listening. So that, that, that, actually, um, that, that pushes me away from
|
|
the idea of having my own server. Yes. Internally. Yes. For the, for the use case of internally.
|
|
But my creative commons music would probably be better off on somebody else's server. Yeah. I mean,
|
|
it, it, it comes down to who is going to offer you an account space. Yeah. Because you have a lot of
|
|
flak files and they quite, they're quite big. The reason to host your own server more than anything is
|
|
to, you know, have as much space to do with as you will. And obviously the more servers you have
|
|
in the Fediverse, the better it is for everyone. Yeah. So I would, as a member of the project,
|
|
I would encourage you to set up your own server. Yes. As a, as a, as a person who also sort of,
|
|
you know, got their starts with Funquale, using someone else's pod originally. So I,
|
|
I used Open.Audio, which is the kind of flagship pod. I can see the, the sort of use in it.
|
|
But you can quickly start populating your, your server. So Open.Audio offers the entire free
|
|
music catalog from archive.org as a library that you can follow. So you can immediately populate
|
|
that in your pod by just following that library. And there's a few libraries like that. Mine,
|
|
mine is one of them. So I have lots of music like the entire works of Jonathan Colton and stuff
|
|
like that because that's all creative commons. You can just follow that. And you get a lot of content
|
|
that you might never have even heard of. And I buy a lot of creative commons music to, you know,
|
|
give people more content to listen to. Spread the love, spread the love, yeah. And spread the money
|
|
to people who, you know, are making creative commons music because I think it's a little thing.
|
|
It is, it is. Yeah, I've been exclusively listening to creative commons music since
|
|
last seven years, I guess. Oh, wow. No, that's, that's not, I, not like I put on my headphones
|
|
and don't listen to any other music, but I mean, yeah, any new music. So I am interested
|
|
in getting access to better creative commons music because I feel that the innovation
|
|
together, you know, you know, in every town there's the cool bar where you go in and they've got
|
|
they got the bands thing and some nights it's good and some nights it's not, but the nights it's
|
|
the night, it's good, very good. And that's what I feel we get with creative commons, that spirit of,
|
|
you know, it's a bit rough around the edges, but oh, there's some good stuff out there.
|
|
Absolutely. Like, there are some really fantastic artists that I've come across who some of them
|
|
I came across because they're creative commons, some of them I came across and they happened to
|
|
be creative commons. So you've heard, you listen to the bug cast, I don't know if you heard the
|
|
tracked by like solar fear ants and the blasting company that were playing a couple of weeks ago,
|
|
but those were my suggestions. And they are bands that I, so solar fear ants I saw live in exeter
|
|
when I was living there. And it just happens to be that they release everything under creative
|
|
commons. And the blasting commons are well known for being the band behind the soundtrack to
|
|
over the garden wall, which is a very famous miniseries on Cartoon Network. And they release
|
|
everything under creative commons. And it's just, it's wonderful. Sometimes you come across these
|
|
bands and you're like, wow, I didn't realise that, you know, they would do that. Jonathan Colton,
|
|
another one who's like a long time favourite of mine. And I didn't realise he released everything
|
|
under creative commons. I'm the absolute, I got into it because he released everything on
|
|
Richard Colton's. I think I got into him because he did the music, or he did some of the songs for
|
|
Portal and Portal 2. And so I thought I think that's where I heard of him. And then I started
|
|
listening to his thing a week. And he also tours a lot with, he also tours a lot with, they might
|
|
be giants who are my favourite band of all time. So I kind of fell into him that way and then
|
|
realised later I'm like, oh, his entire collection is like, you know, just a credit based. And
|
|
so I bought the whole thing. I bought every single track album, anything he's ever done. And I put
|
|
it all on Funquale for people to listen to and hopefully go and do the same for themselves.
|
|
Fantastic. Okay, now, right, security issues about doing this. I mean, there's some risks with this.
|
|
No, you put in the wrong library and suddenly Metallica are coming, I'm not going to ignore
|
|
for the music, but I want my music back. Yes. And then there's the band with Colts.
|
|
And then there's the security implications of having a server just open to the world out there.
|
|
Talk to me about this. So I mean, security features, why I'm not exactly the best person to talk about
|
|
because I'm not a programmer, but I can sort of take you through some of the stuff that we've done.
|
|
So one of the first things is going to this point about sort of content being uploaded,
|
|
it shouldn't be uploaded. This is a risk with any sort of service where people can upload their
|
|
own content. If you're having, you know, if you have a service where anyone can upload anything
|
|
in theory, you're going to get a lot of copyrighted work. The important thing is giving people the
|
|
ability to basically report that to a moderator and then giving a moderator the tools to
|
|
handle that. So in funquels case, we have a report option on everything. You can report users,
|
|
you can report libraries, you can report artists, albums, tracks, whatever. And this sends
|
|
basically a notification to the admin or the moderator team of the pod and basically says,
|
|
so this has been flagged as copyrighted. It can go in and verify, yes, that is copyrighted.
|
|
It shouldn't be public and then they can choose how to deal with that, whether that be to make the
|
|
content private or if it's a repeat offense or something like that to basically remove the content
|
|
and ban the account. So, you know, we're trying to say the D.C.M.
|
|
Yeah, exactly. And we're trying to make it even easier. So we've been floating around this
|
|
idea of saying like giving admins the ability to lock down like can users create public libraries
|
|
at all or giving them a mechanism that says if something gets put in a public library,
|
|
it checks to see does it have a license that is freely available? And if not, basically,
|
|
no, you can't put it in there. So we have some thoughts on that. It's, you know,
|
|
it's something that's kind of been in the background minds, but this past year has been sort of
|
|
learning experience. It's a new team who basically took over the old sort of the previous developer
|
|
sort of left the project and we took over and we've basically been trying to learn the ropes.
|
|
To security, so we've had security audits and we will have another security audit soon because
|
|
basically we funding from an Lnet and yeah, we're sort of talking with them at the moment to
|
|
to get another fund, another sort of round of funding from them and basically they offer a
|
|
security audit. It's a pretty sort of standard security audit. It mostly tests like the front
|
|
phasing web app for security issues, but it's a good, it's a good thing to do just to make sure
|
|
you catch some of those more obvious ones. The major problems that you will have on any app like
|
|
this are things like access control for the API and, you know, basically port maintenance and
|
|
management. So we have, you know, everything is developed in the open. Our Docker files are pretty
|
|
well sort of sort of shown and we use fairly standard ports for everything. We don't use that
|
|
many sort of non-standard ports. We document which ones need to be open in order for things to work
|
|
and for things like subsonic, which is a, you know, a slightly older API, which is a little bit
|
|
sort of, it's a bit of an add-on. That sort of stuff is disabled by default. So basically the
|
|
admin has to opt into pretty much everything that would expose them to any greater risk and the
|
|
expectation there is that they will assess that risk for themselves and make sure that it works
|
|
with them. Similarly, our engine X config files, we've actually taken a step to harden those.
|
|
One of the things we've done in this latest release is basically package those into
|
|
into the Docker containers. So if you're running it on Docker, basically you have a,
|
|
sort of a, what we would call like a sort of a sensible default. You can override it if you want to,
|
|
like we give you a mechanism to override it, but the point is we don't want it to end up where you
|
|
have an updated your your engine X files and ages. And you know, you've just kept updating the
|
|
software but not the engine X files. So we've sort of put that as part of our new update mechanism
|
|
to try and make sure that we're shipping security updates as sort of well as we can.
|
|
But yeah, so we do take care and we've actually had some really excellent contributions recently
|
|
that harden up security of the sort of infrastructure itself. And with version two of our API,
|
|
which is something we're developing at the moment, security is going to be sort of a big
|
|
a big thing that we look into. So we really want to get into the mode of speccing everything
|
|
to within an inch of its life, making sure that we've really assessed the access control requirements
|
|
and the behavior, frankly, at the endpoints to ensure that they only do what we expect them to do.
|
|
And obviously, this will all be developed in the open. Every single spec gets put up a discussion
|
|
in a forum where people can go and talk about it. But you know, we will always do what we reasonably
|
|
can. I know the Georg, for example, who's like, say, that was sort of a main technical resource.
|
|
He works in a sort of a company which deals with Kubernetes and large scale deployments. So
|
|
he's pretty obeyed with security and has been doing a lot of work to try and solidify that for us.
|
|
So yeah, it's a challenge, like anything like you say, anything on the internet, anything that's
|
|
federated. The other thing that you know, you need to touch on is things like abusive content.
|
|
Why? What happens if something on your on your server, for example, follows a podcast that
|
|
advocates for, you know, Nazism? Well, how do you deal with that? So we implement allow listing
|
|
and deny listing. You can put your server into allow list mode where only specific pods that you
|
|
allow through will get in. Same with denial list, you can say that one in particular can't come in.
|
|
You can purge content from different domains. So if there's a domain that's particularly sort of
|
|
questionable, you can basically say, basically, you know, block that domain and purge everything
|
|
it's ever sent to me. I don't want to know anymore. So we have a lot of sort of tools for admins to
|
|
handle all of that sort of stuff. And importantly, as well, users in the meantime, after they
|
|
reported something, can also hide all content from artists or from from podcasts and basically say,
|
|
I really don't want to see that. So while the admin is dealing with my report, hide it. Yep,
|
|
yep, don't see it anymore. Sorry, very good. We're trying. Like we had a lot of help on anti abuse
|
|
with, so we had Ginny who was working on anti abuse back in the day. And she did a lot of a lot of
|
|
work sort of as making it, making it better than it was, shall we say. But it's an ongoing,
|
|
it's an ongoing battle and always having things that we haven't considered. So we just have to keep
|
|
catching and working. I realized we're coming up in an hour here, which it, which,
|
|
amazingly, I thought we were just chatting for 10 minutes. In the company, what sort of license
|
|
your software is released under? Yeah, so if you say now, it's a totally preferential open
|
|
core license. No, we're pretty, we're pretty against that now. The software is AGPLV3,
|
|
so that's the Afro very general public license. It's the only license really, I think that makes
|
|
sense for hosted service side software. It's, you know, it's an excellent license. It gives us
|
|
all the freedom that we want and it gives our users the them as well. We've had people come up and
|
|
say, we'd like to fork the software to put it on the blockchain and do all this stuff and we're
|
|
like, well, good luck. You can have it. It's free and open, we're winning now. Not to do
|
|
good blockchain is coming near us. People have this thing in their head that like,
|
|
they think that funquels goal is to dodge copyrights. And they're like, well, if we put it on the
|
|
blockchain and we had like a doubt that sort of did everything and we put everything in IPFS,
|
|
there will be no central authority to take down content and all this and we're just like, we don't
|
|
hate copyright. I don't understand where this, where this concept comes from that we, for some
|
|
reason, hate copyright. We love copyright. Copyright is fantastic. We just prefer open licensing.
|
|
That's about it. A question that is copyright fantastic in the forum that we wouldn't need
|
|
to create a licensey if copyright wasn't broken, but the idea that somebody should be able to
|
|
copyright their work and not have that copyright violated, say, for example, an individual
|
|
creates a piece of music and wants to have it sort of, they want to shift it a certain way,
|
|
they don't do creative comments or whatever, that's their right. And we should decide something
|
|
out of ten of those solutions. Personally, necessarily think that that's correct,
|
|
because, you know, if I go out and I go to work and I work on a project and I create some beauty
|
|
there, I get bit first. Thank you very much. That's it. Copyright is essentially a monopoly
|
|
that we, the state grant and I think, yeah, maybe it's a way, but there's also, there could be
|
|
other ways. Because the way it is done, you're reluctant to it now.
|
|
I have an existential question over a point. Yeah, I would say that it's not funquels,
|
|
not funquels position to question that. And more to the point, it's a tab position to,
|
|
you know, like I say, promote releasing your, your content freely. When you upload content,
|
|
we say, hey, who's a license? You know, this is great. And if you publish content on funquels,
|
|
it's going to be public. So you should put a license on it. But like, yeah, the, you know,
|
|
if you don't want to do that for whatever reason, we're not going to make a technical solution that
|
|
gets around that by putting it on the onto the blockchain for everyone to see and you can never
|
|
take it down. No, it's a whole thing that we just don't, don't want to get into. Yeah, absolutely,
|
|
absolutely. There's a zex on the zex on the only thing is that I don't really want to be running
|
|
yes another server. Yeah, I understand that. If you want to get a taste, yeah, if you want to get
|
|
a taste, like this, it was on the, you got to hold that new house, no, my house on spreading outside
|
|
the house. I'm sorry, if I'm talking over you, it's because of the latency and mumbles or my apologies.
|
|
No, no, not at all. But yeah, if you want to try out funquel, there are publicly accessible pods.
|
|
So if you go to our website, there is a pod picker, which actually shows you pods that you can sign up to.
|
|
The important thing to look out for is what's the upload limit? Because obviously storage isn't
|
|
free. That's the big limiting factor for people who host content publish per sort of public.
|
|
I offer, on my pod, I offer 10 gigabytes, which is one of the more generous offerings out there.
|
|
I'm not trying to sell it because obviously, it's something I pay for our pocket.
|
|
But some admins offer two gigabytes, some offer 15, it really depends on what you want.
|
|
But if you try it out, if you go to Open.Audio and sign up for an account there and just test
|
|
the software out, see how you like it. Maybe you'll think to yourself, yes, I actually do want to run
|
|
this on a server. And particularly if I'm running it on my own internet for a while, just to get a
|
|
feel for it. Is it possible to replicate the data so that you have different time zones
|
|
or would that be just better replicating the data underlying? Is there a way to have
|
|
decentralized three copies of the same server serving different regions of the planet?
|
|
That's a question beyond me. But in theory, I mean, in theory, there would be,
|
|
you're talking about scaling sort of solutions here. In theory, you would double to run several
|
|
instances of certainly the web app is easy enough to plug it into the same API. In theory,
|
|
you'd be able to do low balancing with the API and you'd be able to do redundancy
|
|
deduplication with the database. It's not something that we currently document or really offer
|
|
support for. It's one of those things where somebody has written up a helm chart for running
|
|
Funqueryl in Kubernetes and hats off to them. In my opinion, a little bit overkill, but there we go.
|
|
Yeah, but the thing about this is the easiest way to do it would be to basically host multiple
|
|
instances of Funqueryl and just follow the content libraries because they will all show up
|
|
the different sort of servers. If you have three servers,
|
|
which is kind of the lead server and has all of the data on it, just follow that content from
|
|
the other two servers, it'll show up and you can play it. It's kind of how it does. It functions.
|
|
Can you randomly, without uploading stuff, can you randomly listen to other people's pods
|
|
without having an account? So the admin can choose to allow public
|
|
unauthenticated content. So if you go to, for example, my part to Nuki Chunes and you wanted to
|
|
listen to Jonathan Colton, you can. But you don't have to have an account. Basically it's
|
|
free in public and I have turned off basically requirement for authentication on certain endpoints.
|
|
So obviously anything to do with accounts, to do with uploads, to do with anything like that,
|
|
that's all protected. But listening and stuff like that is open. That's down to the administrator to
|
|
decide. Obviously, there's a performance cost there. There's a, you're obviously, yeah, well,
|
|
I mean, it's covered in my digital ocean bill. So I can just read it after a month goes by and cry.
|
|
But I'm an aggressive sort of compressor. I upload all of my content as opus files, which
|
|
retain very, very high quality despite being tiny, tiny. So I tried to keep it down that way.
|
|
But obviously other people can upload stuff publicly. They can upload flat files,
|
|
web files, you know, ALAC files or whatever they call it. I think those are supported AAC.
|
|
So yeah, whatever they're doing, I'm not exactly sure. But it is possible. There might be a way
|
|
to dip your balls into it, at least to the apps before you start building your own server.
|
|
Absolutely. Yeah. So I know Open.Audio, some of the content there is free to listen to.
|
|
So anything on these in anything that is publicly visible to you, you can listen to it,
|
|
just click play on something and it should start playing. You can also log in if you wanted to test,
|
|
for example, fun, quite often Android, just pointed to a server that you know is sort of free and open.
|
|
And basically just say anonymous authentication. And you won't be able to do things like
|
|
favoriting tracks, you won't be able to go playlists or do anything like that. But you will be
|
|
able to play music and just see what's out there. Fantastic. I'm a big conscious of the time.
|
|
Is there anything that we haven't covered that you want to talk about that I missed?
|
|
I mean, I don't think so. I mean, we didn't really touch much on on podcasts, but it is an
|
|
area of the app which has languished a little bit. We're planning to pick up focus on it again
|
|
at some point. But obviously on the Fediverse Cast-A-Pod exists. So people who are looking for
|
|
a more sort of featureful experience can always go and look at Cast-A-Pod. But Funquel is,
|
|
you know, we were the first, we were doing podcasts back in the day before anyone else was.
|
|
And yet you can publish a podcast on Funquel and just download the RSS feed and listen to it
|
|
wherever using your normal pod catcher. So, you know, that was kind of a feature we baked into it.
|
|
That's actually quite interesting because we get asked a lot. I'll do a start my own podcast and
|
|
this might be a good solution for people. Okay. Yeah, I'm fantastic. I'm going to have to wrap
|
|
it up there, Karen, I think. Unless there's anything else? No, I don't think so. It's been
|
|
really nice talking to you. Thank you very much. Have me on. No, no problem. The feed we could have
|
|
we need to have a chat about this. Maybe we can do a round up movie in a six months to year again.
|
|
And come back when I have a little bit more experience of having used it or maybe installed it or
|
|
if you have new speakers or if there's anything else you want to announce. Yeah, absolutely.
|
|
Sure, just send me an email and I'm happy to come along. Perfect. Okay. Well, thanks very much for the
|
|
interview and the links as always to everything that we've discussed will be in the show notes
|
|
of this episode. See you tomorrow for another exciting episode of Hacker Public Radio.
|
|
You have been listening to Hacker Public Radio at Hacker Public Radio. Does it work?
|
|
Today's show was contributed by a HBR listener like yourself. If you ever thought of recording
|
|
broadcast, you click on our contribute link to find out how easy it really is. Hosting for HBR has
|
|
been kindly provided by an honesthost.com, the internet archive and our sync.net. On the
|
|
Sadois status, today's show is released on their creative commons, attribution, 4.0 International
|