Skip to content
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

Add UI for posting circles #14384

Closed
wants to merge 11 commits into from

Conversation

noellabo
Copy link
Contributor

@noellabo noellabo commented Jul 24, 2020

#14354 , #14360 , #14370 , #14666 needs to be merged beforehand.

This is a composer's idea to post a circle.

@noellabo
Copy link
Contributor Author

  • Add circle to privacy
  • Warning and target circle display

limited_post_composer1

As shown in the example, this display is smart for a few cases, but if there are many items, it will overflow from the screen. Should I create a button and modal for circle selection only?

@brawaru
Copy link
Contributor

brawaru commented Jul 25, 2020

This is kinda too many options for the privacy dropdown. Maybe make it a single option “Circle” and then if it's selected, show “Select circle” below the editing area (above Toot button)? Could been even more useful if you could post to multiple circles at the same time and circles had custom icons, but well, we have what we have.

GIF demonstrating circle select

Just a prototype

@mstdn
Copy link

mstdn commented Jul 25, 2020

  • Add circle to privacy
  • Warning and target circle display

limited_post_composer1

As shown in the example, this display is smart for a few cases, but if there are many items, it will overflow from the screen. Should I create a button and modal for circle selection only?

Looks good but gets it scrollable or does the list extends the screen when users have many circles? :)

@noellabo
Copy link
Contributor Author

circle_dropdown

Separated circle selection from privacy dropdown.
I chose the built-in select for the implementation.
It may not be so cool, but it should be easy to use on mobile.

For the "Limited Visibility" redraft and replay, "Limited Visibility" is selected and "Circle" is not.
This is because even the poster cannot get which circle was used. #14354 (comment)

When replying, you'll want to choose the circle of the original post, right? We can't do it now, but when that mechanism becomes possible I will add.

@noellabo
Copy link
Contributor Author

circle_20200814

  • Added a system-defined circle "Reply-to poster" and "thread posters" that can be used only when replying
    • When replying to a circle post, "thread posters" is selected if the reply destination is in the middle of the thread
    • If the reply is to the first post, "Reply-to poster" is selected
    • Can be used regardless of the visibility of the original post
    • The reply circle may include people who are not followed, in which case they will not reach you
    • Added special values reply and thread to circle_id of POST /api/v1/statuses
  • Changed to remember the id of the circle specified for posting in redis for only 3 days
    • In case of your own circle post, circle_id is additionally returned to the REST API.
    • Reflected on Self-reply and redraft
  • Changed the selection of the circle displayed below the composer and separated it into an icon button and Select
    • Made the circle icon a button and opened the circle column when selecting
    • Adjusted the background color when focusing to make it easier to use when operating the keyboard
    • When opening the circle column, change to focus on input to enter a new circle title
  • Added processing to add/remove mention specification in the input field when switching the disclosure range between circle and others

Circle posters have a limitation that they can only send to their followers. This prevents it from being used to send spam. However, the restriction that you can not reply by the circle if it is not followed by members on the thread of the circle is reasonable, but I think it is quite inconvenient in practical use (because implementations other than Mastodon may be able to receive it, the transmission itself is done). Technically, it can be solved by adding a mention to the unfollowed member, but it seems difficult for users to understand this behavior.

When replying to circles, I think you should avoid sending a post to someone you didn't intend to reply to. As a result, circle reply can be sent only to the direct reply destination and the thread containing the reply destination. I tried an implementation that forwards and relays to the recipient of the original circle using a special actor (for example, treating the starting status as an actor), but special processing is also required on the receiving side, and the specification of ActivityPub It seemed necessary to have a conditioning that was difficult to get an agreement with. It also seemed undesirable to have a mechanism where reply contributors couldn't control the visibility.

Instead, the circle poster informs the members of the circle of the actors in the private group and encourages them to follow the group actors. Members decide whether to join this group, and explicitly post when posting to members, and control the posting destination with their own will.

Compatibility note:
Misskey refuses to accept circle posts.
When the specifications here are fixed, we will contact the developers of Misskey.

@noellabo noellabo marked this pull request as ready for review August 22, 2020 13:40
@noellabo
Copy link
Contributor Author

Please consider based on this suggestion or rewrite a better implementation.

@noellabo noellabo changed the title Add ui for posting circles Add UI for posting circles Aug 23, 2020
@koyuawsmbrtn
Copy link
Contributor

Heck, I'd love to see such a feature. This was my number one question when I migrated from diaspora* back in 2017 and I miss it to this day.

@Gargron
Copy link
Member

Gargron commented Aug 26, 2020

I appreciate the work in this PR but the original API PR has been stalled due to concerns raised by @ThibG about bad UX around replies to limited-visibility posts which I am only now addressing in #14666. This is going to take a while 😦

@koyuawsmbrtn
Copy link
Contributor

I appreciate the work in this PR but the original API PR has been stalled due to concerns raised by @ThibG about bad UX around replies to limited-visibility posts which I am only now addressing in #14666. This is going to take a while 😦

Thanks for the follow up. I'll look forward to it 😊

@noellabo
Copy link
Contributor Author

circle_reply_for_bearcaps

Fixed to support limited replies by bearcaps.

In reply to the circle

  • The visibility options are now only circles and direct
  • The circle selection dropdown will not appear

@noellabo
Copy link
Contributor Author

noellabo commented Sep 5, 2020

circle_20200905

The reply to the circle is forwarded to the server that posted the root of the context, and from there it is forwarded to the members of the circle. This seems to be working well at the moment.

If the circle members are not in a mutual follow, they will not appear in their respective home timelines. However, if you detail the posts that are the root of the context, you can see all of the connected posts. This is the same behavior as a traditional reply tree.

Circles are not something you join of your own volition, so I think this is about a reasonable balance. If you don't want to get involved in a circle thread, you can mute the conversation.

You can try out my proposed UI and features on the experimental temporary servers https://circle-dev.fedibird.com and https://fedibird.com .

The working code is summarized in the following branches
https://github.com/fedibird/mastodon/tree/feature-circles-fedibird

@stale
Copy link

stale bot commented Jan 3, 2021

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.

@stale stale bot added the status/wontfix This will not be worked on label Jan 3, 2021
@stale stale bot closed this Jan 10, 2021
@noellabo
Copy link
Contributor Author

I'll continue.

@noellabo noellabo reopened this Jan 11, 2021
@stale stale bot removed the status/wontfix This will not be worked on label Jan 11, 2021
Base automatically changed from master to main January 20, 2021 10:31
@stale
Copy link

stale bot commented Jun 2, 2021

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.

@stale stale bot added the status/wontfix This will not be worked on label Jun 2, 2021
@stale stale bot closed this Jun 9, 2021
@koyuawsmbrtn
Copy link
Contributor

bump

@derwinmcgeary
Copy link

How can we best progress this?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
status/wontfix This will not be worked on
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

6 participants