My First Interaction with LBRY
Earlier this week, a friend of mine on Facebook posted this article: “20,000 Worldclass University Lectures Made Illegal, So We Irrevocably Mirrored Them“. The article describes how some UC Berkeley lectures were deleted from YouTube over a lawsuit. In response, this organization called LBRY, downloaded the lectures, mirrored them and uploaded them to their distributed network. As such, no one entity has complete claim over the content and therefore the content can not be deleted. As far as I can tell, LBRY is a cross between Napster and Bitcoin. In any case, it seemed like an interesting technology to test out, and a good opportunity to learn something new. So, while preparing a backup as part of a domain transfer requested by a client, I decided to give it a try.
To begin, I started following the tutorial on the LBRY website. Interacting with LBRY required the use of cURL, a very basic way of interacting with web pages and APIs, in which a user can request data and the URL responds with a JSON object containing the requested data. So I downloaded a Windows version of cURL and got it running on my machine.
The tutorial first suggests you attempt to download their introductory video, the same one they have on their website. I began by copying and pasting directly from the website into my command prompt:
But I didn’t get the response I expected:
This went on for a bit until I figured out that (at least in Windows, I guess) cURL wanted double quotes around the JSON request and to have every double quote inside the JSON to be escaped with a backslash. Once that was ironed out, making requests to the LBRY protocol was smooth sailing. Although, the first few times requested for the informational video, the protocol responded that he video was unavailable, or something to that extent.
The next challenge was to upload some content to LBRY. This is where the directions need some updating. If you just copy and paste what the instructions say to send as a request to upload your content, it will fail. This is because uploaded content requires a lot of metadata, and the documentation doesn’t say anything about this. Anyway, by carefully reading the error messages, I figured out which additional parameters I needed to add. Here is my final request for uploading content:
I then tested it by requesting the content I uploaded:
And it worked! The file I requested appeared in my downloads folder. For going through all of this, I received 250 LBC (their “Bitcoin equivalent”), which might be worth a few dollars, at most. I had to spend a little bit more than one LBC to upload my content.
This is a great way of distributing content in a decentralized way. It also begins to establish a market to compensate creators for their work and rewarding hosters for participating in the network. This is because when uploading content, you set a price for others to access or download that content (go download a picture of me for 1 LBC). Uploading content costs a small amount, but this is an investment in the sustainability of the network.
LBRY is working on a GUI, which would greatly increase the usability levels of this tool. As with other things I have mentioned, these types of things need a critical mass so that they catch on. Is LBRY a contender against YouTube today? No, but neither is Bitcoin against real currency. But good press, like the article that started off this post, will help LBRY make it into the mainstream. All it will take is a superstar to post their newest album or new book to the protocol and things will take of from there. This needs to happen before negative press takes over, for example inappropriate or illegal content, often the first things that take advantage of spaces like this.
This was also my first time using cURL to accomplish a task. I know the cURL is critical to developing apps that take advantage of APIs from companies like Twitter and Facebook. Now that I know the basics, I think I’m one step closer to figuring out oAuth. Look for a post on that in the future.
I look forward to a future of decentralized, fairly priced content.