LibX 2.0 - an Open Source, Community Platform for Delivering Library Services Code4Lib 2009 Godmar Back University Libraries and Dep. Of Computer Science.

Slides:



Advertisements
Similar presentations
Introduction to Web Design Lecture number:. Todays Aim: Introduction to Web-designing and how its done. Modelling websites in HTML.
Advertisements

© 2002 D & D Enterprises 1 Linking Images For Navigation & Clickable Image Maps.
PART IV - EMBED VIDEO, AUDIO, AND DOCUMENTS. Find a video on Youtube.com: Search for a video, then look for the Embed code. Copy this code into the HTML/JavaScript.
Support.ebsco.com EBSCOhost Mobile Tutorial. Welcome to the EBSCOhost Mobile tutorial, a guide to the most popular EBSCOhost features available for use.
Support.ebsco.com EBSCOadmin Branding Tutorial. Welcome to the EBSCOadmin Skinning and Branding tutorial, where you will learn how to customize EBSCOhost.
The Marketing and Instruction of New Tools for Libraries: LibX a Case Study Kyrille Goldbeck College Librarian for Natural Resources LOEX MAY 2007 Uncharted.
Using Google Book Classes in Mashups Excerpt from talk given at IUG 2008 in Washington, D.C Annette Bailey University Libraries Virginia Tech April 29,
Enhancing Access to Library Collections Kyrille Goldbeck College Librarian for Natural Resources NRIC 2007.
LibX – Putting Millennium and WebBridge in Firefox Annette Bailey Newman Library, Virginia Tech May 21, 2006.
1 LibX – Connecting Users and Libraries Annette Bailey LITA National Forum October 2007.
Delivering E-Resources with LibX Annette Bailey Newman Library, Virginia Tech March 24, 2006.
LibX - Motivation, Development, and Implementation Annette Bailey & Godmar Back October 3, 2006.
LibX an Open Source, Community Platform for Delivering Library Services Code4Lib 2009 Preconference Godmar Back and Mike Doyle Virginia Tech.
Wikispaces 101 Training Standards & Interoperability (S&I) Framework May 30, :00 - 5:00pm EDT 1.
XID Web services Xiaoming Liu Senior Software Engineer OCLC.
Ziehm Academy - User Guide for online registration portal Nuremberg, February 2009.
WEB DESIGN TABLES, PAGE LAYOUT AND FORMS. Page Layout Page Layout is an important part of web design Why do you think your page layout is important?
30 min Scratch July min intro to Scratch A Quick-and-Dirty approach Leaving lots of exploration for the future. (5 hour lesson plan available)
A Blackboard Building Block™ Crash Course for Web Developers
JQuery A Javascript Library Hard things made eas(ier) Norman White.
Extending JIRA Rachel Wright July 15, 2014 See slide “Notes” section for commentary and talking points.
Day 2 – JavaScript & PHP.  Have the hover effect display an extra image  Add an extra image for each of the tags  In your writeText() function, you.
Rene Tanner and Debbie Flitner Arizona State University Building a Library Toolbar with LibX.
The KB on its way to Web 2.0 Lower the barrier for users to remix the output of services. Theo van Veen, ELAG 2006, April 26.
Chapter 1 Getting Started With Dreamweaver. Explore the Dreamweaver Workspace The Dreamweaver workspace is where you can find all the tools to create.
Bringing Open Source to the Library Lessons Learned NISO Forum Annette Bailey Virginia Tech.
1 of 7 This document is for informational purposes only. MICROSOFT MAKES NO WARRANTIES, EXPRESS OR IMPLIED, IN THIS DOCUMENT. © 2007 Microsoft Corporation.
Paul Trani Adobe Certified Instructor/Expert Resources:
Presented by…. Group 2 1. Programming language 2Introduction.
Chapter 11 Adding Media and Interactivity. Flash is a software program that allows you to create low-bandwidth, high-quality animations and interactive.
JQuery CS 268. What is jQuery? From their web site:
Web 2.0: Concepts and Applications 2 Publishing Online.
CIT 256 Organizing Large Websites: Divs, DW Templates Dr. Beryl Hoffman.
A Scalable Application Architecture for composing News Portals on the Internet Serpil TOK, Zeki BAYRAM. Eastern MediterraneanUniversity Famagusta Famagusta.
JavaScript & jQuery the missing manual Chapter 11
Classroom User Training June 29, 2005 Presented by:
Yahoo! User Interface (YUI) Library Natly Mekdara.
Event-driven Programming
CMS I – BASIC WEB EDITING INTRODUCTION TO THE CMS Presented By: Rodneikka Scott, MS – Implementation Project Manager Lila Elliott, MA – Manager Client.
Copyright © Allyn & Bacon 2008 POWER PRACTICE Chapter 7 The Internet and the World Wide Web START This multimedia product and its contents are protected.
Introducing Dreamweaver MX 2004
Tutorial 1 Getting Started with Adobe Dreamweaver CS3
London April 2005 London April 2005 Creating Eyeblaster Ads The Rich Media Platform The Rich Media Platform Eyeblaster.
WEB DESIGN USING DREAMWEAVER. The World Wide Web –A Web site is a group of related files organized around a common topic –A Web page is a single file.
Images in HTML PowerPoint How images are used in HTML.
PUBLISHING ONLINE Chapter 2. Overview Blogs and wikis are two Web 2.0 tools that allow users to publish content online Blogs function as online journals.
LiveCycle Data Services Introduction Part 2. Part 2? This is the second in our series on LiveCycle Data Services. If you missed our first presentation,
Tutorial 121 Creating a New Web Forms Page You will find that creating Web Forms is similar to creating traditional Windows applications in Visual Basic.
Tutorial 7 Creating Forms. Objectives Session 7.1 – Create an HTML form – Insert fields for text – Add labels for form elements – Create radio buttons.
Copyright ©: SAMSUNG & Samsung Hope for Youth. All rights reserved Tutorials The internet: Blogging Suitable for: Advanced.
Domain 3 Understanding the Adobe Dreamweaver CS5 Interface.
Copyright 2007, Information Builders. Slide 1 Understanding Basic HTML Amanda Regan Technical Director June, 2008.
Presentation title: 32pt Arial Regular, black Recommended maximum length: 1 line My Library Phase 3 concepts.
USING WORDPRESS TO CREATE A WEBSITE (RATHER THAN A BLOG) STEP-BY-STEP INSTRUCTIONS.
USING WORDPRESS TO CREATE A WEBSITE (RATHER THAN A BLOG) STEP-BY-STEP INSTRUCTIONS.
Reading Flash. Training target: Read the following reading materials and use the reading skills mentioned in the passages above. You may also choose some.
Chapter 11 Adding Media and Interactivity. Chapter 11 Lessons Introduction 1.Add and modify Flash objects 2.Add rollover images 3.Add behaviors 4.Add.
 An essential supporting structure of any thing  A Software Framework  Has layered structure ▪ What kind of functions and how they interrelate  Has.
