Hi,
I would like to build an extension for MediaWiki (MW) to make citing scientific publications easier / more 'natural'. This extension will be used for my private 'literature wiki', and so requires features that are not strictly generally useful for MW. However, I think that a lot of general principles should apply to this project that could carry over to MW in general.
Below I will outline my thinking. I would like to get feedback on these ideas, because basically I am very new at MW. Additionally, I want to organize a list of resources related to this project, and hopefully this will help me do that.
== First, why not just use an existing extension? ==
* http://en.wikipedia.org/wiki/WP:Citing_Sources#How_to_cite_sources * http://en.wikipedia.org/wiki/Wikipedia:Citation_templates * http://en.wikipedia.org/wiki/Wikipedia:Footnotes
In short, I find these methods clunky. Although these tools go a long way towards providing proper citation support to MW, I think they fall short in several respects;
* They are somewhat tricky to learn and implement. * The specific citation data for a given source cannot be automatically generated (AFAIK). * Sources are not reusable across pages (sources are not independent 'objects'). * The format of the citation is not user configurable (there no scope for setting format preferences).
The above list of missing features comes from my perspective as a scientific student. I write papers citing articles that are mostly from PubMed using tools like BibTeX, TexMed and Endnote. Typically the 'citation process' has a simple 'pipeline'.
1. Click 'insert citation' or type a citation keyword. 2. A) Select an existing citation from a personal collection or B) perform a database search to download the citation data into a collection. 3. Later - configure the citation style and print.
Of course things can differ from the above pattern, such as occasionally having to manually type the citation details, however, in general this is the pattern used by most scientists (I think).
I would like to build a system to allow this kind of pattern to be implemented in MediaWiki.
Some of these issues are addressed by the following extensions;
And; * http://www.mediawiki.org/wiki/Extension:PagesOnDemand (and PMID_OnDemand) * http://www.mediawiki.org/wiki/Extension:ProcessCite * http://www.mediawiki.org/wiki/Extension:Biblio
== Second, describing the system I have in mind. ==
Right! I am getting quite bogged down with the following description, so lets keep it simple to begin with.
Lets assume that you want to insert a citation from an article listed in PubMed. This 'source' is found by searching PubMed and has PMID = 1234567. Associated with this PMID is the citation data; title, year, journal and abstract.
Every cited source will have its own page in the Wiki, called a 'source page'. Each source page will be an instance of a standard 'source template'. Particular source pages can then be dropped into a regular page as needed.
Making a separate page for each source already provides advantages. However, two 'magic' steps are still missing and need to be described;
1. Automatically 'instantiating' the source template in the source page with data from PubMed. 2. Formatting the references in pages using citations.
These steps are described (in outline) in more detail below.
== Third, detailed use case. ==
While writing a scientific article the user types "bla bla bla{{cite:myKey}}", where myKey is a personal citation keyword that can be anything at all but will probably be a mnemonic for the desired source. Lets assume that 'myKey' refers to a new 'source' that has not been cited before. After saving the page {{cite:myKey}} shows up in the text as a red link ("Template:Cite:myKey").
Clicking the red link will trigger some 'magic' (using the PagesOnDemand extension). The 'magic' presents a user with the "Template:Cite:myKey" page preloaded with a special 'PubMed search' template.
The PubMed search template allows the user to (surprisingly) search PubMed. For example of the PHP code required see 'Librarian'; http://bioinformatics.org/project/?group_id=131
From here it gets a bit tricky... The PubMed search template is
obviously special, and needs to do a lot of things;
1. Lets say after performing a search, a particular 'source' article is selected from PubMed (lets say with PubMed Unique Identifier PMID:1234567). 2) The citation data returned from PubMed is used to automatically instantiate a "PubMed source" template, automatically passing data to the various fields of the template. 3) This 'instance' is saved into a 'standard' source template page, something like "Template:PubMed source:PMID:1234567". 4) Finally the 'standard' template is automatically embedded (transcluded) into the "Template:Cite:myKey" page. 5) The user is left viewing the saved "Template:Cite:myKey" page, which contains only "{{PubMed source:PMID:1234567}}".
So... (at least) two things have now happened. 1) A "PubMed source" template has been automatically instantiated with data from PubMed and saved as a 'standard source'. ii) A layer of abstraction has been put between the standard source and the mnemonic via template transclusion. Viewing "Template:Cite:myKey" or "Template:PubMed source:PMID:1234567" presents all the citation details (including the abstract).
Viewing a page which calls {{Cite:myKey}} requires more magic ...
The citation should appear as a number in the text and automatically add itself to a reference listing with a fixed style at the bottom of the page (like Categories do). This should not require the user to call a specific <references/> tag, but should happen automatically. The format of the citation needs to be controlled by CSS.
== Sooo... ==
I now see that almost all of the above is done by PagesOnDemand and ProcessCite as demonstrated on EcoliWiki. What is missing is the AJAX search box and the automatic formatting (via CSS). I think that using the above as a starting point, I can code the AJAX search box, first presenting the user with a search interface, allowing a selection to be made, filling in the template and showing the resulting page. However, I am not sure how to begin to make the references appear automatically in the way categories do, and I don't know how to set up the layout to work in conjunction with CSS ...
Any feedback on any of the above (polite or otherwise) is most welcome!
Cheers,
Dan.
P.S.
The following list of extensions look relevant for this project;
* Bibtex * Cite * ProcessCite * DynamicPageList * CreateArticle * CreateBox * PagesOnDemand * PMID_OnDemand * Biblio
Also; http://www.mediawiki.org/wiki/Markup_spec/BNF/Magic_links
Hello Dan,
I like the idea of a more user friendly citing extension. However, a few points:
1- AJAX... Sweet, nice, and all that. Completely unusable if you have javascript turned off, or if you're using keyboard only to navigate, or use a screenreader. Not saying not to use it, but provide a non-AJAX alternative. Accessibility and usability are important.
2- Don't assume that everyone who would use the extension has access to PubMed.
3- Don't assume that all articles are available through PubMed. I've access to PubMed myself, but many research articles I am routinely hunting for aren't available, nor referenced, on that system,
So, there you go, my 2 devaluated cents ;)
Good luck and happy hunting
Sean
On 21/08/07, Sean O'Connor sean@transabled.org wrote:
Hello Dan,
I like the idea of a more user friendly citing extension. However, a few points:
1- AJAX... Sweet, nice, and all that. Completely unusable if you have javascript turned off, or if you're using keyboard only to navigate, or use a screenreader. Not saying not to use it, but provide a non-AJAX alternative. Accessibility and usability are important.
Check.
2- Don't assume that everyone who would use the extension has access to PubMed.
Uh? I assume they have access to the internet... hence PubMed. They may not have access to the articles themselves, but that is not necessary for citation purposes.
3- Don't assume that all articles are available through PubMed. I've access to PubMed myself, but many research articles I am routinely hunting for aren't available, nor referenced, on that system,
Check!
So, there you go, my 2 devaluated cents ;)
At least your exports will be boosted!
Good luck and happy hunting
Cheers,
Dan.
Check.
My reality check bounced ;)
2- Don't assume that everyone who would use the extension has access to PubMed.
Uh? I assume they have access to the internet... hence PubMed. They may not have access to the articles themselves, but that is not necessary for citation purposes.
No, you're right, but... If you don't have access to PubMed, you may not be familiar with PubMed, and as a result not able to use the PubMed referencing system.
So, there you go, my 2 devaluated cents ;)
At least your exports will be boosted!
Oh, so you're the silver-lining kinda guy, huh? <grin>
Sean
Hi Dan,
I see you've been using your EcoliWiki account! On Aug 21, 2007, at 4:44 AM, Dan Bolser wrote: <snip>
- Click 'insert citation' or type a citation keyword.
If you look under the edit box in EcoliWiki, you can see that we also modified InsertChar to allow you to add ref tags.
- A) Select an existing citation from a personal collection or B)
perform a database search to download the citation data into a collection.
Something similar could be added from what I did with ProcessCite. Note that to access a personal collection that isn't on the server will require the js that inserts the reference to read files on your local machine. This might open some security holes.
What we have already in ProcessCite is the ability to have a page in the wiki with your personal references pre-named. In EcoliWiki we have a shared reference library
http://ecoliwiki.net/colipedia/index.php/EcoliWiki_Reference_Library
I think it would be pretty easy to modify this approach so users have their own reference libraries.
- Later - configure the citation style and print.
Right now, if using ProcessCite, you could just modify the code to get different formatting. I don't think you want different users having different formats, as the parser cache would lead to a mess.
Of course things can differ from the above pattern, such as occasionally having to manually type the citation details, however, in general this is the pattern used by most scientists (I think).
Biologists, anyway. ; )
<snip>
== Third, detailed use case. ==
While writing a scientific article the user types "bla bla bla{{cite:myKey}}", where myKey is a personal citation keyword that can be anything at all but will probably be a mnemonic for the desired source. Lets assume that 'myKey' refers to a new 'source' that has not been cited before. After saving the page {{cite:myKey}} shows up in the text as a red link ("Template:Cite:myKey").
Clicking the red link will trigger some 'magic' (using the PagesOnDemand extension). The 'magic' presents a user with the "Template:Cite:myKey" page preloaded with a special 'PubMed search' template.
The PubMed search template allows the user to (surprisingly) search PubMed. For example of the PHP code required see 'Librarian'; http://bioinformatics.org/project/?group_id=131
If I understand this correctly, here's how I might do it. 1. I don't think I'd use templates, since they get processed after Cite references, I think. But you could modify Cite to have a new attribute, e.g. <ref search='myKey'/> 2. the search attribute would trigger the launch of an AJAX search form Special page. Graceful degradation for non-js users would insert a link to the special page instead of doing it on the fly (I don't even know if doing it on the fly is doable) 3. Running the search special page does stuff to replace <ref search='myKey'> with <ref name='RefID'/> upon ArticleSave.
I think this might be doable, and I'm glad we inspired you to think about how things could be even better. What I'm not sure about is how much better this is than just having a pubmed window open in parallel with the MW window and doing copy-paste between them. For pubmed IDs, note that just using the clipboard means that the source can be EndNote or whatever desktop reference library manager you use.
As noted by Sean, a bigger challenge is stuff that isn't in PubMed. Even for biology, books aren't there and lots of the plant and chemistry literature isn't indexed. Two things are needed for this: 1) A free web service like PubMed's E-Utilities that provides the information to populate the reference 2) A place where users can access to get the identifiers
Biblio has a way to use ISBN numbers, which we should probably add. Some of the other sources, like the ACS Chemfinder, are not freely accessible, AFAIK.
The other thing - the official version of Cite needs Hooks!!! <snip> ===================================== Jim Hu Associate Professor Dept. of Biochemistry and Biophysics 2128 TAMU Texas A&M Univ. College Station, TX 77843-2128 979-862-4054
Hi Dan,
I don't have much to offer but encouragement. I would find this extension extremely useful. We have an internal homegrown citation extension, but with sources being loaded in from EndNote, PubMed, and a couple other places, our system has gotten very hairy. Please keep me up to date on your progress. Maybe I can even help beta and find bugs for you!
Thanks! -Courtney
On 07/09/2007, Christensen, Courtney ChristensenC@battelle.org wrote:
Hi Dan,
I don't have much to offer but encouragement. I would find this extension extremely useful. We have an internal homegrown citation extension, but with sources being loaded in from EndNote, PubMed, and a couple other places, our system has gotten very hairy. Please keep me up to date on your progress. Maybe I can even help beta and find bugs for you!
Cool! For some reason I only just found this email...
Progress will be logged here;
All the best,
Dan.
Thanks!
-Courtney
MediaWiki-l mailing list MediaWiki-l@lists.wikimedia.org http://lists.wikimedia.org/mailman/listinfo/mediawiki-l
mediawiki-l@lists.wikimedia.org