The API was a big topic at CiviCamp. We had a good discussion on the mistakes we made in the past and things we can do better going forward. Due to a variety of reasons (internal and external), the API migration between 1.9 and 2.0 was a disaster. We resolved to not let this happen in the future. Here are a few things we agreed upon
- We will maintain backward compatibility for an obsoleted function for at least one version in the future.
- All interface changes will be part of the upgrade documentation along with a sample of how to convert from the old format to the new format.
- Good Unit Test coverage of the API. We will recommend a unit test be filed along with any bug report regarding the API. The developer community will step up and help provide additional unit tests for more coverage
- API's will have a more flexible critical bug criteria. In general, we need to do a better job of fixing issues in the release versions and trunk at the same time
- All Documentation will be versioned starting from CiviCRM v2.1. We will use Confluence's spaces features to enable this functionality.
- Matt Chapman will build a directory of existing CiviCRM/Drupal modules using D6/CCK/Views on civicrm.org. This can potentially serve as a testbed for CiviCRM APIs also
- There will be a separate forum board to address API issue. The forum topic is here
- We will migrate all v1 api's to v2 in 2.1.x (2.1.3?). The current v1 api's will be kept in 2.1 till 2.2 for backward compatibility. We will get the unit testing framework running in 2.1.3 for api's