Irakli Garibashvili Director, National Scientific Library in Georgia.
Cheryl Wolfe Web Services Administrator Tampa-Hillsborough County Public Library James Day Electronic Services Librarian Embry-Riddle Aeronautical University.
HTML Tutorial. What is HTML HTML is a markup language for describing web documents (web pages) HTML documents are described by HTML tags Each HTML tag.
COMP 143 Web Development with Adobe Dreamweaver CC.
Live. learn. work. play Superior Avenue Suite 310 Cleveland Ohio Tel: Fax:
How to use Drupal Awdhesh Kumar (Team Leader) Presentation Topic.
How to Apply PDF in Flipbook on Website. Description If you are finding solution for applying PDF in flipbook mode on website, and adding multimedia items.
GALILEO Support Services
Overview Blogs and wikis are two Web 2.0 tools that allow users to publish content online Blogs function as online journals Wikis are collections of searchable,
CARA 3.10 Major New Features
Serpil TOK, Zeki BAYRAM. Eastern MediterraneanUniversity Famagusta
University Libraries and Dep. Of Computer Science Virginia Tech
Presentation transcript:

LibX an Open Source, Community Platform for Delivering Library Services Code4Lib 2009 Godmar Back University Libraries and Dep. Of Computer Science Virginia Tech

LibX 1.0 Toolbar and right-click context menu Adaptive and user-configurable context menus OpenURL support Magic Button (Google Scholar support) Web Localization via Embedded Cues Autolinking Off-campus access via EZProxy or WAM Support for CiteULike Support for COinS Support for xISBN Show/Hide Hotkey 2/9/20142Code4Lib 2009

LibX 1.0 Toolbar and right-click context menu Adaptive and user-configurable context menus OpenURL support Magic Button (Google Scholar support) Web Localization via Embedded Cues Autolinking Off-campus access via EZProxy or WAM Support for CiteULike Support for COinS Support for xISBN Show/Hide Hotkey 2/9/20143Code4Lib 2009

The LibX Edition Builder A configuration management tool for creating customized versions of LibX – Customized version of LibX = LibX edition Edition configuration includes descriptions of community-local resources: – OPACs, OpenURL, Proxy, Databases, Links, Branding, … Edition Builder is easy to use – Makes heavy use of OCLC registries – Uses sophisticated auto-detection techniques – Usable by librarians, not just programmers Anybody can create, share, and manage editions Over 550 edition as of now, new ones created at a pace of 20/month – Huge human investment – 10s of thousands of end users 2/9/2014Code4Lib 20094

