An international community for a greener future

Nalini lives in a small city in India. To save money, all school books and student papers are copied or printed at the local print shop. Nalini is immensely annoyed with her classmates when they choose to print on a single side of paper. If everyone used both sides, she reasons, it would reduce their paper use by half. Nalini sends a message to Greenpeace International through Facebook: "I have an idea for a campaign you should run!"

Greenpeace International is an worldwide independent nonprofit organisation that aims to protect the environment and promote world peace. Originally founded in 1971, the organisation is now active in 44 countries and has 2.8 million supporters. With nearly 2 million Facebook likes and millions of site visitors worldwide, Greenpeace International receives suggestions like Nalini’s thousands of times per year, and because they simply can’t take on every new campaign idea, they wanted to find a way to empower its supporters to run their own campaigns, in their own communities.

In addition, Greenpeace International already had an active volunteer base of 20,000 volunteers, organised in about 400 local groups - each local group, or national volunteer network, had it’s own management and communication tools - a true global volunteering ‘database’ was non-existent, with the data instead spread across lots of individual spreadsheets and google-docs, making it hard to track and measure.

Challenges like these spurred Greenpeace International to create Greenpeace Greenwire, its own online community for employees and volunteers. It’s a meeting place where people can connect with other volunteers, activists and groups working on environmental campaigns in their country. When Greenpeace Greenwire rolls out to more offices, it will allow international connections too.

As well as helping activists find and participate in Greenpeace-led volunteer groups and events, Greenpeace Greenwire lets users create their own events and organize their own activities. Users can start groups, host events, run campaigns, share photos and videos, and write blogs.

Greenpeace Greenwire is a unique project in that it serves a worldwide community - so it needs to be able to scale up to hundreds of thousands of global users - but it also serves each element of that community’s specific set of needs. Flexibility is another key element of the project: allowing users to have different roles in different domains for national and regional offices, and also allowing for flexibility regarding which languages each user could choose. It was also crucial that each user feel comfortable providing their personal data in order to take full advantage of the Greenpeace Greenwire community, but on the other hand, the data must be kept secure and limited only to certain authorized users.

Greenpeace Greenwire - USA homepage

Greenpeace Greenwire global Drupal community
Why Drupal was chosen: 

Drupal was selected for these reasons:

  • Open source: Designers and developers from the community can help contribute their development skills on the platform. Non-technical volunteers can contribute new ideas, bug reports or translations.
  • Scalability: A scalable architecture to perform for more than 100,000 global active users.
  • Flexibility: Flexibility to easily configure each domain on a shared global code base.
Describe the project (goals, requirements and outcome): 

Work on Greenpeace Greenwire began in 2013 and focused on four core areas: usability, social aspects, flexibility and security.

1. Usability

Greenpeace Greenwire is designed for users with little prior knowledge of online communities. Volunteers should understand at a glance what the network offers, and it should be intuitive to use. User-centered design principles were applied:

  1. The design is based upon an explicit understanding of users, tasks and environments.
  2. Users are involved in the design process and evaluations.
  3. The process is iterative: move through cycles of creating, evaluating and adjusting.

A user centered design approach is an extensive process. For people with little experience in design, it can be quite overwhelming. That’s why 18 staff members from 7 different countries attended a four-day usability workshop. During the workshop, the staff members learned about the user-centered design process, while our (interaction) designers and development team learned more about Greenpeace Greenwire’s users, volunteers and community managers.

The design workshop and outcomes included survey results, card sorting techniques, personas and usability tests with rapid prototypes. We also gathered feedback on graphic design, especially on the international use of icons and colors for each content-type based on the tasks a user wants to perform on the platform.

Our interaction designer and ICT professionals spent time at Greenpeace International in order to gather input based on real experience and involve the end users in the process. This helped us to define our main user stories and scenarios. A living style guide was created to ensure that the design stayed consistent and that all team members are continuously up to date on changes.

Greenpeace Greenwire - icons

At the time of writing, responsive design is in development. See and play around with the responsive prototype.

2. Social features

To build a strong group of committed users, tools to support self-organisation and self-management on Greenpeace Greenwire allow volunteers to use and share their impressive skill sets.

Facebook-like shoutbox

A logged-in user can use a shoutbox to update their profile and send updates to specific groups or to everyone on Greenpeace Greenwire. Users can also post links. Like Facebook, an image from the linked-to page will appear in the shoutbox and can be selected as a teaser. Users can also upload and add pictures, reply to other people’s shouts, and edit and delete their own shouts.

