Krinkle wrote:
Before I respond to the recent new ideas, concepts and suggestions. I'd like to explain a few things about the backend (atleast the way it's currently planned to be)
The mw_authors table contains unique authors by either a name or a userid. And optionally a custom attribution can be given (fallback to authorname, user real_name or user_name) Also optionally a url can be given (fallback to nothing or userpage).
The mw_license table contains the different licenses a wiki allows to be used. Their canonical name (eg. "GFDL", "CC-BY-SA-3.0" etc.), url to legal code and usage count[1].
mw_file_props is a table that keeps previous versions of file_props as well. And is linked to mw_revision by fp_id in rev_fileprops_id (like mw_text is linked in rev_text_id).
Both authors and licenses are uniquely identified by their id. This makes it easy to change stuff later on in an AuthorManager (eg. different url, username change etc.). The texts and complete titles of the licenses are stored in interface messages (for internationalization). MediaWiki:License-<uniq>-text could for example contain {{Cc-by-sa-3.0|attribution=$2}} on Wikimedia Commons.
If we store the links in the wikitext (like {{#fileauthor:}} and {{#filelicense:}}, the advantages are basically two things:
- It has all features of editing and revisioning (better history,
edit conflict, diff view, etc.) 2) No need for a revisionized mw_file_props, we can store the current values in mw_page_props
Possible down side is that a diff like
- {{#fileauthor:2}} {{filelicense:12}}
- {{#fileauthor:10}} {{#fileauthor:12}} {{#filelicense:
doesn't mean very much. I.m.h.o The solution is not to store the actual names in wikitext so that the diffs are better, but to either not store it in wikitext at all, or customize the behaviour everywhere:
Why? Storing the property "filelicense: GPL" directly in wikitext is not bad. It's also a relief when we want to delete licenses later. Same with Author. Take that as a key into a NS_AUTHOR namespace. Going to Special:LicenseManager/5 in order to change GPL license data is just added complexity over using the short name "GPL".