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
Cluster mention notifications #39
Comments
low priority: @aaronpk mind clarifying if this is only across sources, or across targets, or both? i'm guessing both but we're not sure. background in IRC; cc @tantek. |
i'm itching for this. @aaronpk do you have a specific design in mind? how about this straw man:
i made up those durations, i'm open to changing them. rendering the notif text would probably stop and ellipsize after three sources. we'd probably also omit the multiple-side links (ie sources for a multiple-source-to-single-target wm, and vice versa) for bridgy wms, and maybe for non-bridgy too. thoughts? |
one minor drawback: pending clusters aren't persisted, so they're lost on restarts, reboots, etc. i expect we don't care though, since they're just irc notifs. :P |
I'll have to read through that logic a few more times. But I would probably use Redis to buffer the notifications which has the nice property of persisting anyway! |
ooh true, nice! |
a couple clarifications from IRC:
|
Example of receiving two webmentions to the same target in close succession:
|
thanks! good to have a step by step example. a couple notes:
there's also the 5m timer extension thing i mentioned, which i think will be useful for floods, but it's definitely just a nice to have, not required. thanks again! |
Yep you're right, need to add a cluster for b->z as well. Agreed about the 5-min timer extension thing, I was just walking through a simple example. Here is the same one as above revised with the new cluster: Example of receiving two webmentions to the same target in close succession:
|
nice! just a couple notes that i suspect are already in your plan and just may not have gotten updated in the example text:
i also realized that the 5m extension may be a bit harder than i thought, since you have to extend all of the timers for the cluster. that may be straightforward, but i'm not sure. i think it mostly depends on your timestamp implementation details, so i'm going to ignore it for now. |
for #39 * right now does nothing with getting the contents of the URLs, the notification text is just the URL * buffers mentions for 60 seconds without extending the timers * should handle 1->1, 1->many, many->1, and many->many notifications right now * needs to be modified to actually factor in the contents of the mention URLs, to generate text like "x and y liked a post"
Making progress! Currently:
The Redis implementation of this means the logic is slightly easier than described above, since Redis creates things on the fly and doesn't fail when things don't exist. |
I'm imagining the common case of someone sending out a hundred invites and bridgy floods the channel. What ends up happening is in the process of those webmentions being sent, someone inevitably RSVPs to the event while the invites are still going out. I'm thinking the notifications we see should be things like "30 people were invited to Y" and "X RSVPd to Y", which means they should also be clustered by type. I think adding the type of mention as a component of the name of the clusters should solve this. |
makes sense. this all sounds great! |
I realized we need to design the notification text before I can get much further with this. So below is a collection of the possible notification text this should generate. This is designed as plaintext first, since it will be sent mainly to plaintext channels such as IRC or push notification. In all cases, a URL will be appended that takes people to a URL for the notification on webmention.io which has this notification text as well as the full list of webmentions that were clustered for this notification. For the plaintext representation, displaying the author name is not particularly useful, since people often put random junk into the "name" field. I think a compromise would be to show the author as "Author Name (url)" in plaintext form. Like / Repost
RSVP (yes / no / maybe)
Invite
Generic Mention
Reply(not clustered)
|
GWG pointed out that you probably want immediate notification of comments, so I'm going to not cluster comments at all. |
thanks for writing this up! getting the text itself right is surprisingly difficult; I'm glad you're doing it so deliberately here, and unifying it across wmio and your site, so that we'll have a(nother) solid reference design and implementation. my one big piece of feedback is to consider linking directly to the target (or source) instead of a wmio landing page. i expect that's what users mostly want anyway. it wouldn't work for many-many, but it looks like you haven't designed the text for that...and honestly i think we maybe shouldn't try. send like a fair amount of both UX and implementation complexity for probably a very small incremental UX win. also +1 to using author name, as discussed recently. i know it's not guaranteed good, but i think the majority of at least irc notifs right now are fb or twitter via bridgy, which have usually decent names and often opaque urls. NAME (URL) is a good compromise imho. so excited! thanks so much for doing this! |
I'm planning on always having the IRC notification include a link to the webmention.io page. I agree that having a link to the target URL is good in most cases, so I updated the above to include it. Also, for comments and things that have meaningful permalinks of their own (i.e. not likes and reposts) I want to include the real source URL in the notification text as well. You can see this in the above text where I include {source url} in the notification. |
discussed in irc; we think we're roughly on the same page. |
This is going live today! I'm going to close this issue since the basic functionality of clustering is done. Feel free to open new issues as problems surface! |
When multiple webmentions are received in short succession for the same target, it should result in a single notification sent to IRC rather than one for each target.
Something like "... commented on a post that linked to _____, _____ and ____"
The text was updated successfully, but these errors were encountered: