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!
Objectives
"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.
Methodology
- 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.
Interested?
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!
Comments
Why not just use CiviCRM which is fully integrated with Drupal? It has thousands of hours of developer time already done and even several published books.
CiviCRM is bloated and is only bridged with Drupal. We need a tightly integrated, fully native CRM in Drupal. That being said, it would be good to connect with these guys making Red Hen CRM before duplicating efforts. http://drupal.org/project/redhen
civiCRM didn't bypass Drupal CRM. CiviCRM has been around for quite sometime. Drupal 4.x.x days.
And for folks interested in CRM's and in CiviCRM, there is CiviCon London 2011 just before DrupalCon:
http://civicrm.org/civicrm/event/info?id=142
We are also having a ton of CiviSprints from Aug 22 - Aug 30 in Bourne UK if interested in participating
lobo
OK...back to a native Drupal 7 CRM sprint...I'd love to be involved in a sprint or if not that at least afterwards contribute as much as is possible...I like where Redhen seemed to be going, simple extensible CRM but it appears to have stalled...the key to getting off the ground is like you wrote, keeping it light at the start...I'm all for getting something out the gate that works simply for individuals and then build from there...I am not able to attend London so I cannot organise but there is no reason to not have a IRC sprint anyways...my 2 cents
JP
I can't help at the moment, but I want to encourage those who are considering this. Please go for it. This is desperately needed.
I am not going to be there (would love to) but here is my 2 cents from the sidelines. Make sure this has tight integration with Drupal Commerce (Not Ubercart) that leverages mostly views, rules, vbo, entity api, address_field to get it done. Also do not make it a Feature, but a full module. So there is no dependency on features, strongarm etc.. and does not lock users into a features based release cycle. Make it a framework or starting block or loose api (like commerce) so people can expand on it without hacking it to bits and pieces.
I have never felt comfortable with CiviCRM... just way to many buzzers and bells.. most of which I don't want or need. So a light weight CRM system, using as many DRUPAL standards would be awesome.
I will participate in testing. I also agree with the integration with COMMERCE NOT UBERCART.
I am really enjoying reading your well written articles. It looks like you spend a lot of effort and time on your blog. I have bookmarked it and I am looking forward to reading new articles. Thanks for sharing. Keep up the good work.










