The Invidious Project Will Be Shutting Down Soon
In a recent blog post, it has been announced that the main Invidious instance (https://invidio.us) will be shutting down and that Omar Roth will be stepping down as the lead developer of the project. I'd like to take some time to give my thoughts on the situation as well as lay out what this means for the future of FreeTube.
If you'd like to read more about his announcement, check out his blog post over here.
When FreeTube was released almost 3 years ago, I started off using YouTube's official API to bypass their tracking. YouTube provides a key that gives you a limited amount of access to their API and so that they can prevent misuse. As development of FreeTube continued, it became very apparent that it was going to be difficult to continue using this API. HookTube had some legal troubles for a very similar reason and more users were coming to FreeTube which caused times where the API key would often hit it's limit. This was sorta solved by adding more keys to the project however it completely ignored the legal issues that HookTube was involved in.
Not soon after, the Invidious project became public. Omar reached out to me to let me know that he's been working on a scraper based API similar to NewPipe's extractor. Since I've been familiar with YouTube's API at this point, we worked together on trying to make this community driven API as close to YouTube's as possible. I'd provide feedback on how the API has been working and Omar was able to make adjustments as needed.
Since then, FreeTube has migrated to the Invidious API full time and both FreeTube and Invidious saw a lot of usage within the privacy community. It has been amazing watching both of the projects grow and I feel like we were both successful in what we originally sought out to do.
At this point, you could almost say we were too successful. More users started to come in and with it more requests for features and bug fixes were happening at a pace that made it difficult to respond. Invidious had even more activity than FreeTube did, so it's no wonder Omar felt overwhelmed with this response to what started as a simple passion project.
I don't say this to invoke pity on myself or Omar. Burnout is a very real thing and it's amplified when you work on open source. The work we do is for fun and not for any sort of fame or monetary gain. When something stops being fun, you simply don't want to do it any more. When you have grown a community around your project, even if you're not being paid, there's still a feeling of obligation to keep going. When you combine it all together, you feel forced to work on something you have no interest in and you might even feel like there's no way out.
Omar, I sincerely thank you for the time that you've put into the Invidious project. Your work ethic has been incredible to watch and I can only hope that I have half that type of work ethic towards my own projects. I know that is isn't quite the same, but I feel like I can relate to the overwhelming activity that can be experienced within an open source project. Sometimes you don't want to work on a particular feature, sometimes you don't want to respond to a particular issue and so on. Managing an open source project is a massive time commitment and if it becomes something that you no longer enjoy doing, then I see no reason why you shouldn't be allowed to walk away.
I'll say this one more time. Omar, from myself and the entire privacy community, thank you.
The Future of Invidious
At this point, it isn't clear what will happen to Invidious as a project when the main instance is shut down.
Perflyst, a very active member of Invidious and other communities, will be taking ownership of the project. He currently maintains the Snopyta site along with the respective Invidious instance. While I'm sure he will do a great job with managing the project, he himself has admitted that he is not a developer and cannot maintain the project.
This effectively leaves Invidious without a lead developer. While the current instances will still be functional, they could all break overnight because of a YouTube change. This has always been a concern, however Omar has always been around to make that fix so that everyone can continue using Invidious. With Omar not being around, all instances can effectively be broken and unable to be used again. If that happens, the instances may as well not exist. This is why I'm not very keen to suggest that we simply add more instances to make up for the main one like a few people have been suggesting. It's only a very temporary solution.
Having said that, there's always the possibility that someone else can come in and help out. If you are a developer who is familiar with Crystal and front-end technologies, I encourage you to take a look at the Invidious repository and see if you can help out. Even just keeping up with any breaking changes and not working on new features would be a huge help to the community.
Now you might be thinking, why don't I do it? I'm already fairly involved so it might make sense for me to start contributing. I haven't ruled out the possibility, but I want to make sure that I have the time to handle it if I start to do so. I don't think I'd want to become the lead for it, as that would definitely be overwhelming managing two big projects, but I might be able to contribute to some fixes that break the functionality of the site. My priority is FreeTube however and my focus will stay on that for the time being.
The Future of FreeTube
Before I talk about FreeTube, I wanna talk about myself for a moment. While burnout is a very real thing with projects like these, I want to reaffirm my dedication to this project. I love what I do and I love being able to help out the community. If I was still making FreeTube for just myself, I would have quit a long time ago. I have no intentions on quitting any time soon.
As you're probably aware, FreeTube relies on the Invidious API to function. Any issues that pop up in Invidious are reflected to FreeTube because of it. At the same time, any fixes are also available to FreeTube without the user ever having to update the app.
This will obviously change moving forward. While I would really like to see a new maintainer for the project, FreeTube needs to move forward with the assumption that no maintainer will be found. The API will continue to function until October 1st, which means we have roughly two months to find a solution. If I wasn't already working on a potential solution, the recent news would have been much more devastating to the progress of FreeTube.
As I've mentioned in the past, I am working on a complete rewrite of FreeTube. The goals of this rewrite are to introduce better coding standards to the project and to give FreeTube a more stable base to build on top of. This project has been going on for several months now. If you've recently tried FreeTube and decided that there were too many issues, I encourage you to wait for this rewrite as it already fixes many issues found in the live release of FreeTube.
One other feature that was added to this rewrite was the inclusion of a local API. This makes FreeTube function similarly to NewPipe as it parses the information itself with no extra server involved. At the time of writing this, all core functionality of FreeTube (Search, Channels, Videos, Playlists) are all functional under this local API. This means that FreeTube will be able to survive as a project even after Invidious shuts down.
While a lot is already done, there's still a lot that needs to be finished. Subscriptions, History, Local Playlists, and Profile support are all missing still. There are also a few bugs here and there that need to be fixed. Because of the recent announcements, I will be trying to make an effort to speed up development of this rewrite. I consider it important that the community still has a way to watch YouTube privately moving forward and I hope that I can get this finished by the deadline.
I hope that FreeTube can be the Invidious replacement that everyone is looking for moving forward. I understand that it's a different work flow and that there are some use cases that will be missed (mobile specifically comes to mind) but I want to be able to cater to as many people as I can. Please let me know how you use Invidious and I will do my best to include that functionality within FreeTube as well.
How You Can Help
I considered making this a different article, but I want to put it here instead. Some of you might be wondering if there's anything you can do to help out with this effort, so I want to lay out a few options for everyone. These suggestions apply to any open source project and you don't have to have any programming experience to get involved.
Create Pull Requests
I'll start with the big one right away. If you do happen to have any programming knowledge, please consider creating a pull request. Contributing to the code directly is the best way to speed up development and can be a big help with finishing up the project. FreeTube itself is written in Node / Vue.js so if you're familiar with those technologies then feel free to jump in and help out. If you're not familiar with them (Or even if you are) feel free to ask questions on what to do and I'll be more than happy to help out.
Answer Questions on GitHub
For most projects, issues are created frequently on GitHub discussing one problem or another. Sometimes the issue needs more details, other times there's already an issue out there, finally there might have been a source where the issue has been addressed. In any of these situations, it's possible to resolve an issue or at least move it forward without any input from the maintainer them self.
Responding to issues on GitHub can be a big help. It allows the maintainer to focus more on the fix / feature itself more so than having to go back and forth between questions / answers before work can be started. If you're able to get more information out of what's being asked then we can save the maintainer some time as well. Even linking to duplicate issues or linking to a previous response from the maintainer can help a lot. Consider taking some time to sift through some unanswered issues whenever you have time.
In FreeTube's situation, the rewrite repository doesn't have many issues at this time, so I've been able to have time to respond to all of them. In the future when the rewrite is released to more people, this can quickly change.
Testing / Creating Issues
No matter what your programming background is (even if it's nothing), being able to test out the current progress of an application is easily one of the most helpful things you can do for a project. Creating an issue of any problem you find can help the maintainer log that issue and fix it at a later point. Try to include as much detail as you can when creating these issues so that the maintainer is able to quickly find and patch the problem so that they can move to another part of the app.
For the FreeTube rewrite, builds are published every commit over on the Actions tab on GitHub. Here you can download the latest build of the rewrite for testing so that you can provide feedback. Obviously parts of it are missing but providing feedback (Even if it's to say that you can't find any problems with it) is very helpful.
At this point, it looks like we have a lot that needs to be done. I will do my best to get the FreeTube rewrite done in time before Invidious is shut down. If you happen to have spare time, feel free to help out in any way you can. Even if I don't get the rewrite done in time, we'll still have a way to watch YouTube privately, I'll make sure of it.
If you want to join in on the discussion, feel free to join our Matrix Community. I'm also available for email at FreeTubeApp@protonmail.com
If you want to learn more about the rewrite itself, check out it's GitHub repo here.