Skip to content

🌟 [EPIC] 1.X.0 - Org: Organisations/Projects/Groups #4544

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
47 tasks
ulfgebhardt opened this issue Jul 12, 2021 · 9 comments
Closed
47 tasks

🌟 [EPIC] 1.X.0 - Org: Organisations/Projects/Groups #4544

ulfgebhardt opened this issue Jul 12, 2021 · 9 comments

Comments

@ulfgebhardt
Copy link
Member

ulfgebhardt commented Jul 12, 2021

🌟 EPIC - 1.X.0 - Organisation: Org/Projects/Groups

β€”β€”β€” This concept is now planned new in EPIC #5059 β€”β€”β€”

General Concept

An org is the very general concept for every entity which is not a person – an organisation, a business, a project, a charity, a foundation, a group of people ...

Implement a feature called org means to create a new entity which is not a user account and therefore can not be logged in. But it has an org profile similar to a user profile, see below.

Public Orgs Or Groups

A user can create and own one or more orgs of which they are a member, and can also invite other members to join this org. Another name to describe this concept is public group since it's a group but does not have an internal communication channel by internal posts. (Internal communication of public orgs or groups can be implemented with a chat feature based on the groups membership.)

Closed Orgs Or Groups

Later we have the idea and see the need of having closed orgs for special interests. Examples are offending contents like explicit sexuality, if users don’t want to show to every other person like neighbours that they are engaged parties or other activities, if you organise things like events in which not every user should interfere, users discuss issues which the most users or the network owner don’t like to have in the general newsfeed, etc.

This means in detail that users can post org internal posts which can not be seen by users which are no members.
Though this just seems like a checkbox in the settings the consequences are huge:

Complexity:

  • a closed org becomes kind of an internal network
    • a member can post internal
    • an admin can post internal and external
  • users can follow closed orgs to add the posts to their newsfeed

Hosting:

  • for the moderation internal post may be not seen by many users, therefore they may be not reported or at least not so quick if they have inappropriate content

Displaying And Functionality Of An Org

An org has a profile like a user profile and admins of that project can post as the org or in the name of the org which then will be publicly visible on the orgs profile and in the newsfeed, very similar to a user. So we can say that a profile is a subset of a user and an org what should be relevant for the database structure and component design. See Database .

An important concept of the network is to make sure it's always clear who posts something. Therefore the org will be displayed as poster, but it has to be denoted which user posted it on behalf of the org. It should be visible in the avatar labels of posts and comments.

Furthermore an org can have additional infos on its profile page. Similar to the social media feature of the user profile one can imagine putting more info like an address, telephone or organisation type. This can be aligned with the user profile to reuse many of the possibilities of the orgs additional info for the user profile as well. Some things are not applicable tho – for example the organisation type since it does not make sense to give the user the option to display that.

Here different requirements meet each other and we have to find the right solution:

  • users want a lot of freedom in their own profiles or their orgs profile description
  • users want a nice and good looking profile description (may be use the rich possibilities of the tiptap editor?)
  • network owners want to enforce or incentify users or projects to provide certain infos on their profile like an address, a telegram channel, a telephone number or an organisation type

New Pages

  • org profile
  • org settings

Changes in existing pages

  • user profile shows the orgs a user is part of or owns
  • post in the name of the org
  • sidebar for users to see their orgs (?)

image

Actions as user

  • user can create an org
  • user can see an orgs profile
  • user can search for orgs
  • user can follow orgs (?)
  • user can become a member (different settings required: invite, request, free join)
  • user can see additional infos (in which circumstances? @ulfgebhardt as member?)
  • user can read project posts

Actions as owner or admin

  • owner/admin can delete org
  • owner/admin can post as org
  • owner/admin can change org settings
  • owner/admin can set/change additional info
  • owner/admin can invite/set roles of members

Actions as network admin

  • switch orgs on and off

Open questions and outlooks

  • rights management (what roles? how? when? whom?)
  • Do we allow follow like on the user profile?
  • Can only orgs follow orgs? (no: we need a concept how to connect orgs)
  • Can users follow orgs?
  • group chats of members (we have to recognise that posts are not the same as chat messages even when the comment function of a post is often used like a chat by the users)

User Stories

As a Creator

  • I want to create an org
  • I want to view a Group
  • I want to delete a Group
  • I want to post as a Group
  • I want to publish some general persistent Info about the Group
  • I want to administer a Group
  • I want to invite others to the Group
  • I want to give other access to the Group
  • I want to kick members from the group
  • I want to administer the members of my Group
    -[ ] I want to transfer ownership of the Group

