Thoughts and ideas for CiviCRM 4.0
The past few weeks have been just an amazing ride through the CiviCRM universe. We've had some excellent training sessions, an awesome CiviCon and then the sprints which produced a nice new book and some major improvements to our translation process. We've also been spending a lot of time thinking about what we want to accomplish with CiviCRM 4.0. So here are some of our thoughts, note that many of them are speculative and if something is really important to you or your org, consider making that part of YOUR OWN personal battleplan and contribute a design and code to make it happen.
My top 4 guidelines with regard to 4.0 are:
- No new features. 4.0 is a restructuring and refactoring of part of the code base. Our objective is to make the code base more solid and not focus on adding functionality to the application.
- Improved extensibility. We've heard the message loud and clear. We need to continue making it easier for developers to extend and customize CiviCRM. More documentation, More examples, More API's
- Improved testability. We need to continue increasing the test coverage of the code base. We are continuing with a strong push on this with 3.2 and have introduced Selenium into the mix. We hope to get the community involved in improving our test coverage in a big way
- Switch to a modern framework. The current CiviCRM code base is based on PEAR which is old and no longer maintained. We will upgrade the core libraries to a more modern object oriented framework, with a strong userbase / documentation / testability. To ease the transition we will stay with our current templating system but we will upgrade Smarty to v3.0.
We had a discussion on some of CiviCRM's shortcomings based on what we heard and compared to some of our commercial competitors. Here are a few things that came up on our list
- Change Logging. Keeping revision history of contacts and associated objects is a much needed feature. The ability to rollback to any prior version and/or undo the work of a single person over a period of time would make it powerful
- Workflow Engine. We think that for the first phase integration with the Rules module will give us some essential features. There is already a proof-of-concept module out there which demonstrates the feasibility of this approach
- Custom object support. Basically the ability to define and manipulate objects that do not extend a CiviCRM object. This will allow users the ability to add and manipulate tables in the schema in a more powerful and integrated manner. These objects can be linked to objects in CiviCRM via master-detail, many-to-many or lookup
- Customization of the UI via the UI Template customization is incredibly powerful and does rock :) However it would be great to have the ability to hide various form and page elements in the UI / reorder the elements graphically. i.e. manipulate the template layout via the UI. An additional feature would be to allow the same form to have "multiple" layouts. Thus someone can have a simple version and complex version of the Contact Edit Form.
- Integration with Google Docs / MS Office. Target Integration has released CiviSync which is a good first step towards synching with Outlook.
- Wordpress Integration Wordpress has been the top blogging platform and is rapidly expanding as a CMS. We should definitely consider offering a WP integration. The main issue will be support of the WP user base which might be on shared "cheap" hosting, something where CiviCRM is not well suited for :(
- iPhone/Android App. Would be really nice to see a mobile version of CiviCRM. Wonder if we can use Senbei as a starting point?
Whats on your personal battle plan to improve CiviCRM in the 4.0 series? What are some of the big things we are missing? Comment away :)