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

Pledges #1168

Closed
HipsterBrown opened this issue Jul 14, 2018 · 21 comments
Closed

Pledges #1168

HipsterBrown opened this issue Jul 14, 2018 · 21 comments
Assignees
Labels
api Issues that require some work on the API (https://github.com/opencollective/opencollective-api) complexity → complex design Global label for anything that the OC Design collective works on. feature frontend

Comments

@HipsterBrown
Copy link
Contributor

HipsterBrown commented Jul 14, 2018

Initial whiteboarding session with @xdamman (from April):
img_1372

What is a Pledge?

A Pledge can be thought of as a pending Order for a Collective that does not yet exist. A user or organization can create a pledge of some monetary amount for an open source project or a meetup, and that Pledge will show on the user or org collective page. Once the Pledge is created, we can encourage the user / org to reach out to the project or meetup and point to that Pledge. Once the collective is created for that project, the pledge can be claimed and fulfilled by the pledge creator.

A Pledge could be created either through the Open Collective frontend or the API, i.e. Back Your Stack.

Claiming a Collective
When pledges have been made for a new, inactive collective, then that collective can be "claimed" by one of the admins for the github repo linked to that collective.

  • there is a button on the pledged collective page that links to /:collectiveName/claim
  • person claiming the collective (a.k.a claimer) must be logged in
  • claimer will then connect their github to the open collective app
  • claimer will be redirected back to the /:collectiveName/claim page after connecting to GitHub where the app will get a list of github repos associated with their account and check if their are an admin of the one matching the url linked to the pledged collective
    • if they are a matching admin, a button will be shown to confirm claiming that collective, which will activate the collective, add the open source collective as their host, and email all pledgers to fulfill their pledges
    • if they are not a matching admin, an error message will be shown to inform them that they cannot claim that collectve (copy needed)

Needs:

  • copy for the sample message for pledge creators to send to open source projects or meetups after the pledge is created
@cuiki
Copy link

cuiki commented Jul 15, 2018

Hi @HipsterBrown I'll try to describe it in my own words (and hopefully in a simple way) to make sure I get it this feature. Let me know if I misunderstood something.

  • A pledge is an action meant to incentivize the creation of new open collectives by allowing individuals and organizations to offer financial contributions to groups that are not yet on Open Collective, and then have these groups accept them by becoming open collectives.

  • This has a few starting points, for example, when a user or organization searches on the OC website for a collective of an OS project or a meet-up (why just these two?) and it is not found.

  • Another starting point is when on Back Your Stack and after an analysis, some of the resulting projects in the stack can't receive financial contributions yet (because they are not on Open Collective). Are these the only two starting points?

  • After both these example cases (either on the OC website or on Back Your Stack), the user is then encouraged to make a pledge (an offer of financial contribution) in favor of the group that was either not found or unable to receive financial contributions.

  • The pledge is set and created through a form. I'm not sure what happens after this point...

I understand that somehow (during or after the form) the user/org who created the pledge sends the pledge to the recipient and then somehow this group signs up on Open Collective to claim it.

I didn't understand the part about a pledge card showing up on the creators collective page. You mean on their profile page? A user/org (potential pledge creator) doesn't have a collective page to my knowledge... errr hmmm or did you mean that when a pledge is created then a "pledged collective" page is created for this group and the pledge posted there?

Finally, can there be more than one pledge in favor of the same group?

@piamancini
Copy link
Contributor

piamancini commented Jul 16, 2018

I'm not sure what happens after this point...

We should create an order that gets executed once the collective joins.

I didn't understand the part about a pledge card showing up on the creators collective page. You mean on their profile page?

Yes, their profile.

Finally, can there be more than one pledge in favor of the same group?

Yes, not sure why not.

@cuiki The goal here is to start with some wireframes in the same way you did for self-serve flow. This feature is likely to change as we figure out implementation. So for now, wireframes are enough.

@cuiki
Copy link

cuiki commented Jul 19, 2018

I lost almost all the day because of insurance companies 😒.

Anyway, here is what I have so far. It isn't that much right now because of the hours I lost but you can follow the wireframe prototype. Press SHIFT to reveal the hotspots. So far it just takes you to the form to make a pledge.
https://app.moqups.com/Cuiki/JSZNg8YwFr/view/page/a5c363f8c

@cuiki
Copy link

cuiki commented Jul 23, 2018

Hi everyone,

I made this flow to try and cover all the areas where I things might not be clear about the flow and all its dependencies and touch-points. I have only one big question. According to @HipsterBrown, we're not asking for a recipient's email. The only info we ask about the recipient is the GH or meetup URL. So the question is... how are we going to validate that the right people are claiming the pledges without asking for a valid email (where we – or the creator of the pledge – points them to the pledge).

Please review and leave your feedback.

— On Moqups: https://app.moqups.com/Cuiki/JSZNg8YwFr/view/page/ac2664e66

— Image:
oc-pledges-user-flow

@xdamman
Copy link
Contributor

xdamman commented Jul 25, 2018

This is hard for me to read. My head can't process those diagrams very well, it's too abstract. Much easier for me to actually play with the flow with very basic mock ups. Can you provide something like that?

@xdamman
Copy link
Contributor

xdamman commented Jul 25, 2018

To answer your question, people will have to prove that they own that particular GitHub or Meetup URL by signing in with their account using oAuth (we should mention that somewhere).
We should also mention that as soon as the collective is claimed, the backer will receive an email to fulfill their pledge (in the first version, we won't automatically charge their credit card).

On that screen: https://app.moqups.com/Cuiki/JSZNg8YwFr/view/page/af00ec10d
it's probably better to start with the name and the URL of the collective, then the amount.

@xdamman
Copy link
Contributor

xdamman commented Jul 25, 2018

I'd also consider adding a section on the home page. Instead of creating a collective, people can also make a pledge to an existing organization (non profit like Wikipedia, the red cross, etc.), a meetup or a GitHub URL and we could surface the most popular pledges. This is a way to join the movement by creating incentives to existing organizations to create an open collective and be transparent with how they manage their donations.
Related:

@HipsterBrown
Copy link
Contributor Author

Had a productive discussion with @xdamman about how to model Pledges:

Pledges are really just pending Orders for Collectives that do not yet exist.

Instead of creating a new model, we can add a status field to the current Order model with options like PENDING, PAID, CANCELLED, and ACTIVE (used for subscriptions). When an Order is created for a Collective that doesn't exist, we will automatically create the Collective with the url provided for the pledged project. Once the new, inactive Collective is created, we can display the pending orders as potential backers and allow more pledges to be made from that page as well.

The inactive Collective will then appear in search, which should reduce the likelihood of duplicate pledged Collectives. We can reuse a lot of the existing donation and order flows, which should save on development time and the learning curve for users.

@piamancini
Copy link
Contributor

we should consider the url issue more thoroughly, once we use a url for a collective then it's taken. So for example, if someone pledges to a collective, and a maintainer of that project creates a collective through the onboarding flow, the url will be taken by a collective that doesn't exist.
Should there be a flow for telling the maintainer there is a 'pledged collective already'?
Should we append something to pledged collectives' url to avoid this issue?

Moreover, if we do have duplicate pledges, how are we letting the person who makes de pledge know that that url is taken already?
What happens if there is an active collective already (for example someone pledges to vuejs but there's a vue already)? --> I guess is pledges is integrated with search it should surface this.

Other thoughts, we should include a field for the person who makes the pledge to also include an email to let a maintainer know someone pledged to them?

@HipsterBrown
Copy link
Contributor Author

if someone pledges to a collective, and a maintainer of that project creates a collective through the onboarding flow, the url will be taken by a collective that doesn't exist.

At that point, we can surface an option for the project maintainer to claim the pledged collective.

Should we append something to pledged collectives' url to avoid this issue?

I don't think we want to do this because we want to be able to query for collectives by the url if someone else wants to create a pledge with the same url.

we should include a field for the person who makes the pledge to also include an email to let a maintainer know someone pledged to them

I think we want to provide an example message for the pledge creator to send to the project in some way because it will be more meaningful for them to send the message than for us to automatically send an email that could appear as spam. But it's one of those areas where we can experiment a bit.

@piamancini
Copy link
Contributor

At that point, we can surface an option for the project maintainer to claim the pledged collective.

bear in mind this will happen through the github onboarding flow which Aseem built and no one else touched.

@cuiki
Copy link

cuiki commented Jul 30, 2018

Ok. I'm getting all this soaked in and updated in the flow. The base of it works with the flow I created but there are still some gaps and questions.

Last update of the live document for this flow is here: https://app.moqups.com/Cuiki/JSZNg8YwFr/view/page/ac2664e66

@xdamman, please add the description of how to validate the claim of the pledged collective into an active open collective.

@HipsterBrown
Copy link
Contributor Author

To claim a pledged collective:

  • a user clicks a button on the collective page to claim it
  • the user is taken to a form with instructions for claiming the collective
    • the collective's URL will need to be added to the homepage of the website linked to that collective, i.e. Babel is linked to babeljs.io or curl is linked to https://github.com/curl/curl.
  • once the collective URL has been added to the linked website, the user can submit the form including the ToS agreement
    • the server will verify the URL has been added by requesting the linked website and looking for that URL
  • if successful, the user should be taken back to the collective page and allowed to approve every pledge, which will create the paid or active orders and charge the pledges.

cc/ @xdamman

@cuiki
Copy link

cuiki commented Aug 6, 2018

the collective's URL will need to be added to the homepage of the website linked to that collective, i.e. Babel is linked to babeljs.io or curl is linked to https://github.com/curl/curl.

How does that happen? Add it in their HTML?

The flow is updated and I'm working on the wireframes to complete it with visuals. You can click on the pages and they will take you to the wireframe:

— i.e. https://tafka.d.pr/nSMZRu
https://app.moqups.com/Cuiki/JSZNg8YwFr/view/page/ac2664e66

@cuiki
Copy link

cuiki commented Aug 9, 2018

UPDATE:

I've made an update to the search experience and tried to kill tow birds with the same stone and also rework the Discover/Global Search page through the experience of searching for a group (and not finding it —› making a pledge). The idea is that the Discover page becomes the same space as the global search results UI ( reference #1188 )

Flow (Click on hotspots to jump to wireframe. You'll see which views are pending):
https://app.moqups.com/Cuiki/JSZNg8YwFr/view/page/ac2664e66

Clickable wireframe prototype (SHIFT to see hotspots):
https://app.moqups.com/Cuiki/JSZNg8YwFr/view/page/a5c363f8c

@xdamman
Copy link
Contributor

xdamman commented Aug 9, 2018

I've added a couple of comments.

One thing I realized @HipsterBrown: verifying that the website has added a link to their collective page is not enough to claim the collective because we also need to know who to add as the first admin.

That's why I suggest to send an email to the person who wants to claim the collective with a unique code that can be parsed by our crawler. That way we can recover the UserId that should be added as the first admin.

@cuiki
Copy link

cuiki commented Aug 10, 2018

UPDATE:

Applied the feedback from @piamancini and @xdamman into the flow chart and the wireframes for Pledges. Updated it also per a few adjustments I saw needed for:
— The Pledged collective card so that it feels as a collective, unclaimed, but a collective in the end.
— After a user follows the instructions to claim a collective, we should take them to the new collectives settings page.
— Made two versions of the ‘Make a Pledge’ form:
• The very first pledge for a cause which results in the creation of a Pledged Collective page.
• Every other pledge made for a cause that already has an (unclaimed) Pledged Collective page.

@cuiki
Copy link

cuiki commented Aug 13, 2018

UPDATE:

— Flow map for the whole feature has been updated and hotspots fixed to take you to the proper wireframe within the flow.
— Wireframes have been completed and ready for review.

The one thing pending is the email content that the recipient/pledged collective owner will receive with the instructions on how to claim the collective.

— Flow (Click on hotspots to jump to wireframe. You'll see which views are pending):
https://app.moqups.com/Cuiki/JSZNg8YwFr/view/page/ac2664e66

@cuiki
Copy link

cuiki commented Aug 16, 2018

Hey @HipsterBrown

The pledge form page is on InVision. It shows two versions:

1st pledge + pledged collective creation:
https://invis.io/Y7NJWY5AGV8
— image:
pledge-form-1st pledge

Pledge to an existing pledged collective:
https://invis.io/FSNJX8HE4TN
— image:
pledge-form-to existing-pledged collective

To see the updated styles and states for text fields and select buttons please refer here (all form elements should follow these styles):
https://invis.io/YMNJWWWJ6NF
— image:
form-elements

@cuiki
Copy link

cuiki commented Aug 17, 2018

Hey @HipsterBrown , I did some updates while adapting the form style from pledges to contribution tiers (backer, sponsor, one-time donation).

You'll see the changes in InVision. Its not much, mainly I just swapped the form and the sidebar info with other minor adjustments.

@cuiki cuiki added high priority complexity → complex api Issues that require some work on the API (https://github.com/opencollective/opencollective-api) frontend labels Sep 9, 2018
@HipsterBrown
Copy link
Contributor Author

This feature has been release in production today. 🚀

Followup work:

  • remove feature flag environment variable after a week of no issues
  • integrate pledges flow into Back Your Stack.

@lindatalu lindatalu added the design Global label for anything that the OC Design collective works on. label Apr 24, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
api Issues that require some work on the API (https://github.com/opencollective/opencollective-api) complexity → complex design Global label for anything that the OC Design collective works on. feature frontend
Projects
None yet
Development

No branches or pull requests

5 participants