User:Dnessett/Template/Bref/Book Citation User Requirements

Some Thoughts About a Bcite Extension
Here are some thoughts (formulated in the form of use requirements) about a Bcite extension.


 * Most, if not all, Bcite extension options should be per book, not per mediawiki implementation. Different books have different citation requirements and these should not be constrained by site-wide choices.


 * The Bcite extension should support both citation source lists and footnote lists (the latter being parenthetical explanatory text inserted by the book's author(s)).


 * Citation list management and rendering should be completely separate. It should be possible to render a citation list on a page that contains no citation list data.


 * Citation lists should be named. This name might be a pagename on which the list is displayed for management purposes or it might be a name that is completely independent of a pagename. (It is not necessary that an implementation support both of these options. Either one is an acceptable implementation choice).


 * It should be possible to create a citation list from operations on other citation lists. Useful operations are create, merge, diff and same (the opposite of diff - same returns all elements that the two citation lists hold in common). One model is to treat citation lists as instances of more general ordered sets and provide a set of ordered set operations.


 * It should be possible to create a citation list that is dynamically dependent on operations applied to other citation lists. Thus, if a citation list is the diff of two other citation lists and one of the latter changes, the change should propagate to the dependent citation list. This dependence should include removal of the affected citation list entries when one of the base citation lists is deleted. It should also include the change of text in a citation list entry when it comes from a base citation list.


 * Provision of citation list names and operations obviates the need for a grouping feature. Effectively, the citation list name is the name of a group.


 * Citation list entries should be named. This allows them to be referenced in book text.


 * Maintaining links between citation references and citation list renderings is awkward, since there may be multiple citation list renderings that include common citation list entries. To accommodate forward and back links, citation list renderings should have an optional name. To connect a reference and citation list rendering, a reference should have an optional parameter that names the citation list rendering to associate with it. This allows the provision of a forward link in the reference and a back link in the rendering. It also supports the insertion of reference prefixes and tags in the reference (see bullet on citation list rendering parameters below). Finally, it supports the use of one tagging/prefixing style for content sources and another style for footnotes.


 * It should be possible to turn off a forward link in a reference. Alternatively, (if that is more flexibility than necessary), it should be possible to turn off all forward linking in a book.


 * Different rendering and referencing tags should be supported (e.g., numbers associated with a citation list entry and its reference or an associated ordered set of characters, such as a, b, ..., aa, ab,.. useful for footnote lists). It would be useful if a book could define an ordered set of characters to use in the latter case. There should be an option to use the citation list entry name as the tag.


 * Back links should be placed at the end of a citation list rendering entry. This supports good indentation styling.


 * Rendering of citation lists should have several parameters, including:


 * Rendering order - it should be possible to render citation list entries in the order in which they appear in the list or alphabetized by the citation list entry name. The latter is more likely to provide useful results, since the provision of merge, diff and same operations may make it difficult to predict the order of citation list entries.


 * Rendering back links - it should be possible to turn off back links for a particular citation list render. Alternatively, (if that is more flexibility than necessary), it should be possible to turn off all back linking in a book.


 * Prefix text - It should be possible to specify prefix text for references. This prefix text is concatenated with the entry tag in the reference. Prefix tags should not be separated from the tag by a space (as is done with the group identifier and tag in the Cite extension). If a space is desired, the writer/editor can provide it.