This is a list of potential projects students participating in Google's Summer of Code program might be interested in working on. Ideas should be submitted with enough detail that a student interested in the project could create a full proposal for the project.
Potential Development Mentors
Kevin Reynen (GSoC Organization Admin) - I'm kreynen on Drupal.org, CiviCRM.org, IRC, and Github. My expertise is primarily in Drupal modules that improve CiviCRM integration including: CiviCRM Cron, CiviCRM Multiday Event, and CiviCRM Certify. I maintain the CiviCRM Starter Kit distribution which makes it easier to start a site with Drupal and CiviCRM. I am interested in mentoring project that improve Drupal integration, migrate functionality from Drupal to CiviCRM native extension, are beneficial to Community Media's CiviCRM's use and/or improve the user experience for new CiviCRM users. I'll primarily be in Mountain Standard Time during the summer. I only speak English.
Xavier Dutoit (GSoC Organization Admin) - I'm xavier from tech to the people, xavier on civicrm, and tttp on github and drupal.org. My main areas of expertise are online campaigning and dataviz. I'm interested in mentoring projects that focus on dataviz (d3/dc) and civicampaign. I'm based in Europe. I speak french and english.
Tim Otten - I'm totten on civicrm.org, IRC, Github, and drupal.org. I'm one of the core developers for CiviCRM. My main interest is making it easier to develop with CiviCRM. My CiviCRM work has included overhauling the extension framework as well as development of the "civix" tool, the graphical form designer (and other Backbone-based UIs), the continuous-integration infrastructure, and the CiviHR suite of extensions. I live in San Francisco and speak only English.
Parvez Saleh - I'm Parvez from Veda Consulting. My main areas of expertise are CRM's for Not for Profits, in particular integration with financial systems and mapping business processes to CRM workflow. My primary interest is to ensure that charities are not restricted to closed source only systems for their CRM needs, ensuring that CiviCRM is a viable alternative to the traditional closed source systems. I'm interested in mentoring projects that focus around Donor Journeys in CiviCRM, integration with third party systems and drupal rules / maestro + civicrm. I'm based in the UK, in the USA during CiviCon SF, available online most of the time. I speak english, hindi and gujarati.
Kurund Jalmi - I'm kurund on civicrm, drupal.org, irc, github and most other channels. I'm one of the core developers for CiviCRM. My primary interest is to improve overall UI and usability in CiviCRM and make a it simple and easy to use by non-technical users. I'm also interested in mentoring projects that improve Civi's core capabilities, migrating Civi to use Symfony and Doctrine. I live in Mumbai and speak english, hindi, konkani and marathi.
Nina Reyes - I'm Nina from Palante Technology Cooperative. I'm a front-end developer with extensive Drupal site building and theming experience, and I've also adapted custom Drupal themes for use with CiviCRM on both the admin and user side. I'm also the Web Director for Hyphen magazine. I'm based in Brooklyn, NY, and speak English.
Brian Shaughnessy - I'm from Lighthouse Consulting & Design and am a CiviCRM geek. I write code, fix things, argue with the core team – but always end the argument with a compliment, write books, and am currently #10 on the CiviCRM github commit contributors list. I am based in Albany, NY, and I speak English, PHP, and CiviCRM. I was a GSOC mentor for the Joomla project a few years back, so I have some experience with how things work. I just wish I could get my name to blink, but I guess they disabled that html element.
Mark Hanna - I'm Mark, Senior Developer at Skvare, jackrabbithanna on civicrm.org and irc, and markusa on drupal.org. My main areas of expertise are custom development solutions for Drupal and CiviCRM, and site-building techniques for the implementation and integration of CiviCRM and Drupal. Based in Dallas, TX and I speak English.
Peter Petrik - I'm Peter from Skvare, Slovak on civicrm.org, irc, and drupal.org. I bridge the worlds of business and technology. Technical to get into custom code, and business savvy to see the big picture and lead client organizations to successful CiviCRM implementations. I am based in Dallas, TX and I speak English.
Eileen McNaughton - I'm Eileen from Fuzion. I have contributed a fair amount of code to core with my involvement in the v3 API being the most well known area. I have also been heavily involved in extending testing within CiviCRM and support a couple of Drupal integration modules. I am interesting in making the logic inside CiviCRM less tightly coupled with the existing forms to allow more developer flexibility and make CiviCRM better able to adopt change. I am based in Whangarei, New Zealand and I speak English.
Nicolas Ganivet - I'm Nicolas from Cividesk. I am an active contributor to CiviCRM, a founder and key contributor to the LTS version, and also do maintain a Standalone distribution for my customers. I have created numerous extensions for CiviCRM including the Google Apps Sync, Constant Contact Sync, Normalize and many others. I do live in Denver, Colorado and speak French and English.
Joe Murray - I'm Joe from JMA Consulting. I have contributed some code to core, and supervised developers who have made major contributions to core especially in accounting. I've worked with my developers to develop CiviCRM extensions for small usability improvements, large functionality enhancements (grants), and integrations with other products (Mandrill, soon attentive.ly). I also write books with Brian like Using CiviCRM and help political campaigns and non-profits achieve their missions. I'm interested in mentoring projects in the areas of accounting (contributions/memberships/events/grants), large data migrations, VOIP integration, automated installs of customized versions of CiviCRM, and other cool and useful things. I am fluent in English and SQL, and get by in French and many programming languages.
Emily Frazier - I'm Emily from First Turn Media. We work with nonprofits in the United States, largely in community media organizations and organizations with an environmental focus. Many of my clients use CiviCRM, and I am an active community member.
IF YOU MEET THE MENTOR QUALIFICATIONS AND ARE INTERESTED IN PARTICIPATING, PLEASE ADD YOURSELF HERE
Potential Organizational Mentors
These people will act as official or unofficial co-mentors of the project. If a project idea is coming from an organization without a developer on staff, ideally they would volunteer time to help manage project scope, usability testing etc.
Owen Bowden - I'm the Insight Manager for the blood cancer charity, Leukaemia & Lymphoma Research. I manage the largest CiviCRM installation in the UK. We are active community members and contribute code and functionality back the the core project. I can advise on real world applications of projects and how they can make a difference to NGOs and charities. I'm in London on GMT time and speak English.
John Sullivan - NEED TO ADD FREE SOFTWARE FOUNDATION BLURB
Lesley Parton - I'm the civi admin for the Conservation Council of South Australia and a few other non profits. Many of them are looking longingly at other solutions with better social network integration and easier interfaces (eg Nation Builder and Causevox), particularly for campaigning and peer to peer fundraising - but I love Civicrm! I'm happy to help in any way I can with the Social Media Integration, Mail Blast and Bootstrap projects.
I'm in Adelaide on GMT +9.5 and speak English and Australian.
IF YOU MEET THE CO-MENTOR QUALIFICATIONS AND ARE INTERESTED IN PARTICIPATING, PLEASE ADD YOURSELF TO THE LIST ABOVE
Google Summer of Code has started! Google funded 6 of these CiviCRM projects. If you are interested in getting involved next year, please add you name or idea to the Google Summer of Code - 2015 wiki.
These are ideas for projects developed by potential mentors. Potential GSoC students are free to propose projects that are not on this list, but will need to work with the community to find a qualified mentor for the project. Students begin applying on projects on March 10. Student applications are submitted after registering for a Melange account.
Feel free to continue adding project ideas, potential development mentors, and/or organizational mentors until the student deadline of March 21.
Universal Sync interface
Themes: web services, mashups, cloud computing
Potential Mentors: nganivet
Organization Feedback: ?
CiviCRM supports synchronization to Google Apps and multiple email marketing services (Mailchimp, Constant Contact, Vertical Response) through extensions. However these extensions have been written by different contributing organizations and with different purposes in mind. As a result, the functionality, configuration and mode of operation of these synchronization extensions are vastly different.
This project would start by defining high-level needs for synchronization between CiviCRM and other kind of software (email marketing services, directories, email clients, other CRMs, other CMS's, etc.), define a common interface for all synchronization extensions (similar to what is existing for payment processor extensions), and port existing extensions to this new interface as a proof of concept. Some of the common needs do include:
- specifying whether we sync all the CiviCRM database or just a subset of it
- defining mappings between CiviCRM groups and similar notion in the target system (mailing lists, groups, OUs, ...)
- creating and maintaining a synchronization queue of contacts that need sync so we do not impact performance
- polling target systems for changes, whether these are hard changes (changes of an attribute) or soft changes (change of status)
- making available and/or using callbacks for real-time synchronization of low-frequency events (interactive change, mailing list unsubscribe, ...)
Bitcoin Payment Processor
Themes: e-commerce, Payment Processing, Virtual Currency, Cryptography
Potential Mentors: kreynen, johns, mfb
Organization Feedback: Free Software Foundation, Electronic Frontier Foundation
CiviCRM already supports most popular payment processors including PayPal and Authorize.net. The most popular payment gateway services are part of the core CiviCRM project. Other, less popular gateways are can be added with a CRM native extensions. This project will require a thorough understanding of Bitcoins, existing Bitcoin PHP libraries (https://github.com/mikegogulski/bitcoin-php), existing payment processors that offer Bitcoin support, and CiviCRM Extensions (Create an Extension). In addition to the code required to extend CiviCRM payment processor class to support Bitcoins, this project would also require creating documentation explaining Bitcoins in a way staff of non-profits could understand including what they can do with Bitcoins. Where can they spend them? How to they convert them to their local currency?
An attempt at this was made by a group of Stanford students, but they didn't complete the project. The discussion and code can be found at: https://forum.civicrm.org/index.php?topic=30532.0 and https://github.com/andreit1/BitCoinCiviCRM
New User Tour
Themes: UX, Usability, Training, Translation
Potential Mentors: Kevin Reynen, Peter Petrik
This is a follow up to a Google Code In project (https://drupal.org/node/2155139). CiviCRM already includes a Configuration Checklist, but doesn't direct users to the next step after the configuration. The Zurb JQuery Joyride library makes it easy to add an in browser tour of features using the live site. This project would divide the configuration checklist into the steps that are absolutely required vs. steps that are more advanced and create a tour that walks new users through configuring CiviCRM to meet their needs.
Bootstrap for CiviCRM UI
Themes: UI, Usability, Design Patterns
Potential Mentors: Nina Reyes, Emily Frazier
Organization Feedback: Tech To The People?
Mail Blast UI
Themes: User Experience, RIA/AJAX, Email
Potential Mentors: kurund, lobo
Organization Feedback: Leukaemia & Lymphoma Research
( If time permits we will check below suggestions - kurund )
This means we have to radically change paradigm - instead of editing 'the newletter' we simply choose a template and then edit a list of individual articles. The newsletter is then put together based on these - kindda like using Smarty instead of crafting an HTML page from scratch.
MailChimp provides free newsletter templates (point 1 above) that are based on a language allowing to specify editable style elements (point 2 above) and editable layout elements (point 3 above). See https://github.com/mailchimp/Email-Blueprints for templates and http://templates.mailchimp.com/getting-started/mailchimp-template-language for template language specifications. There are also tons of other free newsletter templates available, including http://www.campaignmonitor.com/templates/,http://www.activecampaign.com/templates/ and many others.
Visualization for Mailing stats and A/B testing
Themes: User Experience, RIA/AJAX, Email
Potential Mentors: kurund, mfb
Organization Feedback: Leukaemia & Lymphoma Research, Electronic Frontier Foundation
CiviMail is an email-blast tool for non-profit organizations. It is quite robust but lacks functionality like A/B testing, one of the most requested feature. It also has some basic reports. The goal of the project is to improve civimail stats reporting by making it more visual (charts, etc ) and implement missing A/B testing functionality. This project will involve the research on implementing best methodology for A/B testing and visualization, wireframing stats reporting and A/B testing workflow, discussing it with community members, and implementing it with AngularJS and D3js.
Social Media Integration
Themes: Online Marketing, Social Media, Social Graph Analysis
Potential Mentors: kurund, joe
CiviCRM provides a way for non-profits to engage their constituents through multiple media – email, phone, walk-lists, etc. Its support for social media is currently quite limited. Possible projects to improve it include:
- Pull in contacts from social media & match to CiviCRM contacts based on available information
- Integrate with social media logins for petitions to get authorized access to petition-signers' social graphs
- Import into CiviCRM data about who is re-tweeting, sharing, writing on your wall
- Establish ways to determine highly active users based on their social media activity
- Add social media feed dashlet to see 'what's going on right now'
- Add ability to automatically publish/ tweet about events , certain types of activities, possibly progress towards fundraising goals
Themes: Quality Assurance
Potential Mentors: (maybe yjkchicago or xavier would be interested?)
Organization Feedback: ??
CiviCRM is a large, web-based application developed by a large community of developers. Unfortunately, there are significant gaps in its automated test coverage.
The project aims to provide broader test-coverage through more automated testing; specifically:
- Identifying or designing fuzzy testing techniques appropriate for CiviCRM.
- Implementing the fuzzy testing techniques.
- Incorporating the fuzzy tests into CiviCRM's on-going quality-assurance.
- Communicating with the CiviCRM development community about how to use the fuzz testing.
Email Preview Cluster
Themes: System Integration, Scripting, Virtualization, Heterogeneous Systems
Potential Mentors: (maybe bgm or ergonlogic would be interested?)
CiviMail is an email-blast tool for non-profit organizations. Email blasts are a very visible part of any organization's public persona, and many non-profits are conscientious about the appearance of their emails. Unfortunately, email design can be challenging because there are many email clients, and each one may render the same message differently To determine whether an email will actually render well for all its recipients, one must open the same email in many different clients.
The goal of this project is to develop an open-source backend for previewing email content on a range of different platforms and applications, such as Google Gmail, Microsoft Outlook, and Mac Mail. As an open-source tool, it will be critical to provide a clear installation process – which will require a mix of documentation and scripting/automation.
The focus of the project will be development of the backend. The backend will serve the CiviCRM community. However, to allow use by the broader open-source community, it should have no specific dependencies on CiviCRM.
Dataviz framework, Geo tools and choropleths
Themes: Data viz, D3, campaigning
Potential Mentors: xavier, kurund, joe
Organization Feedback: Leukaemia & Lymphoma Research, wikimedia FR, EFF
CiviCRM is used by a range of NGOs and charities, many of these organisations need geographic visualisations to help their work. This could involve :
- Walk lists for democratic organisations who campaign door to door.
- Mapping of supporters and contributions per region and the creation of choropleths
- Normalisation of chrorpleths against local population
- Time series mapping of changes in support and income
- visualisation of constituents segmentation (eg tags/gender/age)
- visualisation of campaigns (event registrations, fundraising, mailings) over time and estimation of achievements of current ones
there is an extension for dataviz (based on d3 and dc ). Some organisations (EFF) have already the extraction they need (eg about donors and contributions) but don't have yet a good visualisation of the data.
Harden CiviCRM Security
Potential Mentors: Chris Burgess?, joe, mfb
Organizational Feedback: Drupal Association, Electronic Frontier Foundation
When a user account is compromised, damage that can be done should be limited.
- Find any places using eval, preg_replace()'s /e, etc and find another way, including in libraries used.
- Make sure any places where users input paths to unix commands are well-validated.
- Review libraries used.
- Look for CSRF and XSS. (Probably overlaps with fuzz testing)
Themes: Video creation, Video aggregation, Curation, Training, Translation
Potential Mentors: Kevin Reynen
Organizational Feedback: Boston Neighborhood Network?, channelAustin?, Portland Community Media?
The idea for a video.civicrm.org site was originally proposed by circle-interactive.co.uk. They produced a few videos using this process https://civicrm.org/blogs/seank/video-project-update. The revised vision for video.civicrm.org would be to build a site that aggregated all CiviCRM related video from all major providers (YouTube, Vimeo, Archive.org, etc) and provided a workflow for rating and categorizing the videos as well as deep linking and transcripts of the audio in multiple languages using the Mozilla Popcorn project.
Report Builder GUI
Themes: Usability, GUI, Drag-and-drop, Visualization, Print, Embedding
Civi components: This feature would tie in with Advanced Search, CiviReports, and would pull data from all aspects of CiviCRM.
The idea is to provide a visual report builder interface. Users can select database attributes, data ranges (date, numeric, nominal values, etc.), grouping, pivoting, and visualization widgets. The data and widgets can be added to a dashboard, fluid canvas, exported as PDF, or exposed through embeddable HTML/JS widgets.
Workflow Process Graphs
Themes: Usability, GUI, Business Process Management
Civi Components: This aspect would tie in with CiviCase, CiviEvent, and other Civi components, which would be exposed as process modules.
Business processes can be modeled through a drag-and-drop interface. Processes consist of modules and connectors (nodes and edges). Modules represent business activities such as "Send a welcome message", "Schedule follow-up", "Process Credit Card", etc. Connectors organize the process into sequences, and suggest data products to convey between steps.
Themes: Usability, drag-and-drop, User Interface, data entry,
CiviCRM Components: Case, Event, Contribute, Member, Relationships, custom fields
Visual interface to build forms for CiviCRM components.
Drag and drop form elements, form logic (show, hide, change values, etc), form calculations, various widgets, form submissions tie in to Civi data.
This module is built using core Civi core. Thus, it will be available on any platform where CiviCRM runs. Form elements can be combined from any CiviCRM module, e.g. events, cases, contributions, etc.
Themes: Desktop, contingency, local
Potential mentors: kurund
CiviCRM Components: Case, Event, Contribute, Member, Relationships, etc.
As the client side applications become more mature, they may replace the CiviCRM server side components. Civi server components will primarily provide an api for data access/modification.
Drupal 8 Integration
Potential mentors: Eileen + Tim Otten
CiviCRM Components: Core
Drupal 8 is due out towards the end of this year and CiviCRM will need to integrate with it. Drupal 8 is moving to many of the same technologies CiviCRM is moving towards and is also bringing a focus on modern technologies which means that skills developed on this project would be very transferable. Drupal 8 offers us the opportunity for deeper integration with CiviCRM entities as drupal entities 'out of the box' - offering us access to Drupal concepts such as migrate, rules module, Views Bulk Operations and various other site building tools.
Themes: Usability, Accounting, Contributions, Workflows
Potential Mentor: Joe Murray
Organizational Feedback: RNAO, Wellington Circus Trust
CiviCRM Components: Core, Contribution, Event, Membership
Accounting integration in CiviCRM 4.2 refactored the schema and rewrote much of the code dealing with finances in CiviCRM. One enhancement baked into the schema but not realized at the application layer is to support paying for things in several partial amounts rather than one full payment. This is different than recurring online payments. A typical use case would be putting a deposit down on a table for a dinner using a credit card online and then having a cheque sent to cover the outstanding balance. Or spreading a large annual membership payment into several payments by post-dated cheques.
Themes: Usability, Accounting, Contributions, Workflows
Potential Mentor: Joe Murray
Organizational Feedback: RNAO, Wellington Circus Trust
CiviCRM Components: Core, Contribution, Event, Membership
Various situations require an organization using CiviCRM to refund part or all of a payment: a cheque is made out in the wrong amount, an event ticket is returned before an event, a membership or subscription is cancelled, or a donation exceeds the legal limit for a campaign contribution. Accounting integration in CiviCRM 4.2 provides the infrastructure for this including some work-arounds in the existing UI. This project would improve the usability, security, accounting integration and automation of these workflows. Key deliverables would include 1) separate permissions for roles authorized to create refunds, approve refunds, submit refunds to payment processors, cut cheques for refunds, 2) proper bookkeeping entries for accounts payable for refunds owed but not sent, and for refunds disbursed, 3) intuitive user experience for site administrators who are not bookkeepers, 4) an intuitive user experience for self-serve refunds as appropriate by end users, 5) integrating cheque printing and audit controls from an existing CiviCRM grant programs extension.
CiviCRM Phone Integration
- Themes: Usability, Integration, Campaigning
- Mentor: Joe Murray, Possible co-mentors: Leo Burd?
- Organizational Feedback: BC NDP?, Federal NDP?, Guelph?
- CiviCRM Components: Core, CiviCampaign, CiviSurvey
A few organizations have integrated CiviCRM with Asterisk VoIP servers, but there are no generally available CiviCRM extensions. There are SMS integrations with ClickATell and Twilio, the latter of which has an API that also supports voice calls. This project will define an API for VoIP plug-ins that will allow different providers to later be integrated as plug-ins, and will create a first or reference plug-in for a suitable VoIP provider / API. Consideration will be given to re-implementing and or migrating some of the VoIP Drupal modules. The initial VoIP system(s) to be supported with a plug-in will be Asterisk and/or Twilio (especially for outbound) and/or Cisco (especially for inbound). In addition, the student will implement at least one of the following types of VoIP functionality:
Inbound calls: Create an extension that will work with any VoIP plugin to support inbound calls. When an inbound call is received, display contact(s) with the incoming number, allow operator to enter call details into a new Activity and if necessary create a new contact, delegate followup as appropriate using existing Activity followup functionality, and store (possibly updated) contact and call info. Call Transfer and other advanced VoIP Call Management functionality will not be supported in the initial phase. The popup will ideally be browser based, possibly involving a small application on the user's workstation (e.g. for Cisco integration).
Voice Broadcast messages: Broadcast an uploaded recording to the members of a group that have telephone number. See http://www.twilio.com/docs/howto/broadcast.
It is likely a good strategy to review the working code from https://drupal.org/project/voipdrupal and https://drupal.org/project/voipblast. Rather than just re-implement (e.g. using CiviCRM's queuing approach from CiviMail rather than Drupal's queues) or migrate the functionality from Drupal to CiviCRM, we might want to consider architectures that would abstract voip features and plugins from the application using it (eg Drupal, CiviCRM).
IF YOU HAVE A PROJECT IDEA, PLEASE ADD IT HERE. THIS IS A WIKI. BE BOLD AND EDIT.