Skip to content
This repository has been archived by the owner on Feb 8, 2018. It is now read-only.

Break anonymity #3112

Closed
wants to merge 17 commits into from
Closed

Break anonymity #3112

wants to merge 17 commits into from

Conversation

chadwhitacre
Copy link
Contributor

This PR breaks anonymity with a double opt-in, closing #236.

  • Design privacy permissions UI.
  • Add db fields.
  • Update json endpoint(s).
  • Wire up js.
  • Review interaction of is_singular with anonymous_receiving.
  • Give givers (I guess I'm starting to call them supporters on this PR?) UI to divulge themselves if the receiver allows it. This should go in the tip CTA in the sidebar.
  • Update payday (etc.?) to set transfers.is_anonymous appropriately (double opt-in).
  • Fill out the Receiving page with a listing of everyone who has given what over time.
  • Add column(s) on the Giving page to indicate identity divulging status.
  • Update history page to include details as appropriate.
  • Wire up behavior when newly requiring non-anonymity: I guess we should prompt and then clear existing tips from people that don't have tell_supporting.

@chadwhitacre
Copy link
Contributor Author

New knob on Account page:

screen shot 2015-01-12 at 11 40 26 pm

@chadwhitacre
Copy link
Contributor Author

I suggest we broaden the "Hide total {giving,receiving} from others" to encompass specific {giving,receiving} as well.

@chadwhitacre
Copy link
Contributor Author

P.S. I started this PR because both @weallhave24hrs and @renaantosz need it to really start using Gratipay in earnest, and they're the ones whose use cases I'm personally prioritizing right now. In other words, I'm personally shifting from the "Pay Your Heroes" roadmap, which was focused on the "individual giving to another individual" case, to a new roadmap focused on the "individual giving to a business" use case. This is based on the retreat, which I still need to blog about blogged about.

@seanlinsley
Copy link
Contributor

+1 in general. I'll work on reviewing this tomorrow

!m @whit537

<label class="anonymous-supporters">
<input type="checkbox"
{% if not participant.anonymous_supporters %}checked="true"{% endif %} />
{{ _("Allow my supporters to divulge themselves.") }}
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't feel like this is very descriptive. If you want to keep it we should at least have hover state help text.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Just a thought:

Allow anyone:

  • To see how much I give
  • To see how much I receive
  • To search for me

Allow people I support:

  • To see I support them
  • To show I support them on their profile
  • To be shown on my profile

Allow people that support me:

  • To show me they support me
  • To show they support me on their profile
  • To be shown on my profile

Edit: So this is kind of similar to: #236 (comment)

Edit 2: IRC

@blrhc
Copy link
Contributor

blrhc commented Jan 13, 2015

Completely agree with @clone1018, this functionality needs to be explained better in the labels.
Overall though, a great function. !m @whit537!

@chadwhitacre
Copy link
Contributor Author

I printed out and am rereading #236. The full implementation of #236 gets complicated. On this PR I want to focus on the minimum necessary for @weallhave24hrs @renaantosz, though I want to do it in a way that makes sense in terms of the bigger picture on #236, so that's why I'm rereading that.

@chadwhitacre
Copy link
Contributor Author

I also want to look at the specific use cases mentioned on #236. I'm thinking of @jdorfman @JEdgar @iElectric etc.

@domenkozar
Copy link

It covers the use case for Kiberpipa.

@chadwhitacre
Copy link
Contributor Author

@iElectric Do you need to know how much someone is giving, or just that they're giving? Does it need to be public that they're giving to you or is it enough if you can see that info?

@chrisdev
Copy link
Contributor

@whit537 I've got a client https://gratipay.com/birdsongtt/ that is a government registered charity. They would like to give out receipts to donors for tax purposes. Knowing their donors is a prerequisite for this.
I've got a couple more like this coming on stream in the next couple of months. Hoping that this change fits this use case

@chadwhitacre
Copy link
Contributor Author

@chrisdev Do they need amounts given, or just identity of givers?

@domenkozar
Copy link

@whit537
as Kiberpipa
We should see how much is someone donating to us
So that we can account for member fees.

@chadwhitacre
Copy link
Contributor Author

@iElectric Okay, thanks for the input.

@chrisdev
Copy link
Contributor

@whit537 ideally we need names and amount. But as a second best option the name is good enough

@chadwhitacre
Copy link
Contributor Author

@chrisdev Okay, it sounds like @iElectric needs amount, and I know that @renaantosz does as well. So let's consider amount a requirement for this PR to cover your use cases.

@chrisdev
Copy link
Contributor

💃 @whit537

@chadwhitacre
Copy link
Contributor Author

Gosh, this is a complicated matrix. It's even more complicated than @balupton's helpful matrix at #236 (comment), because for @chrisdev's charities case to work we actually need the ability to require non-anonymity. I.e., "Only accept tips from people who are willing to divulge their identity to me."

@chadwhitacre
Copy link
Contributor Author

There's which side of the transaction you're on: 1) giver, 2) receiver.

