Skip to end of metadata
Go to start of metadata

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.
  • 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
    • 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
    • Integration tests
      • Pros:
        • Find problems of module interaction not found by unit tests
      • Cons:
        • Slow execution
    • Regression tests
      • Any tests, unit or integration, that assure that existing functions aren't broken by a change
  • 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
  • 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
Labels:
  1. Apr 25, 2009

    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

  2. Apr 26, 2009

    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.

  3. Apr 26, 2009

    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 (smile)

    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


Creative Commons License
Except where otherwise noted, content on this site is licensed under a Creative Commons Attribution-Share Alike 3.0 United States Licence.