Post 9sARFDD0lFSF5K8HNA by eliotberriot@mastodon.eliotberriot.com
(DIR) More posts by eliotberriot@mastodon.eliotberriot.com
(DIR) Post #9pM902ogQD2Yylp8Ii by eliotberriot@mastodon.eliotberriot.com
2019-10-29T09:51:28Z
0 likes, 0 repeats
For the 0.20 release, I made this long running thread (https://mastodon.eliotberriot.com/@eliotberriot/102524583389353243) to keep a track on my progress when working on the report feature.Today, I'm starting the backend implementation for the podcasts/channels feature, and it's an even bigger one, so I'm starting another thread.Context:- Initial GitLab ticket: https://dev.funkwhale.audio/funkwhale/funkwhale/issues/170- Forum discussion: https://governance.funkwhale.audio/d/s7GTeHwU/podcast-supportFeature summary and goals:- Improve the publishing experience in Funkwhale by allowing creators to have channels (like YouTube / PeerTube / SoundCloud channels)- Improve the discovery experience by allowing users to subscribe to channels and be notified when new content is published- Support non-musical content (e.g radio shows, readings, etc.)- Compatibility with fediverse software that support the Audio activity (meaning you can subscribe to Funkwhale channels from Mastodon, for instance)
(DIR) Post #9pM903Euqg1YI865Bo by eliotberriot@mastodon.eliotberriot.com
2019-10-29T09:53:12Z
0 likes, 0 repeats
One additional goal I forgot: implementing compatibility with existing podcasting apps like Antenna Pod (via RSS feeds), to ensure people can subscribe and listen to content from anywhere
(DIR) Post #9pM9048ZVkXl4k8WwK by eliotberriot@mastodon.eliotberriot.com
2019-10-29T10:00:53Z
0 likes, 0 repeats
Now, it may not be obvious, but this is a bigger beast than the report feature. Why?First of all, reports were a new feature. It was essentially _adding_ something new to the platform. We almost touched nothing existing.Here, we're adding something that is likely to conflict with what we have in various places, because it involves audio consumption, metadata management, and federation.
(DIR) Post #9pM904bHmzVoVnZShE by eliotberriot@mastodon.eliotberriot.com
2019-10-29T10:01:50Z
0 likes, 0 repeats
Doing so without breaking anything and compromising on the feature itself will be challenging.
(DIR) Post #9pM904vqYXxVXZBskC by eliotberriot@mastodon.eliotberriot.com
2019-10-29T10:06:05Z
0 likes, 0 repeats
That's where I am right now: trying to fit this new feature into the current plaftorm and code base and identify pain points.Should I create a separate table for channels, or consider artists are channels themselves? Should I create an ActivityPub actor for each channel, or use the channel owner actor?
(DIR) Post #9pM905Qghsd35DcVoe by eliotberriot@mastodon.eliotberriot.com
2019-10-29T10:16:06Z
0 likes, 0 repeats
Once this is figured out, the rest _should_ flow naturally (more or less ;)My current stance is that we should consider that some artists are linked to a channel. The channel being roughly the Actor object.It may evolve of course, but this is what I'll be experimenting in the upcoming days, to identify potential limitations with this approach.One benefit of this approach is that it really limit the database changes: add one nullable foreign key from music.artist to federation.actor and voilà.All the audio metadata is stored cleanly on the artist table, all the profile /subscribing / federation logic is stored on the actor table.This also gives us follow/accept/reject for basically free (because it's already implemented on actors)
(DIR) Post #9pM905qDAz2sMNYtbE by eliotberriot@mastodon.eliotberriot.com
2019-10-29T15:49:32Z
0 likes, 0 repeats
So, after a few hours prototyping, I ended up with something a littel bit different (database wise).I've created an intermediate "channel" table to link artists to the channel owner, the library were uploads are stored and the actor representing the library.I could have done this without the intermediary table, but it's much more cleaner and easy to extend this way.I also have a basic CRUD API at /api/v1/channels to create, list, retrieve and delete channels, and the corresponding tests. It was relatively straightforward, which is a good sign!If you want to have a look at the code, it's here: https://dev.funkwhale.audio/funkwhale/funkwhale/merge_requests/944
(DIR) Post #9pM906GRbS1rfjpqUK by eliotberriot@mastodon.eliotberriot.com
2019-11-13T14:40:09Z
0 likes, 0 repeats
Allright, it's been a few weeks, but we need to move on regardinng the API / backend stuff to start prototyping the front-end, so let's get back to work!I've polished my initial MR at https://dev.funkwhale.audio/funkwhale/funkwhale/merge_requests/944, and it's now ready for review.What's the next step once this is reviewed? Probably working on the uploading APIs to allow speciying metadata during upload (versus extracting these from the file)
(DIR) Post #9pM906qbR0x7Tskiqe by eliotberriot@mastodon.eliotberriot.com
2019-11-14T18:34:53Z
0 likes, 0 repeats
That's a big todolist (and it's not even freezed nor complete)
(DIR) Post #9pM907DI4f6IcFMqDA by eliotberriot@mastodon.eliotberriot.com
2019-11-26T12:42:39Z
0 likes, 0 repeats
So, we had the podcast meeting, and things seem to be on track. Meaning I have to quickly complete the most pressing API stuff to ensure we can iterate on the UI in the upcominig weeks.One current blocking point is that we don't have the necessary APIs to provide a decent audio publication experience.E.g you cannot upload a file, edit the metadata, then come back at it two days later, add some tags, and hit publish.First of all, there is no current way to tell Funkwhale "please don't use audio tags embedded in the files to infer metadata, use this values as title, artist and album instead".Also, currently, once uploaded, a track is picked up immediatly and published.So, this is my goal for today and probably tomorrow: tweak the importing API to ensure we can support these two use cases, without breaking anything ;)
(DIR) Post #9pM907dAWRnhuVTVY0 by eliotberriot@mastodon.eliotberriot.com
2019-11-26T12:51:18Z
0 likes, 0 repeats
There's nothing really dangerous here in itself but hey, the importing engine is a rather central and complex piece of software, and I'd rather not breaking it :DAnd of course, add tests and API documentation and code review on top of that, and you can probably understand why it will take at least two days!
(DIR) Post #9pM907zrA5wt2s5cuW by eliotberriot@mastodon.eliotberriot.com
2019-11-26T14:11:55Z
1 likes, 1 repeats
The easy part is done (adding a draft status), check out https://dev.funkwhale.audio/funkwhale/funkwhale/merge_requests/958 if you want to have a look already, it's only Python code.Now working on the metadata thing.
(DIR) Post #9r1WY0mbRg73yw7rvs by eliotberriot@mastodon.eliotberriot.com
2019-11-29T11:45:38Z
0 likes, 0 repeats
So, I finalized the last blocking MR for starting working on the channels UI.https://dev.funkwhale.audio/funkwhale/funkwhale/merge_requests/958/diffsThe diff is ~1000 lines (~900 additions), which is big, however:- ~25% of that diff is documentation- ~50% of that diff is testsThat's not bad considering the potential impact of the changes.The /api/v1/uploads/{uuid}/audio-file-metadata, coupled with the new draft status will make it possible to build a powerful upload form for channels. For instance:1. Alice upload a big audio file2. Once the upload is complete, she is shown a form with prefilled data extracted from the audio file tags3. Alice doesn't like the prefilled cover, so she uploads another one4. She also adds an additional "politics" entry to the list of tags5. Values for the title, license and copyright fields are accurate and left as is6. Alice clicks "publish" and her audio is live
(DIR) Post #9r1WY18w6dyf6CZhk8 by eliotberriot@mastodon.eliotberriot.com
2020-01-13T14:48:27Z
1 likes, 0 repeats
6 weeks later, I'm back to it. I'm eager the backend work to start working on the UI, since we have amazing wireframes by @mjourdan!One last bit I forgot is that we need a new field on tracks and artists to add a description.I thought it would be a simple, straightforward change, but turns out, it isn't:1. it needs to support different content types (markdown and HTML, at least possibly more), for compatibility with other software2. Adding a new field means: updating the internal API, and also expose it over federation3. There are security implications with fields that contain HTML, so I had to be very careful with this4. Wait, we also need to populate the field when we can, using the audio file "comment" tag5. oh, and what about supporting suggestions/edits on this field too? So more federation code to writeMultiply this by 2 in order to have the code AND the tests, and, well, you get where I currently am x)
(DIR) Post #9r1WY1NTEbbTpHNJOi by eliotberriot@mastodon.eliotberriot.com
2020-01-13T14:51:14Z
0 likes, 0 repeats
And this is purely on the backend side. I'm not even touching the user interface here
(DIR) Post #9r1WY1mHkLS94Ez84m by eliotberriot@mastodon.eliotberriot.com
2020-01-14T11:26:25Z
0 likes, 0 repeats
So, the contribution I discussed yesterday is now ready for review: https://dev.funkwhale.audio/funkwhale/funkwhale/merge_requests/993Almost 700 lines added.But everything seem to work (federation, edition, markdown rendering, etc.)
(DIR) Post #9r1WY28GQd2AAPGgKm by eliotberriot@mastodon.eliotberriot.com
2020-01-15T10:58:53Z
2 likes, 1 repeats
Started implementing the UI for listeners! It was about time 😌 This is the wireframe I'm working with https://dev.funkwhale.audio/mjourdan/funkwhale-design/raw/master/podcasts/podcasts-wireframes.png (a work by @mjourdan)I'm nowhere near done, of course, but I've started by the channel detail screen, and this is what I have so far.There are quite a few things I need to complete for this screen:- Plug the actual description of the channel in the left column- Use adequate covers (and replace the big icon with the channel image, if any)- handle the subscription logic (more backend work :D)- implement the additional tabs (overview/episodes in particular)
(DIR) Post #9r1XOgdJ5pHEpstYsS by carbontwelve@d20hero.club
2020-01-15T11:22:44.496910Z
0 likes, 0 repeats
@eliotberriot this is looking really good. With a new baby at home I haven't had time to work towards my federated podcast publishing service. Would be good to eventually chat so what I am working on is able to communicate with Funkwhale.
(DIR) Post #9r1ez8Nu5e4T0g17Oy by eliotberriot@mastodon.eliotberriot.com
2020-01-15T12:11:45Z
1 likes, 0 repeats
@carbontwelve sure! We aim for compatibility with other fedi software that publishes audio content, and will accept/emit Create { Audio } activities.I'm hear if you want to discuss the details further :)
(DIR) Post #9r1vXn4Gw2rmIdNjYO by eliotberriot@mastodon.eliotberriot.com
2020-01-15T15:44:33Z
1 likes, 2 repeats
Rather productive day. I have the basic subscription logic set up on the API, meaning it's now possible to subscribe to/unsubscribe from a channel, and display subscription status in the UI.Also, we now display the channel description properly, as well as an easy edit tool (shown only to channel owner, of course)!I've included a video below to showcase all of this.
(DIR) Post #9r1vXnOTiv1tJIps36 by Troll@maly.io
2020-01-15T15:52:50Z
0 likes, 0 repeats
@eliotberriot Coucou Eliot, Ça a l'air vraiment cool, bravo pour ton travail.J'ai une p'tite question: Est-ce qu'il sera possible de souscrire à un podcast via une URL/RSS ? Pour le suivre des épisodes depuis des applications de podcast dédiées par exemple.
(DIR) Post #9r1vdZ8vcXJAqkJVVw by eliotberriot@mastodon.eliotberriot.com
2020-01-15T15:54:23Z
0 likes, 0 repeats
@Troll hello et merci !Oui, c'est un des élément dans la todolist, fournir le flux RSS qui va bien pour être compatible avec le maximum de clients (et pas uniquement Funkwhale) !Pour le moment je me focalise sur l'UI, mais ça devrait arriver très prochainement ;)
(DIR) Post #9r1vqjzcamJKGTF6w4 by Troll@maly.io
2020-01-15T15:56:46Z
0 likes, 0 repeats
@eliotberriot woaaa *_* c'est trop coollll
(DIR) Post #9r1vvXgRmk2VXIZ0QC by eliotberriot@mastodon.eliotberriot.com
2020-01-15T15:57:20Z
0 likes, 0 repeats
@Troll et normalement, tu pourras aussi t'abonner depuis Masto ;)
(DIR) Post #9r1vzsxQdCSSfrZrjk by Troll@maly.io
2020-01-15T15:58:25Z
0 likes, 0 repeats
@eliotberriot OMG !!! je suis déjà en impatience \^_^/
(DIR) Post #9r1wU70OxwKmvlNhY0 by eliotberriot@mastodon.eliotberriot.com
2020-01-15T16:03:52Z
0 likes, 0 repeats
@Troll moi aussi :D
(DIR) Post #9r24C3Dl65pnc7WmJs by eliotberriot@mastodon.eliotberriot.com
2020-01-15T15:56:46Z
1 likes, 0 repeats
Also: working with existing wireframes made by someone else, more competent than I am, makes it way more enjoyable!
(DIR) Post #9r24Wnxz0YvcNt2quW by sean@social.deadsuperhero.com
2020-01-15T17:34:00.980208Z
0 likes, 0 repeats
@eliotberriot thank you so much for keeping us updated on this! I'm so excited about the possibility of running a podcast and sharing all of my music projects through Funkwhale!
(DIR) Post #9r27BN0wJwjmZftmYC by eliotberriot@mastodon.eliotberriot.com
2020-01-15T17:59:33Z
1 likes, 0 repeats
@sean you're welcome! You can check this thread from time to time, I'll update it regularly during the month :)
(DIR) Post #9rIU2hBvlnWqQUb128 by eliotberriot@mastodon.eliotberriot.com
2020-01-23T13:38:08Z
1 likes, 1 repeats
So, I think this screen is mostly complete. We now display the channel image properly (if any). the episode tab is working, I've fixed a few issues.I've also designed a small markdown editor with preview to improve the user experience. This will be reused in various places (like user bio, reports, etc.)I'm going to start working on another screen: the user profile screen!
(DIR) Post #9rrlZrZ7aZ3PzWmH0S by eliotberriot@mastodon.eliotberriot.com
2020-01-23T13:43:22Z
0 likes, 0 repeats
Note that this editor is largely inspired by Gitlab's editor
(DIR) Post #9rrlZs17uRSJONsdeq by eliotberriot@mastodon.eliotberriot.com
2020-01-31T10:19:35Z
0 likes, 0 repeats
The RSS feed part feels like a huge milestone, but it's actually quite small when you compare it to other tasks needed for podcastsIt took me roughly 2 days of work to implement up until now, although I expect to spend at least the same time polishing the resulting feed, testing compatibility with many apps, fixing issues, etc.
(DIR) Post #9rrlZsVc55qGuw8zB2 by eliotberriot@mastodon.eliotberriot.com
2020-01-31T10:21:35Z
0 likes, 0 repeats
However, I think it comes with more excitement than other features, because there's this immediate feeling of "it works with something else that has nothing todo with Funkwhale, meaning we can be part of this wider ecoystem".Reminds me when the Subsonic API was implemented in Funkwhale. In a few days, we were suddenly compatible with various desktop and mobile apps ❤️
(DIR) Post #9rrlZt06FkEERUPKhE by eliotberriot@mastodon.eliotberriot.com
2020-02-07T16:38:46Z
1 likes, 1 repeats
Today's work! It's now possible to create, update and manage podcasts through the UI!Sounds quite obvious, but this was still missing :p This went faster than expected, the whole thing was done donay. I expect to move and fix some things once I have some feedback, but I'm confident I could have a working uploader prototype next week.Meaning, even if it's not 100% complete, we'd cover the whole feature (creating a channel, publishing content in the channel, listen to the content in the channel within Funkwhale, subscribe to it via RSS).
(DIR) Post #9sARFDD0lFSF5K8HNA by eliotberriot@mastodon.eliotberriot.com
2020-02-13T14:00:32Z
0 likes, 0 repeats
We're reaching another milestone today, with the possibility to upload content to a channel.(again, sounds obvious, but it's still something that requires work ;)I've included a video below to demo the feature (with the channel creation), but basically, I have a prototype uploader that supports:- Choosing the channel were files should be published- Picking a license - Upload one or more files in parallel- Populate metadata (such as title and hashtags) using the audio file embedded tags- Edit metadata before submission (and without interrupting upload of other files- "Finish later" option to upload files but do the actual publication laterAll of this is showcased in the video below !
(DIR) Post #9sARFDl2iig0ms3SPw by eliotberriot@mastodon.eliotberriot.com
2020-02-13T14:02:17Z
0 likes, 0 repeats
Some features are still missing, like the ability to include a cover or a description for each track, and display the user quota but it should be relatively straightforward now that the foundation is done.There's also little to no error handling in the UI, but it will come ;)
(DIR) Post #9sARFEESxKDEG7oxHM by eliotberriot@mastodon.eliotberriot.com
2020-02-18T16:00:18Z
2 likes, 2 repeats
5 days later, where are we?Well, just published a round of updates to the creators UI (still not merged, but it's going smoothly, so I expect a merge this week) 🎉 All of this is detailed at https://governance.funkwhale.audio/d/psEaAYN1/creators-test-group-podcast-channel-development/21, but basically:- Better error handling during uploader- Show processing progress once the "published" button is clicked- Display the user quota in the upload modal- Better attachment input (as designed by @mjourdan)- Ability to create albums/series through the UI- Ability to attach uploads to albums/series- display track cover if any- Added position field in metadata form- Delete track through UI (go to track detail and click "more…") (@stef)- Delete album through UI (go to track detail and click "more…") (@stef)- Truncate/line break channel name when it's too long- User-friendly urls for channel and RSS feed (/channels/mychannel instead of /channel/longrandomstring) (@stef)- Fixed wording/missing update button when updating upload metadata (@unklebonehead)I've also attached a video below in case you want to see how it renders in the UI.