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:
1) 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:
* edit form: extract parserfunction calls from wikitext before  
anything else,
                        and put it in seperate form elements
* diff view: get the names of those authors and licenses and somehow  
include it in the diff view
                This could be done a bit like AbuseFilter's diff between filter 
 
versions (ie. before "Line 1",
                would be "Author" and "License")
* saving form: convert back to {{#parserfunction:}} calls and  
prepending it to wikitext
* action=raw: ?
* action=render: ?
* api-parse: ?
right now I think storing it in wikitext and customizing it everywhere  
like shown above is not worth
the trouble and would likely bring it's own troubles. Keeping it  
seperate from wikitext is more work
once but I think it pays off. But again, nothing is final yet.  
Everything is possible.

--
Krinkle


[1]: The usage count (mw_license.lic_count) is a bit like edit count  
(increased/decreased when saving files)

_______________________________________________
Wikitech-l mailing list
Wikitech-l@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/wikitech-l

Reply via email to