As a User

  • I want to view a Group
  • I want to see other Posts of a Group
  • I want to find out who's behind that Group/posting as that Group
  • I want to join a Group

As a Moderator

  • I want to view all contents of a Group
  • I want to block a Group as a whole
  • I want to block single Posts of a Group
  • I want to administer the Group(?)
  • I want to administer the members of a Group(?)
  • I want to change ownership of a Group
  • I want to force a name change on a Group
  • I want to remove some or all of the static content of a Group

Suggested initial Order of Implementation:

  • I want to create a Group
  • I want to view a Group
  • I want to delete a Group
  • I want to publish some general persistent Info about the Group
  • I want to post as a Group

Step By Step Implementation

Limited implementation by Keep It Simple Stupid (KISS) for a start (smart reminder to @roschaefer ), but have the Whole (As) Picture In Mind (WAPIM).

To limit the effort initially like required we can limit the feature set and enhance it step by step to get to the full feature:

1. Single Person Org

Orgs have:

  • only one admin as member per org
  • as network admin switch orgs on and off

Orgs have not:

  • no rights management
  • no members
  • no invite settings
  • no follow
  • no additional info
  • no settings

2. Admins Can Delete The Org

The admins delete org issue is XXX .

Orgs have:

  • admin deletes the org

3. Multi Admins Org

The multi admins org issue is XXX .

Orgs have:

  • invite new admins to the org
  • delete admin/member from the org
  • admin/member leaves the org

4. Orgs With Invited Members

The orgs with invited members issue is XXX .

Orgs have:

  • admins invite new member to the org
  • delete member from the org
  • member leaves the org

X. Later

Database And Technical Concepts That Are Difficult To Change

Database

Database and program wise we should name this concept org.

  • The new entity has the node label Org.
  • We should think about to label the User and the Org nodes with Profile as well, because they share a lot properties.
    • Answer: Avoid double labelling of hierarchic datasets !!! and read https://medium.com/neo4j/graph-modeling-labels-71775ff7d121
    • because the search of a label in Neo4j is much quicker than the search of a type property
    • If we search for a slug to mention or we may show who is online in the future or just a list of all profiles then we can just MATCH the Profile label. We don’t have to unite matches what is often somewhat difficult and less performant.
      • instead we can match MATCH (profile) WHERE profile:User OR profile:Org
  • The additional label of the profile node should be delivered via GraphQL by a new profile type with a property.
    • here we can do a GraphQL query Profile that delivers all common properties of :User and :Org with a label property and may be with the alternating properties as well.

URL

  • URL wise we should name this concept profile like the users profile and distinguish by the type of the entity between users and orgs.

Additional Information

A PR for organisations exists as #3735 and can be used as template.

Questions Coming Up

  • do we want to edit the profile about and other things perspectively in place as the owner? Now we do it in the settings …
    • similar to the profile avatar
@ulfgebhardt ulfgebhardt changed the title 🌟 [EPIC] 1.X.0 - Projects/Public Groups 🌟 [EPIC] 1.X.0 - Orga: Projects/Public Groups Jul 12, 2021
@Tirokk
Copy link
Member

Tirokk commented Jul 14, 2021

Meeting with @rbeer

  • URLs of orgs as well with profile like the users

@Tirokk Tirokk changed the title 🌟 [EPIC] 1.X.0 - Orga: Projects/Public Groups 🌟 [EPIC] 1.X.0 - Orga: Projects/Groups Jul 15, 2021
@sushidave
Copy link
Member

sushidave commented Jul 20, 2021

Happy to see this is planned. @Tirokk asked me to review this issue and I have two questions:

1.) By "project", do you mean "project team" or a project itself?

2.) Does the issue include businesses/companies? I'm asking because other networks distinguish between orgs/businesses/companies and groups due to their differing requirements, see Facebook Page vs. Group, Google My Business vs. Group and (similarly) Telegram Channel vs. Group.

@Tirokk
Copy link
Member

Tirokk commented Jul 20, 2021

1.) The project and the project team will be no difference, because the project page is the project and project members are the team.

2.) At the beginning we do not distinguish between orgs, businesses, companies etc. Later on it will or should be network dependent what is allowed and possible.

  • Facebook pages are orgas with one admin and Facebook groups are orgas with multiple admins and members which can post as well and have an internal chat group.
  • Telegram channels are orgas with just one or some admins. Telegram groups are orgas with usual members which can post as well and have an internal chat group.

