Notes from Drupalcon Austin 2014 BOF: Drupal for Good (nonprofits, activists, community organizers)

You are viewing a wiki page. You are welcome to join the group and then edit it. Be bold!

Note: This is quick and dirty for now; I'll go through and clean it up when I can. Feel free to add your own notes!

Case studies

  • Library site: librarysite.shellco.com, focused on libraries
  • Quaker cloud: focused on Quaker communities/congregations: http://www.fgcquaker.org/services/quaker-cloud Organic Groups is an amazing tool for building community (used in this system), uses Salesforce for CRM
  • Redesign for Lambda Legal. Did usability testing and integrated Solr search (vastly improved discoverability) http://www.lambdalegal.org/
  • imentor.org/shareables - shareable social media-focused media
  • Golden Tote Bag contest pitting PBS programs against each other weta.org on June 12
  • Migrating Drupal: Bootstrap Drupal within a folder, then you can use Drupal hooks to migrate that content
  • CiviCRM starter kit on Pantheon: Easy for anyone to spin up for no charge. You can download the stack and run it yourself from https://drupal.org/project/civicrm_starterkit
  • Costa Rica ojoalvoto.com: Nonpartisan project educating people how to vote, where to vote, candidate comparison tool
  • Worker's co-op with Unitarian Universalist Association in Ithaca - rebuilding site in Drupal, doing regular trainings each week so that by the end they will be in control of the website
  • Knowledge management site based on small world theory - helping keep children in homes who tend to get pulled into foster care because of environmental conditions (e.g. lack of beds, plumbing, electrical) - matching services with families who need them. Community of Service CAUSE - building a distribution in about a year
  • Jade Goodall Foundation: rootsandshoots.org build on AbleOrganizer distro - allows orgs to create events, petitions, donations (CRM stuff), can create custom reports
  • RedHen_donation - entity donation forms, one-page forms, sits on top of RedHen CRM and Drupal Commerce; no check-out process, all internal. Handles recurring donations. Can do A/B testing on donation forms. May be the start of a crowdfunding distribution.
  • UNOCHA - reliefweb.int 500,000 pieces of humanitarian data and reports dating back to the '90s. Just launched an open content API. Build off of elastic search, using Swaga for documentation.
  • powertoconnect.org -

Collaboration/sharing nonprofit builds, distros, etc.

Some nonprofits or nonprofit-focused shops have invested money in platforms or nonprofit-specific distros.

Where could people share smaller bits of information - not full distributions, but bits of code or configuration of modules. Sharing Features would be one method. Used to be Features Server which would provide a repository of features, but it never developed. "Recipes" could be a model for sharing instructions or configurations to do different things.

Distributions allow for shared groups of modules and configuration - communities develop around the distributions. On the other hand, distributions don't always make it to the next big upgrade, so people get stuck without an easy upgrade. Distributions seem "packaged" and so there's an expectation that there will be a packaged upgrade. "Sometimes we're solving the easy problems with distributions, and not solving the hard problems."

Looking to connect to other developers working on these issues, finding co-maintainers for nonprofit-specific modules.

Within the nonprofit space, there are many different kinds of nonprofits; the challenge of distributions is that it might fill the needs of one type but not others.

Idea to create a repository of user stories, and then methods for solving those needs (recipe model).

Nonprofits aren't used to collaborating with each other on technology. We need to work with nonprofits to learn how to do that. It has been a real struggle to build advocacy tools in particular in Drupal 7, and there haven't really been organizations working together to make that happen. There are some advocacy options now, but it took a long time. If organizations worked together it would have happened faster.

github/united-states/contact/congress - formcracking on all the congressional websites

Topics we didn't get to talk about

  • Building communities
  • Drupal 8 and small nonprofits
  • Drupal 8 and democracy/open-source
  • CRMs (constituent/customer-relationship management)
  • search and social discoverability in Drupal
  • D8 security
  • small budgets and technical debt
  • differences between nonprofit and for-profit web-dev

Comments

I really take issue the

kreynen's picture

I really take issue the statement the WETA staffer made at the BoF that no one would benefit from sharing code for a TV Schedule. Community television, radio, conferences, and anyone else who schedules multiple tracks or channels in a hour/half-hour grid can benefit for this work.

