I've been making posts here for over a year. I've seen things come, and things go. I've also I hope learned a lot. I have spent a lot of time thinking about decentralization and keeping our information from being lost due to censorship. That is one of many attractive things about using the steem blockchain.
This post is something I was thinking about sharing with the community based upon observation and thinking about decentralization. I have also been considering data storage and other factors.
This post will be partially a tutorial for those of you that do not know these techniques, and it will be hopefully some food for thought for those of you that are already very comfortable posting on steemit, busy, chainbb, etc.
For those of you only vaguely aware of what the term decentralization means, it means essentially "Not putting all of your eggs in one basket" as the saying goes. It is spreading copies of the information into many different places so if one place, or several places go down there is always a copy somewhere else. We could view our project here like a beautiful feathery rainbow frilled hydra, with dormant heads sleeping on the ground. If the government, a competitor, or anyone lops off one of the heads then one of the dormant heads (here known as witnesses) will wake from its slumber and assume a position as an active head. Meanwhile if needed other people can deploy new heads.
In theory this prevents people from destroying it, censoring it, etc. This is one of the main reasons we embrace this concept.
It is important to keep in mind that when comparing steem to existing technologies that you are comparing a decentralized place to centralized places. What can be easy when centralized can often be trickier when decentralized. Furthermore, people can say "Facebook can do this, why can't we?" and in some cases that is true only because facebook is centralized. So if we were to copy them we would be adding centralization and weakness into steem. Some things have to be re-conceptualized into a decentralized representation of a concept. This is a lot more complex. Basically, in some cases due to being decentralized we do in fact need to reinvent the wheel.
The blockchain primarily stores text data in the blocks. As we write text we are creating more and more data that needs to be preserved by the witnesses. The longer the blockchain runs the larger this becomes. If we want to insure the data is copied and resilient to attack and take down then this is currently a requirement.
Things such as images, video, and sound take up A LOT more space than text. Embedding this information in our witnesses blocks they must backup would become a vastly expensive undertaking for them fairly quickly.
All of these things are actually for the most part centralized elements of your posts. This appears to be true even if you are using steemit's built in image support. This is important to know if decentralization is important to you.
Where you get this other media from can potentially be censored. Keep this in mind.
Also keep in mind it is expensive to store these things. So if you are using steemit images for your images you should consider some tricks to make it work the same but not be as costly to host for those providing the image storage. Think of the community when you can.
Centralized Aspects of Steem Posts
Every post on the steem blockchain at the moment that includes any media other than text currently has centralized elements. This means if the site where your elements are at is taken down, censored, etc that this portion of your post will be gone.
If you've been around long enough you've likely seen when steemimages went down before and most of the images on the site vanished for a few minutes and posts were just text with broken image icons all over the place. In these cases the thumbnails for the indexes were mostly gone.
There would be an occasional image that was still there. When these were looked at this was due to the image actually being somewhere other than steemimages and those sites were still up.
Keep this in mind when working with videos. I use an occasional youtube video, and I have had a few of my older posts become worthless when youtube decided to censor the videos. This is the danger of using centralized services.
Giving your post some resilience
If the message you have is critical and you need all of the media preserved here are some things I thought about recently.
Consider having your images on both steemitimages and perhaps on one or more other sites like imgur.com. You could have the backup image just as a hyperlink if you prefer so it doesn't show twice (I will show how to do this) or you could opt to show the image twice. The advantage here is that more than one site would need to go down for your images that might be critical to your post to disappear. This would not help with the thumbnail since that always pulls from the first image in your post, but it would help to make sure when people actually look at your post the images you think are important are there.
Consider putting your videos on both youtube and vimeo which both can be embedded in posts here. As other sources become available they will be options as well. This way if youtube decides to censor your video the vimeo one might still be up and running. We can keep an eye on things like vid.me, view.ly, and bitchute and hopefully have more opportunities for video embedding in the future.
I haven't seen any sound places like sound cloud and such really working well for embedded content on steemit yet. Perhaps they will be in the future. Until they do, I recommend using youtube, or vimeo for your music rather than requiring people to leave steemit in order to listen to your music. I suspect having to leave steemit will discourage some people and they may not bother listening. If you want more people to listen, find a way to keep it in the post.
Techniques for images
I tend to use HTML rather than markdown for my images. I have found there are places where markdown sometimes fails. Embedding markdown inside of a table, or a list for example often breaks. I therefore have a tendency to use HTML for a lot of things I do. I am by no means an expert and there are things I've seen people do that I've said to myself "I need to see how they do that", but I can share with you some things that I do know.
I am going to show you TWO ways this image can be represented inside of your post:
This is the steemimages.com way that steemit uses. It defaults to markdown.
This same image can be referenced using html as follows:
You may be wondering why I am telling you this. It is because I noticed a few things. A) I noticed that our images are increasingly centralized and this can be a vulnerability to censorship of part of a post. I assumed people might not know this and would appreciate being informed about it. B) One of the techniques people can use can cause the people that host steemitimages.com to end up storing a lot more data than they need to if we just help them a bit.
If you copy and image that is already on steemitimages.com (even if it is someone else's post) and paste it into your post. That uploads a completely new COPY of the same image to steemitimages.com. It thus takes twice as much space to store this. If something is really popular and this is done frequently then a single image could end up being stored many times over.
So if you are using an image that is already on a steemit post consider right clicking on it and choosing COPY IMAGE LOCATION, or something similar to that depending upon which browser you are using.
Then paste that URL into your img src= HTML or the markdown if you prefer. This way you are still showing that image all over the place but the storage requirements are only for a single image. Is this required? Not at all. Yet it is considerate when thinking of long term storage requirements to support our community.
I've learned some things about using these links. Let me show you what my footer looks like at the bottom of each of my posts when I copy it.
Notice there is an extra https://steemitimages.com/0x0/ at the beginning of the URL and then there seems to be an extra URL? This is something steemit seems to do when grabbing images from posts. It prepends https://steemitimages.com/0x0/ before the image link you copied. You can actually delete that extra part if you want, it will not matter in terms of what the people see, but it does reduce extra characters in the URL in the text of the blockchain block. This can easily just be an OCD issue and it is not critical that you do it.
Decentralization can be a very new style of thinking. It is easy to try to compare what we do in a decentralized environment to the normal centralized environments that are virtually everywhere else. We can fall victim to thinking that just because it worked in other places that it is easy to do here. That is not always true. We can actually expose our steem community to vulnerabilities if we become reliant on centralized services for anything critical.
This means when we are using centralized services out of necessity that we also should keep in mind that they are centralized and if the media beyond the text is also critical to preserve then we likely want our post to reference that same media at multiple sites rather than just one. Consider this you taking the extra steps to decentralize the content of your own post.
Furthermore, I went over some techniques for reducing image storage space for those that are storing images for us and part of our community. While it is not a requirement, it is considerate, and it does make storage take longer to be an issue for them in the future.
Thank you for your time and consideration for reading this post.