Electronic Frontier Foundation https://www.eff.org/ What's the - - PowerPoint PPT Presentation

electronic frontier foundation
SMART_READER_LITE
LIVE PREVIEW

Electronic Frontier Foundation https://www.eff.org/ What's the - - PowerPoint PPT Presentation

Micah Lee micah@eff.org @micahflee Web Developer at Electronic Frontier Foundation https://www.eff.org/ What's the Electronic Frontier Foundation? What's the Electronic Frontier Foundation? US-based non-profit Issues include: full of


slide-1
SLIDE 1

Micah Lee micah@eff.org @micahflee Web Developer at

Electronic Frontier Foundation

https://www.eff.org/

slide-2
SLIDE 2

What's the Electronic Frontier Foundation?

slide-3
SLIDE 3

What's the Electronic Frontier Foundation?

  • US-based non-profit

full of lawyers, technologists and activists

  • Focuses on digital

civil liberties

  • We've been using

and loving CiviCRM since October 2011

  • Issues include:

– Free Speech – Fair Use – Privacy – Security – DRM – Internet Freedom – Jailbreaking – Encryption, anonymity,

etc.

slide-4
SLIDE 4

EFF Has Special Needs

  • Membership logic is crazy
  • The same premiums are offered at various

prices

  • We make tons of donate pages for different

purposes

  • Donate pages must be cached
  • Design and simplicity are very important
  • PCI Compliance is obnoxious
slide-5
SLIDE 5
slide-6
SLIDE 6
slide-7
SLIDE 7

TODO: Membership Levels screenshot

slide-8
SLIDE 8

Some Hacks We Had in Place

  • Three versions of every membership type

(one-time, recurring, variable price)

– Total of 17 membership types in CiviCRM

  • Three versions of every premium

(one-time, recurring, variable price)

– We have 7 different premiums – But we store 21 different premiums in CiviCRM

slide-9
SLIDE 9

Too much traffic, too little caching

  • On each CiviCRM contribution page load:

– Loads Drupal into memory – Loads CiviCRM into memory – Takes lots of server resources – Takes lots of time

  • EFF's popular action alerts get 30,000 signatures

– 30,000 signatures = 30,000 thank you page loads = 30,000 Drupals

and CiviCRMs loaded into memory (~240 gigabytes of RAM?)

– 1 crashed web server :(

  • Caching solves this problem
slide-10
SLIDE 10

Lots of Donate Pages

  • We want to know contribution sources, but we don't

track email clicks for privacy reasons

  • We used to have separate donate and join pages
  • We used to have four versions of each contribution

page: Donate, Donate PayPal, Join, Join PayPal

(CiviCRM 4.2 fixes this, yay!)

  • We create a new donate page for each:

– Fund-raising campaign about a specific issue – Fund-raising appeal email – Action alert thank you page

slide-11
SLIDE 11

Ugly Hacks

  • Way too many custom templates
  • Hundreds of Drupal URL aliases
  • Stupidly complicated node id in URL
  • Hooks, hooks, hooks!
  • Tons of custom JavaScript that changes everything

– But horrible experience for NoScripters

  • Skip confirmation page hack (now in CiviCRM 4.2!)
  • I spoke about this at CiviCon SF in April 2012
slide-12
SLIDE 12

TODO: HTTPS Everywhere page screenshot

slide-13
SLIDE 13
slide-14
SLIDE 14
slide-15
SLIDE 15

Farewell, Authorize.net

  • If you accept Authorize.net, you have to be

PCI complaint (and pay auditors tons of money to find

security false positives with automated tools)

  • Authorize.net refuses to fix their bugs, even

after we spend hours on the phone with them explaining their problem and how they can fix it (just ask Leez)

  • We wanted better rates, better customer

service, better development environment

slide-16
SLIDE 16

Hello, Stripe!

slide-17
SLIDE 17

Note about Stripe

  • We're now using Stripe on our donate pages!
  • Joshua Walker (drastik) recently wrote a CiviCRM

Stripe payment processor

http://civicrm.org/extensions/stripe-payment-processor

  • It's brand new! (we still need to test it)
  • Our online store uses Ubercart, with no good

Stripe module yet (we're working on it)

  • They have run fun hacker challenges, just google

for “stripe ctf”

slide-18
SLIDE 18

So we decided to REINVENT

THE WHEEL

(sort of)

slide-19
SLIDE 19

Donate Pages Outside of CiviCRM?!

  • If we build our own system

– We have 100% control over look and feel – We can cache our donate pages so they can sit

behind load balancers, reverse proxies, content delivery networks, clusters galore!

(we don't actually do all of this, but it's nice that it's an option)

  • CiviCRM has a great API

– Easy to push contributions into the database – We can go crazy with membership logic – Premiums however we want them? Sure.

slide-20
SLIDE 20
slide-21
SLIDE 21

I find this chart confusing, but those numbers are in millions USD!

slide-22
SLIDE 22
slide-23
SLIDE 23
slide-24
SLIDE 24

http://wiki.creativecommons.org/Single_click_donations_with_CiviCRM (thanks, nkinkade!)

slide-25
SLIDE 25

What We Came Up With

  • Creative Common's OneClick code, heavily hacked,

customized, and added Stripe support

  • Drupal content types: Donate Page, Premium
  • Custom panels panes defined in code, including

donate form that displays, validates, and hooks into OneClick

  • Panels node_view variants: Donate Page, Action

Alert Thank You Donate Page

  • Lots of JavaScript, CSS, and images
slide-26
SLIDE 26

Donate Page

slide-27
SLIDE 27

Action Alert Thank You Page

slide-28
SLIDE 28

Thanks For Donating / Tweet

slide-29
SLIDE 29

Editing Donate Pages

slide-30
SLIDE 30
slide-31
SLIDE 31

Endorsement

slide-32
SLIDE 32

Editing Premiums

slide-33
SLIDE 33
slide-34
SLIDE 34

Panels

slide-35
SLIDE 35

NoScript

slide-36
SLIDE 36

Demo Time

Open browser and show off all the fancy JavaScript