Files
hpr-knowledge-base/hpr_transcripts/hpr3808.txt
Lee Hanken 7c8efd2228 Initial commit: HPR Knowledge Base MCP Server
- 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>
2025-10-26 10:54:13 +00:00

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