Closed MirceaKitsune closed 5 years ago
Epic proposal, thanks!! I have nothing to say here, can only speak as an enduser, in the search for an alternative to youtube and their censorship: I checked the technology a bit, loved its decentralized architecture, wanted to register - and was absolutely appalled: WTF, they want my personal mobile number?!?
I mean: Cannot censor content is only one part of a free Internet. Traceability is another.
Hope this proposal is accepted...
Interacting with videos: Since each provider has its own account database and reward rules, you can only preform account specific actions on a video if you are logged into an account for the storage service of that video.
Actually I believe we could go further than that, and post on all networks even if the user is only registered on one, I can talk more about that in private if you like.
Other features of DTube would remain agnostic to storage providers
Yes and no. For centralized services like the search we could obviously build something that combines all the blockchains into one search easily. But for decentralized things like the trending page it's more complicated. If we want to keep it decentralized, an instinctive solution would be to fetch all the market prices for supported blockchains, and all independant trending pages, to combine them up and rerank them with the reddit algorithm. So it would end up slowing down the loading time of the website a lot, especially on weak internet connections (N calls instead of 1).
The best implementation for would be having common functions throughout DTube for actions such as uploading, liking / disliking videos and comments, commenting, etc. Those action functions then pipe the request into the API of the hosting service of choice.
Have a look at the broadcast.js file. It's basically already doing what you want it to do. Had to do it already because transacting with STEEM directly or with steem connect is different (see for follow / unfollow code for example).
they may be free and open by comparison, but they're still a partly central service where the admins make the rules.
The STEEM blockchain is pretty free. It's open sourced under MIT, and even though it's technically only 20 machines running the network (active miners), but anyone can use his stake to vote for witnesses and change those up. All the SteemIt Inc. company can do, is suggest new code for the blockchain to witnesses, and as long as 17 witnesses out of the top 20 don't use the new code on their nodes, hard forks don't happen. It's not centralized. What is centralized is the free account faucet that they provide, the one where they ask for your phone number. You don't even need it to get an account.
An added advantage to supporting any provider is that this may stimulate better adoption of DTube as a whole; Different providers can offer accounts with their own features, and can compete for finding the best functionalities and reward systems.
I agree 100%. If you read my blog posts on steem sometimes you will know I am pretty unhappy with the current blockchain level mechanisms. I don't think the current rules are working well.
As far as I am aware, there is no available network doing what STEEM does currently, apart from Golos, which is a direct fork of STEEM and targetted at russian users, so not really interesting for us. It doesn't provide anything new and is less popular.
I guess this proposal ends up to showing me a second compatible 'provider', which:
Then depending on the pros/cons we can choose whether it's worth adding or not.
I'd first like to reiterate that I'm not proposing this out of any dislike toward STEEM: I am indeed weary of some of their blockchain rules, which is admittedly a part of why I proposed this. I still think that STEEM have a good idea at their core and are a great default system to stick with! I simply believe they shouldn't be the one and only system available for DTube, and see DTube as having the potential of becoming a more common solution by supporting multiple database systems which can work together to provide an unified experience whenever possible.
One option would be to provide a repository containing our own fork of the STEEM blockchain, which people can easily extract and execute on their machines, adjusting the settings to suit the rules of the blockchain to their and their users needs. Any copy of the d.tube website can then add any blockchain to a list (defaulting to only steem.it as per current) each entry allowing its users to register to one or more chains as they please.
You can already point to your own copy of the blockchain by changing a setting from steem.it to your desired URL, which is a great start! The most important change I'm proposing is multi-account support, combined with pooling video lists from all copies of STEEM that a d.tube instance is configured to run against. Additionally I'd suggest having our own "setup your own STEEM blockchain" toolkit, hosted in its own repository like the IPFS uploader project.
I've been pondering an interesting idea during the past couple of hours and wanted to share it with you all. This article will be a little long since I wanted to explain everything in detail. Although I'm proposing a major chance, I think this is something DTube can easily implement at this early stage, and believe the idea is at least worth considering and debating. Please let me know if you agree and what your thoughts are.
My proposal pertains to making storage providers customizable, compared to having only one provider which is STEEM. DTube could achieve this by providing a generic API for similar account and storage services to interface with, which would allow using their own storage mechanism with its functionality rules and cryptocurrency rewards. STEEM can remain the default provider and nothing would change for new and existing users... the only difference would be that other providers can exist as well and manage your video / account data. DTube would essentially act as a nexus point, offering an interface for any platform similar to STEEM which provides an API compatible with the site's functions.
I wish to make it clear that I have nothing against STEEM: They're one of the many decentralized platforms helping keep the internet free, while allowing people to earn revenue by using an original and inventive system. At the same time, I'm also questioning a lot of the aspects of how STEEM works, which I do not believe to be reliable in the long run. My most important points on the matter are the following:
Even if STEEM is a blockchain and decentralized in theory, you still rely on its owners creating and approving accounts for users, which requires SMS verification and a +1 week wait period. I don't see why the STEEM administration couldn't one day be pressured to prevent people from joining thus becoming a point of censorship... also if they manually approve accounts before they can be active, who's to say they can't also terminate existing accounts later on? Their account registration and management procedure doesn't feel in the spirit of the free and decentralized web to me.
The second issue is its reliance on payments for using even simple features. You need money to even sign up on the service, which STEEM may later ask users to pay themselves essentially turning the platform into a pay-to-join service. Once you do have an account, STEEM cryptocurrency also influences every aspect of how you can use the site... including your very ability to like / comment on content, and from what I understand even your available bandwidth (people complained about videos not loading because they offered too many likes and ran out of "steem power"). While this system has some upsides in motivating users to be proactive, I find the payment dependent approach highly questionable.
DTube is not STEEM. It's possible that someday, we may wish to take different decisions from what STEEM does. If DTube relies on STEEM exclusively for storage, it and its creators alike will remain remain stuck in its shadow instead of having the opportunity to take their own decisions. I believe DTube can be more than just a video interface for STEEM.
The idea is simple: Instead of having STEEM as the one and only storage provider of DTube, let DTube offer an interface on top of which any other provider can offer an API to store upload / comment / like data. Below is a brief summary of how I envision each DTube component working under a multi-provider system. For simplicity, let's assume I developed my own blockchain called MyChain and want it to be an alternative to STEEM for DTube. Eventually there can be even more than just two options, however I'll use only STEEM and MyChain to exemplify.
Let's first talk about account management: Under this system, DTube would provide you with a list of supported services, allowing you to sign into an account for each one independently. So when clicking your avatar in the upper-right corner of the web page, you would see two sections: "Connect to your STEEM account" and "Connect to your MyChain account". You can make and use an account on either or both, logging in and out of each one independently. Each would be its own DTube channel with its own videos.
Uploading: When trying to upload a video on DTube, you would be asked under which account / channel your video should appear. If you choose STEEM, your video will be uploaded to your STEEM based channel and subject to STEEM's rules for rewards... and if you choose MyChain, the video will be stored on its blockchain and subject to MyChain's rules.
Interacting with videos: Since each provider has its own account database and reward rules, you can only preform account specific actions on a video if you are logged into an account for the storage service of that video. For example: Let's say I'm logged into STEEM but not logged into my MyAccount as well. I just watched a STEEM video, which I liked and posted a comment on. Now I decide to click on a video from MyChain. I can watch that video just fine... however its page will tell me "please log into MyChain to comment" before I can comment and like.
Other features of DTube would remain agnostic to storage providers: You would still be able to search across both STEEM and MyChain with the results listing videos from both sources indiscriminately... the Recommended Videos tab can also recommend a video hosted on MyChain while watching a video hosted on STEEM (and vice versa). To better differentiate between platforms however, DTube should make it clear which provider a video is from, so you know on which you can also preform activities: Videos from STEEM accounts can have a STEEM icon in the lower-left corner of the video thumbnail, whereas videos from MyChain always have a MyChain logo.
Note that I only looked at the DTube source code briefly so my picture might be incomplete. I noticed that with STEEM, there is an API of the form steem.api.action. For instance: When you upload a video, there's a command of the form steem.api.upload_content(my_video).
The best implementation for would be having common functions throughout DTube for actions such as uploading, liking / disliking videos and comments, commenting, etc. Those action functions then pipe the request into the API of the hosting service of choice. In this case, steem.api.upload would be replaced with a dtube_upload function... this function then passes the request to either steem.api.upload or mychain.add_data_video (or whatever it were called) based on the service the video is from.
Some might argue that implementing support for other storage services is either redundant or more work than it's worth. I'm suggesting this for multiple reasons as I stated: One is that STEEM does have an overall strict functionality which I believe limits the freedom of using DTube. Another is that later on, someone might come up with similar services that offer even better features and rewards. STEEM is also a service of its own, technically classifying as a more decentralized Google / Facebook / Twitter... they may be free and open by comparison, but they're still a partly central service where the admins make the rules.
An added advantage to supporting any provider is that this may stimulate better adoption of DTube as a whole; Different providers can offer accounts with their own features, and can compete for finding the best functionalities and reward systems. One might come and say "if you make a DTube account with us, you'll get this amount of $ whenever someone likes your video" while another might say "our DTube users can automatically backup their videos to our storage website whatever.com"... the user can then pick whatever they feel is best for them.