https://drupal.org/project/cm_tv_schedules is the latest iteration of schedule display code that was originally developed by WGBH. The first version was the D6 version used at http://www.mnn.org/schedule. That version was still organization specific, but because the code was dumped to github there was something to other developers to look at and start from.

It can take several years to get to the point that an average Drupal site builder can download and install something like this as a module, but it will take even longer if the code isn't shared.

Exporting your configuration as a Feature or creating a screencast that explains the configuration (sharing the recipe) can be done in a 1-2 hours. While not every nonprofit is going to be in a position to maintain or fund the maintenance of a fully promote Drupal module, 1-2 hours of sharing can save other organizations an exponential number of hours.

If you don't share what you do to improve Drupal, you'll never know when the virtuous cycle of contributions could lead from a neat idea on one site to something hundreds of nonprofits who are trying to change the world adopt.

I know I can be an ass about this, but I get very tired of seeing open source improvements locked up behind SaaS paywalls and used by "public" organizations that lock so much content up in copyright.

I would REALLY love to see the "Golden Tote Bag contest" configured as a Feature that is shared publicly. I can see that being a popular thing to add community media sites.

I certainly didn't mean to

jesss's picture

I certainly didn't mean to imply that no one could benefit from TV Schedule code -- I probably didn't express myself clearly.

The module I wrote is very specific to working with the PBS TV Schedules API, which can only be accessed by PBS member stations who have an API key. None of the schedule data is stored within the Drupal database, so it doesn't use nodes or views -- it just gets the data from the API and sends it to the theming layer to be displayed. There isn't really a configuration recipe to share.

That module is not currently in a shareable state. To release useful modules requires more than two hours to convert configuration into a feature and explaining how it works. The community expects a level of support that most of us cannot provide easily. It is a goal of mine to abstract it so that other PBS stations can use it, but I admit that hasn't been a priority for me. Like most non-profit web staff, I'm working with limited resources -- taking the time to refactor code that's already working is a luxury.

I'd be happy to share my recipe for our Golden Tote Bag contest, but I have to say, this was not the most diplomatic way to request it.

@jesss, I'll be interested to

capellic's picture

@jesss, I'll be interested to see the recipe for the Golden Tote Bag contest as it strikes me as a creative solution. Most of us would hear the business requirements and go off hunting for some voting module. And while that may have been your first step, you ended up with the Webform module as the center of the solution. In addition to the technical recipe, would be interested to know what got you to realize Webform was the right path.

Webform is one of my favorite

jesss's picture

Webform is one of my favorite modules, going back to D5. It's a workhorse, and I've found I can use it for just about any feature that requires users to submit data that doesn't need to be stored as nodes. In addition to our upcoming Golden Tote Bag bracket, it also powers our newsletter signups, giveaways, job applications, and personality and trivia quizzes. So, I made a quick pass on d.o to see if there was a ready-made voting module that took care of all my requirements out-of-the-box. When I didn't find it, I returned to Webform and started digging in to see how I could make it work.

The recipe is actually pretty simple. I have two content types: Bracket: Team and Bracket: Match. Bracket: Team holds the information about the specific shows. Bracket: Match holds the description of the head-to-head matchup and is webform-enabled -- this is where the voting happens.

The Bracket: Match webform has one select component to specify the matchup between the teams. It uses [Node ID]|[Node Title] from the Bracket: Team content type as the key|value pairs. (I thought about building some sort of fancy autocomplete widget to help avoid errors on this step since it's admittedly a bit klugey, but I ran out of time and my content team is pretty savvy about things like this so I left it as-is.)

At that point, it's basically done -- the rest is UX window dressing. A webform component alter hook takes the nid from the select component, grabs the Bracket: Team node object and displays it in place of the plain text title. Some javascript on top of that replaces the radio buttons with clickable toggled text buttons and some template overrides (both node and webform) smooth out the transitions and remove extraneous links. The Webform Chart module lets me display the current results of the voting as a pretty pie chart, while the Webform Ajax module lets me wrap the whole thing in ajax-y goodness so when the form is submitted it's replaced by said pie chart without a page refresh.

If anyone has more specific questions, let me know!