Today I attended a presentation by Maria J Martin about Uniprot and various other EBI database services. At the end of the talk, someone asked something to the effect of “How about simplifying user submission of annotations / corrections” – they wanted something in addition to the current ‘free text’ feedback and comments forms, and wanted a way to easily suggest annotations in a structured way. There was some suggestion of wiki’s etc, and how this had been tried to some extent, but they hadn’t got it right yet.
Here is my take on an approach to user submitted content to Uniprot. Essentially users should be able to add/change annotations piecewise, directly via the standard Uniprot web page for each protein record. These changes would ‘go live’ immediately, but since a large part of the value in Uniprot lies in its curation by expert annotators, the interface would also provide a very clear separation between user-submitted ‘uncurated’ annotations and the current expertly curated annotations.
I’ve made some mockups of how some parts of the UI may look in my little fantasy world:
• User login box at top (eg, OpenID)
• A History tab at the top.
• User submitted changes tab.
• Maybe a “Discussion” tab, ala Wikipedia (not pictured).
• Each field, or block of related fields, would have an Add/edit button at the top right of the block. (I’ve chosen the Universal Edit Button as an example)
Aftertought: Maybe putting these features under tabs isn’t quite the best place, since the existing tabs are ‘actions’ that can be taken rather than ‘extra info’ to be viewed. This UI detail could certainly be refined.
This proposal has many wiki-like features (history, attribution, open editing, curation by trusted users and potentially page/section locking) but doesn’t really fit my definition of a wiki since the input format is not free-form wiki-text, but is instead constrained by the interface to enforce the submission of (mostly) structured data (eg, a traditional data entry into an HTML form, or in-line editing of fields).
Any authenticated user would be able to add or edit fields by clicking on the “Add/edit annotations” button associated with that block (see mockup above). They would then be sent to a page where they can click to edit a particular field (in this case a point mutation and associated change in function), or click “Add new” to add a new mutation field and fill out the details (I didn’t make a mockup picture for this .. use your imagination). They also must specify one of the standard “evidence codes” from a dropdown box for each change/addition, including the PMID of a publication if relevant. User submissions are automatically flagged with some type of ‘user submitted’ flag too, and a username. Homologs (from UniRef clusters) could also be listed here to remind the user that certain annotations might need to be propogated to other members of the same family, if required (otherwise the curators would do this part, when applicable, for the next Uniprot release). For all I know, Uniprot may already have an interface similar to this, already in use by their professional curators. In effect, I’d like to see the 37signals “One interface” dictum applied.
User submitted changes would not automatically go live on the main Uniprot record page, but can be seen by clicking the “User submitted” tab at the top. Alternatively, the user submitted annotations could be put at the bottom of the page, like most blog comments, but clearly differentiated from the curated data by colour and other visual queues. The REST API could be told to include/exclude uncurated user annotations in responses by an extra query flag in the request (eg &userannotations=true). Uniprot curators can periodically review user submitted annotations and integrate them into the official Uniprot release as they see fit.
Under the History tab, the history of changes to that Uniprot record, both by user submitted changes and by Uniprot release would be available. This functionality is already mostly available under “Entry history->Complete history” at the bottom of the page, but user submitted annotations would also be included here with appropriate diff colouring (eg, coloured differently to curated changes, until they are officially accepted).
Providing user pages at a URL: http://www.uniprot.org/user/some_sensible_username with an associated RSS/ATOM feed would encourage participation by highlighting individual user contributions, and potentially allow a Wikipedia-like community of expert/fanatical annotators to emerge.
The Discussion tab would be used in much the same way Wikipedia Talk pages are – passive users, contributors and curators would be able to discuss the finer details of any submitted annotations. I’m of two minds about this one, since anyone who has read Wikipedia Talk pages knows things can get quite ugly there sometimes. On the other hand, the communication it allows would be important for building a community of annotators and helping clarify contributions.
PS: I’m a Uniprot fanboy. Can you tell ? 🙂