The Tragedy of the Steem Commons

in #steem6 years ago
I love seeing the rise of Steem development, but this summer we've seen a rash of developers encroaching on the common functions of the blockchain, and it's reached a point where I have a little rant coming. If you're building something, please make some effort to remember that other people are also using Steem for other things.

Steem voters will vote on Steem.

This one seems like it's pretty obvious, but we've now seen two big developers with Steem Inc. support fail it completely. The first was @steemhunt, who came to the platform with the idea that of course they could just use the Steem voting system for their own purposes:

The daily ranking system will be applied by the Steemit upvoting system. The rank will be organized by the pending payout values on a daily basis.

As I'm sure was a total surprise, as SteemHunt grew, that didn't work very well, and SteemHunt responded in pretty much exactly the wrong way - they decided to define people using the parent system they were piggybacking off of in ways the didn't like as abuse. Any votes on a post for any reason other than Steemhunt were considered to be improper, when in fact it was SteemHunt that was acting improperly by trying to co-opt the Steem voting system for their own purposes, and firewall off any SteemHunt-related post from the general voters.

Of course this didn't work at all, and SteemHunt slowly, but eventually came to that conclusion.

the stake-weighted voting system is failing because top hunting posts are occupied by upvoting from bid bots, subscription bots, curation tails and self-voting, which is irrelevant to the hunting quality.

They still had no interest in admitting that this was their own fault rather than blaming users who were just using Steem without considering SteemHunt, as is our right, but at least they fixed the problem by developing a separate voting system on their own platform.

Now we're seeing this again with @tasteem, who apparently didn't watch SteemHunt and learn that lesson:

Every user should strive for a fair competition. The usage of upvoting bots is not allowed.

Of course what this means is that users of upvote bots who are good at hiding it have an advantage. But even more so, it means that Tasteem has built a second layer of rules over the Steem rules, and is trying to enforce it on everyone on Steem, not just Tasteem users.

It also means those of us with significant autovoting support just can't participate - I'd be happy to not buy votes on Tasteem posts, but I have a hundred people who are automatically voting me for their own reasons, and their method of counting support either makes that unfair to anyone who doesn't, or labels me an abuser for those voters' choices. That's a no-win situation, and it's one caused by Tasteem trying to get information from the Steem voting system that it doesn't contain.

In the end, Steem users need to be able to vote on what they want for the reasons they want. Because we're going to. If that doesn't support the information you're trying to get, then you should be trying to get that information from something other than the Steem voting system, as SteemHunt eventually figured out and no doubt Tasteem will have to.

Steem posts should conform to the standards of Steem posts.

There's a lot of flexibility built into Steem, and that's great, but there are some universal characteristics of the Post class, and developers should be following them. The big violator here right now is @musing, which among other things doesn't use the standard format for tags. They don't have empty tags, they just don't have tags at all, which means that any program that goes through posts looking for tags errors out when it encounters a Musing post. (It looks like their posts have a tag because they use the "appTags" format to list their category. But this isn't how any other Steem tags work.)

A Steem root post that comes from Musing is still a Steem post, and it should have the values we expect to find in Steem posts made by other methods. As far as I know literally every other Steem post has tags, and people use that fact to do analysis and interact with the blockchain as a whole. Creating posts without tags throws a wrench into everyone else's work for no reason.

A Steem post needs to look like a Steem post to code as well as to people. If you're constructing Steem posts you need to make the effort to do that right, especially if you're a Steem Inc.-supported service.

We're all using this blockchain.

I get that developers have their own priorities. But using the resource that belongs to all of us without regard for the way anyone else is using it is antisocial and counterproductive. I don't know if we need a standards organization, or what. But without some way of encouraging developers not to overgraze the commons the base layer of the blockchain will eventually accumulate enough barnacles to be unusable.

(Not to mention the mass detritus of mixed metaphors.)

Sort:  

Yes, you are quite right. I tried out Steemhunt but found the way they f'ed around with the Steem voting system quite annoying.
It was just proof to me that while the Steem weighted voting system isn't perfect, account based voting is much worse.
With all the extra layers that have to be added to to prevent what they call abuse, its just not attractive to the casual user.

puts a balm on the rash
chisels off a barnacle from the post
You were saying?

Yeah, it does seem like there needs to be something to communicate these kinds of things. It was already jarring enough when the first apps like zappl and steepshot were (and still are) polluting feeds without any options. It's why musing was the first one I really liked, that allowed (optional) for disjoint interactions, and has the most flexibility for doing whatever they want without affecting other parts of the ecosystem.

