Some time ago I needed to create a people field which had to have a default value. The default value had to be the current user. This is not possible out of the box so I needed to create a custom field type for this. Because there was very little information on creating a custom people field on the net, I will explain the method in this post.
1. Create the custom field xml
This file needs to go in 12/TEMPLATE/XML. Make sure it starts with 'fldtypes_'. I will call it 'fldtypes_customPeopleField'.
Here is the xml. It will describe some properties of this field like the type name, displayname and the class which will take care of the actual logics.
2. Create the logic
For the actual logics, I will create a class which inherits from SPFieldUser and I will override the 'DefaultValue' property.
What it will do is set the current user as the default value. The setter we will leave untouched and therefore we just use the one from SPFieldUser.
3. Using the custom field
You can now use this custom field to create a custom column:
Just create a wsp solution file and make sure the field xml is placed in the correct folder. Normally this field type should also popup in the GUI when you want to create a new site column.
I have understood that this custom field (and possibly all custom fields) are not supported by Colligo, an offline tool for SharePoint. By not supported I mean I wasn't able to update this field. It was just read-only. Just so you know :) .