All posts in the topic Group Invitations (Short link)
Summary
- There are 10 posts — by 4 authors — in this topic.
- Latest post made by Michael JasonSmith at Jul 04 02:22 UTC
I have been working on the Group Invitations enhancement https://svn.iopen.net/projects/groupserver/ticket/277 and my design has come a long way. The system is simple in the simple case. 1. The user is invited to join a group. 2. The user receives an email message that contains links to accept or decline the invitation. 3. The user clicks on one of the links. If the user accepts the invitation, the user is taken to a message delivery settings page. 4. Success! The invitation would be generated by either the Add New User, Add New Users in Bulk, or Invite Site Members pages. I thought it would be nice to add some more features that make it easier to invite a user to multiple groups. My proposal is designed to carry out the following scenario. Jane expressed interest in joining the Knitted Frisbees Christchurch and Knitted Frisbees Announcements groups, so Kate decides to invite Jane to join the groups. Kate navigates to Jane's profile, and finds the Invitation page. She selects the Knitted Frisbees Christchurch and Knitted Frisbees Announcements groups [see the first image below] and clicks the Invite button. An email message is sent to Jane, inviting her to join the two groups. Now things become more complex. Jane has multiple invitations, which she may want to accept or decline. So, I propose an interface to support the following scenario. Jane receives an email message from Kate, inviting her to join the Knitted Frisbees Christchurch and Knitted Frisbees Announcements groups. Jane clicks on the single link in the email message and is taken to the Respond to Invitations page [see the second image below]. Jane accepts both invitations, by leaving the Accept option selected for both groups. However, Jane decides that she does not want to receive an email message whenever a post is made to Knitted Frisbees Announcements, so she changes her message delivery settings to Web only for that group. When everything is to her liking, Jane writes a short message to Kate, and clicks the Respond button. Kate receives an email message containing Jane's message and the invitations that Jane accepted and declined. The interface to accept or decline multiple invitations is complex, but only two actions are required to accept membership of multiple groups: * Click on the link in the invitation email message, and * Click on the Respond button in the Respond page. [Time for an expert user to complete the task is around 5.46s, not including page-load times and assuming no scrolling.] This leaves one hole: what should happen if the user is invited to multiple groups by multiple people? I propose showing the Respond to Invitations page, whenever any link is clicked in any invitation email message. This allows the user to quickly accept all the invitations, which will be the most common task. All of my proposed interfaces will supplement the existing Invite Site Members page [see the third image below] which I am planning to tidy. Mostly my tidy-up will involve showing a thundering-great-list of users with check boxes, instead of a "normal" list of users without check boxes. There is also a possibility of creating a page for inviting multiple site members to join multiple groups, but I will leave the visualisation of that interface as an exercise for the reader.
The following file was added to this topic.
- Name: multiple-invite-user.png
- Type: image/png
- Size: 21.81KB
The following file was added to this topic.
- Name: respond-to-invitations.png
- Type: image/png
- Size: 129.52KB
The following file was added to this topic.
- Name: multiple-invite-user.png
- Type: image/png
- Size: 21.81KB
Sorry!
The first image in my previous post should have been the one below.
The following file was added to this topic.
- Name: multiple-invite-user.png
- Type: image/png
- Size: 19.17KB
Really nice, Michael. Thanks for thinking this through so thoroughly.
Dan
I just realised that when you subscribe to a group using email you are
effectively responding to your own invitation:
1. Send subscribe message,
2. GroupServer sends a confirmation message,
3. You respond.
I see the potential to reduce code ☺
On Thu, 2008-06-26 at 14:06 +1200, Michael JasonSmith wrote:
> I just realised that when you subscribe to a group using email you are
effectively responding to your own invitation:
> 1. Send subscribe message,
> 2. GroupServer sends a confirmation message,
> 3. You respond.
> I see the potential to reduce code ☺
Definitely. I'm all for reducing code, but even better I think this
probably removes a template, and I'd definitely all for removing
anything Zope-side ...
From an hosts perspective it would be useful if you could put in a list of
e-mail addresses (one per line) or something.
However, for at least your OGN site I'd have a cap on the number of people you
can invite this way on any one day.
Also, I'd be interested in having an automatic reminder after one week or ten
days, "you didn't respond, if you don't with the next 2 days your invitation
will expire."
Also, when E-Democracy.Org launches a new forum we encourage people to recruit
elected officials quite heavily. Being able to quickly see who joined, who
declined, and who has not responded would be very useful. Also keeping a
listing
of expired invites would help reduce repeat invitations (or at least
unintentional ones).
One concern I have is folks inviting people indiscriminately. Upon declining
...
"Thank you for your response. If you would like to share a comment on why you
are declining, please share it here/e-mail X" This might create a feedback
loop
that would educate those using this feature.
Thanks,
Steven Clift
Thanks for your comments, Steve. I am encourage to see that we are all
on the same page ☺ We have been thinking of the mechanism for preventing
people for being bombarded with invitations, as this is a privacy
breach. (Technically it is an invasion of privacy — but arguing privacy
semantics is dull at the best of times!) Exactly how the restrictions
will be presented is not something that I am very clear on, so I could
do with some guidance on that.
The way invitations-table is recording the invitation is with the
following fields:
* invitation_id
* user_id
* inviting_user_id
* site_id
* group_id
* invitation_date
* response_date
* accepted
When the invitation is sent out, we will write the first six fields.
When a user responds to the invitation we will write out the last two
fields: the date of the response, and if the user accepted the response
or not. This scheme allows us to restrict
* How many invitations a user can have
* How many invitations an administrator can send,
* How many invitations for a group can be sent out
* How many invitations for a *site* can be sent
* How long before an invitation can be re-sent if a user has not
responded
* How long before an invitation can be re-sent if the user has
declined.
By never deleting the invitations, I can implement all these
restrictions. In addition, I can also present a log of all invitations:
pending and past. (The log is what I am working on now.)
What the actual restrictions should be is something I will leave to the
configuration options. As you say, Steve, sites like the forums on
e-democracy.org will have quite different requirements to
OnlineGroups.Net.
The user not responding to an invitation does not tell you why the user
has not responded. We will need to work the bounce-detection into the
invitation subsystem to be able to give you any meaningful data.
I have finished work on the initial Respond to Invitations page. The screenshot
below shows it in the OnlineGroups.Net livery. The main change from the
prototype is that every invitation says who created it, as I realised that a
user could have invitations from many different administrators. The Change
Group Email Settings section is also missing, but that is a nice-to-have
feature ☺
I am writing the interfaces backwards: from the end-user pages to the
administrator pages. The next page that I will write is the page to allow an
administrator to invite a single user to join multiple groups. It is very
useful for testing, so I would like it early. After that I will rewrite the
page that allows an administrator to invite multiple people to join a single
group.
The following file was added to this topic.
- Name: Screenshot.png
- Type: image/png
- Size: 53.25KB
As well as the Respond to Invitations page, I have the * Invite a User to Join Some Groups, and * Invite Site Members to Join a Group sending out invitations, and the invitations correctly redirecting the user to the Respond to Invitations page. The last three things to do are add some restrictions, clean up the Invite Site Members page, and hook Add New Member into the new system. The only restriction that I will add, at this stage, is to limit the number of invitations to a single group that can be sent to a single user without that user responding. The other restrictions that I mentioned earlier http://groupserver.org/r/post/2CPcvdSFQrROAeK7XBUvgG can be implemented, but I will not look at them until I need to. The Invite Site Members page has no supporting text at the moment. I would also like it if I could link to the users' profiles better. It should not take me too long! Finally, I the Add a New Member and Add New Members in Bulk pages need to be hooked up to the new invitation system. (That was, in many ways, the entire point of the exercise!) Once those tasks are done, I will release the code on OGN, and build a new tar-ball of GroupServer.
I have finished work on the new invitation system, but as it is Friday I
will not update OnlineGroups.Net. In summary, it is no longer possible to
add a person to a group through the standard GroupServer interface.
Instead, the user is *invited* to join a group.
Invitations are sent to existing users (and existing users only) in the
following situations.
* A user is explicitly invited to join the group using the new Invite
User interface.
* A user is explicitly invited to join the group using the updated
Invite Site Members to Join a Group interface.
* A user is added using the Add a New Member interface, but the email
address already belongs to an existing user.
* A user is added using the Add New Members in Bulk interface, but the
email address already belongs to an existing user.
The invitation email message contains a single link. When the user clicks
on the link, he or she is logged in and taken to the Respond to
Invitations page, which lists all the current invitations for the user,
who made the invitation, and when. There the user can accept or decline
each invitation. The person who invited the user is sent a message stating
what the user did; if the user accepts the invitation the participation
coach for the group is sent a message stating that the user has joined the
group.
I also took the opportunity to enhance sign-up, so the participation coach
is informed when a person signs up and joins a group using the Web, and
when a new user responds to the invitation to join a group. The only time
a participation coach is *not* informed of a someone joining a group is
when someone subscribes by email.
(We would love it if you could configure who received the join-notification
messages, but it turns out to be a non-trivial problem, for now.)
Posting
Only members who are logged in can post, and you are not logged in.