Censorship-resistant SocialCastr going open source
Posted on August 17th, 2014 –
A couple of years ago I began work on a project named SocialCastr. In a nutshell, it’s a piece of software that enables you to broadcast (video/audio) to an unlimited audience over the internet from your computer or device. This differs from something like YouTube or LiveStream in that you don’t need such services to achieve this. There aren’t many services or software titles out there that do this, mostly because it’s kinda complicated, but also presumably because it’s hard to monetize something that is entirely in the users’ control.
Obviously, some people are fine with using third-party services to store and distribute their content. I often use them so I get it. However, as people are increasingly finding, censorship, the silencing of dissent and competition, and a lack of freedom are alive and well on all the major platforms out there. If you believe in individual freedoms, you’re unlikely to find them in the ranks of the media hosting mega-corps.
It’s probable that your cute cat videos, inane content, or asinine replies will be safe — it’s the really important stuff like speaking out against government abuse that might disappear in a digital puff smoke.
With SocialCastr I wanted to side-step some of these issues directly and it was clear to me that the best way to do so was to remove the third-party part of the equation. Luckily, my programming language of choice (ActionScript) has a robust networking system that allowed me to do exactly this.
Unlike something like YouTube where you upload (or stream) your video to them and they take care of distributing it to your audience, SocialCastr broadcasts directly to the audience. In other words, you are communicating directly with peers (audience), no YouTube or LiveStream to potentially block or censor you.
This approach was unthinkable just a few years ago; most computers, even with fast connections, could send video/audio streams to a few people at most. It’s not unlike uploading videos to YouTube — once you’re uploading two or three videos (or any data, really) at the same time, your internet connection is essentially “busy”. Sending video directly to two or three individuals over the internet would similarly clog your connection. YouTube has what in programming parlance is referred to as “fat pipes”, fast and powerful internet connections that can support millions of viewers simultaneously, something that is simply out of the reach of the vast majority of us.
SocialCastr does things differently.
When you broadcast, you only actually send your video/audio stream to two or three people at most. They in turn take care of re-distributing the stream to others using peer-to-peer networking. Your audience quite literally share the burden of re-distributing the content to other peers. Practically this means that you are able to broadcast to a potentially unlimited number of people with a pretty basic computer and equally basic internet connection.
Despite the fact that I have an ongoing wish-list of additional features, SocialCastr is complete so there’s a lot that can be done with the underlying technology along similar lines as above.
For example, distributing files á la BitTorrent is something I’ve (successfully) tested, and I’m not the only person to do so. Similarly, two-way peer-to-peer chat, including video and audio, are laughably easy to set up within SocialCastr.
Perhaps more interesting than this would be to use SocialCastr to anonymize web browsing much like Tor does — when you want to view a web page, a request goes out to all connected peers who make the request on your behalf. Just as with Tor, it’s the peers that actually get the data for you (encrypted, of course), and return it to you. Spreading a web page load over many peers, a request which typically requires tens or sometimes hundreds of requests to fully complete (i.e. all the images, ads, etc.), could potentially speed up retrieval of the web page in addition to helping you to stay anonymous.
I’ve even opined that it should be fairly straightforward to build a distributed computing platform of some sort. US Berkeley does exactly this when searching the heavens for signs of extra-terrestrial life this with their SETI@Home project, and many Bitcoin miners now work in similar cooperative groups to feed the cryptocurrency with its raw Bitcoin rainbow tables.
And did I mention that because it’s Adobe Flash / AIR, it’ll run on most computers, devices, and browsers currently in existence? PC, Mac, iOS, Android, Internet Explorer, Chrome, Firefox, Safari … the same code runs everywhere.
This is all very realistic and mostly tested, so it’s far from being merely speculative. Unfortunately, I just don’t have the time to make these ideas a full reality so I’ve decided that I’ll be open-sourcing SocialCastr very shortly (just as soon as I’ve cleaned up and commented the source code a bit, you know the drill).
So if you want to download the SocialCastr source code and compile it yourself (detailed instructions to be included), you don’t have to trust me or anyone else to produce the end software. You can fiddle with the code directly and change it in small or large ways in order to learn, or produce something unique, or whatever. If all you want to do is to slap your own logo on there and release (including sell) the software, be my guest!
What's on your mind?