[OPEN-ILS-DEV] Making Evergreen a bit more social

Dan Scott dan at coffeecode.net
Sun Oct 10 23:45:18 EDT 2010


Hi folks:

I've just pushed a new bzr-based branch of Evergreen to
http://bzr.coffeecode.net/evergreen-social

The reason it's a branch, instead of a commit directly to trunk, is
because it's all very tentative. Here's what I've done so far:

  * Added schema support for reviews, ratings, and tags - see the
    social.* schema (in Open-ILS/src/sql/Pg/060.schema.social.sql

  * Added a public user profile page that displays a user's
    name, user name, email address, bookbags, circulation history,
    and reviews (with the idea that ratings and tags could easily be
    added). An example URL would be /opac/social/user/<id> - see
    Open-ILS/src/perlmods/OpenILS/WWW/Social.pm and
    Open-ILS/src/templates/social/user/about.tt2. I've also attached
    screenshots and the raw HTML if you don't want to go through the
    hassle of installing the whole dang branch :)

  * Added Activity Streams (http://activitystrea.ms) feeds for users and
    for objects that display, in descending chronological order, the
    recent activities that the user has performed. For objects, the
    feed displays all of the activities pertaining to that object. An
    example URL would be /opac/social/user/<id>.atom - this is all
    implemented in Open-ILS/src/perlmods/OpenILS/WWW/Social.pm as well
    (and naturally that's a new mod_perl handler). I've attached a
    sample feed here, too.

The public user profile is implemented in Template::Toolkit, currently
as a purely HTML page. My goal was to build meaningful HTML first, and
then layer on JavaScript for special effects, so it should be usable out
of the box.

The plan is to make all of the information on the public user profile
page subject to the user's preferences; if they don't want to share
anything, they shouldn't have to. This would be controlled by user
settings that I have yet to add :)

Also in the yet-to-add camp is the actual UI for adding a rating,
review, or tag to a given item. I've sketched out a rough schema for
each, but the schema built in some assumptions that I'm now questioning.
For example, I put "approver" and "approval_date" columns on the
social.user_review table, thinking that libraries would want to approve
every user-generated review before it is publicized, but I'm leaning
towards providing a user-flagging mechanism instead (so that users' 
reviews would be published immediately, but other users could flag the
review as offensive and that would push it into an assessment queue).

Similarly, right now the visibility of a user's circulation history is
either all or nothing; there is no provision for marking particular
entries as "hide from public view". (Well, and "all" is really "last 20
items" in the HTML summary page, and the feed is capped at the last 20
actions total, so that's a bit of a fiction - but you get what I'm
saying).

Other tasks that would need to be tackled to make this truly social
would be:

  * Adding a "follow this user" option so that you could easily track
    your favourite fellow users' activities
  * Adding "my other account" links and generating the appropriate XFN
    notation, leading to the possibility of automatically piping your
    library activity feed to Buzz or other Activity Stream consumers.
  * Figuring out how to match bibs between systems so that once
    everybody has Activity Streams for their bibs, we can start to
    aggregate reviews / ratings / tags between library systems
  * Build an HTML page for "things" (bibs) parallel to the user
    profile view. Which, in some ways, is like building yet another
    OPAC :)

And on the performance side, obviously we would want to hook up caching
and optimize the schema (the EXPLAIN for the object feed is capital U
ugly on a system with a couple million bibs). 

So, lots left to do to turn this into a usable set of features. But I
thought it was worth getting this out for some exposure at this point.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: Evergreen-about-user.png
Type: image/png
Size: 65567 bytes
Desc: not available
Url : http://libmail.georgialibraries.org/pipermail/open-ils-dev/attachments/20101010/c8e0907c/attachment-0001.png 
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://libmail.georgialibraries.org/pipermail/open-ils-dev/attachments/20101010/c8e0907c/attachment-0001.html 
-------------- next part --------------
A non-text attachment was scrubbed...
Name: opac_social_user_2.atom
Type: application/atom+xml
Size: 10278 bytes
Desc: not available
Url : http://libmail.georgialibraries.org/pipermail/open-ils-dev/attachments/20101010/c8e0907c/attachment-0002.bin 
-------------- next part --------------
A non-text attachment was scrubbed...
Name: opac_social_thing_2.atom
Type: application/atom+xml
Size: 4665 bytes
Desc: not available
Url : http://libmail.georgialibraries.org/pipermail/open-ils-dev/attachments/20101010/c8e0907c/attachment-0003.bin 


More information about the Open-ils-dev mailing list