Introducing Cardinal Music (v0.5.0), a brand new self-hosted music app. With it comes a few other important updates and announcements.
This will probably end up being a bit long winded because it’s been so long since I’ve given an update, but if you like the project then I have good news.
This post will cover:
- Introducing Cardinal Music
- An Update for Early Adopter Subscribers
- New Source-Available License
- New Forum
- New Product Roadmap
- Community Influence
- Core Commitments
- Staying in the Loop
Introducing Cardinal Music
Cardinal Music is a brand new self-hosted music app. It ships as a bundled web app in Cardinal Media Server, which is also a brand new thing. You can install Cardinal Media Server with Docker, then stream your music with Cardinal Music.
This release of Cardinal Music contains core features like music playback, tracks, releases, artists, history, favourites, libraries, and more. This release also establishes Cardinal’s UI and design language. A lot of effort has been put into a creating a modern UI that is extremely fast and also rich in functionality.
The primary objective right now is to release the classic features that all music apps have. Desktop music apps have been around for decades and there are a whole bunch of things that Cardinal Music needs to get right before it can be called a music app. This release has many of those things, and you can start listening to your collection with Cardinal Music today.
There is a lot to explore with Cardinal Music. Adjacent to it you will find a few other interesting apps like Cardinal Admin, a dashboard app for admin-ing your Media Server, and Cardinal Photos, a work-in-progress that is not as good as Immich, but has big aspirations. And behind it all, a singular unified web experience that sets new standards for self-hosted apps.
Cardinal Music is now my main music app at home in a desktop environment and I hope it can become yours too.
An Update for Early Adopter Subscribers
When I first posted about Cardinal two years ago on Reddit, I had a subscription tier available on the website called Early Adopter. The idea was that if you subscribed now it would pay off later, but you had to keep your subscription active. I truly did not expect anyone would subscribe because I was posting about an unfinished photos app, but to my surprise some people did purchase a subscription and they became Early Adopters.
I tried my best to move quickly, but finding time was hard. My pace slowed down considerably. Eventually people unsubscribed, giving up on their big dreams. Honestly, I would’ve unsubscribed too. I came to the realization that there was actually quite a bit left to do, not only on the Photos app but also with the Media Server and cloud infrastructure.
But I always kept working on things. I shifted my efforts to the Admin app and the backend because it was necessary, but after that I didn’t return Photos app, instead I started on the Music app because we all know that’s the cooler app. Every now and then I would randomly get an email that someone new has just become an Early Adopter. People kept finding the project, yet I was still unable to move quickly enough. Dreams, crushed.
To all my Early Adopter friends that came and went over the last two years, your belief in the project had a bigger impact than you realize, and I thank you for your vote of confidence. However, at this point I think the fairer thing to do is to just offer normal subscriptions, and let users purchase it if they think it’s worth it.
The Early Adopter phase ended up taking way longer than I ever imagined, so as a thank you to anyone that purchased an Early Adopter subscription for any amount of time, your account has been upgraded to a free lifetime Pro subscription.
New Source-Available License
The source code for all self-hosted Cardinal apps has been made available under the Elastic License v2 (ELv2). A ton of thought was put into choosing the right license for the self-hosted apps, and I ended up settling on ELv2 because it does the best job of addressing the interests of all parties.
The primary objective of publishing the self-hosted source code is simple: to allow users to inspect the internals of what they are self-hosting.
From the user’s perspective, the license allows you to fork the code, modify it, and redistribute it. You can build apps that use it and sell those apps, and not have to worry about a rug-pull type situation. The only things that you are not allowed to do are remove Cardinal’s licensing features from your copy of the code, or offer Cardinal’s apps as a managed/hosted service of your own.
And from the perspective of an organization that is powered by a solo developer, ELv2 protects my main interest: the long term sustainability of the project and organization. Ensuring that my purchase button remains visible is a fair means to that end, in my opinion*.
The GitHub repository has more information on the code, and it’s open to bug reports, suggestions, and forks.
* I don’t consider myself to be an expert on software licenses. If my understanding of how ELv2 works is incorrect then I reserve the right to switch to a license that better aligns with the objectives I’ve stated above.
New Forum
I had originally set up a self-hosted NodeBB instance and encouraged users to join it two years ago. Maintaining that forum turned out to be a pain for a bunch of reasons so I shut it down. It was dead anyway for the same reasons as mentioned above.
When it comes to community driven projects like Cardinal, open and indexable discussions are an absolute must, so naturally I would rather not use Discord. I tried to find something that I can host myself that wouldn’t be a maintenance burden but I wasn’t thrilled by anything out there, so I settled on a managed instance of Discourse. This forum is the new first class community for everything related to Cardinal, and I’ll be more responsive here than anywhere else.
The goal is to find an organic direction. I know what I need to do to solve my my media streaming issues, but what can Cardinal do to solve yours? Post about it, and help steer the direction of this ship.
Product Roadmap
Needless to say, things are just getting started. All of the infrastructure is in place to deliver frequent updates and build out a high quality self-hosted media streaming ecosystem. I have a specific vision that I started working on years ago that I will continue to see through until it’s complete. Here’s a quick rundown (what’s a rundown?) of the short, medium, and long term direction of Cardinal:
- Short term:
- Core Music features until v1.0.0
- Core Photos features until v1.0.0
- Core Admin features like additional job types, more indexing features, monitoring/graphs, remote streaming controls, etc.; lots to come here
- Core cross-app features like Search, Themes, Extensions/Plugins
- Medium term:
- Core Cinema features until v1.0.0
- Advanced Music features
- Advanced Photos features
- Advanced cross-app features like Watch Together
- Core Cloud Services like Remote & Relay Access, sharing, and some top secret ideas
- Long term:
- Feature parity (or better) with Plex web
- Fully capable offline-first suite of apps
- Novel cloud services built for this niche
- Beyond:
- New apps
- Compete with the likes of Nextcloud and OpenCloud
This is an unordered, non-exhaustive, non-binding roadmap, meant only to paint a general picture. There are many other things planned that I haven’t included. This roadmap is also subject to change, and some things may require a paid subscription.
One important thing missing from the roadmap is apps for mobile devices, TVs, wearables, and vehicles. There are a few different ways that these could happen, but it’s too early to tell right now.
Community Influence
I want to hear people’s feedback. I have plenty of ideas of my own, but what I really want to do is build apps that other people want to use too. Fostering the discussion around Cardinal apps, and allowing for an organic direction to develop, is why I’ve opened up the code, set up these forums, and am committed to a predictable and transparent development process that keeps everyone in the loop.
With the apps in active development, it’s the perfect time to get involved. The fun bits are coming together as we speak, and there is always room for more voices.
Core Commitments
If you’ve made it this far then I’d like take a moment to mention a few of the things that Cardinal Apps Inc. stands for. These are the foundational principles that will always remain at the center of the organization and applications:
- Open - All self-hosted code is open for inspection, modification, and redistribution.
- Secure - Keeping data secure is the #1 most important priority. There are channels available to report issues of all levels, from simple bugs to the private disclosure of serious vulnerabilities.
- Non-Invasive - Your Media Server isn’t doing anything that you haven’t explicitly allowed it to. Check the code for yourself.
- Privacy Focused - Cardinal’s Privacy Policy adheres to some of the strictest privacy laws in the world (Quebec’s Law 25), and these rights are granted to users all over the world regardless of physical location.
- Human First - The code base is — for better of for worse — a place where humans do the driving.
- Apocalypse Ready - The self-hosted apps are resilient to outages and won’t skip a beat if you go from fully online to fully offline. That means you can use a cloud account and not worry about getting locked out of your apps if suddenly the cloud servers suddenly become unreachable.
Staying in the Loop
Going forward, the main ways to get news on what’s going on with this project are:
- This Announcements forum for major updates.
- The Release Notes page and the GitHub repository for micro updates.
- An upcoming quarterly opt-in newsletter. Keep an eye on your Cardinal account.
Enjoy the new apps!