We have not recognised so many different requirements yet, but in the future there should be constrains like companies must have addresses, but all the others can have them as well. And there should be page design differences for easy distinguishing for the users.

Can you agree? @sushidave

@sushidave
Copy link
Member

Thank you @Tirokk .

So, the goal is just to have an unpersonal entity/container which can be enhanced to provide various org types/purposes, all of them featuring at least an owner/admin and a profile page, is that correct? And such an entity can have other features depending on its type, for example:

Organisation (business, company, association, charity, initiative, movement, etc.):

  • contact details
  • posts, newsfeed and subscriptions

Group (interest group, project group, etc.):

  • members and roles
  • members list *
  • subgroups
  • posts and newsfeed *
  • subscription *
  • = for closed groups: for members only

Project:

  • members and roles
  • subprojects
  • groups and subgroups
  • project schedules
  • tasks
  • documents, checklists
  • posts, newsfeed and subscription
  • subscription
  • allow a project to be for members only

Event:

  • schedule
  • map
  • invitations
  • bookings, tickets, payment
  • posts, newsfeed and subscription
  • allow an event to be for members only

Is this what this issue is about or did I get it wrong?

Questions:

  1. What can users use a Single Person Org for?
  2. Once another org type is implemented can a Single Person Org be turned into the new type, e.g. Singe Person Org -> Group Org?
  3. Network admins being able to switch on/off: Do you mean activate and deactivate, or: create, deactivate/suspend, reactivate and delete?
  4. What can network moderators do?

Suggestions:

  1. Some organisations won't allow users to become a member of their organisation as it's the case with Facebook pages and Google My Business pages. So I suggest to add to the membership settings required:
  • user can become a member (different settings required: invite, request, free join, no membership)
  1. For later: Define the possible relationships per org type (single, children of, parent of).
  2. Use the international term "org" instead of "orga" πŸ˜…

@Tirokk
Copy link
Member

Tirokk commented Jul 22, 2021

This is what this Epic is about @sushidave .

Your questions:

  1. After we implement the Single Person Orga the owner/admin can post on its profile and to get visible in the newsfeed. Afterwards we have the possibility to implement a map with the locations of that orgas what would be in the interest of 'Helfaβ€˜ to find local groups as close as possible to our locations.
  2. At the beginning there will be no fixed orga type and therefore you can just use the new possibilities for your orga.
  3. That means that network admins can stop orgas from being created but show all orgas which exists. And additionally can hide all orgas. Like they wish todo.
  4. Network moderators can deactivate orgas temporarily or steadily, like with user profiles.

Your suggestions:

  1. I agree.
  2. Would be nice as well.
  3. That’s okay with me. 😘 (you’re relentless @sushidave but that great 😍) What do @ulfgebhardt and @rbeer say?

@Dayvvo
Copy link

Dayvvo commented Jul 24, 2021

I would like to take on this issue. Have only understood partly and not sure I would be able to handle it solo but I would love to have some part in this project @Tirokk

@Tirokk
Copy link
Member

Tirokk commented Jul 26, 2021

Hey @Dayvvo ,

@rbeer probably has started last week to work on this issue. See first step #4548 .
So we would have to coordinate or you find a way to work together somehow?

I cared for your invitation to our community as volunteer via an e-mail invitation you can accept.

Would be nice to get knowing you to handle such a big thing. If you don’t mind and it’s possible in your time zone please come in one of our Daily Standup. πŸ‘‡πŸΌ

Our conversation runs over our discord server:
https://discord.gg/AJSX9DCSUA
There we have usually from Monday to Thursday a Daily Standup at UTC 09:30 am (CEST 11:30 am) in the Office Cube.

@Tirokk Tirokk changed the title 🌟 [EPIC] 1.X.0 - Orga: Projects/Groups 🌟 [EPIC] 1.X.0 - Org: Projects/Groups Sep 30, 2021
@Tirokk Tirokk changed the title 🌟 [EPIC] 1.X.0 - Org: Projects/Groups 🌟 [EPIC] 1.X.0 - Org: Organisations/Projects/Groups Sep 30, 2021
@ulfgebhardt ulfgebhardt removed the epic label Oct 18, 2022
@ulfgebhardt
Copy link
Member Author

@Tirokk Do we need to keep some infos of this or can we close this in favor of #5059 ?

@Tirokk
Copy link
Member

Tirokk commented Oct 18, 2022

closed in favor of #5059

@Tirokk Tirokk closed this as completed Oct 18, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment