Posted by chriscohen on July 30, 2011 at 12:34am
At DrupalCon London I intend to get the ball rolling with the first DrupalCRM code. Please have a read at http://tiger-fish.com/blog/drupal-help-bring-drupal-crm-life-drupalcon-l... and get involved!
Comments
Data/entity model
Hi Chris,
Sorry I am based in the U.S. and am not going to DrupalCon London. I may be able to participate remotely, depending on how the time difference works out.
One question I have is about the goals you mentioned for coding some functions:
* Create core API functions crm_contact_select(), crm_contact_update() and crm_contact_delete().
* Create a feature that will handle the installation of any CRM-specific database tables and any dependent modules.
I would think the coding effort would be initially focused on making the basic entities needed for CRM, probably:
For example, the Contact Entity could have types (bundles) like Prospect, Customer, Constituent, Donor, Client, Doctor, Patient, etc. Organization could be a Company, Family, Governmental Agency, etc. Event could have types Call, Email, Meeting, etc.
I have started work on these Entities and should be able to offer a starting point by August 26th (although I must admit I am new to Entity coding and am a bit confused as to the best approach for implementing Entity API for the Entities needed by CRM).
Perhaps the Commerce project would serve as a good model of how to design the CRM Entity code. The Commerce project has sub-modules for each entity. For example, commerce/modules/customer has commerce_customer.module and commerce_customer_ui.module for the Customer entity.
Thus I don't understand why work would focus on just the three functions you mentioned (crm_contact_select(), crm_contact_update() and crm_contact_delete()). Wouldn't these be one of the many functions required to create a Contact Entity, e.g. see commerce_customer.module around line 475, their are several functions all related to deleting a Customer Entity. Other CRUD functionality is located throughout the module file.
Let me know your thoughts,
Dave
Thanks
Dave, thanks for this. I don't think I made myself clear enough in the original blog post, so I will attempt to clarify it better there, but basically I had intended the aim to be really really basic for the first code sprint.
Although Event, Opportunity and Organization are very important CRM entities for many people, it would be conceivable to imagine a simple CRM without any of this. However, it's hard to imagine a CRM without an 'Individual' type of contact entity, representing a single real person. For that reason I had intended the code sprint to focus on this and this alone, with separate work coming later to fulfil the other types.
The underlying data structure is already very important, and this is perhaps not outlined clearly enough in my blog post either. The architecture is basically laid out at http://groups.drupal.org/node/89779 but we have been discussing architecture and throwing ideas around for literally an entire year with no actual concrete decisions being laid down, so I had hoped the code sprint would enable people to collaborate and decide on some of these things, as even the most stringent technical document is bound to leave some grey areas. Again, this could have been expressed better in my blog post so I have attempted to clarify.
If you can offer a starting point in terms of what you already have, this would be immensely useful! Now that Drupal is using git, I was hoping people can just have access to http://drupal.org/project/crm and commit some code on various branches. If that's a no-go then it might be possible to use a project on GitHub for this purpose or something. I will make sure some arrangements are made to enable code to be collaborated upon when the time arrives!
Looks Great
Hi Chris,
Sorry I did not know about http://groups.drupal.org/node/89779! That looks like an excellent start, and I can see that the project's goal is indeed to code some CRM specific entities.
I have some extra time between now and August 26th, so I will make a try at getting some code started for these entities (or at least Contact as you had suggested). I will create a sandbox on my Drupal account, and publish the URL once I have something worth looking at. Hopefully others in the group can help guide me, as I mentioned, I am new to D7 Entity programming. Ideally I can make something useful by August 26th and that code can be the starting point for the sprint.
Thanks,
Dave
Hello Chris! We'll see if we
Hello Chris!
We'll see if we can make it, but I think Rob Mumford really wants to get involved :D We could continue things in manchester after the sprint too :P
After reading the post. Do
After reading the post.
Do you still need an organiser?
I've organised the two programmers I work with, rob and andrew. But apart from that I'm not particularly experienced with stuff like this. However, I really want to get a basic Drupal CRM done by the end of september and I know rob is keen to be involved with Relationships API. So I'd be willing to put in the time to be an "organiser" if you tell me what to do!
Jamie
Oops, I got confused about
Oops, I got confused about which chris you were chris cohen :P So I haven't met you... oh well if no one else offers it still stands
Brilliant
Brilliant, thanks for volunteering. I put your name towards the end of the blog post, but I will continue to ask for organisers in case you change your mind or something comes up!
I'm totally up for helping
I'm totally up for helping out with this. Do we intend to make use of the architecture layed out here http://groups.drupal.org/node/89779 ? and/or the relation module http://drupal.org/project/relation ?
Architecture!
The architecture document still stands and while I don't want anyone to feel like they're bound by it (I think several versions of code that serves the same purpose is not necessarily a bad thing at this stage), it would be a useful guide for anyone who wants to jump right in.
I am not sure on the involvement of the relation module at this stage. I think for the simple level of code we are putting together, it isn't going to feature, although again, I think at this stage, people should feel free to include their own ideas, so it might feature depending on your approach.
http://london2011.drupal.org/
http://london2011.drupal.org/scheduleitem/drupal-crm-sprint
The Sprint is up on the website now :)
More details
Here's a few more details on the sprint:
We will be working from github, as we don't yet have access to an appropriate drupal.org project (but with code, we will!), so in order to commit any code, you will need your own (free) personal github account. You can sign up for one before the code sprint if you don't already have one, or someone will be on hand to show you how to do this at the sprint itself.
psynaptic will be putting in place the barebones code for the module (such as the stubs for the module, install and info files), but no API-specific code, and we'll work by taking a fork of his code onto your personal github, and pushing code there. We can then cherry-pick the bits we like and don't like from everyone's contributions (hopefully we can reach some consensus, as there's bound to be loads of great ideas in the code).
How you work is really down to you, as we want to leave it as open as possible. Perhaps you prefer to work alone, and only chip in with ideas every now and again, or perhaps you'd like to team up with others, or program in pairs, or find a group and split into various tasks, or some other method which is in-between all of these. The main thing is to get people involved in writing code, and although there is likely to be duplication, it should be welcomed at this stage, as it's unlikely any one person's version of the early stages will be deemed acceptable by the project's community.