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.
New communities types
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:
- Communities type 2, aka journal where everyone can comment but only members can post.
- Communities type 3, aka council where only members can comment or post.
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)
Communities type are enforced through mutes
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.
How to create a community with a different type
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.
Updating your existing community
"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.
Types API
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
.
Changes are not retroactive
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 !