SlideShare una empresa de Scribd logo
1 de 29
Descargar para leer sin conexión
LibX 2 0 an Open Source, 
        2.0 ‐ O       S
Community Platform for Delivering 
         y    f     f           g
        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/26/2009                  Code4Lib 2009           2
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/26/2009                  Code4Lib 2009           3
The LibX Edition Builder
              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
      – 10’s of thousands of end users

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

2/26/2009                   Code4Lib 2009                  5
But who will
                        World Wide Web
                        W ld Wid W b                create those
                                                     modules?

     Library 
     Resources and
     Web Services
                                             LibX 2.0 plugin: executes
                             LibX 2 0
                                  2.0        Libapps, merging lib
                                             Lib            i library
                                              information into pages.




                                                          Users:
                                                      decide to which
                                                    library services to
Librarians: create or
                                                       subscribe, see
adapt Libapps from
                                                  expanded view of the
reusable, shareable
                                                           web
      modules

2/26/2009                    Code4Lib 2009                               6
The LibApp
                  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/26/2009                     Code4Lib 2009                     7
Modules
• Modules a e named us g a U a d pub s ed
    odu es are a ed using URL and published
  via REST/AtomPub
• Modules can reference JavaScript libraries (e.g.,
                                p               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/26/2009                    Code4Lib 2009                     8
LibX Tuple Spaces
tuple = TAKE(template)
      = TAKE(template)               WRITE (tuple)
                                     WRITE (tuple)
• If a tuple matching template       • Write a tuple into the space
  exists in the tuple space,         • If a TAKE is pending with a
  remove it and return it              matching template,
• If no tuple exists, wait until       complete the TAKE
  a matching tuple is written
                       written,
  remove it and return it

 Tuples and Templates are JavaScript objects in JSON notation.
 Tuple example: { isbn: “0743226720” }
 Template example: { isbn : * } // any tuple with ‘isbn’ field
     p         p                     y p

2/26/2009                    Code4Lib 2009                            9
Jangle



                                       ISBN Lookup                    Display Result
                                      { display:
                                         “ISBN 223.. is on the shelf”
            ISBN Scraper            Guarded-By:
                                      }                           Guarded-By:
             { isbn: 2234532134 }
                                         { isbn: *}                     { display: * }




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




2/26/2009                   Code4Lib 2009                   11
LIBAPP DEMO 1
   CREATE A PRESENCE FOR THE LIBRARY

2/26/2009         Code4Lib 2009        12
2/26/2009   Code4Lib 2009   13
2/26/2009   Code4Lib 2009   14
Step 1: Arrangement
                    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.
// current search button
libx.space.write ( {
   needsuserbutton: $('input[src="http://portal.acm.org/images/search_small.jpg"]'),
   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 ( {
      lib           it ( { youtube: "ehkfEcQ5YnQ"} )
                              t b " hkfE Q5Y Q"} );
    }
} );



 2/26/2009                               Code4Lib 2009                                 15
Step 2: Place UI Button
                 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 href='javascript:void(0);'/>");
a.append('<img border="0" src="' + tuple.image + '"/>');
a.attr( 'title', tuple.text || "");
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/26/2009                             Code4Lib 2009                            16
Step 3: Create Youtube
             Step 3: Create Youtube Clip
Description: Create a notification to play a YouTube video, based on Video ID
Include: /. /
Include: /.*/
Guarded‐By: { youtube: libx.space.WILDCARD }

// Create HTML based on tuple.youtube
// Create HTML based on tuple.youtube
libx.space.write ( {
   notify : '<object width="425" height="344"><param name="movie" 
     value="http://www.youtube.com/v/'+tuple.youtube+'&hl=en&fs=1"></param><par
                p         y                 p y                         p   p
     am name="allowFullScreen" value="true"></param><param
     name="allowscriptaccess" value="always"></param><embed 
     src="http://www.youtube.com/v/'+tuple.youtube+'&hl=en&fs=1" 
     type= application/x‐shockwave‐flash allowscriptaccess="always"
     type="application/x shockwave flash" allowscriptaccess= always  
     allowfullscreen="true" width="425" height="344"></embed></object>',
   options: { width: '450px' }
} );

 2/26/2009                             Code4Lib 2009                            17
Step 4: Display HTML Notification
    Step 4: Display HTML Notification
Description: Display HTML notifications via an embedded panel using jGrowl
Include: /. /
Include: /.*/
Guarded‐By: { notify: libx.space.WILDCARD }
Require: jquery
Require: jgrowl
Require: jgrowl
Require: jgrowl.css

// Set sticky:true unless provided in tuple.options
// Set sticky:true unless provided in tuple.options
var jGrowlOptions = $.extend({}, {sticky:true}, tuple.options);

