The Location of the Event has been changed to the Mitch Kapor Foundation
Goals for Developer Camp
Please add a few things you want to accomplish at Developer Camp. This will help us tailor the camp to your needs. You can either edit the agenda or add your goals as a comment.
Things to do before Camp (Prerequisites)
All attendees are expected to be fairly savvy with CiviCRM (from a user/admin perspective) and have a good idea of the CiviCRM schema.
- Each attendee is minimally expected to bring a laptop which has a working copy of CiviCRM 2.2.2 installed on it.
- If you can, please install CiviCRM from svn (http://wiki.civicrm.org/confluence/display/CRMDOC/Installing+CiviCRM+from+subversion+(SVN)+repository)
- Understanding CiviCRM internals would be nice but not essential. Please spend some time reading the Architecture Series
- PHP/MySQL expertise is a must.
- If you have any problems with any of the above please contact us via email or irc
Pre-Camp Dinner Meeting
A dinner is scheduled at Ton Kiang for Tuesday April 28th at 7:30 pm. This will be a no-host dinner. We expect the dinner to cost approx $40. There is public transportation along Geary St from downtown. Please send us an email (lobo at civicrm dot org) if you can make this event.
Camp Location
Mitchell Kapor Foundation
543 Howard Street, 5th Floor
San Francisco, CA, 94105
Map this Location
CiviCRM Testing (led by Walt Haas)
- Why do we test?
- It is not yet possible to prove correctness for a non-trivial program
- Therefore testing remains as the only way to "prove" program correctness
- Buggy code is expensive - DharmaTech spent 57.5 man hours on the duplicate membership bug.
- Tests are the best documentation of how to use the software being tested
- Verify that a change to an existing program didn't break anything
- Save time (yes really)
- What kinds of tests are useful?
- "Eat your own dogfood" At DharmaTech we use the same software we deliver to clients, and we use it before they do.
- Pros:
- Realistic since we use it the way the client does
- Cons:
- Not guaranteed to test every function, since we don't use every function
- Our experienced people don't look at the UI the same way a first-time user would
- Pros:
- Unit tests
- Pros:
- Easy to write
- Run fast, it's possible to check every change immediately
- Possible to check unusual error conditions such as database failures
- Cons:
- Doesn't check module interaction bugs like this one
- Pros:
- Integration tests
- Pros:
- Find problems of module interaction not found by unit tests
- Cons:
- Slow execution
- Pros:
- Regression tests
- Any tests, unit or integration, that assure that existing functions aren't broken by a change
- "Eat your own dogfood" At DharmaTech we use the same software we deliver to clients, and we use it before they do.
- What tools can we use?
- Simpletest (PHP unit tests)
- Runs on PHP command line
- PHPUnit (PHP unit tests)
- Runs on PHP command line
- Works with XDebug to generate code coverage reports
- Actively developed
- JsUnit (JavaScript unit tests)
- Selenium (browser level)
- Runs in the browser, so it sees the same thing the user does
- Runs in the JavaScript sandbox; therefore it cannot upload a file or reference a site that it was not loaded from (can't go between http://example.com and https://example.com)
- Runs on recent browsers
- Programmed in HTML
- Very simple language with no if-then-else, function call or iteration
- Molybdenum (browser level)
- Runs in the browser, so it sees the same thing the user does
- Firefox plugin, so it can upload a file from your computer and reference any site
- Started as port of Selenium core to a plugin
- Actively developed
- Programmed in XML
- Extensions (relative to Selenium) are being developed
- Simpletest (PHP unit tests)
- How do we get the community to help build tests.
- How do we "force" the core team to be more "religious" with regard to this
Projects for Code Sprints
- CiviGrant - support for BOTH grant directions (grants given out and grants applied for/received). See draft spec by Eileen here. (led by Eileen)
- Drupal Calendar <-> CiviEvent and/or CiviCRM Activities integration +1
- Advanced Views2 Integration
- CCK Integration
- Custom Search: Build a custom search based on needs of developer camp attendees +1
- CiviReport: Build a report template based on needs of developer camp attendees +1
- Better managing households in CiviCRM (Tony of DT)
- Development Environments - best practice for ensuring that improvements are included in core (i.e. hardware set up, using jira best practice etc. for bug fixes and minor feature requests)
- Improvements to how orgs and individuals are modeled wrt. viewing contacts, searching and reporting, using associated profiles
- Improvements resulting from deploying CiviCRM on civicrm.org
- CRM-4398:Send Email to Contacts - Allow CC and BCC
- Build CCK / Views interface to collect data and reviews on Hosting Providers
- Build page to collect information on developers and civicrm customers via profiles (see EU/Int teleconference)
- Build Donation Page for civicrm.org

3 Comments
Hide/Show CommentsApr 25, 2009
Eileen McNaughton
A couple of areas I am currently interested in.
1) Receipting messy payments (partial payments, partial refunds, refunding credit card payments - e.g. by cheque, multiple participant registrations who pay separately)
2) Shopping cart integration - both in the context of civiCRM + other products & multiple civiCRM products
3) Developing APIs to use via REST (e.g. exposing a profile to REST)
4) Creating relationships from a profile -essentially a combination of these two
http://issues.civicrm.org/jira/browse/CRM-4382
http://issues.civicrm.org/jira/browse/CRM-444
with maybe a bit of this thrown in
http://issues.civicrm.org/jira/browse/CRM-2393
Apr 26, 2009
Jim Taylor
With the new reports it seeme lik Civi is heavily dependant on cron. We should look at some way to have all the scheduled/automated jobs completed by a single cron job. As it is now there are 5-6 jobs and some hosts don't allow more than a couple, eg Media Temple only allows 5 jobs on the Grid Server package.
Apr 26, 2009
Sushil Nachnani
Issues of interest to our organization:
1. Modeling an organizational structure where multiple independent, similar units use the same CRM functionality, but on their own specific set of contacts, members and events. Similar to this page:
http://wiki.civicrm.org/confluence/display/CRMDOC/Complex+permissioning+for+organizations+with+local+groups+(i.e.+political+orgs)
the ACL hooks are helping us but we need them in more places - perhaps a concept of CiviCenter which could be a composite may make this easier. I'm not a Civicrm expert so that may be a totally clueless idea
The idea is to have multiple centers/chapters and allow a co-ordinator of a particluar center see only his/her contacts, members and events. In lieu of a type like CiviCenter if there was a configurable way to to personalize views of contacts or events based on the characteristics of logged in user
2. Having a multi-level hierarchy for event types - in our organization we have courses and events and each has further sub-types. Under courses we have Introductory courses and then the actual specific courses - e.g. Part 1 course, Part 2, and so on...
3. We have a concept of VIP or Private contacts - these contacts should only be visible to users belonging to a specific role for that region. These contacts should be hidden from all other members who don't have that VIP-administrator role
4. CiviMail - admittedly haven't had a chance to do a lot of research on the capabilities of CiviMail but am looking for the following functionality:
- anti-spam capabilities within CiviMail or the ability to hook into a non-profit email provider like GroundSpring
- any email 'throttle' config that restricts number of emails sent within a certain time period by a particular user or within a particular center/region