Learning More about Cynic TV (CTV):

Table of Contents:
Free & Open Source
Shared Experience
Lightweight
Impermanent Storage
Multi-Media
App-less
Offline Functionality
Set Top Box
Gaming

Free & Open Source. How will you make money?

The good news is, I don't need to make money. I want this project to exist just for me. Any money I might make on it is a bonus.

So while I will have links for donations, I don't expect anyone to pay me up front. I want them to use the service, and if they like it do one or more of the following: 1) tell their friends 2) review it on social media 3) donate a few bucks 4) contribute to the code-base 5) make their own game that can run inside CTV.

What do you mean by "Shared Experience"?

Imagine you are chillin' on the couch with your family, streaming some video to the TV, when someone needs to go to the bathroom. You have to pause the show and wait until they are back so they don't miss anything.

With CTV, I want any device to be able to join a stream in-progress and auto-sync up with where the other devices are at. So you could grab your phone, join the same "channel", and go to the bathroom and not miss a beat. No pausing required.

This is most important for Gaming, as people will be able to use their phones like controllers for party-style games. (Read more in the Gaming section)

Why does it need to be Lightweight?

If it can run on a potato, then anyone can afford it.

I do all of my development and testing on a Raspberry Pi 3 to ensure I don't require too beefy of a server. Anything that can run Linux & PHP will work.

Wherever possible, each page in the site will be pure HTML/CSS/JS. PHP will only be used where absolutely necessary (like configuration changes that need to be written to the server).

This will, however, put more onus on the client-side. So devices will need to have enough memory to handle searching through a large amounts of JSON (depending on how big your libraries are). Most modern devices you would watch a video on won't have a problem with this. For weaker devices, they should still be able to "tune in" to a shared experience. They just have to have a browser that supports Web Sockets (really old phones/tablets may not work).

What does "Impermanent Storage" mean, and why does it matter?

Impermanent simply means you should be able to swap what media is available on your server.

Most people don't have a giant NAS with RAID to store a Terabyte of media. Most people have a bunch of DVDs and a bunch of Jump Drives where they could put some movies.

I want you to be able to throw a handful of movies on a drive, plug it in, and have it be available for streaming.

As far as the library goes, I want to display anything you've catalogued in the past as something you have access to, but you can always filter down to "currently streamable" if you want to see only the items on the flash drives you currently have connected.

Another use case is adult media. Maybe you've got a jump drive of all your rated R movies, and you leave it unplugged during the day when your kids are streaming to ensure they just can't access restricted content (obviously there will be parental controls as well, but sometimes we parents forget to log out of something, and kids use our device logged in as us).

What types of Media will you support?

Video, Music, Photos, Audio Books, eBooks, HTML Games, Flash SWFs, Emulation ROMs, as well as generic File Sharing like a NAS.

While not everything will be streamable (like your book library, if you haven't provided an eBook), we want everything to be searchable.

So think of CTV like your own local web server that includes movies, tv, music, books, games, etc. Anything you want, even recipes, contact info, jokes, or software installers.

It also should serve as a library for those pieces of media EVEN IF they aren't currently streamable.

For instance, I have a large book collection. I want to be able to browse and search my book selection to pick the next one I'm going to read. CTV should be able to scrape titles, images, and metadata for me.

Why don't you want an App?

Apps are bad for a few reasons. First of all, it limits the types of devices that can connect to your server, whereas nearly any smart device has a web browser.

Secondly, apps are black boxes where you have to trust that they aren't tracking you in ways you don't like. You can't just dip your fingers into their settings and disable them from phoning home, for instance.

Lastly, apps are just 1 more attack vector for hackers. That's not to say that a web browser has never been hacked, but that you likely have a web browser on all your smart devices any way, so by limiting the number of apps required, it limits the number of attack vectors.

While I don't want to force app use, I do want to organize things so that KODI could be used to view the media on the site. It would be totally optional, but there are smart TVs that struggle with web browsers, yet have solid KODI apps. So I always want that to be an option.

How can it work offline?

How can't it, is the better question ;)

We've reached an age where internet connection is implicit. This comes with many downsides. First of all, it makes developers lazy. They can pull in libraries or files on the fly any time they need them, which in turn makes them rely on too broad a set of libraries. It also means that your server is less secure because hackers may be able to ping it and your server is only as strong as the weakest included library.

CTV will require internet on its initial setup ONLY IF you haven't already provided the required libraries (which will be an explicit and very finite list. Basically just PHP and Curl).

CTV will require internet any time you want to scrape metadata (though alternate methods will be provided so that you could scrape on another machine and upload to CTV, or you could just manually enter the metadata and upload photos yourself).

Because of its Dual Use nature, it doesn't even need LAN (though far more features will be disabled without LAN, like simultaneous viewing, gaming through your phone, remote control through your phone, etc...)

How does it work as a Set Top Box?

Most people will likely use a tiny computer like a Raspberry Pi, put it near their router, and access CTV via Network.

But, suppose you don't have a smart TV (or one with a Browser). Then you are better off putting the Pi by your TV, connecting with HDMI, and just wirelessly connecting to your network. That way your TV has direct access to the server via HDMI cord. It can then serve as the shared main screen, and anyone wanting to connect to it can do so with their smart device.

What sorts of Games are we talking about?

This is NOT like a Steam link. We will not be streaming from your PC.

But, there are a few types of games it will be able to stream: HTML Games, ROMs, & SWFs.

HTML Games via Web Sockets will be the primary goal. Think of games like Jackbox or Rifftrax, though initially we'll shoot for simpler party games like Bingo or Hangman. Games where there is a shared element on screen, possible private elements on your phone, and multiple players inputting through their phone.

ROMs will be streamable through open source JS libraries. It won't be able to do the latest and greatest, because JS is slower language, but it should be able to handle the first few generations of consoles.

Flash SWFs, what is this, the mid 2000s? Sure, you may never use this feature, but some of us squirreled away quite the library of SWF games back in the day, and we'd like to take a stroll down nostalgia lane every now and then. Ruffle allows you to emulate what you used to be able to do with Adobe Flash. It won't work on every SWF, but has a good level of support. As they improve, you could overwrite the older version of Ruffle that will be included in the CTV code base.