Jasig Bookmarks Portlet overview
In which I walk through highlights of the free and open source JSR 168-implementing bookmarks portlet shipping with uPortal 2.6.
Background about this portlet
Whence this portlet?
Eric Dalquist, lead developer on the uPortal open source project and a primary developer on the University of Wisconsin at Madison uPortal deployment, originally authored the bookmarks portlet to reflect a modern take on the bookmarks channel functionality traditionally used with uPortal and to meet Madison's particular bookmarks user experience needs.
Since its origination, other developers, including Drew Wills (a uPortal consultant here at Unicon), have jumped in to make use of this portlet, expand upon it, help to include it in the core uPortal distribution, and today, blog about it.
Included in uPortal 2.6
Today the bookmarks portlet ships with uPortal as a working example of a JSR-168 portlet. uPortal 2.6.1 includes a custom channel type to particularly ease configuration of this portlet, making it easier to use its advanced bookmarks set selection feature than was the case in uPortal 2.6.0, the first uPortal release to ship with this portlet.
Where the project lives
Since the bookmarks portlet is included in uPortal 2.6, it is treated briefly in the uPortal manual and slightly more fully in its own entry in the Portlets wiki space. The source code for this portlet is shared and collaborated on via Jasig SVN and discussed via mailing lists for discussion of further developing this portlet and for community discussion and peer assistance making use of the portlet. Issues are tracked and prospective releases are managed in Jasig's Jira issue tracker instance.
A bookmarks portlet? Really? Doesn't everyone use del.icio.us or the like these days?
While the out of the box bookmarks functionality is pretty cool, the bookmarks portlet codebase is even more interesting as a base upon which to build more compelling bookmarks functionality. Interesting features for provisioning the bookmarks, personalizing them by aspects of the consuming user, merging end-user-defined bookmarks with centrally managed bookmarks for a per-user-customized shared bookmarks experience, and allowing import and export of bookmarks all are within reach starting from this codebase.
While services like del.icio.us and the accompanying browser integrations are compelling, especially with enhancement a bookmarks portlet in an institutional portal for presenting organized, quick, contextual, personalized, customizable links may still be a valuable widget.
Screenshots and walkthrough
Tabula Rasa
Unless an adopter engages in more advanced tricks or further development, the default bookmarks user experience for a particular user is a blank slate, a bookmarks portlet that has neither folders nor bookmarks, but does have the good sense to say so.
Adding a bookmark
Clicking "Add a bookmark" yields a form for entering the new bookmark. Bookmarks have a text label, an accompanying URL, and a preference as to whether the bookmark link should open in a new window. Here I add a bookmark to the Unicon commercial support offering covering this bookmarks portlet. I find that almost always I want a bookmark to open in a new window, and so a plausible local customization of this portlet would be to remove that checkbox, always choose to open the portlet in a new window, and thereby simplify the user experience. Sometimes less is more.
In any case, when I'm ready to save the bookmark, I click "Save". This returns me to the overall view of my bookmarks, now showing the newly entered bookmark.
Adding folders
Besides creating individual bookmarks, I can create folders. This is useful for managing a larger number of bookmarks, such as a bookmark for each module included in the scope of Unicon's Cooperative Support program for uPortal, or a link to a description to each of the attractive uPortal skins that the design and web development team have built over the years of the firm's involvement in uPortal.
Here I'll organize just my one lonely bookmark.
When I click "Add folder", a form appears similar to that for creating a bookmark.
When I save the folder, I return to the basic usage view, which now shows a folder and a bookmark.
Progress! However, what I really meant was to put the existing bookmark into the folder.
Editing bookmarks
Rather than remove my errant bookmark and re-create it within the folder, I can click its edit control to edit it to change its location.
To gain access to the edit control, I click "Show edit". This displays those red Xs for deleting the bookmarks and folders and the green pencils for editing them. In this case, I'll click the green pencil to edit the bookmark.
The label, link, and location in the tree of a bookmark are all editable. I'll move the bookmark to the folder by selecting the folder from the pulldown and save my change.
Opening and closing folders
Now that my bookmark is moved into the folder, I don't see it any more. This is because by default that folder is closed.
I can click the folder to open it.
Configuring default openness of folders
I find having to click to open the folders of bookmarks every time I use the portlet to be pretty annoying, so I like to hop over into the Options mode to configure the portlet to have a "messy desktop" behavior of remembering its most recent state of openness and closedness of folders and re-apply that on the next render. This feels most natural to me -- if it's annoying me with a large tree of links I'm not interested in right now, I can close the folders and they stay closed, and likewise if I want it to just stay open already and let me have quick access to some links, I can achieve that as well.
Depending on the use cases to which the portlet is put, it may well make sense in a local deployment to simplify the user experience by eliminating the Options mode and always choosing this behavior of remembering the most recent selection of tree node openness states.
Advanced feature: named bookmarks sets
New in uPortal 2.6.1, when an administrator publishes the Bookmarks Portlet, he or she can specify a key identifying a "bookmarks set" associated with the published bookmarks portlet. Bookmarks set keys scope the set of bookmarks in the context of a particular user. For instance, I could have a bookmarks set "fav_unicon_links" that identifies bookmarks I'd like to experience on, say, every tab of my portal experience. An administrator could publish that bookmarks portlet configuration as "Favorite Unicon Links". I could then multiply subscribe to that portlet publication, say once on each of several tabs, and these multiple portlet subscriptions would share data. Adding a bookmark to a subscription to this portlet on the Main tab would also have the effect of adding that bookmark to the subscription of this portlet on the Java tab, since these subscriptions would share bookmarks set keys.
Contrastingly, one might publish this portlet several times, specifying different bookmarks set keys each time. I could have "fav_uPortal_links" and "fav_sakai_links" and a whole bookmarks set just to keep links to all the uPortal deployments in the world, "uportal_deployments". I could subscribe to the bookmarks portlet specifying these keys all on the same tab or on different tabs, and (here's the cool part) I can have different bookmarks in each set.
Administrators can take advantage of this feature by multiply publishing the portlet specifying different bookmark set keys for the user, or can use the "channel publishing document" feature to specify a "subscribe time parameter" allowing the end user to set arbitrary bookmarks set keys to allow maximal flexibility in customizing the portal user experience.
The most natural way, it seems to me, to use this feature is to create a publication of the portlet for each managed fragment in the portal and include the bookmarks portlet at an expected screen location on each managed fragement. "Sports Bookmarks". "Academic Bookmarks". "Staff Bookmarks". "Administrator Bookmarks". Even if you don't choose to use DLM features to allow end users to edit other aspects of the tabs as they experience them, this leaves the end users a way to customize the tabs to their liking by adding the bookmark links of their choice, e.g. adding links to sports teams in which they are particularly interested, or adding links to the academic resources they find most useful, helping users to invest in making themselves at home in their institutional portal.
Future directions for the Jasig bookmarks portlet
Drew Wills of Unicon committed bookmarks set templating functionality into this project's source control. This implements a basic level of templating akin to the basic SLM layout templating that we used in uPortal prior to the advent of DLM. I see similar opportunities here in the realm of bookmarks templating to go beyond the basic copy templating and get to a more interesting merging of default, personalized, and customized bookmarks content to arrive at compelling contextual link user experiences.
Eric Dalquist, Drew Wills, and others have laid the groundwork. Your portal project might adopt this portlet and take it the next few steps towards increasing excellence.
In the meantime, thanks are due to the developers who have advanced this free and open source portlet this far to implement end-user-customized bookmarks functionality.
