-
-
Notifications
You must be signed in to change notification settings - Fork 207
Description
Active development of Streamlink Twitch GUI has ceased.
With the project being on life support since at least 2022, only critical bugs and dependency issues will be fixed, with the exception of breaking changes introduced by the upstream Streamlink project that require fixes and code changes here, so Streamlink Twitch GUI remains functional.
Please do not open any feature requests.
Since I'm the author of this project and the lone developer of Streamlink since many years, I will still keep everything functional for as long as I'm using these software projects, which is still pretty much every day.
The reason for this announcement is that I have pretty much lost interest in developing and maintaining Streamlink Twitch GUI. I have mentioned this lots of times on the issue tracker(s) over the years, but I think it's finally time to add a pinned note for this and explain a few things.
This project started in 2014 as a fun learning experiment, back then called "Livestreamer Twitch GUI", as a "node-webkit" frontend for the "Livestreamer" project.
Over the years, several dozen technologies this project depended on died, and lots of features were removed from Twitch's APIs. I however still migrated everything and worked around issues and breaking changes as best as I could, and kept everything going, but during this long period of time, lots and lots of technical debt and cruft has built up, which makes developing and maintaining this a major pain and simply not fun anymore. This project needed a fresh start from scratch almost a decade ago, but this obviously never happened, despite all of these issues, because once you've reached a certain point in development, you know how much of a time investment this will be, also knowing that years later, you'll be at the same point of frustration again.
Some points of frustration:
-
NW.js / node-webkit
As said, this project started as a fun learning experiment using web-technologies on top of NodeJS. NW.js / node-webkit was the tool which enabled this for the first time in the early 2010s. Electron, which years later became the "standard" for web-technologies on the desktop (ignoring CEF), emerged from the node-webkit project after one of its co-devs left. NW.js development eventually slowed down, they lost their Intel sponsorship, the project became a one-man development show, and tons of sometimes critical issues remained unfixed due to that (can't blame anyone though). Packaging has also always been a major problem, especially when trying to be included in various Linux package repos.Being built on top of Electron would've simplified everything a ton, but switching from NW.js meant rewriting lots of deeper runtime and also build/test code, so this was never done.
-
EmberJS
In 2014 there were basically two dominant but still fairly new JS web-app frontend frameworks, Angular 1 and EmberJS, in addition to a few smaller ones. I went with EmberJS, because its development paradigms were very promising, in addition to their "stability without stagnation" motto. In the end though it lost the popularity battle, new JS frontend frameworks came up pretty much every month, and everything died eventually. Migrating from this is not possible, and you're stuck with it until you rewrite everything from scratch. This obviously never happened, and neither did major code refactorings to newer versions of EmberJS with more modern JS code. -
Build tools / environment
Lots of migrations happened over the years in regards to the build tools and dependencies. Keeping up with the rapid development of the NodeJS ecosystem however is nearly impossible, and considering that lots of stuff is home-brewed due to lack of available upstream projects, the overall build-tool situtation has been very much chaotic for the majority of time. Another big frustration factor. -
Twitch APIs: from Kraken + private API to Helix
I lost count of how many features Twitch removed from their APIs over the years. On the old Kraken API, lots of things were available that enabled us having almost feature-parity with their website back then. But then lots of stuff got removed, sometimes without deprecation warnings, the old private API was shut down that we used for certain minor things, and then the most frustrating thing happened, namely the shutdown of the Kraken API in favor of Helix.The switch to Helix also came at a very unfortunate time with terribly miscommunicated deprecation times on their end, requiring me to bascially rewrite the entire underlying data-model structure (+7,960 −7,595 lines of code changed) within two weeks or so, and also pulling lots of features while making authentication mandatory. In addition to that, there was lots of uncertainty in regards to their ridiculous (idiotic) rate-limiting, which fortunately was reverted later on.
One more annoying thing they did was removing the API endpoints for following/unfollowing channels due to alleged abuse and harrassment by bots, resulting in a much worse user experience for us or any other third party application.
-
Livestreamer abandonment / Streamlink fork
The Livestreamer project was abandoned by its lone developer in 2016. Fortunately, some of its contributors manned up and forked the Streamlink project. I was only part of this because of me being the dev of the Twitch GUI that hat gotten quite popular among its users. Since I didn't know Python, I kept focusing on the Twitch GUI, but slowly became more and more interested in the development of Streamlink itself. Over the years though, everyone except me left or became inactive, and for the last several years now I've been the solo dev of the Streamlink project and kept everything going, including the creation and maintenance of related side-repos (Windows builds, Linux AppImages, FFmpeg builds, Python builds, build env containers/images, etc).This has resulted in me spending less and less time on Streamlink Twitch GUI. Considering that Streamlink is also in dire need of several fundamental rewrites, in addition to the constant maintenance effort, there is basically no way that I will ever work on fundamental code changes on the Twitch GUI.