// Display notification
// Display notification
$.jGrowl( tuple.notify, jGrowlOptions );




 2/26/2009                                 Code4Lib 2009                     18
LIBAPP DEMO 2
          DEMO 2
   “GET FULL TEXT LINKS FOR COINS”

2/26/2009        Code4Lib 2009       19
2/26/2009   Code4Lib 2009   20
COinS, the LibX 2.0 way
             COinS, the LibX 2.0 way
                            <span class="Z3988"
Include: /.*/               title="ctx_ver=Z39.88-
Description: Find COinS
D     i i     Fi d COi S    2004&rft_val_fmt=info:ofi/fmt:kev:mtx:j
Require: jquery             ournal&rft_id=info:pmid/16646082&rft.g
                            enre article
                            enre=article">
$(“span.Z3988").each(function () {
   libx.space.write({
         p          ({
      coins: this,
      contextobj: this.getAttribute('title')
   });
});


 2/26/2009                      Code4Lib 2009                   21
COinS, the LibX 2.0 way
             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 = new libx.cues.StandardCoins(tuple.contextobj);
cue.insertBefore(tuple.coins);




 2/26/2009                  Code4Lib 2009                  22
2/26/2009   Code4Lib 2009   23
Add Link/360 direct link
               Add Link/360 direct link
var link360 = libx.services.link360.getLink360(libx.edition);
if (link360)
if (li k360)
  link360.getMetadata({
    query: tuple.contextobj,  
    type: 'article',
    hasFullText: function (xmlDoc, url, databaseName) {
     cue.setAttribute( href , url);
     cue.setAttribute('href', url);
     cue.setAttribute('title', "Users of " + libx.edition.links.primary.label
        + " click here for full text via " + databaseName);
     cue.setImageAttribute('src', 'http://www.lib.vt.edu/images/getvtext.gif');
            tI       Att ib t (' ' 'htt //         lib t d /i        / t t t if')
     cue.animate();
    },
  });
 2/26/2009                           Code4Lib 2009                              24
Transitioning from LibX 1.0 to 2.0
   Transitioning from LibX 1.0 to 2.0
• Complete redesign of LibX client code
       p            g
• 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/26/2009              Code4Lib 2009                  25
LibX 2.0  Roles 
            LibX 2.0 – Roles
                   LibX 2.0 Developers – make services
                     b           l         k
                   available and write modules and libapps

                           LibX 2.0 Adapters – combine
                                20
                           modules into libapps, reuse and
                           adapt libapps, bundles and share
                           libapps as packages

                         LibX 2.0 User Community - subscribes
                         to packages or libapps they like




2/26/2009        Code4Lib 2009                                26
LibX 2.0 Community Repository
            2.0 Community Repository
• Based on tuple space model, create metadata
               p p             ,
  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/26/2009                   Code4Lib 2009          27
Call for Developers
                Call for Developers
• Launched Developer Website
      – http://developers.libx.org
• Launched mailing list
      – libx-dev@googlegroups.com
• Transition path: update from LibX 1 5
                                    1.5
• Agile roll-out, no “releases”

• We invite you to try and play with it!

2/26/2009                  Code4Lib 2009   28
LibX Team
                       LibX Team
•   Annette Baileyy
•   Godmar Back
•   Kyrille Goldbeck
•   Mike Doyle
•   Arif Khokar
•   Travis Webb
•   Alumni
      – N th Baker
        Nathan B k
      – Tilottama Gaat
      – Tobias Wieschnowsky
                          y

2/26/2009                 Code4Lib 2009   29

Más contenido relacionado

Destacado (6)

collapsible-panels-tutorial
collapsible-panels-tutorialcollapsible-panels-tutorial
collapsible-panels-tutorial
 
catalog
catalogcatalog
catalog
 
presentation
presentationpresentation
presentation
 
symfony_from_scratch
symfony_from_scratchsymfony_from_scratch
symfony_from_scratch
 
javascript2
javascript2javascript2
javascript2
 
veracruz
veracruzveracruz
veracruz
 

Similar a LibX2.0-Code4Lib-2009AsPresented

LibX 2.0
LibX 2.0LibX 2.0
LibX 2.0eby
 
Manage your external libraries with CocoaPods
Manage your external libraries with CocoaPodsManage your external libraries with CocoaPods
Manage your external libraries with CocoaPodsJuan C Catalan
 
RubyStack: the easiest way to deploy Ruby on Rails
RubyStack: the easiest way to deploy Ruby on RailsRubyStack: the easiest way to deploy Ruby on Rails
RubyStack: the easiest way to deploy Ruby on Railselliando dias
 
Lib X Bailey Back Access2008
Lib X Bailey Back Access2008Lib X Bailey Back Access2008
Lib X Bailey Back Access2008guestd9aa5
 
Serverless brewbox
Serverless   brewboxServerless   brewbox
Serverless brewboxLino Telera
 
Ruby on-rails-101-presentation-slides-for-a-five-day-introductory-course-1194...
Ruby on-rails-101-presentation-slides-for-a-five-day-introductory-course-1194...Ruby on-rails-101-presentation-slides-for-a-five-day-introductory-course-1194...
Ruby on-rails-101-presentation-slides-for-a-five-day-introductory-course-1194...Nilesh Panchal
 
Lessons learned from building Eclipse-based add-ons for commercial modeling t...
Lessons learned from building Eclipse-based add-ons for commercial modeling t...Lessons learned from building Eclipse-based add-ons for commercial modeling t...
Lessons learned from building Eclipse-based add-ons for commercial modeling t...IncQuery Labs
 
JavaScript Library Overview (Ajax Exp West 2007)
JavaScript Library Overview (Ajax Exp West 2007)JavaScript Library Overview (Ajax Exp West 2007)
JavaScript Library Overview (Ajax Exp West 2007)jeresig
 
Monoliths are so 2001 – What you need is Modularity
Monoliths are so 2001 – What you need is ModularityMonoliths are so 2001 – What you need is Modularity
Monoliths are so 2001 – What you need is ModularityGraham Charters
 
Jetpack SDK: The new possibility of the extensions on browser
Jetpack SDK: The new possibility of the extensions on browserJetpack SDK: The new possibility of the extensions on browser
Jetpack SDK: The new possibility of the extensions on browserlittlebtc
 
MacRuby for Fun and Profit
MacRuby for Fun and ProfitMacRuby for Fun and Profit
MacRuby for Fun and ProfitJoshua Ballanco
 
An introduction to Node.js
An introduction to Node.jsAn introduction to Node.js
An introduction to Node.jsKasey McCurdy
 
covo.js : A JavaScript Library to Utilize Subject Headings and Thesauri on th...
covo.js : A JavaScript Library to Utilize Subject Headings and Thesauri on th...covo.js : A JavaScript Library to Utilize Subject Headings and Thesauri on th...
covo.js : A JavaScript Library to Utilize Subject Headings and Thesauri on th...Shun Nagaya
 
Building static libraries for iOS with CocoaPods
Building static libraries for iOS with CocoaPodsBuilding static libraries for iOS with CocoaPods
Building static libraries for iOS with CocoaPodsSigmapoint
 
Publishing API documentation -- Workshop
Publishing API documentation -- WorkshopPublishing API documentation -- Workshop
Publishing API documentation -- WorkshopTom Johnson
 

Similar a LibX2.0-Code4Lib-2009AsPresented (20)

LibX 2.0
LibX 2.0LibX 2.0
LibX 2.0
 
Docker Kubernetes Istio
Docker Kubernetes IstioDocker Kubernetes Istio
Docker Kubernetes Istio
 
Manage your external libraries with CocoaPods
Manage your external libraries with CocoaPodsManage your external libraries with CocoaPods
Manage your external libraries with CocoaPods
 
RubyStack: the easiest way to deploy Ruby on Rails
RubyStack: the easiest way to deploy Ruby on RailsRubyStack: the easiest way to deploy Ruby on Rails
RubyStack: the easiest way to deploy Ruby on Rails
 
Lib X Bailey Back Access2008
Lib X Bailey Back Access2008Lib X Bailey Back Access2008
Lib X Bailey Back Access2008
 
Serverless brewbox
Serverless   brewboxServerless   brewbox
Serverless brewbox
 
Ruby on-rails-101-presentation-slides-for-a-five-day-introductory-course-1194...
Ruby on-rails-101-presentation-slides-for-a-five-day-introductory-course-1194...Ruby on-rails-101-presentation-slides-for-a-five-day-introductory-course-1194...
Ruby on-rails-101-presentation-slides-for-a-five-day-introductory-course-1194...
 
Lessons learned from building Eclipse-based add-ons for commercial modeling t...
Lessons learned from building Eclipse-based add-ons for commercial modeling t...Lessons learned from building Eclipse-based add-ons for commercial modeling t...
Lessons learned from building Eclipse-based add-ons for commercial modeling t...
 
JavaScript Library Overview (Ajax Exp West 2007)
JavaScript Library Overview (Ajax Exp West 2007)JavaScript Library Overview (Ajax Exp West 2007)
JavaScript Library Overview (Ajax Exp West 2007)
 
cadec-2017-golang
cadec-2017-golangcadec-2017-golang
cadec-2017-golang
 
Monoliths are so 2001 – What you need is Modularity
Monoliths are so 2001 – What you need is ModularityMonoliths are so 2001 – What you need is Modularity
Monoliths are so 2001 – What you need is Modularity
 
Jetpack SDK: The new possibility of the extensions on browser
Jetpack SDK: The new possibility of the extensions on browserJetpack SDK: The new possibility of the extensions on browser
Jetpack SDK: The new possibility of the extensions on browser
 
MacRuby for Fun and Profit
MacRuby for Fun and ProfitMacRuby for Fun and Profit
MacRuby for Fun and Profit
 
Os php-wiki1-pdf
Os php-wiki1-pdfOs php-wiki1-pdf
Os php-wiki1-pdf
 
An introduction to Node.js
An introduction to Node.jsAn introduction to Node.js
An introduction to Node.js
 
covo.js : A JavaScript Library to Utilize Subject Headings and Thesauri on th...
covo.js : A JavaScript Library to Utilize Subject Headings and Thesauri on th...covo.js : A JavaScript Library to Utilize Subject Headings and Thesauri on th...
covo.js : A JavaScript Library to Utilize Subject Headings and Thesauri on th...
 
Building static libraries for iOS with CocoaPods
Building static libraries for iOS with CocoaPodsBuilding static libraries for iOS with CocoaPods
Building static libraries for iOS with CocoaPods
 
Publishing API documentation -- Workshop
Publishing API documentation -- WorkshopPublishing API documentation -- Workshop
Publishing API documentation -- Workshop
 
OMEKA
OMEKAOMEKA
OMEKA
 
Publishing Linked Data from RDB
Publishing Linked Data from RDBPublishing Linked Data from RDB
Publishing Linked Data from RDB
 

Más de tutorialsruby

&lt;img src="../i/r_14.png" />
&lt;img src="../i/r_14.png" />&lt;img src="../i/r_14.png" />
&lt;img src="../i/r_14.png" />tutorialsruby
 
TopStyle Help &amp; &lt;b>Tutorial&lt;/b>
TopStyle Help &amp; &lt;b>Tutorial&lt;/b>TopStyle Help &amp; &lt;b>Tutorial&lt;/b>
TopStyle Help &amp; &lt;b>Tutorial&lt;/b>tutorialsruby
 
The Art Institute of Atlanta IMD 210 Fundamentals of Scripting &lt;b>...&lt;/b>
The Art Institute of Atlanta IMD 210 Fundamentals of Scripting &lt;b>...&lt;/b>The Art Institute of Atlanta IMD 210 Fundamentals of Scripting &lt;b>...&lt;/b>
The Art Institute of Atlanta IMD 210 Fundamentals of Scripting &lt;b>...&lt;/b>tutorialsruby
 
&lt;img src="../i/r_14.png" />
&lt;img src="../i/r_14.png" />&lt;img src="../i/r_14.png" />
&lt;img src="../i/r_14.png" />tutorialsruby
 
&lt;img src="../i/r_14.png" />
&lt;img src="../i/r_14.png" />&lt;img src="../i/r_14.png" />
&lt;img src="../i/r_14.png" />tutorialsruby
 
Standardization and Knowledge Transfer – INS0
Standardization and Knowledge Transfer – INS0Standardization and Knowledge Transfer – INS0
Standardization and Knowledge Transfer – INS0tutorialsruby
 
0047ecaa6ea3e9ac0a13a2fe96f4de3bfd515c88f5d90c1fae79b956363d7f02c7fa060269
0047ecaa6ea3e9ac0a13a2fe96f4de3bfd515c88f5d90c1fae79b956363d7f02c7fa0602690047ecaa6ea3e9ac0a13a2fe96f4de3bfd515c88f5d90c1fae79b956363d7f02c7fa060269
0047ecaa6ea3e9ac0a13a2fe96f4de3bfd515c88f5d90c1fae79b956363d7f02c7fa060269tutorialsruby
 
0047ecaa6ea3e9ac0a13a2fe96f4de3bfd515c88f5d90c1fae79b956363d7f02c7fa060269
0047ecaa6ea3e9ac0a13a2fe96f4de3bfd515c88f5d90c1fae79b956363d7f02c7fa0602690047ecaa6ea3e9ac0a13a2fe96f4de3bfd515c88f5d90c1fae79b956363d7f02c7fa060269
0047ecaa6ea3e9ac0a13a2fe96f4de3bfd515c88f5d90c1fae79b956363d7f02c7fa060269tutorialsruby
 
BloggingWithStyle_2008
BloggingWithStyle_2008BloggingWithStyle_2008
BloggingWithStyle_2008tutorialsruby
 
BloggingWithStyle_2008
BloggingWithStyle_2008BloggingWithStyle_2008
BloggingWithStyle_2008tutorialsruby
 
cascadingstylesheets
cascadingstylesheetscascadingstylesheets
cascadingstylesheetstutorialsruby
 
cascadingstylesheets
cascadingstylesheetscascadingstylesheets
cascadingstylesheetstutorialsruby
 

Más de tutorialsruby (20)

&lt;img src="../i/r_14.png" />
&lt;img src="../i/r_14.png" />&lt;img src="../i/r_14.png" />
&lt;img src="../i/r_14.png" />
 
TopStyle Help &amp; &lt;b>Tutorial&lt;/b>
TopStyle Help &amp; &lt;b>Tutorial&lt;/b>TopStyle Help &amp; &lt;b>Tutorial&lt;/b>
TopStyle Help &amp; &lt;b>Tutorial&lt;/b>
 
The Art Institute of Atlanta IMD 210 Fundamentals of Scripting &lt;b>...&lt;/b>
The Art Institute of Atlanta IMD 210 Fundamentals of Scripting &lt;b>...&lt;/b>The Art Institute of Atlanta IMD 210 Fundamentals of Scripting &lt;b>...&lt;/b>
The Art Institute of Atlanta IMD 210 Fundamentals of Scripting &lt;b>...&lt;/b>
 
&lt;img src="../i/r_14.png" />
&lt;img src="../i/r_14.png" />&lt;img src="../i/r_14.png" />
&lt;img src="../i/r_14.png" />
 
&lt;img src="../i/r_14.png" />
&lt;img src="../i/r_14.png" />&lt;img src="../i/r_14.png" />
&lt;img src="../i/r_14.png" />
 
Standardization and Knowledge Transfer – INS0
Standardization and Knowledge Transfer – INS0Standardization and Knowledge Transfer – INS0
Standardization and Knowledge Transfer – INS0
 
xhtml_basics
xhtml_basicsxhtml_basics
xhtml_basics
 
xhtml_basics
xhtml_basicsxhtml_basics
xhtml_basics
 
xhtml-documentation
xhtml-documentationxhtml-documentation
xhtml-documentation
 
xhtml-documentation
xhtml-documentationxhtml-documentation
xhtml-documentation
 
CSS
CSSCSS
CSS
 
CSS
CSSCSS
CSS
 
0047ecaa6ea3e9ac0a13a2fe96f4de3bfd515c88f5d90c1fae79b956363d7f02c7fa060269
0047ecaa6ea3e9ac0a13a2fe96f4de3bfd515c88f5d90c1fae79b956363d7f02c7fa0602690047ecaa6ea3e9ac0a13a2fe96f4de3bfd515c88f5d90c1fae79b956363d7f02c7fa060269
0047ecaa6ea3e9ac0a13a2fe96f4de3bfd515c88f5d90c1fae79b956363d7f02c7fa060269
 
0047ecaa6ea3e9ac0a13a2fe96f4de3bfd515c88f5d90c1fae79b956363d7f02c7fa060269
0047ecaa6ea3e9ac0a13a2fe96f4de3bfd515c88f5d90c1fae79b956363d7f02c7fa0602690047ecaa6ea3e9ac0a13a2fe96f4de3bfd515c88f5d90c1fae79b956363d7f02c7fa060269
0047ecaa6ea3e9ac0a13a2fe96f4de3bfd515c88f5d90c1fae79b956363d7f02c7fa060269
 
HowTo_CSS
HowTo_CSSHowTo_CSS
HowTo_CSS
 
HowTo_CSS
HowTo_CSSHowTo_CSS
HowTo_CSS
 
BloggingWithStyle_2008
BloggingWithStyle_2008BloggingWithStyle_2008
BloggingWithStyle_2008
 
BloggingWithStyle_2008
BloggingWithStyle_2008BloggingWithStyle_2008
BloggingWithStyle_2008
 
cascadingstylesheets
cascadingstylesheetscascadingstylesheets
cascadingstylesheets
 
cascadingstylesheets
cascadingstylesheetscascadingstylesheets
cascadingstylesheets
 

Último

Microsoft 365 Copilot: How to boost your productivity with AI – Part two: Dat...
Microsoft 365 Copilot: How to boost your productivity with AI – Part two: Dat...Microsoft 365 Copilot: How to boost your productivity with AI – Part two: Dat...
Microsoft 365 Copilot: How to boost your productivity with AI – Part two: Dat...Nikki Chapple
 
Accelerating Enterprise Software Engineering with Platformless
Accelerating Enterprise Software Engineering with PlatformlessAccelerating Enterprise Software Engineering with Platformless
Accelerating Enterprise Software Engineering with PlatformlessWSO2
 
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...panagenda
 
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...Wes McKinney
 
Microservices, Docker deploy and Microservices source code in C#
Microservices, Docker deploy and Microservices source code in C#Microservices, Docker deploy and Microservices source code in C#
Microservices, Docker deploy and Microservices source code in C#Karmanjay Verma
 
React JS; all concepts. Contains React Features, JSX, functional & Class comp...
React JS; all concepts. Contains React Features, JSX, functional & Class comp...React JS; all concepts. Contains React Features, JSX, functional & Class comp...
React JS; all concepts. Contains React Features, JSX, functional & Class comp...Karmanjay Verma
 
Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Farhan Tariq
 
A Glance At The Java Performance Toolbox
A Glance At The Java Performance ToolboxA Glance At The Java Performance Toolbox
A Glance At The Java Performance ToolboxAna-Maria Mihalceanu
 
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS:  6 Ways to Automate Your Data IntegrationBridging Between CAD & GIS:  6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integrationmarketing932765
 
Email Marketing Automation for Bonterra Impact Management (fka Social Solutio...
Email Marketing Automation for Bonterra Impact Management (fka Social Solutio...Email Marketing Automation for Bonterra Impact Management (fka Social Solutio...
Email Marketing Automation for Bonterra Impact Management (fka Social Solutio...Jeffrey Haguewood
 
4. Cobus Valentine- Cybersecurity Threats and Solutions for the Public Sector
4. Cobus Valentine- Cybersecurity Threats and Solutions for the Public Sector4. Cobus Valentine- Cybersecurity Threats and Solutions for the Public Sector
4. Cobus Valentine- Cybersecurity Threats and Solutions for the Public Sectoritnewsafrica
 
UiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPathCommunity
 
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better StrongerModern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better Strongerpanagenda
 
Zeshan Sattar- Assessing the skill requirements and industry expectations for...
Zeshan Sattar- Assessing the skill requirements and industry expectations for...Zeshan Sattar- Assessing the skill requirements and industry expectations for...
Zeshan Sattar- Assessing the skill requirements and industry expectations for...itnewsafrica
 
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentEmixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentPim van der Noll
 
All These Sophisticated Attacks, Can We Really Detect Them - PDF
All These Sophisticated Attacks, Can We Really Detect Them - PDFAll These Sophisticated Attacks, Can We Really Detect Them - PDF
All These Sophisticated Attacks, Can We Really Detect Them - PDFMichael Gough
 
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality AssuranceInflectra
 
React Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App FrameworkReact Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App FrameworkPixlogix Infotech
 
Connecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfConnecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfNeo4j
 
Potential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsPotential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsRavi Sanghani
 

Último (20)

Microsoft 365 Copilot: How to boost your productivity with AI – Part two: Dat...
Microsoft 365 Copilot: How to boost your productivity with AI – Part two: Dat...Microsoft 365 Copilot: How to boost your productivity with AI – Part two: Dat...
Microsoft 365 Copilot: How to boost your productivity with AI – Part two: Dat...
 
Accelerating Enterprise Software Engineering with Platformless
Accelerating Enterprise Software Engineering with PlatformlessAccelerating Enterprise Software Engineering with Platformless
Accelerating Enterprise Software Engineering with Platformless
 
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
 
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
 
Microservices, Docker deploy and Microservices source code in C#
Microservices, Docker deploy and Microservices source code in C#Microservices, Docker deploy and Microservices source code in C#
Microservices, Docker deploy and Microservices source code in C#
 
React JS; all concepts. Contains React Features, JSX, functional & Class comp...
React JS; all concepts. Contains React Features, JSX, functional & Class comp...React JS; all concepts. Contains React Features, JSX, functional & Class comp...
React JS; all concepts. Contains React Features, JSX, functional & Class comp...
 
Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...
 
A Glance At The Java Performance Toolbox
A Glance At The Java Performance ToolboxA Glance At The Java Performance Toolbox
A Glance At The Java Performance Toolbox
 
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS:  6 Ways to Automate Your Data IntegrationBridging Between CAD & GIS:  6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integration
 
Email Marketing Automation for Bonterra Impact Management (fka Social Solutio...
Email Marketing Automation for Bonterra Impact Management (fka Social Solutio...Email Marketing Automation for Bonterra Impact Management (fka Social Solutio...
Email Marketing Automation for Bonterra Impact Management (fka Social Solutio...
 
4. Cobus Valentine- Cybersecurity Threats and Solutions for the Public Sector
4. Cobus Valentine- Cybersecurity Threats and Solutions for the Public Sector4. Cobus Valentine- Cybersecurity Threats and Solutions for the Public Sector
4. Cobus Valentine- Cybersecurity Threats and Solutions for the Public Sector
 
UiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to Hero
 
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better StrongerModern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
 
Zeshan Sattar- Assessing the skill requirements and industry expectations for...
Zeshan Sattar- Assessing the skill requirements and industry expectations for...Zeshan Sattar- Assessing the skill requirements and industry expectations for...
Zeshan Sattar- Assessing the skill requirements and industry expectations for...
 
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentEmixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
 
All These Sophisticated Attacks, Can We Really Detect Them - PDF
All These Sophisticated Attacks, Can We Really Detect Them - PDFAll These Sophisticated Attacks, Can We Really Detect Them - PDF
All These Sophisticated Attacks, Can We Really Detect Them - PDF
 
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
 
React Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App FrameworkReact Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App Framework
 
Connecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfConnecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdf
 
Potential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsPotential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and Insights
 

LibX2.0-Code4Lib-2009AsPresented

  • 1. LibX 2 0 an Open Source,  2.0 ‐ O S Community Platform for Delivering  y f f g Library Services Code4Lib 2009 Godmar Back University Libraries and Dep. Of Computer Science Virginia Tech
  • 2. 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/26/2009 Code4Lib 2009 2
  • 3. 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/26/2009 Code4Lib 2009 3
  • 4. The LibX Edition Builder 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 – 10’s of thousands of end users 2/26/2009 Code4Lib 2009 4
  • 5. Where to go from here? Where to go from here? • A toolbar is great but great, but… • Emerging technology trends – Service oriented architectures web services Service-oriented architectures, interfaces – soon even to ILS! – Data mash-ups; HTML widgets p; g • Educational trends: librarians, educators, and users create – Online tutorials, subject guides, visualizations – Social OPACs: tagging, reviews, recommender services gg g, , 2/26/2009 Code4Lib 2009 5
  • 6. But who will World Wide Web W ld Wid W b create those modules? Library  Resources and Web Services LibX 2.0 plugin: executes LibX 2 0 2.0 Libapps, merging lib Lib i library information into pages. Users: decide to which library services to Librarians: create or subscribe, see adapt Libapps from expanded view of the reusable, shareable web modules 2/26/2009 Code4Lib 2009 6
  • 7. The LibApp 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/26/2009 Code4Lib 2009 7
  • 8. Modules • Modules a e named us g a U a d pub s ed odu es are a ed using URL and published via REST/AtomPub • Modules can reference JavaScript libraries (e.g., p 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/26/2009 Code4Lib 2009 8
  • 9. LibX Tuple Spaces tuple = TAKE(template) = TAKE(template) WRITE (tuple) WRITE (tuple) • If a tuple matching template • Write a tuple into the space exists in the tuple space, • If a TAKE is pending with a remove it and return it matching template, • If no tuple exists, wait until complete the TAKE a matching tuple is written written, remove it and return it Tuples and Templates are JavaScript objects in JSON notation. Tuple example: { isbn: “0743226720” } Template example: { isbn : * } // any tuple with ‘isbn’ field p p y p 2/26/2009 Code4Lib 2009 9
  • 10. Jangle ISBN Lookup Display Result { display: “ISBN 223.. is on the shelf” ISBN Scraper Guarded-By: } Guarded-By: { isbn: 2234532134 } { isbn: *} { display: * } Tuple Space 2/26/2009 Code4Lib 2009 10
  • 11. Rationale for Tuple Rationale for Tuple Spaces Software Engineering Software Engineering Handling Asynchrony Handling Asynchrony • Low coupling between • User actions happen modules asynchronously • Independent composition • Information arrives • Simplicity asynchronously from • Suitable for meta- external sources programming • Execution order independence p 2/26/2009 Code4Lib 2009 11
  • 12. LIBAPP DEMO 1 CREATE A PRESENCE FOR THE LIBRARY 2/26/2009 Code4Lib 2009 12
  • 13. 2/26/2009 Code4Lib 2009 13
  • 14. 2/26/2009 Code4Lib 2009 14
  • 15. Step 1: Arrangement 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. // current search button libx.space.write ( { needsuserbutton: $('input[src="http://portal.acm.org/images/search_small.jpg"]'), 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 ( { lib it ( { youtube: "ehkfEcQ5YnQ"} ) t b " hkfE Q5Y Q"} ); } } ); 2/26/2009 Code4Lib 2009 15
  • 16. Step 2: Place UI Button 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 href='javascript:void(0);'/>"); a.append('<img border="0" src="' + tuple.image + '"/>'); a.attr( 'title', tuple.text || ""); 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/26/2009 Code4Lib 2009 16
  • 17. Step 3: Create Youtube Step 3: Create Youtube Clip Description: Create a notification to play a YouTube video, based on Video ID Include: /. / Include: /.*/ Guarded‐By: { youtube: libx.space.WILDCARD } // Create HTML based on tuple.youtube // Create HTML based on tuple.youtube libx.space.write ( { notify : '<object width="425" height="344"><param name="movie"  value="http://www.youtube.com/v/'+tuple.youtube+'&hl=en&fs=1"></param><par p y p y p p am name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed  src="http://www.youtube.com/v/'+tuple.youtube+'&hl=en&fs=1"  type= application/x‐shockwave‐flash allowscriptaccess="always" type="application/x shockwave flash" allowscriptaccess= always   allowfullscreen="true" width="425" height="344"></embed></object>', options: { width: '450px' } } ); 2/26/2009 Code4Lib 2009 17
  • 18. Step 4: Display HTML Notification Step 4: Display HTML Notification Description: Display HTML notifications via an embedded panel using jGrowl Include: /. / Include: /.*/ Guarded‐By: { notify: libx.space.WILDCARD } Require: jquery Require: jgrowl Require: jgrowl Require: jgrowl.css // Set sticky:true unless provided in tuple.options // Set sticky:true unless provided in tuple.options var jGrowlOptions = $.extend({}, {sticky:true}, tuple.options); // Display notification // Display notification $.jGrowl( tuple.notify, jGrowlOptions ); 2/26/2009 Code4Lib 2009 18
  • 19. LIBAPP DEMO 2 DEMO 2 “GET FULL TEXT LINKS FOR COINS” 2/26/2009 Code4Lib 2009 19
  • 20. 2/26/2009 Code4Lib 2009 20
  • 21. COinS, the LibX 2.0 way COinS, the LibX 2.0 way <span class="Z3988" Include: /.*/ title="ctx_ver=Z39.88- Description: Find COinS D i i Fi d COi S 2004&rft_val_fmt=info:ofi/fmt:kev:mtx:j Require: jquery ournal&rft_id=info:pmid/16646082&rft.g enre article enre=article"> $(“span.Z3988").each(function () { libx.space.write({ p ({ coins: this, contextobj: this.getAttribute('title') }); }); 2/26/2009 Code4Lib 2009 21
  • 22. COinS, the LibX 2.0 way 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 = new libx.cues.StandardCoins(tuple.contextobj); cue.insertBefore(tuple.coins); 2/26/2009 Code4Lib 2009 22
  • 23. 2/26/2009 Code4Lib 2009 23
  • 24. Add Link/360 direct link Add Link/360 direct link var link360 = libx.services.link360.getLink360(libx.edition); if (link360) if (li k360) link360.getMetadata({ query: tuple.contextobj,   type: 'article', hasFullText: function (xmlDoc, url, databaseName) { cue.setAttribute( href , url); cue.setAttribute('href', url); cue.setAttribute('title', "Users of " + libx.edition.links.primary.label + " click here for full text via " + databaseName); cue.setImageAttribute('src', 'http://www.lib.vt.edu/images/getvtext.gif'); tI Att ib t (' ' 'htt // lib t d /i / t t t if') cue.animate(); }, }); 2/26/2009 Code4Lib 2009 24
  • 25. Transitioning from LibX 1.0 to 2.0 Transitioning from LibX 1.0 to 2.0 • Complete redesign of LibX client code p g • 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/26/2009 Code4Lib 2009 25
  • 26. LibX 2.0  Roles  LibX 2.0 – Roles LibX 2.0 Developers – make services b l k available and write modules and libapps LibX 2.0 Adapters – combine 20 modules into libapps, reuse and adapt libapps, bundles and share libapps as packages LibX 2.0 User Community - subscribes to packages or libapps they like 2/26/2009 Code4Lib 2009 26
  • 27. LibX 2.0 Community Repository 2.0 Community Repository • Based on tuple space model, create metadata p p , 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/26/2009 Code4Lib 2009 27
  • 28. Call for Developers Call for Developers • Launched Developer Website – http://developers.libx.org • Launched mailing list – libx-dev@googlegroups.com • Transition path: update from LibX 1 5 1.5 • Agile roll-out, no “releases” • We invite you to try and play with it! 2/26/2009 Code4Lib 2009 28
  • 29. LibX Team LibX Team • Annette Baileyy • Godmar Back • Kyrille Goldbeck • Mike Doyle • Arif Khokar • Travis Webb • Alumni – N th Baker Nathan B k – Tilottama Gaat – Tobias Wieschnowsky y 2/26/2009 Code4Lib 2009 29