Create and administer events

Every user can create events. If a user takes on the role of an event organiser, an operations menu lets organizers invite or remove users from an event individually or in bulk, as well as add other administrators, send group emails, and download and export a list of users enrolled in an event.

Friendships and private messaging

The Friends tab on the member page lets users add friends, as well as search for friends by name, location, education, profession and skills. Once a member is found, a user can send them a friend request by clicking on their name and going to their profile.

User role management

The architecture of user roles in Greenpeace Greenwire is technically interesting, as it allows users to have different roles in different domains and national and regional offices. To accomplish this, a custom module that can differentiate roles across multiple domains was developed.

The custom Domain Roles module was created because a similar one on Drupal.org (also called Domain roles) did not do what was needed. Our module allows users to have different roles across multiple domains. For example, one user can be a content manager on one domain, but a normal user on another. This obviously allows for better access control. It also integrates with Drupal user roles, so if you want to give a single user the role of administrator on all domains, you can still do that. The module also defines actions for all the roles that are available, so you can use them for bulk operations. This module has not been contributed to Drupal yet: it's a bit too rough around the edges right now. In the future, it will either be integrated with the existing module or published as a contribution module.

Other features

Other undiscussed features are: profiles, news, blog, documents, photos, ideas, videos, materials, e-mails, notifications, newsletters, social sign-up, Solr search, analytics, maps, comments, social sharing, comments, forms, translations, private notes, testimonials, data migration, widgets and many more.

3. Flexibility and scalability

The combination of multiple domains, multiple languages and organic groups makes Greenpeace Greenwire a unique platform that is both flexible and scalable.

Multiple Domains

The various Greenpeace national and regional offices require their own autonomous environment, but users are centrally administered and can move between environments. Because of this, domains have been incorporated in the Greenpeace Greenwire project.

Multiple Languages

Within each domain, users can set their primary language, and secondary language(s) in their profile settings, so there is a language fallback option. This function is unique to the Greenpeace Greenwire platform, as normally Drupal only allows for one language. This is essential for Greenpeace’s volunteer network as people regularly work together across language barriers, and is especially important in countries such as Belgium or Luxembourg where bilingual and trilingual communities cooperate.

Organic Groups

Groups are spaces for members who have things in common. Users can search and join a group that is located in their community and or based on shared skills. Users may also create their own groups. An anonymous user can browse the groups’ public pages.

Integrations

Each national or regional office uses a different Customer Relationship Management (CRM) system to communicate with their volunteers and digital subscribers. Json APIs built into Greenpeace Greenwire are used to integrate and create supporter awareness in a broader ecosystem of applications used by the many offices.

4. Privacy and Security

The goal is to provide a safe online environment with internationally recognised standards. The “s” in https://greenwire.greenpeace.org indicates the site is operating on a secure connection. Also, after some minutes of inactivity, users will automatically be logged out to limit the risk of unauthorized access to personal information.

Users can change their privacy settings to restrict access to personal data to other users on the platform. They may hide their last name, hide their avatar from public pages and hide their phone numbers from event organizers.

5. Project Approach

Many stakeholders are involved in high-impact and large-scale projects like Greenpeace Greenwire. All these people have knowledge, ideas and wishes for the project. In order to create a successful solution, a process-driven design phase before going into site development is managed by a team of senior users and design specialists. This process prevents thrashing (excessive project overheads or unproductive work), which tends to arise when projects start without a fully thought-out process. During the design phase, methods and techniques like personas, prototyping, agile graphic design and conceptual alpha testing are applied.

Test management

Because of the ever changing needs and priorities of the users, and to ensure flexibility, Greenpeace Greenwire uses Agile or Scrum development framework. With thousands of user stories, all kinds of scenarios and many ‘edge cases’, it is impossible to test all features manually before going live after a new development sprint. To ensure the quality of the product, Continuous integration (CI) and Quality Assurance (QA) tools and standardized software testing processes are used for QA and User Acceptance Testing. The CI server will automatically run all the automated tests and sends an email if new code breaks existing functionality to the developers.

Behat is a tool that enables behavior driven development (BDD). With BDD, you write human-readable stories that describe the behavior of your application. Next, these stories are auto-tested against the application. Simpletest is used for the unit tests. In addition each feature must have a manual test. These manual tests are created in the issue and project tracking tool using a testing management extension. This enables developers, reviewers and the clients to test each functionality on the site step-by-step.

