Drupal has no native CRM system. But it should have one. Drupal CRM (known by various other names including DropCRM and DCRM) is the attempt to rectify this situation, and at DrupalCon London this year, I propose that the very first code is to be created and used as a springboard to kickstart development work.
Update: the original post was not too clear on explaining the structure of the CRM that has loosely been decided so far, and what sort of scope the sprint is intending to have, so I have attempted to clarify this a little!
The problem thus far is that although there has been a lot of discussion on the subject of a Drupal CRM and even a dedicated website put in place, momentum has still not yet built to the point where the community is writing code.
What is it?
DrupalCon London is obviously a great place to get things going, and Friday 26th August is code sprint day. I propose that we pledge to bring the first code to the DrupalCon table on this day, collaboratively, so that by the end of DrupalCon, we have enough momentum to sustain the development of this ambitious module.
Some will see this as a hypocritical move on my part, since Tigerfish will not actually be at DrupalCon beyond Thursday 25th August, and will not actually be at the code sprint. We are a small development company who don't have the resources to dedicate to more than 3 days of DrupalCon (although we intend to make the most of our time there!) so regrettably we're back to business as usual on the Friday.
Can you be an organiser?
That said, I will personally be participating in the code sprint, if it goes ahead, by working remotely, but it does mean that there is the need for a local organiser; someone to arrange the code sprint and make sure everyone has what they need.
If you are willing to organise the code sprint on Friday 26th August, please express your interest in the comments or by using the contact form on this site. This won't be particularly difficult work, or even require that you have an intimate knowledge of PHP or Drupal itself, but it will need someone to act as a focal point at the conference. This is a really exciting role, so do give it some serious thought!
"Mighty oaks from little acorns grow."
The aim is straightforward:
- Create fundamental API functions crm_contact_select(), crm_contact_update() and crm_contact_delete().
- Work only with a single 'individual' type of contact at this stage. There will be scope to add organizations, events and all other kinds of functionality later, but for now it should stay as simple as possible, so stick with the straightforward concept of an entity that represents a single person.
- Create a feature that will handle the installation of any CRM-specific database tables and any dependent modules.
- Thus this will create the underlying basic data structure for the CRM.
- The code will be written for Drupal 7 only. A Drupal 6 version of the CRM will be made available as a backport, but this is of secondary importance and all code for the project should be written for D7 initially.
- The code can follow the existing outline architecture, but does not have to. It would be good if everyone agreed on the same data structure, but this might be unrealistic right now, so several solutions to the same basic problem might be productive or even essential at this early stage.
- The code should be fully documented. A comment block will exist at the top of each file, and there should be a PHPdoc comment for each function. Where not obvious, inline comments should explain any functionality within functions.
- The code should be fully unit tested. Simpletest is part of Drupal 7 core so the more tests that can be automated, the fewer bugs will appear to due regression and oversights as development progresses.
- Code should pass coder tests.
- Code should make sensible use of the Entity API, Profile 2, Address Field, and Rules modules, as well as Features, of course.
- We are very lucky to be able to use the CRM project on the Drupal website. Code should use the crm_ "namespace" to be consistent.
- Code should be committed somewhere, creating several separate branches if necessary. Ideally code can go on the CRM project itself on drupal.org, but otherwise perhaps a GitHub repository will do for now. By the time DrupalCon arrives, I will make sure a place exists to store the code.
My primary aim is to get the code sprint made official and set up. The requirement for this is that we have an organiser who will be in charge of overseeing the code sprint in person at DrupalCon (see above), and secondarily that people are interested and willing to contribute to this.
Please express your interest in the comments below, and show that you want to help get this monumental project off the ground! Jamie Abrahams has kindly volunteeed to organise the code sprint, but it would be great to have at least one backup so do still consider it!
Please keep away from the comments for discussing CRM architecture and code-specific ideas, or anything not directly related to this blog post. The appropriate place for that at the moment is the Drupal group.
Thanks in advance for your support!