A proposal for the syntax for migrations. Separate record definitions with the same name. Each definition has a version increment, each definition defines fields which are in addition to the previous versions.
%% the original definition for the project record, defined for an
%% old version of our application
-record(project, {
version = 1,
name :: binary()