Hello !
In the coming month (or a bit more depending how testing goes), a new stable release of hivemind will be released containing a communities update. I believe this is the first major update at the feature apart from bugfixes here and there.
This post is both intended as a technical guide for front ends and Dapps but also as an explainers for users.
with this update, you will be able to specify a community type.
A community type defines how users can interact in the community:
Right now all communities are type 1, aka a Topic In a topic community, anyone can post or comment.
We are introducing two new community types:
The goal is for us to empower community owners to fine tune who can post or comment in a hands-off fashion. This enables them to create paid communities, enforce quality by vetting quality writers or whatever else you may find interesting ! The power is in your hands.
Everything works with the same custom_json api meaning that it's easy to integrate in your app calls to leverage this functionality (eg: if you hold X NFT you will be a member, but if you sell the NFT you are no longer part of the community)
We wouldn't be a censorship resistant blockchain if hivemind would simply stop posts from going through because they were posted in a community where they weren't a member. Instead if you try to post to a community where you shouldn't, your post will simply be muted. and therefore hidden from most front ends, similar to the muted role or if a moderator were to hide your post/comment.
Previously a community had this format:
hive-123456
The rule being that the first digit has to be 1, this is because the first digit defines the community type, so effectively if you create an account named hive-222222 it will be type 2, and in the same way, if you create an account that starts with a 3 eg: hive-322222 it will be type 3.
"But what if I already have a community ?" I hear you ask, don't worry it's possible to update your community type at any time. Doing so requires you to have the role admin or owner
Updating works in the same way as updating any other community properties (eg: title, about etc).
Here's an example where I update the type from the community type hive-111111 to 3:
{
"required_auths": [],
"required_posting_auths": [
"hive-111111"
],
"id": "community",
"json": "[\"updateProps\",{\"community\":\"hive-111111\",\"props\":{\"type_id\":3}}]"
}
You can change as many times as you want without any time limit.
If you can change the type of a community, this means that you can't trust the first digit to get the community type. If you want to get the type of a community, you will get it in the properties when executing any get command. This feature is actually already live, eg:
curl 'https://api.deathwing.me/' --compressed -X POST --data-raw '{"id":5,"jsonrpc":"2.0","method":"bridge.get_community","params":{"name":"hive-163772","observer":"howo"}}'
{
"id": 5,
"jsonrpc": "2.0",
"result": {
"about": "The Hive travel community",
"avatar_url": "",
......
"title": "Pinmapple",
"type_id": 1
}
}
You'll notice the type_id prop set to 1.
Hivemind will validate (and mute) as of the time of posting and won't go back in time to change the value of old posts.
So if a community is type 3 (only members can post or comment), and a member that had posts and comments in the communities loses his membership his future posts/comments will be muted but his previous posts/comments will remain visible.
Same goes for changes in the community type. If you change you community from type 1 (everyone can post and comment) to type 2 (only members can post). All the previous posts will remain visible regardless of the membership status of the posters.
This means you can start as an open community and then as you grow bigger enable tighter controls to enable monetization etc without changing the way the community was.
That's all for me, If you have any questions feel free to ask them below !