SlideShare a Scribd company logo
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

More Related Content

Viewers also liked

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

Viewers also liked (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 to LibX2.0-Code4Lib-2009AsPresented

LibX 2.0
LibX 2.0LibX 2.0
LibX 2.0
eby
 
Docker Kubernetes Istio
Docker Kubernetes IstioDocker Kubernetes Istio
Docker Kubernetes Istio
Araf Karsh Hamid
 
Manage your external libraries with CocoaPods
Manage your external libraries with CocoaPodsManage your external libraries with CocoaPods
Manage your external libraries with CocoaPods
Juan 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 Rails
elliando dias
 
Lib X Bailey Back Access2008
Lib X Bailey Back Access2008Lib X Bailey Back Access2008
Lib X Bailey Back Access2008
guestd9aa5
 
Serverless brewbox
Serverless   brewboxServerless   brewbox
Serverless brewbox
Lino 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
 
cadec-2017-golang
cadec-2017-golangcadec-2017-golang
cadec-2017-golang
TiNguyn863920
 
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
Graham 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 browser
littlebtc
 
MacRuby for Fun and Profit
MacRuby for Fun and ProfitMacRuby for Fun and Profit
MacRuby for Fun and Profit
Joshua Ballanco
 
Os php-wiki1-pdf
Os php-wiki1-pdfOs php-wiki1-pdf
Os php-wiki1-pdf
Vrandesh Bandikatti
 
An introduction to Node.js
An introduction to Node.jsAn introduction to Node.js
An introduction to Node.js
Kasey 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 CocoaPods
Sigmapoint
 
Publishing API documentation -- Workshop
Publishing API documentation -- WorkshopPublishing API documentation -- Workshop
Publishing API documentation -- Workshop
Tom Johnson
 
OMEKA
OMEKAOMEKA
Publishing Linked Data from RDB
Publishing Linked Data from RDBPublishing Linked Data from RDB
Publishing Linked Data from RDB
Boris Villazón-Terrazas
 

Similar to 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
 

More from 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 – INS0
tutorialsruby
 
xhtml_basics
xhtml_basicsxhtml_basics
xhtml_basics
tutorialsruby
 
xhtml_basics
xhtml_basicsxhtml_basics
xhtml_basics
tutorialsruby
 
xhtml-documentation
xhtml-documentationxhtml-documentation
xhtml-documentation
tutorialsruby
 
xhtml-documentation
xhtml-documentationxhtml-documentation
xhtml-documentation
tutorialsruby
 
CSS
CSSCSS
CSS
CSSCSS
0047ecaa6ea3e9ac0a13a2fe96f4de3bfd515c88f5d90c1fae79b956363d7f02c7fa060269
0047ecaa6ea3e9ac0a13a2fe96f4de3bfd515c88f5d90c1fae79b956363d7f02c7fa0602690047ecaa6ea3e9ac0a13a2fe96f4de3bfd515c88f5d90c1fae79b956363d7f02c7fa060269
0047ecaa6ea3e9ac0a13a2fe96f4de3bfd515c88f5d90c1fae79b956363d7f02c7fa060269
tutorialsruby
 
0047ecaa6ea3e9ac0a13a2fe96f4de3bfd515c88f5d90c1fae79b956363d7f02c7fa060269
0047ecaa6ea3e9ac0a13a2fe96f4de3bfd515c88f5d90c1fae79b956363d7f02c7fa0602690047ecaa6ea3e9ac0a13a2fe96f4de3bfd515c88f5d90c1fae79b956363d7f02c7fa060269
0047ecaa6ea3e9ac0a13a2fe96f4de3bfd515c88f5d90c1fae79b956363d7f02c7fa060269
tutorialsruby
 
HowTo_CSS
HowTo_CSSHowTo_CSS
HowTo_CSS
tutorialsruby
 
HowTo_CSS
HowTo_CSSHowTo_CSS
HowTo_CSS
tutorialsruby
 
BloggingWithStyle_2008
BloggingWithStyle_2008BloggingWithStyle_2008
BloggingWithStyle_2008
tutorialsruby
 
BloggingWithStyle_2008
BloggingWithStyle_2008BloggingWithStyle_2008
BloggingWithStyle_2008
tutorialsruby
 
cascadingstylesheets
cascadingstylesheetscascadingstylesheets
cascadingstylesheets
tutorialsruby
 
cascadingstylesheets
cascadingstylesheetscascadingstylesheets
cascadingstylesheets
tutorialsruby
 

More from 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
 

Recently uploaded

By Design, not by Accident - Agile Venture Bolzano 2024
By Design, not by Accident - Agile Venture Bolzano 2024By Design, not by Accident - Agile Venture Bolzano 2024
By Design, not by Accident - Agile Venture Bolzano 2024
Pierluigi Pugliese
 
Data structures and Algorithms in Python.pdf
Data structures and Algorithms in Python.pdfData structures and Algorithms in Python.pdf
Data structures and Algorithms in Python.pdf
TIPNGVN2
 
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
SOFTTECHHUB
 
Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1
DianaGray10
 
A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...
sonjaschweigert1
 
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
Neo4j
 
Full-RAG: A modern architecture for hyper-personalization
Full-RAG: A modern architecture for hyper-personalizationFull-RAG: A modern architecture for hyper-personalization
Full-RAG: A modern architecture for hyper-personalization
Zilliz
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
Safe Software
 
Climate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing DaysClimate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing Days
Kari Kakkonen
 
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex Proofs
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex ProofszkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex Proofs
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex Proofs
Alex Pruden
 
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AI
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AIEnchancing adoption of Open Source Libraries. A case study on Albumentations.AI
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AI
Vladimir Iglovikov, Ph.D.
 
Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !
KatiaHIMEUR1
 
Pushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 daysPushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 days
Adtran
 
DevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA ConnectDevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA Connect
Kari Kakkonen
 
Artificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopmentArtificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopment
Octavian Nadolu
 
Epistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI supportEpistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI support
Alan Dix
 
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
SOFTTECHHUB
 
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdfFIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance
 
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
名前 です男
 
RESUME BUILDER APPLICATION Project for students
RESUME BUILDER APPLICATION Project for studentsRESUME BUILDER APPLICATION Project for students
RESUME BUILDER APPLICATION Project for students
KAMESHS29
 

Recently uploaded (20)

By Design, not by Accident - Agile Venture Bolzano 2024
By Design, not by Accident - Agile Venture Bolzano 2024By Design, not by Accident - Agile Venture Bolzano 2024
By Design, not by Accident - Agile Venture Bolzano 2024
 
Data structures and Algorithms in Python.pdf
Data structures and Algorithms in Python.pdfData structures and Algorithms in Python.pdf
Data structures and Algorithms in Python.pdf
 
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
 
Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1
 
A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...
 
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
 
Full-RAG: A modern architecture for hyper-personalization
Full-RAG: A modern architecture for hyper-personalizationFull-RAG: A modern architecture for hyper-personalization
Full-RAG: A modern architecture for hyper-personalization
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
 
Climate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing DaysClimate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing Days
 
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex Proofs
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex ProofszkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex Proofs
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex Proofs
 
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AI
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AIEnchancing adoption of Open Source Libraries. A case study on Albumentations.AI
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AI
 
Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !
 
Pushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 daysPushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 days
 
DevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA ConnectDevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA Connect
 
Artificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopmentArtificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopment
 
Epistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI supportEpistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI support
 
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
 
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdfFIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
 
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
 
RESUME BUILDER APPLICATION Project for students
RESUME BUILDER APPLICATION Project for studentsRESUME BUILDER APPLICATION Project for students
RESUME BUILDER APPLICATION Project for students
 

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