I have been working on an implementation of Steem communities similar to as stated in the 2017 roadmap:
Feature: Moderation and Community Namespaces
We believe that high-quality content and communities of content producers and their audiences are the primary driver of growth of the steemit.com site, and in turn the wider adoption of the platform and STEEM. To this end, we wish to enable many users to build communities in parallel around curating specific types of content valuable to their audiences.
To enable this, we intend to augment our current tag-based organizational structure for posts with a new system called “communities”, a special group into which others can post articles. Two types of communities will exist: communities into which anyone in the world can post (where community founders (or their delegated moderators) can decide, post-hoc, which posts to hide from view) or communities in which only community founders’ (or their delegated authors’) posts will appear.
This system of moderation will function identically to the aforementioned comment moderation system, with all content (including hidden or moderated content) published permanently in the blockchain to prevent censorship. The steemit.com web site will respect the display preferences of the specific community maintainers (within their own community namespace only) while simultaneously propagating every participant’s voice throughout the blockchain to the entire world (regardless of moderator opinions).
We believe this unique approach finally solves one of the largest problems currently presented to social media services: the dichotomy between maintaining a high Signal-toNoise Ratio (SNR) for a quality content experience free of spam and low-value comments, whilst simultaneously preventing any type of censorship.
It is our hope and design goal for our services (all of which are published with full source code for easy deployment by anyone) to be replicated by others, displaying content according to the wishes and whims of each individual website operator, giving readers ultimate choice over the set of moderation opinions they wish to heed. steemit.com 9 of 22 Finally, a set of to-be-determined cosmetic features of a community’s profile page will be configurable by the community maintainer(s), to engender a feeling of ownership and control over the namespace.
This feature has been nearly ignored by Steemit Inc and has been delayed for over a year from its target in Q3 2017. Instead of waiting for Steemit Inc to implement this feature, which I gather by conversations with @ned will take an absolute, absolute minimum of 4 months or, in Steemit Inc time, another year or more, I have been working on implementing communities on top of Steem independently.
“On top of Steem”?
Communities runs on a layer above Steem in the sense that Steem nodes won’t actually compute communities data, but the transactions will still be stored on the blockchain. This allows for features such as tokens (see DLUX, hashkings, steem engine) and communities to be added on Steem without actually changing the node. More info can be found here in a post explaining how this will actually work.
The communities feature is part of a wider initiative/DApp called Stratos. In the future Stratos is planned to have features such as token creation and links between blockchains to other networks such as EOS or Tron, all implemented on a layer/sidechain on top of Steem. You can read more about how Stratos works here, note that this was before the rebrand from Engine to Stratos.
The Stratos DApp will launch with only one feature - communities. Communities will have the ability to be open or restricted, and have advanced administration features including 4 different ranks able to be granted to different members, each having different positions. Currently communities are at the MVP stage - the development is done (nearly, there is one change currently in testing) for the base version and I am in conversations with an interface about integrating communities into their interface. The communities project will evolve to meet the interface’s needs, so that it will be able to be integrated into any other interface easily.