The development team follow the GIT Branching model from Nvie: working with Git-flow makes it easier to follow this model. The model is a set of procedures that every team member has to follow in order to come to a managed software development process. These procedures also ensure every code is tested by the developer and at least one reviewer before the code is pushed to the acceptance environment.

The tools used are based around the Atlassian suite, including Jira.

6. Rollout

The rollout of Greenpeace Greenwire is taking place in phases. In 2013, The Netherlands, the USA and Russia launched. This year, India, France, Belgium, Thailand, Nordic (Denmark, Finland, Norway, Sweden) and UK have launched (some are still in ‘beta’ phase, behind a password to restrict access while the volunteer community coordinators prepare to engage). Brazil and Indonesia will be launched by December, and in 2015 and 2016, the remaining Greenpeace countries will follow.

One of Greenpeace Greenwire’s design principles - determined by Greenpeace volunteer-coordination staff - is that “Greenpeace Greenwire is a community, not a crowd”. This community-orientation marks a key strategic difference between Greenpeace Greenwire and the organisation’s impressive email-based campaigning and petition tools. Because of this, they have chosen natural, organic growth without too much marketing. By learning from the feedback of hundreds of thousands of visitors and the almost 10,000 people currently using platform, the platform will continue to evolve to meet the needs of its users.

Here’s what Brian Fitzgerald, Greenpeace International Head of Digital Mobilisation, had to say about Greenpeace Greenwire:

Greenpeace Greenwire is increasing Greenpeace's reach and amplifying the power of our volunteers every day. By enabling people to self-organise and providing them the tools to coordinate, learn from each other, and share their ideas and stories, it provides a place to create remarkable campaigns and content, allowing us to have impact far beyond the limits of our staff numbers and office locations. It uses bits in the ether to put boots on the ground. It's a key element of a future in which the lines between online and offline activism are further blurred, and more people can find more meaningful ways to join up their efforts to build a green and peaceful future.

Technical specifications

Drupal version: 
Drupal 7.x
Why these modules/theme/distribution were chosen: 

Domain Access - This module allows each Greenpeace office to have a custom environment with the possibility of sharing content and users across domains.
Organic groups - Lets users create groups so they can collaborate on a common goal by sharing and discussing content within those groups.
Search API - Is used for the content search and the members overview. Used in combination with Search API Solr.
Universally Unique ID - Is used to identify users in the custom JSON API.
Context - Blocks are placed via the Context module.
Entity Reference - Is used to reference entities. For example, each signup to an event is referenced to the event itself via this module.
Message - Is used to display recent activities in groups and on user profiles.
Message subscribe - Users can receive email notifications of new or changed content in all the user’s groups.
Language field - Lets users fill in their secondary language preference. This information is used to determine which content should be displayed and which content should not be duplicated.
Media - All the media on the site is selected via the Media module interface. Users can upload pictures, select previously uploaded pictures or link to external videos.
CDN - The CDN module provides integration with our content delivery network. Via this module, all image, font, javascript and css files are served via the CDN.
Entity cache - The Entity Cache module provides the caching of entities in the database cache. This enables the use of Redis caching system for entities.
SimpleTest Fixture - Due to the size of the platform, it takes too much time to reinstall the site and its modules for each test. Instead, a clean .sql dump, which saves a lot of time when running automated tests, is used.
User Relationships - This module is used to create the “friends” functionality. Users can invite other users to become friends.
Views - Views is used for most of the overviews and the search.
Automated Logout - This module allows us to automatically log out users after x minutes of inactivity on the platform.

Current total number of modules used:

106 contributed modules (including submodules + dev modules: 146)
48 custom modules (including submodules + dev modules: 55)
1 custom theme
1 custom installation profile

Libraries:

chosen
ckeditor
hybridauth
jquery + jquery UI
leaflet
mentions
plupload
underscore
uniform
wvega timepicker
behat + mink

Community contributions: 

GoalGorilla loves Drupal and is very committed to the Drupal community. We educate new developers, submit patches, organise and sponsor events and share knowledge as much as we can.

This project created some unique challenges, and the team responded by creating some awesome modules. As the project matures, we will release more and more of these modules as public projects on Drupal.org.

