An internally handled parser function doesn't conflict with showing it as a textbox.
We could for instance store it as a hidden page prefix.
Data stored in the text blob: "Author: [[Author:Bryan]] License: GPL --- {{Information| This is a nice picture I took }} {{Deletion request|Copyvio from http://www.example.org%7D%7D "
Data shown when clicking edit:
Author: <input type="text value="Bryan" /> License: <select>GPL</select>
<textarea name="textbox1"> {{Information| This is a nice picture I took }} {{Deletion request|Copyvio from http://www.example.org%7D%7D </textarea>
Why do I like such approach? * You don't need to create a new way for storing the history of such metadata. * Old versions are equally viewable. * Things like edit conflicts are already handled. * Diffing could be done directly with the blobs. * Import/export automatically works. * Extendable for more metadata. * Readable for tools/wikis unaware of the new format.
On the other hand: * It breaks the concept of "everything is in the source". * Parsing is different based on the namespace. A naive parsing as "License: GPL" instead of showing an image and a GPL excerpt, would be acceptable, but if incomplete markup is stored there, the renderings would be completely different. Could be skipped if placing the metadata inside a tag. But what happens if the tag is inserted elsewhere in the page? MediaWiki doesn't have run-once tags.
PS: The field author would be just a pointer to the author page, so you wouldn't need to edit everything on any case.