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.
It is important to get in touch with the community well in advance. A very thorough guide for students preparing for the selection process (not specific to CiviCRM)
Potential Development Mentors
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.
Emily Frazier (GSoC organization co-admin)- 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.
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.
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.
Andrew Walker - I'm Andy, Senior Developer at Circle Interactive (andyw on the forums). We are based in Bristol, UK, specialize in Drupal / CiviCRM, and work with a variety of commercial and third sector organizations. I've written several extensions for CiviCRM, in particular for Sagepay and, more recently, for Bitcoin payments, contribute patches and code to core, and have worked with Eileen from Fuzion on an early version of her Xero accounts integration.
Kevin Reynen - I'm kreynen on Drupal.org, CiviCRM.org, IRC, and Github. My expertise has been primarily in Drupal modules that improve CiviCRM integration including: CiviCRM Cron, CiviCRM Multiday Event, and CiviCRM Certify. I am less interested in Drupal lately, but would love to mentor a students on a project related to CiviCRM and Backdrop (a Drupal fork aimed at smaller orgs who can't afford the Drupal 8 upgrade).
Björn Endres - I'm Björn from SYSTOPIA. We're a consulting agency based in Germany, determined to make Not-for-Profits and NGOs work better, smarter and more efficiently. In this mission, CiviCRM has been a key component right from the beginning. And since a lot of things in Germany (and indeed many other countries) work differently than in the Anglo-American world, we've got years of experience customizing and tweaking CiviCRM and building extensions. I'm looking forward to helping CiviCRM to advance even more. I speak English, German and Spanish.
Michael Z Daryabeygi - ginkgoMZD on IRC. I implement customizations to CiviCRM as well as am one of the maintainers of the CiviVolunteer extension. I have significant experience as technical lead and mentor to growing developers. I was asked to add my name here for my interest in the exploration of participating in the OSDI common standard for CRM api's. http://forum.civicrm.org/index.php/topic,35601.0.html I would be interested in other projects that increase the interoperability of CiviCRM.
Michael McAndrew - I am the community manager for CiviCRM. In a previous life, I used to run a small CiviCRM consultancy and have worked on 50+ CiviCRM projects. I also have a strong interest in improving our documentation. I code from time to time and am pretty familiar with most of CiviCRM (the product and the community). I would love to grow the size and involvement of our community. I am into farming and growing food. I live in Spain and speak Spanish, English, Dogish, Catish and Goatish, etc.
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 - (this is John's bio from the Free Software Foundation website, here ) - "John started working with GNU Press and the Free Software Foundation in 2003 and then became the FSF's first Campaigns Manager, working on outreach efforts like Defective by Design, BadVista, and PlayOgg. In 2011, John became the Executive Director after four years as Manager of Operations. His background is mainly in the humanities, with an MFA in Writing and Poetics and a BA in Philosophy, but he has been spending too much time with computers and online communities since the days of the Commodore 64. He's become a dedicated GNU Emacs user after first trying it around 1996, and contributes code to several of its extensions. Prior to the FSF, John worked as a college debate team instructor for both Harvard and Michigan State University."
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.
Joe McLaughlin - I'm joemcl on github and IRC, and Joe McLaughlin on civicrm.org. I'm the data geek and CiviCRM admin for Citizen Action of New York, a multi-issue progressive (meaning, on the 'left/liberal' side of the political spectrum in US terms) advocacy organization based in Albany, New York, USA. See this for more information about Citizen Action. I'm not (yet) really a developer, but am an informed and experienced data guy from my work experience as an organizer and researcher for various progressive causes and many campaigns. I'm an end-user, admin, trainer and rookie developer of Citizen Action's CiviCRM installation. I'm most interested in CiviCRM interoperability and co-mentoring the Open Supporter Data Interface Implementation project (under Projects, to the right -> ) with Michael Daryabeygi (see above). I'm a native English speaker (well, New Jersey American English).
IF YOU MEET THE CO-MENTOR QUALIFICATIONS AND ARE INTERESTED IN PARTICIPATING, PLEASE ADD YOURSELF TO THE LIST ABOVE
Please use this page for GSOC 2016
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.
New API: Open Supporter Data Interface (OSDI) Implementation
Themes: API, integration, data, imports/exports
Potential Mentors: ginkgoMZD (technical); Joe McLaughlin (organizational)
Organization Feedback: Citizen Action of New York,
Organizations are using more and more tools and data silos are frequently created. While integrations are easy for medium to large organizations, many organizations with small operations don't have this technical capacity. The Open Supporter Data Interface (OSDI) API seeks to bridge this divide and create standards for data interchange. OSDI exists as a standard in development with a minimum of one implementation by Action Network, and planned implementations by NGPVAN, Catalist, Salsa and other data "vendors". Implementing OSDI is in line with CiviCRM's mission to be an open platform and lower the bar to entry for small organizations.
Technical challenges will involve resolving differences in paradigm between OSDI and CiviCRM's API as well as resolving inconsistencies and limitations in CiviCRM's api.
Project will foster strong ability with test driven development, server-side code, and data and process modeling.
Import from Google s/sheet
Themes: api, import
Potential Mentors: Eileen
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
Predictive and datamining
Themes: statistics, datamining, datavisualisation
Potential Mentors: xavier dutoit, Joe Murray (JMA Consulting), totten
Organization Feedback: ? (Bayesian society?)
One of the results of the dataviz project of 2014 was to highlight some correlations (or similar patterns between fundraising or events). Can we use the existing data to add some prediction? How many participants can we expect for the next event? Will we reach the goal on a fundraising campaign? How many recipients will click on a link?
We might as well build on the top of the A/B for email from GSoC 2014
Integration with Google Analytics & A/B testing
Themes: statistics, web services, mashupi
Potential Mentors: Xavier Dutoit, Kurund Jalmi
Organization Feedback: A2
It is easy to track where visitors come from with google analytics, including from which newsletter or social media (with the utm_xxx) parameters.
The first part of the project is to modify the urls generated by civi to automatically include these parameters, so when someone visits a contribution page for instance, we know if it's from the thank you mail, from a newsletter or from the "share in social media" icons.
The second part is to use google analytics to retrieve data about each tracked campaign and put them back in civicrm, ideally with a better tracking of visitors flow (eg. not only show how many people visited an event page sent from civimail, but as well how many registered). An important data point will be their device and browser.
The last part is to allow A/B variations of civicrm generated page (eg different titles for the contribution page or different amounts) and use google analytics to see which version performs better.
Contact character modelling with IBM Watson
Themes: statistics, datamining, ai
Potential Mentors: jaap jansma?
Organization Feedback: ?
IBM has released the super computer Watson as a webservice. One of the features of this webservices is the user modelling. Which takes a text written by a user and tells what kind of character the author of the text has. CiviCRM could link to this webservice and and stores the characteristics of the contact based on the incoming e-mails/letters. We could then use the standard search and reporting functionality to segerate the contacts in the database. This could also work as one of the inputs for the Predictive and Datamining GSoC project (see above).
For more information onf the IBM Watsons user modelling: http://www.ibm.com/smarterplanet/us/en/ibmwatson/developercloud/user-modeling.html
Universal Sync interface
Themes: web services, mashups, cloud computing
Potential Mentors: nganivet, Joe McLaughlin (organizational)
Organization Feedback: Citizen Action of New York
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 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, ...)
NB: possible spec to consider: http://opensupporter.org/ .
Note from Joe McLaughlin: I think this fits really well with the OSDI API ( http://www.opensupporter.org ) proposal, above, as well, and we should consider combining the two proposals.
Themes: mobile, smartphone, tablet, offline, android, iphone
Potential Mentors: nicolas, xavier dutoit, Joe Murray
Organization Feedback: ?
Can we synchronise the address book or calendar of a phone with (a subset of) civicrm? Can we log activities from the smartphone eg. a meeting or phone call?
Joe Murray writes: Some staff at CiviCRM organizations are road warriors who need access to data in CiviCRM, both to see the contacts they are permissioned to see and their membership history and activities, as well as to enter meeting notes including photos they take with their phone.
Personally I would suggest working on a two-way synchronization of contact data via widely supported protocol or protocols. This has been done via OLAP for one-way availability if I recall correctly. Another way to tackle the project could be to aim to support one of the primary vendors, such as contacts in Google Apps for Android devices (you might get other platforms like iOS 'for free' by doing that).
Bitcoin Payment Processor
Themes: e-commerce, Payment Processing, Virtual Currency, Cryptography
Potential Mentors: johns, mfb, andyw
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
Update: Circle Interactive now have an extension for taking Bitcoin payments via Bitpay which is working, but could do with some further work, improvements, and possibly extending to also work with BitcoinD, as the Stanford students were attempting to do. Andy from Circle would be happy to mentor a student at doing some further work to this.
Current code is available on Github here: https://github.com/circleinteractive/uk.co.circleinteractive.payment.bitcoin
And Andy has written a blog post on it here: https://civicrm.org/blogs/andyw/bitcoin-payment-processing-bitpay
New User Tour
Themes: UX, Usability, Training, Translation
Potential Mentors: 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.
Social Media Integration
Themes: Online Marketing, Social Media, Social Graph Analysis
Potential Mentors: kurund, 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.
Themes: Quality Assurance
Potential Mentors: totten (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
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.
Email Preview Cluster
Themes: System Integration, Scripting, Virtualization, Heterogeneous Systems
Potential Mentors: totten (maybe bgm or ergonlogic would be interested?), kurund
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.
Potentially useful link: https://github.com/rdgr/putsmail
Harden CiviCRM Security
Potential Mentors: Chris Burgess?, 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)
Potential Mentors: totten (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
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: 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.
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.
Virtual Machine Templates (Appliances/Boxes)
Themes: Systems Engineering, Virtualization
Potential Mentor: totten (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, 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.
Strategic Fundraising and Campaigning
Themes: Fundraising, Campaigning, Reporting
Potential Mentors: Endres, Björn (SYSTOPIA), Joe Murray (JMA Consulting)
Organization Feedback: RNAO?
The module CiviCampaign provides basic functions to link contributions with campaigns. Thus, it enables users to determine the success of a campaign e.g. in regard to „return on investment“. Such data is most important to fundraisers in order to evaluate and adapt their fundraising strategy.
However, the possibilities for analyzing the outcome are very limited – e.g. there are no functions to record costs involved with a campaign action or the campaign's budget. Also, there is no campaign hierarchy which means that planning more complex campaigns (e.g. a parent campaign consisting of subsequent actions such as several online mailings, offline mailings and events) and analyzing their outcome afterwards is hardly possible without additional external tools.
As a result, within CiviCRM there is no efficient way to plan complex campaigns (including subsequent campaign actions, costs, budgets, fundraising goals...), or to analyze the success and costs of campaigns and their subsequent actions. This is a big deficit as this data constitutes the basis for a goal-oriented development of the organization's fundraising and overall strategy.
We do not know of any CiviCRM-Extensions or other projects with a similar scope. There is an extension called "Advanced Fundraising Reports" but it mainly aims at providing addition preconfigured reports. The project aims at enhancing CiviCRM capabilities for strategic fundraising, campaigning and reporting in the following ways:
Creating a campaign hierarchy
creating the possibility for parent and child campaigns
adapting the user interface for creating and viewing existing campaigns (e.g. a hierarchical „tree view“ and possibilities for filtering
creating functions that simplify campaign management (such as copying complete campaigns including subsequent campaigns and adapting campaign dates)
Adding campaign fields and functions
fields/function for adding categorized costs (such as postal fees, printing costs...) associated with a single campaign or campaign's action (e.g. multiple value fields or financial items)
function to calculate the overall costs of of a single campaign and it's child campaigns/actions
creating a field or a function to (manually or automatically) add campaign codes that enable a (semi-) automatic matching of contributions and campaigns
create fields/functions for recording the number of contacts involved in the campaign, the costs per recipient involved (e.g. for determining the costs of acquiring a contribution or the response quote)
A campaign goal isn't only the amount raised, but its success can be measured by the number of new contacts, 1st donation or other engagement metrics. It would be useful to provide some other indicators beside the total amount received through the campaign.
Reports and statistics
create configurable CiviCRM reports that make use of the enhancements described above such as return on investment, unit costs (when sending out mailings), average cost for acquiring a new donor
create configurable visualizations such as charts and graphs to make the data easy to interpret, compare and access (e.g. using CiviReport or Civisualize)
Currently it is unclear if the planned changes should be integrated with the CiviCRM Core or implemented in a CiviCRM-extension (CMS independent). This design decision must be made before working on any code and should be based on the feedback of the CiviCRM Core Team and the interest of the community in the planned changes.
Joe comments: It is desirable to integrate the recording of costs into the existing schema for handling bookkeeping entries. This will allow for single entry of expenses. I think relating these expenses to campaigns is a good first start for calculating ROI. We should investigate more the pros and cons of doing this with an extension versus enhancing core. Both seem reasonable approaches to begin with.
RTL Languages Support
Themes: Translation, i18n.
Potential Mentors: Luciano Spiegel, 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.
Improved documentation infrastructure
Until now, CiviCRM has used two tools for documenation. A wiki powered by Atlassian and available at http://wiki.civicrm.org, and a book publishing platform powered by Flossmanuals (editing interface here: http://booki.flossmanuals.net/, published book here: http://book.civicrm.org. + and - of each platform described below
+ Mature platform with nice formatting and good wysywig editor, easy to link between pages, ability to leave comments, etc.
- No publishing / release workflow, so tends to feel somewhat unfinished most of the time
- Hard to output to other sources, such as epub, pdf, etc.
We'll keep this in place for the time being.
+ Very simple interface for editing
+ Great at creating content for printed books (in theory, so this functionality is broken at the moment)
+ Ability to publish books so we publish an updated book for each version
+ We have a nicely bedded in sprint process where we update the book once for each release (which gives us an authorative reference book for each version of our software)
- Not designed for online reading (more of a book metaphor)
- Flossmanuals community seems to be dwindling - risk that the tool will disappear
We want to replace this.
We currently have two documenation sprints a year, which roughly co-incide with new releases of our software. A lot of work goes into updating documentation at these sprints and the process works nicely. A couple of things we can improve include:
- having a more reliable tool that we can use during the sprints
- encouraging more people to contribute outside the sprints
Create a documentation platform that is:
- long lasting / not a fad and without lock in to a particular platform
- has a sophisticated publishing / release work flow
- allow us to manage translations
- allows multiple authors
- connects our documentation community to other documentation communities
- has a simple wyswig interface that is not scary for non technical people
- also has an advanced interface for people that want to use it
- will allow us to publish to many different formats, including ePub and pdf
- allow for commenting and feedback
- will fit with our twice annual sprints and facilitate contributions to our documenation outside this time as well
The following proposal has coalesced from conversations about the above requirements for the past 18-24 months. At this stage it us just a proposal and we welcome refinements / other approaches.
Use markdown for formatting (nice and simple) and git as a storage engine (good for collaboration and release management). Provide a simple wysiwyg interface that allows editing by people that are not into markdown or git.
Come up with some simple conventions for what the repository structure will look like. How sections of the book and chapters will be handled, how images should be handled, and different languages should be handled
Create a set of rules for handling translations of the document, and the process of translating (including ways to mark chapeters as ready for translation, need translation, etc.)
Create a set of scripts that allow us to publish various versions of our documenation, including
- html for on-screen reading (with commenting)
- pdf for home printing
- pdf for on demand printing
Create a script that will allow us to import our current documentation into this new infrastructure.
Example / tools out there that we will and think will be useful
- http://www.mkdocs.org/ and https://readthedocs.org, which may have already done a lot of what we need, and will provide a good home for our documenters.
- We think that symfony have done a nice job with their documentation (though this is using rST and is a bit more technical in nature than what we have, and they expect everyone to work directly in git repos, which will alienate a lot of our documentors)
- Pandoc - a command line tool for converting betweet different text formats
- https://github.com/GitbookIO - seems to implement and package some of these ideas
IF YOU HAVE A PROJECT IDEA, PLEASE ADD IT HERE. THIS IS A WIKI. BE BOLD AND EDIT.