The first module shared is Validator. This module provides an advanced and flexible way for developers to validate forms, entities and fields. Using a simple system of hooks and user-defined constraints, everything in Drupal can be validated. Validator was created to overcome the vast number of form alters and custom validation functions. It helps create a clear structure for defining custom validation. It also helps to reuse constraints across multiple forms and/or entities. There are contributed modules that do some of what the Validator module does, but none of the contrib modules are as extensive.

Our Protect Admin module makes sure your user1 account is not altered by any other user. It is currently is sandbox and will be released in Q4 2014.

We also plan to contribute our custom Domain Roles module to the Drupal community when we’ve cleaned it up a little. We will either integrate it with the existing module or publish it as a contrib module.

Project team: 

Many many volunteers, coordinators, coaches and other people involved at Greenpeace, we unfortunately cannot all mention separately, help building Greenpeace Greenwire. We want to thank them all. A special thanks goes to:

Brian Fitzgerald (Greenpeace International Digital Mobilisation)
Anna Keenan (Project Senior User and Network Developer Trans Pacific)
Yoo Dekker-Lee (Project Manager Digital Products Program)
Vanessa van Donselaar (Network Developer Europe & Africa)
Larry Titus (System and Network Engineer)

Kate Seldman - Drupal volunteer case study copywriter

Anna Keenan - https://www.drupal.org/u/annackeenan
Evelien Schut - https://www.drupal.org/u/evelienschut
Taco Potze - https://www.drupal.org/u/taco-potze
Maikel Koopman - https://www.drupal.org/u/maikel-koopman
Xinyu Ma - https://www.drupal.org/u/xinyuma

Below you will some screenshots including the interaction design, the extended shoutbox, global event mapping, Domain Roles management and a groups landing page.

Greenpeace Greenwire - Events overview
Greenpeace Greenwire - Local group Seattle
Sectors: 
Non-profit

Comments

jackbravo’s picture

Being a community site, did you considered using commons or open atruim as a base project?

Taco Potze’s picture

Great question Joaquín!
We actually built the first version of Greenwire on Commons 2.x (Drupal 6) . This platform was made for Greenpeace Netherlands, single language and single domain.
A case study (you will need to translate from Dutch) can still be found on: http://drupal.nl/showcase/greenpeace-greenwire

This platform more than tripled the Dutch volunteer-base, with many more people organizing and attending events.
That gave Greenpeace International the idea to make the platform available for all their national and regional offices.

However due to the scalability of the platform with regards to multi-domain and multi-language Commons did not give us the
features or the flexibility we needed. So after discussions we choose not to develop it on an existing installation.
We did use some modules and we used the new way of showing content; instead of separate blocks per content type we aggregate
content in what we call the AwesomeBox!

We are looking into using our experience on this and other communities we build to make a Commons 4 based on Drupal 8.
Would you like to help us?

Paul Rowell’s picture

Hi Taco,

Is there a group or otherwise to track/get involved in Commons 4?

Taco Potze’s picture

Or at least not that I am aware of right now (https://www.drupal.org/project/issues/commons)..

What would be a good place to start this conversation :)?

Open Social’s picture

botris’s picture

Screenshots look great...
Actual link redirects me to https://greenwire.greenpeace.org/france/fr/ (yes I'm in France) no matter what I do.
And there I get a popup that it's a protected area. Navigation to base URL is impossible... redirect is forced.

Taco Potze’s picture

It's not a bug, it's a feature ;)! The French domain is in beta, but there is still work done on the content and the translations. I put in a change request to remove the domains that are in beta from the redirects.

You can use a tool as http://hola.org to bypass the redirect and access the site through vpn from for example the US. Hope that will give you the change to take a further look at the site!

Bill Scheurer’s picture

Will Goal Gorilla be offering this platform for other NGOs? On Earth Peace would be interested.

Open Social’s picture

Hi Bill,

We are happy to announce today that after your (and many more) requests we decided to make the platform available as a distribution for Drupal 8!
You can find more information about what is to come here: https://www.drupal.org/project/social and we would love to get your feedback in an early
stage how tools like this would help NGOs like Earth Peace to realize their mission.

Best regards,

Taco@GoalGorilla.com

Open Social’s picture

As per your many requests, we have made a Drupal 8 distribution inspired on the Greenpeace Greenwire platform!!
Please check out this amazing project at: https://www.drupal.org/project/social or read more in our case study at: https://www.drupal.org/node/2754275

Looking forward to your feedback on the project page issue queu.

Open Social