Where to go from here? A toolbar is great, but… Emerging technology trends – Service-oriented architectures, web services interfaces – soon even to ILS! – Data mash-ups; HTML widgets Educational trends: librarians, educators, and users create – Online tutorials, subject guides, visualizations – Social OPACs: tagging, reviews, recommender services 2/9/20145Code4Lib 2009

World Wide Web Library Resources and Web Services Library Resources and Web Services LibX 2.0 LibX 2.0 plugin: executes Libapps, merging library information into pages. Users: decide to which library services to subscribe, see expanded view of the web Librarians: create or adapt Libapps from reusable, shareable modules 2/9/20146Code4Lib 2009 But who will create those modules?

The LibApp Model How can the interaction of LibX with web content be modeled? Typical tasks involve – Examination of the page and extraction of information – Processing of information – Modification of the page A Module is a small piece of JavaScript code along with a metadata description of its input and/or output A Libapp is a group of modules A Package is a folder of libapps and packages 2/9/2014Code4Lib 20097

Modules Modules are named using a URL and published via REST/AtomPub Modules can reference JavaScript libraries (e.g., jQuery) and CSS stylesheets – Execute in a parallel environment to the client page Modules are trusted, with full access to LibX API, including edition configuration and user preferences Modules communicate with each other via tuple space 2/9/2014Code4Lib 20098

LibX Tuple Spaces tuple = TAKE(template) If a tuple matching template exists in the tuple space, remove it and return it If no tuple exists, wait until a matching tuple is written, remove it and return it WRITE (tuple) Write a tuple into the space If a TAKE is pending with a matching template, complete the TAKE 2/9/2014Code4Lib Tuples and Templates are JavaScript objects in JSON notation. Tuple example: { isbn: } Template example: { isbn : * } // any tuple with isbn field

2/9/2014Code4Lib Tuple Space ISBN Scraper Display ResultISBN Lookup { isbn: } Guarded-By: { isbn: *} Guarded-By: { display: * } { display: ISBN is on the shelf } Jangle

Rationale for Tuple Spaces Software Engineering Low coupling between modules Independent composition Simplicity Suitable for meta- programming Handling Asynchrony User actions happen asynchronously Information arrives asynchronously from external sources Execution order independence 2/9/2014Code4Lib

LIBAPP DEMO 1 CREATE A PRESENCE FOR THE LIBRARY 2/9/2014Code4Lib

2/9/2014Code4Lib

2/9/2014Code4Lib

Step 1: Arrangement Description: Display a Help icon on the ACM page that plays a video when clicked. Include: /portal\.acm\.org.*/ Require: jquery // Place the current edition's icon into the ACM portal page, next to the // current search button. libx.space.write ( { needsuserbutton: $('input[src=" image: libx.edition.options.icon, text: "Click for a short tutorial", action: function () { // When user clicks, offer to show a YouTube clip libx.space.write ( { youtube: "ehkfEcQ5YnQ"} ); } } ); Description: Display a Help icon on the ACM page that plays a video when clicked. Include: /portal\.acm\.org.*/ Require: jquery // Place the current edition's icon into the ACM portal page, next to the // current search button. libx.space.write ( { needsuserbutton: $('input[src=" image: libx.edition.options.icon, text: "Click for a short tutorial", action: function () { // When user clicks, offer to show a YouTube clip libx.space.write ( { youtube: "ehkfEcQ5YnQ"} ); } } ); 2/9/2014Code4Lib

Step 2: Place UI Button Description: Place a clickable image into a page Include: /.*/ Guarded-By: { needsuserbutton: libx.space.WILDCARD, action: libx.space.WILDCARD } Require: jquery // Create a link with an embedded image var a = $(" "); a.append(' '); a.attr( 'title', tuple.text || ""); // Insert link after element where a 'user button' is wanted $(tuple.needsuserbutton).after(a); // Associate onclick handler and animate $(a).click(tuple.action).fadeOut("slow").fadeIn("slow"); Description: Place a clickable image into a page Include: /.*/ Guarded-By: { needsuserbutton: libx.space.WILDCARD, action: libx.space.WILDCARD } Require: jquery // Create a link with an embedded image var a = $(" "); a.append(' '); a.attr( 'title', tuple.text || ""); // Insert link after element where a 'user button' is wanted $(tuple.needsuserbutton).after(a); // Associate onclick handler and animate $(a).click(tuple.action).fadeOut("slow").fadeIn("slow"); 2/9/2014Code4Lib

