You are here: Home Plone products BibNotes

BibNotes (1.0b6)

by olena last modified 2009-02-10
Released on 2006-05-15 by Frank Bennett for Plone 2.1, Zope 2.8 under GPL - GNU General Public License available for All platforms.
Software development stage: beta
BibNotes is a simple annotation system for use with CMFBibliographyAT. It provides an "annotation" tab on annotation entries for per-user annotations to bibliography entries, a simple reading list and rating system, and a nice search interface. It should cope nicely with large bibliography databases.

BibNotes is a prototype extension package for CMFBibliographyAT, which adds personal annotations to bibliography entries, and a search option for the bibliography listing. It is meant for use in a research institute, a laboratory, or a teaching environment, to help members of a research community sift through a large volume of bibliography listings. It was also written by a hobbyist in a couple of weeks, which is probably enough to say by way of warning to the community at large.

This product adds two items to the user interface of CMFBibliographyAT. First, users will find an annotate tab above individual bibliography entries (including those for which they have no editing privileges).

Second, the listing of bibliography entries returned by the site-wide bibliography tab is decorated with a fancy search box, and a set of icons that look like miniature Venn diagrams:

When BibNotes is uninstalled, the search box, annotate tab and icons will disappear, but any annotations made by users will be preserved, inside a bibnotes_data tool object at the top of the Plone instance. When the BibNotes product is reinstalled, these user annotations will again become visible.

Notes are personal to each user, with a limit of one note per user per bibliography entry. There is no provision for discussion, reply, or nesting of notes; they are intended to serve as private, one-off, unintrusive annotations that are easy to return to in the course of research work.

The annotate tab opens a simple form for recording a note on the target entry. In addition, there is a Reading list tick-box above the area for the note, and a Recommend tick-box below it. The former is used to flag items of interest that the user wants to pursue in future reading. The latter is used to indicate that a source is particularly worth reading. While the Reading list toggle and comment are private to the individual user, data from Recommend selections is used in some of the search options offered by BibNotes.

Note: To achieve the full BibNotes experience, you must add a set of functions to the CMFBibliographyAT base content object. These functions will not interfere with the normal operation of CMFBibliographyAT and you can safely leave them in place whether BibNotes is installed or not.  The "Installation" section in the documentation gives full instructions.


BibNotes offers a rich range of search functions, following the notion that it is easier to pull options out of the interface than to add them.


The tick-box options should be more or less self-explanatory with a little messing around. The top three Select options shown in the screenshot above are available to all visitors, the last two to logged in users only:

Simply returns all entries in the system.
the Buzz
Returns only entries that have been annotated by someone within the past 30 days.
the Unknown
Returns entries that have not yet been annotated by any user.
My List
Returns only sources that the user has placed on her reading list by ticking the Reading list toggle in the annotation form.
My Notes
Returns only sources on which the user herself has placed a notes.
My Favourites
Returns only those entries for which she has ticked the Recommend toggle in the annotation form.


Each of the sorting options is available against all of the selection types. They are pretty straightforward:

Sorts alphabetically by the author's name.
Sorts by the year of publication.
Most annotated
Places entries with the largest number of annotations made by the user community at the top of the list.
Most recommended
Sorts on the total number of annotations with the Recommend toggle set.

In the search box, the tick-box selections are persistent; when the bibliography tab is used following a search, they will remain in force. This works for anonymous as well as logged in visitors.

Exploring related items

The icons to the right of many entries in the bibliography listing can be used to obtain a list of (possibly) related items. Essentially all this does at the moment is return a union of up to five users' Recommend lists that also contain this item. Because this is meant as a way of extending one's own reading, the My notes and My favourites selections are disabled when it is used.

Internal workings

Within capabilities of the novice who built it, BibNotes is intended to scale well. The notes are stored in a folderish object at the top of the Plone instance, in a subfolder named after the user's ID. Both the top-level folder and the user subfolder are BTrees-based. The note object holds a reference to its target, maintained in reference_catalog using the standard Archetypes reference API.

The only fields in the note object beyond Title and id are an annotation field holding the text of the user's note, and a bibnotesRecommend integer field which is set to 1 if the user ticks the Recommend box, 0 otherwise. Views of this object are redirected to the target object itself; there is no navigation path to the native Archetypes view and edit templates for the note object.

Despite this parsimonious field set, BibNotes is fairly catalog intensive. Both the BibNote object and the extended CMFBibliographyAT base content object have a number of function attributes that are held by either portal_catalog or reference_catalog. Data is spread across these two catalogs, because some of the catalogued function attributes generate their return values from catalog searches; to obtain a correct result during a full rebuild of the catalog that contains their values, they must refer to a separate catalog that is not experiencing the rebuild.

For ordinary searches, BibNotes makes a few efficiency improvements to the search procedure used in CMFBibliographyAT. Searches are sorted in the catalog, instead sorting the lazy list explicitly after delivery. (The corresponding trade-off appears to be that the catalog can sort only on one index, which may be an issue for some users.) Also, the BibNotes template does not call up whole objects to generate the bibliography listing, but relies instead on lazy list items from the catalog.

Project organization

There is none to speak of, at the community level.  As of the submission of this form, the BibNotes product code is only a couple of weeks old, and it was written by a single author while learning ArgoUML/ArchGenXML and the Archetypes interface.  However, the design has been carefully thought through (or so the author supposes), and the plan is to deploy this product in the academic faculty where the author works, as a facility for collectively managing research bibliographies.  When deployed, it will remain in use for the foreseeable future, so at the least, there will be a local need for bug fixes and basic maintenance.
Document Actions
Powered by Plone