Discover Castopod's Plugins Architecture
Castopod Plugins are now a reality with v2.0.0-next.1! Dive into our new Plugins Architecture, offering extensive customization for the open-source podcast hosting platform.
TL;DR
Castopod v2.0.0-next.1 was just released, but it's not the v2β¦ yet! Do not use in production, use the latest v1.x instead.
This release introduces a new Plugins Architecture, a pivotal change for allowing anyone to extend and customize Castopod and make it their own.
During the next months:
- we will be focusing on creating a first batch of plugins
- we will create an official and open repository for plugins
- we will spend some time refactoring and refining Castopod taking into consideration all of the feedback we've got from v1 so far
Now, let's build some plugins! ππ
Why a Castopod v2?
In short, to focus on building a more modern and robust podcast hosting solution.
Being the only open source podcasting platform on the fediverse, Castopod peeks many interests and different use cases. Moreso after the release of v1 in late 2022.
Now, with hundreds of self hosted instances in dozens of regions, and with the many feature releases and bug fixes⦠it's time to take a step back and rearrange the pieces to give podcasters even more control over their podcasts.
Castopod is an open source podcasting platform that serves as many podcasts and episodes needed, through a built-in website, RSS feeds and the Fediverse.
It shouldn't do more than that, though it must do it as best as possible.
What's changing?
ποΈ A new Plugins Architecture
This fancy designation basically means that we've added a way for anyone to hook into parts of Castopod and enhance its core features.
This translates to having a new plugins/
folder in the root of Castopod, where you can drop in third-party plugins or even build your own!
A plugin is but a folder with:
- a manifest (JSON file)
This file includes the plugin's metadata, permissions, and describes its behavior, ie. which hooks are being used or declaring settings to persist user preferences. - a Plugin class (PHP file)
This class contains the plugin's logic, where the hooks (class methods) are implemented.
As of now, a plugin can extend:
- the Podcast's RSS feed, to edit/add tags into the
<channel>
and<item>
elements - the site's
<head>
, to add third party scripts, custom tags and more.
So these two files alone can constitute a plugin⦠But there's more!
Plugin authors may add a README.md
file to guide users, add an svg icon for branding, or even add translation files to make their plugin accessible in multiple languages with internationalization baked in.
More info about plugins: https://docs.castopod.org/next/en/plugins/
π A new documentation website
Castopod's docs website was getting a bit rusty.
It was built using an old version (pre v1) of a static builder called VitePress and didn't allow for much.
After some consideration, instead of upgrading the version of VitePress, we've decided to shift to a more powerful docs builder: Astro's Starlight.
Starlight renders more optimized pages for better SEO and will help us rewrite a clearer and straightforward documentation website thanks to its features and components.
With the upgrade, we've included new languages : Catalan πͺπΈ, German π©πͺ, Spanish πͺπΈ, Serbian (latin) π·πΈ, Chinese (simplified) π¨π³, adding to the already available English π¬π§, French π«π·, Norwegian π³π΄ and Portugese (Brasil) π§π· languages.
Moreover, the docs are now versionned, with a develop
and a next
branch to keep track of differences in coming releases.
Check out the new docs website: docs.castopod.org
What are the next steps?
This first "next" release marks an experimental phase for the coming months to, well⦠experiment!
That is done by inviting any developer or organization to push the limits of Castopod's Plugins Architecture by building their own plugins.
We are also creating a batch of official plugins to serve new features for Castopod, as well as to show what is possible.
These efforts will help refine the Plugins Architecture, address any limitation we bump into and introduce new hooks if needs be.
Furthermore, at the end of this phase, we'll be building an open repository to host official and community crafted plugins whilst ensuring that anyone can create their own.
In conclusion, you should expect more next releases to come, and with it probably some breaking changes, but that's just how development goes π
Now, let's build some plugins! ππ
Wanna help?
Do you want to build a plugin?
Checkout the plugins docs on how to get started.
Do you have an idea for a plugin but don't have time to work on it?
Submit an issue on our issue tracker.
Do you want to start podcasting?
Check out castopod.com, and get your Castopod running in just 5 mins!
Or see castopod.org if you want to know more about Castopod, and how you can self-host it.
You can also support us via OpenCollective, or just come and have a chat with fellow podcasters and contributors!