No, no, the barnacles are the ones with the rash.

I do like the decision by Musing to switch to structuring things as comments by default, and SteemHunt moving to their own voting system. I just wish they would figure that out before they launch it the wrong way.

I don't know how to cope with dApps that just want to make minimal posts, though. It seems like either posts should remain the basic structure and we should get a front-end for blogging that filters them out, or we need a major structure update. The comment hack doesn't work all that well.

Technically all posts are comments but what we call "posts" are comments without a parent author. Also funny enough the parent permlink field in a post creation transaction on the blockchain is hijacked to be used as the root tag which in my opinion is a little dirty. For the uninitiated here is a root post transaction and here is a comment on it.

The observation is to say that we already have quite a bit of by-convention interpretation done by frontends, with the precedent set by steemit.com. At this point new frontends and dApps need to just deal with this.

So I totally agree with preserving backwards (or sideways?) compatibility. If we think of Steem social media posts as the basic container format, with expectations of some level of social offering, legibility and so on, then dApps need to extend that format, not substitute it.

How to do that though is going to be a challenge to dApp operators but it should be something they are up to to make a successful dApp. You are just reading the writing on the wall here - dApps that don't recognize what you've said end up annoying the vast number of their users, and their non-users but those other Steem users they need to take into account.

Idea for a next post: how dApp owners can actually solve some these issues.

Idea for a next post: how dApp owners can actually solve some these issues.

I might make an "everything that goes into a well-formed post" post at some point but I don't totally understand it myself yet. Right now I'm just reading and analyzing posts; one of my projects for this week is learning how to construct them.

As for the issue of trying to force non-present information out of voting, I think the SteemHunt method of building your own independent system is really the only functional one right now. Maybe eventually enough dApps can agree on what they want that the can collectively make an SMT when they're available.

Yeah. I was imagining that dapps only pay attention to their own content. That would make the most sense :P. I think maybe hivemind can easily handle such filters?

It's going to be interesting to see what use people make of Hive once it's more clearly available. The docs suggest that it does a lot of things I'd love to have, but at some point it's going to have to be put into practice. I don't understand the weird soft-launch thing.

The easiest thing to solve this issue would be to define your own operation on the blockchain similar to the resteem (which I don't believe is native to the blockchain, but is a custom JSON operation). I would imagine most interfaces would simply ignore these operations.

Also there is Markdown that can be used to hide information from users on these blockchains but still display non-marked information so you could supplement content in that way if you wanted to develop a pseudo-scripting language from Markdown's invisible ink. Although option one is definitely more practical.

As for deriving a new voting mechanism, you are right in that it isn't really going to happen using the current infrastructure. Developers are going to have to be more creative than that. Although, I'm sure you could figure some roundabout way using option one listed above.

Just some thoughts from someone who has played around with the blockchain API.

The easiest thing to solve this issue would be to define your own operation on the blockchain similar to the resteem

See: the Steem Monsters market.

I figured that's what they would be doing. More developers should try it out though.

Agreed. @tcpolymath, not sure why you didn't engage with this legitimate point.

I didn't have anything to say beyond "yeah."

I find it amazing that steem developers do not understand the vote system, or that a person's vote is their vote to do with as they see fit, not as the developers see fit. If they make a system and they do not want auto voters, or bot voters then they should code their system to not allow those post. People are allowed to vote, to buy votes, to sell votes and to not vote, they can even buy a down vote from a few people.

If the app-developers don't like the way it works they can always try to but the top 20 witness spots and then suggest steem make whatever changes they want.

I didn't even think about one of these getting caught up in a downvote war. That would really be a challenge.

I did not mean to imply they may face that, just that now along with buying upvotes through bots, there are people that offer down votes via bot. The people that develop programs to use the chain, need to understand just how the vote system works. it's not like it is secret or anything, anyone can look and see how votes are being bought sold and used. Any single program that wants to say hey you can't do that, well their in for a rude reality wakening.

To listen to the audio version of this article click on the play image.

Brought to you by @tts. If you find it useful please consider upvoting this reply.

You got a 41.51% upvote from @ocdb courtesy of @tcpolymath!

Coin Marketplace

STEEM 0.28
TRX 0.13
JST 0.032
BTC 61060.27
ETH 2927.58
USDT 1.00
SBD 3.55