IF YOU ARE A POTENTIAL MENTOR OR REPRESENT A CO-MENTORING ORGANIZATION AND HAVE A PROJECT IDEA, PLEASE ADD IT HERE. IF YOU ARE A STUDENT PLEASE DISCUSS POTENTIAL IDEAS IN THE CIVICRM GSoG FORUM OR #civicrm ON irc.freenode.net.
These are ideas for projects suggested by potential mentors or members of the CiviCRM community. 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.
Improve multi-lingual scalability
Themes: Translation, Internationalisation, Database architecture
Potential Mentor: Mathieu Lutfy (primary), Xavier Dutoit (for client testing)
When organisations operate in multiple languages and have public-facing forms available in multiple languages, CiviCRM has to be switched to "multi-lingual mode". This makes it possible to translate custom field labels, contribution page titles, etc, into more than one language. However, the current database model is made in a way that only makes it possible to use up to 3 languages. We are looking to change the database model to a more scalable one.
Technically, the current database model uses one big table per entity, with an extra column for each language (ex: civicrm_contribute.title_en_US). A MySQL "view" is then created to simplify database queries (civicrm_contribute_en_US.title). The model needs to be flipped around: an extra table for each language. We also need to provide an upgrade mechanism for existing sites.
responsive layout for emails
Themes: UI, responsive html5
The system messages (eg confirmation for an event registration, donation receipt, opt-in email...) look..., well, let's just say it has room for improvement
They are lots of framework and templates that are easy to customise and allow to produce nice looking emails, no matter if you look at it on your desktop or with your smartphone.
It might be needed to extend the template system for automated emails (eg. being able to insert "layout" token, header, footer...), have a publication workflow to use less and make it easy to customise these layout on a per organisation basis, have a cssinliner, move away from smarty....
Improving the extension system
Themes: community, extension
Potential Mentors: someone from the core? Hans? Jaap Jansma
There is more and more extensions added around civicrm, and it's awesome, but now we are hitting the limitations of the infrastructure. Some changes are needed within civicrm (eg being able to define dependencies when an extension needs another one). Some other changes are needed around how we promote and distribute these extensions, eg. making it easier to know what extensions support the latest versions, and for those that don't support them, what's the issue (simply a matter of updating the documentation, some sponsoring needed, very complex changes, obsoleted and feature added in the core...).
Social Media Integration
Themes: Online Marketing, Social Media, Social Graph Analysis
Potential Mentors: kurund (Primary), Joe Murray (JMA Consulting), Xavier
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:
- Integrate with social media logins (likely best to start with Facebook, then Twitter and Instagram) for quick and easy petition signing, event registration, etc. and to get authorized access to petition-signers' social graphs (http://en.wikipedia.org/wiki/Social_login)
- Pull in contacts from social media & match to CiviCRM contacts based on available information
- 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
NB: JMA have developed an extension to integrate with Attentive.ly (https://github.com/JMAConsulting/biz.jmaconsulting.attentively). It synchronizes contacts and groups between attentive.ly and CiviCRM, and pulls from attentive.ly into CiviCRM social media accounts, user images (from Gravatar, Twitter or Facebook), Klout score, and recent social media posts.
NB: There were projects in GSoC 2015 working on social integration:
Themes: Quality Assurance
Potential Mentors: totten (Primary) (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.
Potential Mentors: coleman (Primary)
Installing CiviCRM should be as easy as installing Wordpress. Let's overhaul our current installer so that it fits well with the workflows in WP/Drupal/Joomla.
Having software be easy to install is critical to the success and growth of the platform.
Harden CiviCRM Security
Potential Mentors: Chris Burgess (Primary), Joe Murray, mfb, totten
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)
Import from Google s/sheet
Themes: api, import
Potential Mentors: Eileen (Primary), Jaap Jansma
Core currently has a bunch of import classes for csv import and there is an extension https://github.com/eileenmcnaughton/nz.co.fuzion.csvimport that allows importing to 'any api' from csv. However, if would be really handy to be able to import from google s/sheets and for the implementation to be interface based so that other sources could be added to extend it. This would probably be better done in an extension - either building on the existing one or (better) in an angular extension.
Note that there is a student who is fairly well progressed in a proposal for this
Potential Mentors: totten (Primary) (maybe colemanw or eileen?)
CiviCRM includes powerful search features ("Advanced Search" and "Search Builder") which help non-profits analyze their data and send carefully-targetted messages. Unfortunately, the user-experience can be overwhelming to new or casual users – there are many options to choose from, and the feedback cycle is slow. (For example, a user may look through 40 options in the "Advanced Search", pick a few, execute the search, redirect to a new screen, and then see the anticlimactic result -- no matches. Then he tweaks one or two of the 40 options and repeats.)
In modern search UIs, the results are displayed/refined in real-time as the user selects search criteria. There are several possible directions to take this project, such as:
- Create a new user-interface with Angular on top of the existing search engine.
- Integrate CiviCRM's data with a search service (e.g. http://lucene.apache.org/solr/ ).
- Implement a portable full-text search on top of MySQL's MyISAM.
- Implement faceted search
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.
CiviCase: More Flexible, Automatic Workflows
Themes: Workflow, Business Process Management
Potential Mentors: totten (Primary)
CiviCase is a case-management system which tracks counseling, crisis-response, housing-placement, and other social-service "case work." These cases are in fact "workflows" that require coordinating multiple steps among multiple people. By using software to track their cases, a non-profit can prevent cases or steps from "falling through cracks".
CiviCase allows case-workers to manually define the steps in each case – which is flexible but can be tiresome and inconsistent when staff are confronted with a high caseload. CiviCase also allows one to pre-plan the basic steps for all cases – which is more automatic and consistent. Unfortunately, the pre-planning is not very intelligent – it either follows a fixed schedule of steps ("timelines") or fixed list of back-to-back steps ("sequences").
This project would aim to make the automatic aspects more intelligent (to reduce the amount of manual tweaking by caseworkers), e.g.
- Allow conditional steps which are only added if the case or client meets certain criteria.
- Allow complete templates for the steps which can more thoroughly define what's involved in the step – e.g. setting a default values for the type, subject, date, location, duration, description, assignee, and custom-fields on each step.
The project would involve updates to the front-end Angular-based GUI, the back-end workflow runtime, and the test-suite.
CiviCase: 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, Accounting, Contributions, Workflows
Potential Mentor: Joe Murray (Primary)
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.
Virtual Machine Templates (Appliances/Boxes)
Themes: Systems Engineering, Virtualization
Potential Mentor: totten (Primary), nganivet (maybe bgm, ergonlogic?)
As with many open-source web applications, installing CiviCRM can be difficult – it requires installing/configuring a series of related services (Linux, MySQL, Apache, an email service, and a CMS). A popular solution to this problem is to distribute pre-built virtual machine templates ("appliances" or "boxes").
Unfortunately, there are many competing virtualization systems – such as Amazon EC2, OpenStack, DigitalOcean, VMWare, VirtualBox, Vagrant, and Docker. It can be difficult to prepare and maintain appliances which are broadly compatible. Some tools – such as http://www.packer.io/ – reportedly allow developers to define appliances which are portable across different virtualization systems.
The aim of the project is to determine the best approach to managing and distributing VM templates (or "appliances" or "boxes") – and to implement that approach.
SMS Tracking Survey
Themes: Extension, Usability, Data enhancing
Potential Mentor: JohnFF (Primary), Joe Murray
Future First has an SMS Tracking Survey, originally made by Third Sector Design. Since then it's been tweaked and cleaning/evaluating tools have been added. But it's still ropey, with deadlocking issues and a lot of FF customisations. The parts that translate a response into a field should be made to be generic and settable through an interface.
The objective here is to make it possible to release this extension as a standalone product.
An option would be to refactor current extension so that the UI for creating the survey, selecting recipients and associating the activities with the recipients is done mostly through the existing CiviSurvey component. This would improve the usability of CiviCRM overall, and reduce the code maintenance effort. Major tasks would then be: 1) hooking in the use of SMS, 2) generalizing the method used to semi-automatically convert 'dirty' data responses from free text entry into clean data for the Activity fields (called translating the response in current implementation), and 3) support branching to next question based on response received for current question.
RTL Languages Support
Themes: Translation, i18n.
Potential Mentors: Luciano Spiegel (Primary), Ariel Kogan
CiviCRM has been successfully translated to several languages. However, some issues still remain when trying to run it on right to left (RTL) languages. The project aims to tackle two main lines of work: 1) Overcome the technical challenges that are keeping CivCRM difficult for RTL languages translations (e.g. Editor for e-mail sending, wizard-type progress bars) and 2) Make progress with the translation to Hebrew and use it as a proof of concept to ensure goals with the first task are achieved.
Themes: Synchronization, Google Apps, ConstantContact, Mailchimp.
Potential Mentors: nganivet (Primary), Jaap Jansma
There are a number of extensions that aim at synchronizing CiviCRM data (primarily contacts) with external services - Google Apps, Constant Contact, Mailchimp, Vertical Response, etc. Each of these extensions has has been implemented by a different integrator and their capabilities, inner workings and user interface are completely different. The purpose of this GSoC would be to create a generic synchronization framework for CiviCRM that would take the borrow the best from the above extensions and make it easy to create 'connectors' with additional external services.
Email sending framework
Themes: email, CiviCRM core, scheduler and queues, API.
Potential Mentors: nganivet (Primary)
CiviCRM can send emails with a number of methods, but these are antiquated (SMTP-based) and do not reflect the current state of the industry which is to use APIs to external email services (SendGrid, Mandrill, Amazon SES, ...). The scheduler and queue for sending emails within CiviCRM is also very rudimentary (PEAR::Mail). The purpose of this GSoC is to replace the current email sending engine with a modern library (Swift Mailer, PHPMailer, Zend_Mail) featuring robust queuing / scheduling and capable of using external email sending services, either directly or through the creation of extensions.
CiviCRM integration with Zapier
Themes: API, Integration, Fundraising
Potential Mentors: Erik Hommel (Primary) (and organizational mentor Ilja de Coster from Amnesty International Flanders)
Zapier is a tool which allows easy integration of apps and exchange of data between apps (see https://zapier.com/). During conversations with Ilja de Coster on fundraising, integration with CiviCRM came up. The project would focus on a first Proof of Concept, being able to create an activity in CiviCRM from Zapier so it would be possible to add an activity to CiviCRM as a Zapier action (for example if a Survey is completed). The other way around: to be able to have an API wich can trigger another application that is already on Zapier, for example trigger a Survey to be sent.
CiviPhone Interactive Voice Response (IVR)
Themes: Integration, Usability, Extension
Potential Mentor: Joe Murray (Primary)
This project will create an extension that will allow CiviCRM to conduct automated phone interviews with contacts selected from within CiviCRM. It will build on previous work done with CiviSurvey, and an extension that sends voice blasts (robocalls) to contacts using Plivo's API. CiviSurvey question types will be limited to those that are easy to collect responses for over the phone.
Open Supporter Data Interface (OSDI) API Implementation
Themes: Integration, Usability, Extension
Potential Mentor: Joe McLaughlin (Primary), and potentially Eileen McNaughton, Jason Rosenbaum (OSDI org mentor), Josh Cohen (OSDI org mentor) - Joe McLaughlin will determine the possibility of any or all of these folks being available
This project will continue work towards a beta CiviCRM extension that will allow CiviCRM to implement the Open Supporter Data Interface (OSDI) API. See www.opensupporter.org .
Linking CiviCRM with LibreOffice / Collabora Office
Themes: Usability, Extension
It would be very user-friendly if CiviCRM would provide an action to write a Letter to a contact with LibreOffice / Collabora Office instead of using PDF-Letter. CiviCRM should pass Tokens to LibreOffice / Collabora Office . LibreOffice / Collabora Office should run in the web (like in Owncloud) It should be possible to design a open document template which includes tokens like display_name, address and so on. The action-menu of the search-builder or a contact overview page should contain a button to start Libreoffice in the web. In the next step the user should select a deposited template. If the action has been started from a search-builder, Libreoffice / Collabora Office should print a serial letter, otherwise a single letter. The document should be saved as an activity of the contact.
Mailing list functionality
Themes: Usability, Mail, Extension
This goes in the same direction as the social media integration: Many NGO's make extensive use of mailing lists for discussions between certain groups. Typical software, which is used by many organisations is "mailman". Much of the needed functionality of such a mailing list software is already included in CiviCRM (such as subscribe, unsubscribe, bounce management, ...). There "simply" has to be a new function, that allows authorized e-mail-addresses sending bulk mails to their discussion groups.
In the past, there had been a quite complex solution using drupal organic groups and synchronize them with CiviCRM. However, we would like to avoid the complexity and the dependencies that are coming with that approach.
Cividroid - A CiviCRM companion on Android!
Themes: Android, API, Integration
While Cividroid has established a concrete example of, how the web CiviCRM API and the native Android API combined can enhance the CiviCRM utility on the move, there is a lot more that can be achieved. This project would be a continuation of the current stable version available on the forum.
IF YOU HAVE A PROJECT IDEA, PLEASE ADD IT HERE. THIS IS A WIKI. BE BOLD AND EDIT.