There's what piece of info is shared: 1) identity, 2) amount, 3) reason.

There's where it's shared: 1) privately on the other's profile, 2) publicly on other's profile, 3) publicly elsewhere (community page? third-party site?).

There's sharing restrictions: only allow givers with XYZ configuration.

There's default settings and then per-tip overrides.

@chadwhitacre
Copy link
Contributor Author

We don't have tip reasons/messages yet and we shouldn't add that on this PR, so let's take that out of the consideration for now.

This adds fields to the database to support non-anonymous giving.
I think we should only divulge identity on the Receiving page for
transfers, not for tips, in which case we don't need a new field on tips
after all.
@chadwhitacre
Copy link
Contributor Author

Rebased on master.

@chadwhitacre
Copy link
Contributor Author

Privacy

Allow everyone to see:

  • my profile on search results
  • the total amount I receive (and the number of supporters I have)
  • the total amount I give (and the number of people I support)
  • who supports me (but not specific amounts)
  • whom I support (but not specific amounts)

Allow people I support to see:
(You can override these for each payment you set up.)

  • who I am
  • the amount I pay them

Who are your supporters?

  • I don't want to know who my supporters are.
  • Allow my supporters to show me who they are and how much they pay me.
  • Require my supporters to show me who they are and how much they pay me.

@chadwhitacre
Copy link
Contributor Author

Okay! Been going around and around the horn here at Blue Canary with @rummik @kaguillera @dmk246 @renaantosz @EileenFord. #3112 (comment) represents the consensus we've come to over here about the privacy options we want to present to users with this PR.

@chadwhitacre
Copy link
Contributor Author

The build is breaking at Travis because we don't have the json type in Postgres?

@chadwhitacre
Copy link
Contributor Author

Restarted, now seeing failures properly (due to inversion of privacy booleans). Also seeing failures locally.

@rummik
Copy link
Contributor

rummik commented Feb 1, 2015

I'm not sure on the Who pays you what, exactly? text, since it feels like the wording is too different from the above options. I'd suggest something more along the lines of:

Information about your supporters:
Who they are, and how much they pay you.

  • Do not show me information about my supporters.
  • Allow my supporters to choose.
  • Require my supporters to tell me.

@chadwhitacre
Copy link
Contributor Author

How about this for the tip override UI?

screen shot 2015-02-02 at 11 13 39 am

@chadwhitacre
Copy link
Contributor Author

the wording is too different from the above options

This section is different from the above options. If anything, we should set it off with a different heading. We raised but didn't settle the question of whether this is even properly a "privacy" option. It's not about my privacy, it's about my supporter's privacy. "Sharing" could encompass both.

@chadwhitacre
Copy link
Contributor Author

As I'm implementing the per-tip overrides, it occurs to me that the implementation at #3112 (comment) has it that I'll be able to individually set who of my supporters is displayed publicly. I guess that happens on the receiving page? We can also email people when they get new supporters. I guess public_supporters encodes the default, then.

@chadwhitacre
Copy link
Contributor Author

Or is that too complicated? Should we give both giver and receiver the ability to override individual tips? Or should we just give that ability to givers?

@chadwhitacre
Copy link
Contributor Author

What if you require knowledge and then unrequire it? Do you get your former supporters back? Maybe within a certain timeframe?

@rohitpaulk
Copy link
Contributor

What if you require knowledge and then unrequire it? Do you get your former supporters back? Maybe within a certain timeframe?

I think the simplest way to implement this would be to handle it like we handle changes from a Team to Individual account. i.e When they click on 'require details', show them a warning that says that all their anonymous tips will be cancelled if they make this change.

@rummik
Copy link
Contributor

rummik commented Feb 3, 2015

@whit537 What I mean is that I feel like the abrupt question starting the section isn't very clear, and adds confusion to it, since we don't do that anywhere else

@synconme
Copy link

synconme commented Feb 5, 2015

Just a suggestion regarding the options, maybe it is more convenient to simplify options a little bit, something like that:

Show other users:

  • My profile
  • Who I support
    • Total amount I give
  • Who supports me
    • Total amount I receive

  • Require my supporters tell me who they are and amount they give

From my point of view, if receiver wants to know who donates her, it is more likely she want to know the amount as well.

@chadwhitacre
Copy link
Contributor Author

I'm scrapping this for parts.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.