Last updated 23 January 2012.

The Field API is major new functionality in Drupal 7 to provide custom data types just like CCK did for previous versions of Drupal. Field API became part of Drupal 7 in CVS in February, 2009, but there is still much to do.


To help you get started:

Grab a patch, get mentored!

The Field API is a great way to get yourself involved directly in Drupal core development. We realize, however, that Field API is a big, new, scary chunk of code that is not the easiest thing to jump into. The Field API team wants to help you get up to speed, so we've created the Field API mentoring process. Here's our promise: If you assign a Field API issue to yourself and take responsibility for it, the Field API mentors will help you learn what you need by participating in the issue and answering questions on IRC.

Below, I've organized the issues by category and assigned each a difficulty rating. These are very rough estimates and could be significantly inaccurate, but are at least a general guideline for how complex the issue/patch is.

Issues Difficulty scale

3 #445758: Add descriptions to all Field API schema columns
3 #464548: Document field types specifics (settings, columns...)
4 #419348: Handbook for fields API
5 #361839: Help needed for some field_attach function docs
7 #418196: Example for hook_field_storage_pre_*()


6 #370872: Tests for field_attach hooks
7 #362023: Field Attach: tests for full form cycle


+ UI design effort - UI-oriented summary of D7 Field API

Field modules

4 #504208: move 'min # of words' validation on body to text fields
4 #367939: noderef code in options.module
4 #372743: Body and teaser as fields
4 #409440: Fix html and encoding in select widget
5 #452574: Unclearable static cache in list_allowed_values()
7 #391330: File Field for Core

Field API forms

1 #497504: rename #multiple to #cardinality in field forms
4 #370480: Field form cleanup
4 #371724: remove field data sanitization from hook_field_load
4 #362058: Field Types: Make widget FAPI elements field agnostic.
4 #371796: JS-'add more' incompatible with AHAH file uploads
5 #367567: Use AJAX framework for "Add more" / load include file containing form / introduce $form_state['build_info']
5 #367006: [meta] Field attach API integration for entity forms is ungrokable

Field API internals

2/CRITICAL #382464: Disallow reserved field names
2 #447862: Convert field to the new static caching API
3 #372376: field.install cleanup
2 #372330: fields : do a pass of TODOs checking
3 #491640: move field_view_field() to _field_invoke() single-field mode
3 #367498: Introduce 'display' as a way to group and reuse instance and formatter settings.
4 #368082: Non-numeric object ids and revision ids
4/CRITICAL #366152: field_modules_uninstalled still exists, despite being an empty foreach loop.
5 #467926: make field_attach_delete() multiple
6 #437604: Do not rely on FAPI for 'required' validation
7 #372969: extend the _field_invoke() / _field_invoke_default() patterns ?
6 #372426: Figure out if field_filter_xss is needed
8 #438570: Field API conversion leads to lots of expensive function calls

Major tasks

3 #362021: field_attach_prepare_translation needs to be updated for D7 API
? #366377: Default values
7 #366416: Field Permissions UI
7 #362020: Rationalize exception usage
7 #409750: Overhaul and extend node build modes
8 #367595: Translatable fields
9 #367753: Bulk deletion
10/CRITICAL #367013: Field update (field_update_field)
10/CRITICAL #366364: [meta] Data migration from D6 contrib CCK fields to D7 Field API
10 #443422: 'per field' storage engine

1: Simple. One line changes, etc. A great way to get your feet wet!

2: Very easy. A very localized code change, probably no more than a few lines; a small, straightforward test case; reading a simple function and writing its PHPdoc; reviewing a simple patch.

5: Average. Requires a decent understanding of that component of Field API (e.g. Field Attach), and the code/docs/tests to write span multiple functions, perhaps involve small API changes; reviewing a patch whose issue might have been a 6 or 7 but now that the code is written it isn't that complex.

8: Challenging. Involves significant new design work; inventing or refactoring of significant components of Field API; documenting complex issues; writing subtle and difficult test cases.

10: Hard. No one has any idea what to do. Help!