Step 3: Create Youtube Clip Description: Create a notification to play a YouTube video, based on Video ID Include: /.*/ Guarded-By: { youtube: libx.space.WILDCARD } // Create HTML based on tuple.youtube libx.space.write ( { notify : ' ', options: { width: '450px' } } ); Description: Create a notification to play a YouTube video, based on Video ID Include: /.*/ Guarded-By: { youtube: libx.space.WILDCARD } // Create HTML based on tuple.youtube libx.space.write ( { notify : ' ', options: { width: '450px' } } ); 2/9/2014Code4Lib

Step 4: Display HTML Notification Description: Display HTML notifications via an embedded panel using jGrowl Include: /.*/ Guarded-By: { notify: libx.space.WILDCARD } Require: jquery Require: jgrowl Require: jgrowl.css // Set sticky:true unless provided in tuple.options var jGrowlOptions = $.extend({}, {sticky:true}, tuple.options); // Display notification $.jGrowl( tuple.notify, jGrowlOptions ); Description: Display HTML notifications via an embedded panel using jGrowl Include: /.*/ Guarded-By: { notify: libx.space.WILDCARD } Require: jquery Require: jgrowl Require: jgrowl.css // Set sticky:true unless provided in tuple.options var jGrowlOptions = $.extend({}, {sticky:true}, tuple.options); // Display notification $.jGrowl( tuple.notify, jGrowlOptions ); 2/9/2014Code4Lib

LIBAPP DEMO 2 GET FULL TEXT LINKS FOR COINS 2/9/2014Code4Lib

2/9/2014Code4Lib

COinS, the LibX 2.0 way Include: /.*/ Description: Find COinS Require: jquery $(span.Z3988").each(function () { libx.space.write({ coins: this, contextobj: this.getAttribute('title') }); Include: /.*/ Description: Find COinS Require: jquery $(span.Z3988").each(function () { libx.space.write({ coins: this, contextobj: this.getAttribute('title') }); 2/9/2014Code4Lib

COinS, the LibX 2.0 way Include: /.*/ Description: Link COinS Guarded-By: { coins: libx.space.WILDCARD } Require: legacy-cues var cue = new libx.cues.StandardCoins(tuple.contextobj); cue.insertBefore(tuple.coins); Include: /.*/ Description: Link COinS Guarded-By: { coins: libx.space.WILDCARD } Require: legacy-cues var cue = new libx.cues.StandardCoins(tuple.contextobj); cue.insertBefore(tuple.coins); 2/9/2014Code4Lib

2/9/2014Code4Lib

Add Link/360 direct link var link360 = libx.services.link360.getLink360(libx.edition); if (link360) link360.getMetadata({ query: tuple.contextobj, type: 'article', hasFullText: function (xmlDoc, url, databaseName) { cue.setAttribute('href', url); cue.setAttribute('title', "Users of " + libx.edition.links.primary.label + " click here for full text via " + databaseName); cue.setImageAttribute('src', ' cue.animate(); }, }); var link360 = libx.services.link360.getLink360(libx.edition); if (link360) link360.getMetadata({ query: tuple.contextobj, type: 'article', hasFullText: function (xmlDoc, url, databaseName) { cue.setAttribute('href', url); cue.setAttribute('title', "Users of " + libx.edition.links.primary.label + " click here for full text via " + databaseName); cue.setImageAttribute('src', ' cue.animate(); }, }); 2/9/2014Code4Lib

Transitioning from LibX 1.0 to 2.0 Complete redesign of LibX client code Browser-independent, strictly object-oriented JavaScript code with proper namespacing and encapsulation Provide full documentation (via jsdoc, accessible in about:libx) Provide built-in interactive reflection of data structures Include unit tests (run via Rhino) Hot updatable 2/9/2014Code4Lib

LibX 2.0 – Roles 2/9/201426Code4Lib 2009

LibX 2.0 Community Repository Based on tuple space model, create metadata descriptions for modules Create a repository of modules, libapps, and packages Editable like a Wiki Integrate repository into Edition Builder – Include consistency checking This will be done during the next 2 years (but libapps can already be created now) 2/9/2014Code4Lib

Call for Developers Launched Developer Website – Launched mailing list – Transition path: update from LibX 1.5 Agile roll-out, no releases We invite you to try and play with it! 2/9/2014Code4Lib

LibX Team Annette Bailey Godmar Back Kyrille Goldbeck Mike Doyle Arif Khokar Travis Webb Alumni – Nathan Baker – Tilottama Gaat – Tobias Wieschnowsky 2/9/2014Code4Lib