DTube 0.2: Faster to serve videos, Stronger to resist censorship
First I need to thank each and every person who either upvoted, commented on my article, or used DTube since its launch. The number of reactions I gathered after posting my previous article on steemit.com, is simply staggering. The way this project was released, with the number of users we serve, and the total bandwidth we consumed in the first weeks, was a very good to test for DTube to see how far it can be taken. Thank you all.
Copyrighted and Extremist content
I really didn't want to blog about that, but we have all seen the copyrighted content posted on the blockchain recently, as well as more recently some 'far-right winged' political videos that are usually censored on YouTube. And many people have been asking about my stance on that privately.
For me, these two problems are the same. The community must deal with it. I cannot do anything to stop it myself, I don't control anything but the dtube.video domain. I'm sure STEEM is full of invested people who want the platform to succeed, and they know which contents serve our interests and which don't.
If the upvotes outweigh the downvotes, the video goes up and might be displayed in hot/trending. Otherwise, it ends at $0 and won't be stored. I believe any living thing is able to see good from wrong, and every STEEM account has at least 6 SP, so why not use it? If you think something shouldn't be on DTube or SteemIt, just downvote it!
I intentionally hadn't put any thought into this aspect of the project before launch. After getting the numbers and seeing what we can expect, it is obvious a platform like DTube can become a huge success in the future, and that many people will try to compete with DTube. DTube currently has 25% fees on videos (0% on comments), and it would be easy for someone to compete by simply lowering the fees on the upload.
I believe there is no winning strategy. Most existing video platforms (including porn websites) will be interested in what we are doing. They will eventually end up understanding and copying what we are doing. These companies have been in the video platform business for years, and they gathered a lot of information, did a lot of research, and they have competent staff that have been working with videos for a while. They have existing infrastructure, legal entities, and lawyers. If these people start competing with DTube, DTube won't be able to run as fast as them.
Hence the choice, of not turning DTube into a business. The 25% fees will cover the development costs, for a couple of months, then once the project is solid and we stop working on it, paying the fees will only remain as a defaulted option.
Money, staff, and community
The total earnings of @dtube can be seen at https://steemdb.com/app/dtube/earnings (built by @jesta). As you can see, we are averaging 200 SP per day. That is a lot of income and it is enough to find a competent second developer as well as a designer to help this project going faster. I am already in the process of interviewing and will pick wisely.
We also now have not one but two channels on steemit.chat, #dtube and dtube-promo. Anyone is welcomed. I also created a private discord for the 3rd party providers (@nannal, @thekyle), future staff, and a few content creators doing well on DTube.
Who needs a domain?
Hey @heimindanger, aren't you in some legal risks? Couldn't the domain be taken down just like thepiratebay.org ??
This isn't a real question, but I received the same one at least 20 times. TPB is a traditional website, with a back-end database. When this database gets unplugged, no more pirates. Here, a blockchain is our database, and you cannot unplug it that easily!
The domain is a concern. I could have to shut it down at one point if I receive a DMCA takedown. It already happened to a past website of mine, and there wasn't much to be done. That's bad. But, because there is always a but, DTube can easily be hosted anywhere. I could use GitHub pages, or even my Dropbox to serve DTube to the world. As we use IPFS on DTube already, it makes sense to go with IPNS (Interplanetary Naming System) that allows us to do this. Basically, DTube can be hosted on IPFS, and we don't really need a domain no more. Check it out at this ugly but functional link:
It took me a night of CPU power to find this hash ending with 'dtub'
You can consider this link as a mirror that will never die. However, I will keep the domain working for as long as I can. It's more convenient for everyone.
Now let me introduce the changes in 0.2:
When using the IPFS-hosted version, someone could easily make another IPFS-hosted website that looks for your keys. This is why the default behavior is no longer to automatically store your keys on login. You just need to check the 'remember me' option on the login page if you use DTube.video. When using the IPFS-hosted version, it is VERY MUCH NOT RECOMMENDED to use the 'Remember me' feature for your own security.
Also, I had to rewrite the router (the part of the application that chooses what to display, based on the address in the URL bar) for it to work on the IPFS-hosted version. That means all the links to DTube have changed. Boo-hoo. I'm sorry about that, it's something I totally missed before the release. All past links should redirect fine however it's better if you update the links when you can.
Instead of https://dtube.video/v/joeblack1/qye2e7br,
the link would now be https://dtube.video/#!/v/joeblack1/qye2e7br
App settings on the blockchain
Another very annoying thing with DTube was how I had to re-compile and re-minify the source code before putting it on the live website. A simple change of setting would take 5-10 minutes to get published on dtube.video.
Instead, the settings of the app are now controlled through the STEEM blockchain and are stored inside the JSON Metadata of the @dtube account. You can check it on steemd.com/@dtube (built by @roadscape)
Another big part of the past two weeks was to figure out the best way to tune the IPFS network to our needs. At launch, I thought it would be better to have files on every gateway for maximum availability, and that's why the gateway used was chosen randomly. I was so wrong. I realized that after a couple of days where videos were struggling to load.
Instead, an 'automatic' gateway is chosen for each file, depending on its hash. Basically, instead of loading the 50 snaps on the homepage from one single gateway, it will fetch 5-6 per gateway. I patched this two days ago and it's obviously working much better. @nannal is complaining much less about his bandwidth costs.
It's possible this behavior might make some videos 'never load'. Going to the settings and changing the gateway should still do the trick, just give it a bit of time as only @nannal stores the original file and the new gateway will need to download it fully before forwarding it to you.
Run IPFS on YOUR PC
Wait... did I say that only @nannal is storing the files? Not for too long... :)
Many people have been asking if they can help the network in any way. They now can! IPFS can run on any platform and is only a few MBs download. In order to facilitate the process, I have added a few scripts so that your IPFS node can easily be configured to work with DTube.
I zipped the current windows version of IPFS (4.10) with a script to easily configure the IPFS node to connect with the DTube app.
How to install IPFS for DTube
- Download IPFS 4.10 for Windows
- Unzip the zip anywhere
- Run the config.bat file
- Allow IPFS in the firewall (there should be a popup)
- Go through the config, it should ask you for the size you want to allocate to IPFS and pin your first file: the DTube app itself.
Feel free to make a shortcut to the dtube.bat file on your desktop, or even put it in the Startup folder of your windows PC, in order to seed video files through IPFS all day long :D
This part maybe works for Mac users, I did not test it
The IPFS executable in the zip will not work on your system. IPFS is easier on Linux. Just install 'go-ipfs' with your package manager, and then it's as easy as running this config.sh script file graciously made by @brandongiesing (and it's much cleaner than my .bat script)
Pin on upvote
Once successfully installed and connected to DTube in the 'Settings -> Local IPFS' menu, any video you upvote from DTube, will get pinned, i.e. downloaded to your hard drive, and seeded on the IPFS network. It's also a new way to show your support to your favorite content creators on STEEM. Not only you give them money, you also help them by reducing the chances of their file being forgotten by the internet.
Using local gateway (experimental)
When running IPFS on your PC, you can also try using '127.0.0.1:8080' aka the local gateway. What this theorically enables, is true peer to peer over DTube. You would download your video directly from another steemian who has upvoted it previously. Sounds pretty cool, right? Too bad it doesn't work really well.
1- It completly destroys the connection as anything you see on your screen gets seeded instantly. Maybe that won't be an issue for someone with more than 2Mb/sec.
2- Videos only start playing in the browser once the IPFS node has fully downloaded it. So let's say someone uploaded a 2-hour long video, you will need to wait 20 minutes to start watching it. Terrible for the user experience.
These two reasons alone are enough to not make the local gateway the default one for people running IPFS. I hope we can change this in the future. True peer-to-peer streaming without gateways would be the best, and I think we are close to it.
Using local API for upload
If you are running IPFS, you will also now be able to upload directly to your IPFS node. The uploads will look instant, but will in reality happen after, when someone tries to watch your video. Just keep your IPFS node running and this should be perfectly fine. If your PC has to go down and you are afraid that some of your files might be unavailable, just use the normal upload ;)
- All avatar pictures should now load from steemitimages.com
- Fixed search suggestions bug
- Limited max snap file size
- Displaying video bitrate in upload page
- Slightly changed the way DTube videos are shown on steemit.com (with now a direct link to the IPFS video)
Last two weeks were still not holidays. I guess I won't have any this summer. As you can see a bunch of work was done, and it was mostly focused on optimization of the IPFS network and security. I don't think we will see as many bandwidth-related problems like we have seen in the first week with videos completely failing to load or loading very slowly. I wish I could provide an update with more 'eye-candy' features, but priorities are priorities.
Don't hesitate to comment with your bugs/problems, feedback is always appreciated. Also remember about the #dtube channel on steemit.chat if you are looking for help or want to socialize with other video creators on STEEM.