Groups on Near.org #342
-
ContextThis document serves to come to an agreement on a specification for a new "Groups" experience on near.org designed to allow people to create and discover communities around specific topics, interests, projects, governance, etc. We need
SummaryWe can leverage the NearSocial schema's intentionally generic, loosely typed top-level objects, along with socialDB's permission model, to create Groups as near subaccounts (e.g. of groups.near) and socialDB namespaces which are publicly viewable to all users and writeable by permissions granted to members of a group. Detailed ProposalAllowing a group of users to moderate their own socialDB namespace can be accomplished via two primary contracts:
Open Questions
Resolved Questions |
Beta Was this translation helpful? Give feedback.
Replies: 4 comments 10 replies
-
Isnt deploying a subaccount cost intensive? |
Beta Was this translation helpful? Give feedback.
-
@charleslavon Thanks for putting this proposal together! I think it is a great starting point and I completely support the composability and use of DAO contracts. I want to re-emphasize the following aspect, which I feel might be missed by most of the readers not familiar with how posts work in NEAR Social: Communities are just new accounts on NEAR Social, which would grant write access to their SocialDB set({
"data": {
"my-community.near": {
"post": {
"main": "Frol's post on behalf of My Community"
},
"index": {
"post": "{\"key\":\"main\",\"value\":{\"type\":\"md\"}}"
}
}
}
}) According to SocialDB implementation, I can set someone's key in SocialDB if my account or access key is granted that permission. If we model communities around accounts, we get NEAR Social global feed, followers subsystem, community page (profile page), and many other features "for free" (no need for changes in a number of services out there). Resolved challenges are:
If the DAO contract is flexible enough, it could allow both strict posts pre-moderation and also a no-censorship type of communities. To summarize, in order to post on behalf of a community users would need to submit a DAO proposal as a function call to the community account instead of
Depending on the DAO configuration, this proposal might immediately resolve into a cross-contract call to Not resolved challenges are:
|
Beta Was this translation helpful? Give feedback.
-
Is a group/community an explicit entity owned by somebody, or are they implicit webs of people grouped by common interests? While I think these are worthwhile solutions to provide features that a group or community may appreciate -- such as some form of DAO governance or community broadcasted messages -- I don't think we need dedicated accounts to represent a group of users and the relationships between them-- we have a social graph for this. For example, following/subscription are just relationships between nodes in the SocialDB-- a following post feed is a Social.index filtered by accounts described in this graph standard; for example from mob.near/widget/N: let accounts = undefined;
if (state.feedIndex === "following") {
const graph = Social.keys(`${context.accountId}/graph/follow/*`, "final");
if (graph !== null) {
accounts = Object.keys(graph[context.accountId].graph.follow || {});
accounts.push(context.accountId);
} else {
accounts = [];
}
}
const posts = Social.index("post", "main", { limit: 100, accountId: accounts }); In this excerpt, we first gather all of the account keys I follow, then we filter posts on the main feed by these accounts. In other words, a group or community can be represented by the mutual connections in the social graph -- those who include one another in a group. This determines the feed of posts that come from a community. Therefore, a community is not a single entity, it cannot be lost, it cannot be compromised; it is resilient and reliant on the members of it. You can see a working POC in the BOS Hacks submission here and I would recommend reading the prior context, too. It's not a perfect solution, but I think it's a step in the right direction. |
Beta Was this translation helpful? Give feedback.
-
Closing this discussion in favor of this enhancement proposal @elliotBraem @frol It would be great to get your feedback on this draft SEP. |
Beta Was this translation helpful? Give feedback.
Closing this discussion in favor of this enhancement proposal @elliotBraem @frol It would be great to get your feedback on this draft SEP.