Top Banner
The Ecology and Biodiversity of Libraries Chris Mueller Software Libraries Workshop Dagstuhl, Germany March 9, 2005
16

The Ecology and Biodiversity of Libraries Chris Mueller Software Libraries Workshop Dagstuhl, Germany March 9, 2005.

Jan 20, 2016

Download

Documents

Veronica Moody
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: The Ecology and Biodiversity of Libraries Chris Mueller Software Libraries Workshop Dagstuhl, Germany March 9, 2005.

The Ecology and Biodiversity of Libraries

Chris Mueller

Software Libraries Workshop

Dagstuhl, Germany

March 9, 2005

Page 2: The Ecology and Biodiversity of Libraries Chris Mueller Software Libraries Workshop Dagstuhl, Germany March 9, 2005.

March 9, 2005 Chris Mueller Software Libraries Workshop, Dagstuhl Germany 2

Ecosystems

(http://www.antelmann.com/holger/images/neworleans/jungle.jpg)

(http://www.lanl.gov/news/photos/computing.shtml)

Biologists gain knowledge by observing nature…

Can we observe libraries in the wild?

Page 3: The Ecology and Biodiversity of Libraries Chris Mueller Software Libraries Workshop Dagstuhl, Germany March 9, 2005.

March 9, 2005 Chris Mueller Software Libraries Workshop, Dagstuhl Germany 3

An Expedition into the Strange World of Libraries…

Page 4: The Ecology and Biodiversity of Libraries Chris Mueller Software Libraries Workshop Dagstuhl, Germany March 9, 2005.

March 9, 2005 Chris Mueller Software Libraries Workshop, Dagstuhl Germany 4

Network Library

#include "winsock2.h"

void socket_connect(const char* host, const int port) { WSADATA wsaData;

int iResult = WSAStartup( MAKEWORD(2,2), &wsaData ); if ( iResult != NO_ERROR ) // ignore;

sockaddr_in clientService; clientService.sin_family = AF_INET; clientService.sin_addr.s_addr = inet_addr( host ); clientService.sin_port = htons( port );

if ( connect( m_socket, (SOCKADDR*) &clientService, sizeof(clientService) ) == SOCKET_ERROR) { WSACleanup(); return; } // ...}

TypeLanguage neutral, platform neutral protocol library

UsageCommunicated between applications

ComponentsSystem libraries, Vendor libraries

UsersSoftware developers

TCP/IP

Page 5: The Ecology and Biodiversity of Libraries Chris Mueller Software Libraries Workshop Dagstuhl, Germany March 9, 2005.

March 9, 2005 Chris Mueller Software Libraries Workshop, Dagstuhl Germany 5

Plugin Library

# From httpd.confLoadModule rewrite_module libexec/httpd/mod_rewrite.so

TypeApplication specific plugin library

UsageExtend Apache's feature set

ComponentsSystem libraries

LanguageC

UsersSoftware developers, Webmasters

Apache Modules

/* C Interface *//* the main config structure */module AP_MODULE_DECLARE_DATA rewrite_module = { STANDARD20_MODULE_STUFF, config_perdir_create, /* create per-dir config structures */ config_perdir_merge, /* merge per-dir config structures */ config_server_create, /* create per-server config structures */ config_server_merge, /* merge per-server config structures */ command_table, /* table of config commands */ register_hooks /* register hooks */};

Page 6: The Ecology and Biodiversity of Libraries Chris Mueller Software Libraries Workshop Dagstuhl, Germany March 9, 2005.

March 9, 2005 Chris Mueller Software Libraries Workshop, Dagstuhl Germany 6

Language Platform

import java.util.Date;

class HelloWorld { public static void main(String args[]) { Date now = new Date(); System.out.println(now + "Hello world!"); }}

--> Sat Mar 05 12:54:25 EST 2005: Hello world!

TypePlatform, library and runtime specifications, library collection

UsageApplication development

ComponentsSystem libraries

LanguageJava, C

UsersSoftware developers

J2SE

Page 7: The Ecology and Biodiversity of Libraries Chris Mueller Software Libraries Workshop Dagstuhl, Germany March 9, 2005.

March 9, 2005 Chris Mueller Software Libraries Workshop, Dagstuhl Germany 7

Specifications

TypeDomain specific library specification

UsageEnterprise application development, service and protocol abstraction

ComponentsJ2SE, system libraries, vendor libraries

LanguageJava

UsersSoftware developers

J2EE

TypePlatform specific protocol abstraction

UsageDirectory lookup

ComponentsJ2SE, J2EE, system libraries, vendor libraries

UsersSoftware developers

JNDI

import javax.naming.Context;import javax.naming.InitialContext;import javax.naming.NamingException;import java.util.Hashtable;

class Lookup { Object Lookup(String name) { // Identify service provider to use Hashtable env = new Hashtable(11); env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.fscontext.RefFSContextFactory"); Object result = null; try { Context ctx = new InitialContext(env); Object obj = ctx.lookup(name); ctx.close(); } catch (NamingException e) { } return result; }} (http://java.sun.com/products/jndi/tutorial/getStarted/examples/naming.html)

Page 8: The Ecology and Biodiversity of Libraries Chris Mueller Software Libraries Workshop Dagstuhl, Germany March 9, 2005.

March 9, 2005 Chris Mueller Software Libraries Workshop, Dagstuhl Germany 8

Script Library

#!/bin/bash# Add the count of new log entries to the log stats file

if [ -z "$1" ]; then echo usage: $0 log-file log-stats-file exitfi

if [ -z "$2" ]; then echo usage: $0 log-file log-stats-file exitfi

echo `date` `wc -l $1` >> $2

% log-counter library-examples.txt log.dat% cat log.datSat Mar 5 13:05:51 EST 2005 379 library-examples.txtSat Mar 5 13:06:23 EST 2005 392 library-examples.txt

TypeSystem commands

UsageSystem administration, monitoring, reporting

ComponentsSystem commands, language libraries

LanguageBash, csh, Perl, Python, etc…

UsersSysadmins, software developers

Log Monitor

Page 9: The Ecology and Biodiversity of Libraries Chris Mueller Software Libraries Workshop Dagstuhl, Germany March 9, 2005.

March 9, 2005 Chris Mueller Software Libraries Workshop, Dagstuhl Germany 9

Data Access Libraries

package com.mail.ejb.eventlog;import java.util.*;import javax.ejb.*;import javax.naming.*;import java.rmi.RemoteException;

// Table Abstractionpublic abstract class UserLogBean implements EntityBean { // Access methods for relationship fields public abstract Collection getReadEvents(); public abstract void setReadEvents(Collection events);

// Business methods public void addReadEvent(int eventId) { try { Collection events = getReadEvents(); events.add(eventId); } catch (Exception ex) { throw new EJBException(ex.getMessage()); } } // ... }

// Query Abstractionpublic class EventLogControllerBean implements SessionBean { private LocalLogHome logHome

public void logUserReadMail(String userId, String messageId) { LocalUserLog log = logHome.findByPrimaryKey(userId); log.addMailReadEvent(messageId); }}

TypeOO relational database abstraction

UsageAccess database tables

ComponentsJ2SE, J2EE

LanguageJava, SQL

UsersSoftware developers, UI designers

Enterprise JavaBeans

TypeData source library and abstaction layer

UsageAbstract vendor protocols and data sources

ComponentsVendor libraries, language libraries

LanguageJava, SQL

UsersSoftware developers, DBAs, DB developers

ODBC

Page 10: The Ecology and Biodiversity of Libraries Chris Mueller Software Libraries Workshop Dagstuhl, Germany March 9, 2005.

March 9, 2005 Chris Mueller Software Libraries Workshop, Dagstuhl Germany 10

Database Libraries

-- Function that counts a users mail messagescreate or replace function count_messages ( user integer )return integer asbegin return select count(*) into temp_count from message where user_id = user;end;

TypeProcedural database access

UsageCreate SQL functions, database triggers

ComponentsSQL, DB libraries

LanguagePL/SQL, Java, C/C++, Perl

UsersDBAs, DB developers

Stored Procedures

TypeDatabase extension libraries

UsageExtend database operations

ComponentsDB libraries, language libraries

LanguageC/C++, Java

UsersSoftware developers, DB developers

Database Cartridges/Packages-- Apply multidimensional scaling on to the data-- and return the result in a new temporary tableselect MDS(user, time, event, duration) from mail_events;

----------------|Row | X | Y |----------------| 1 | .4 | .5 || 2 | .2 | .9 |…

/* Possible C signature */db_table* MDS(db_table *queryResult, db_query_info *info) { ... }

Page 11: The Ecology and Biodiversity of Libraries Chris Mueller Software Libraries Workshop Dagstuhl, Germany March 9, 2005.

March 9, 2005 Chris Mueller Software Libraries Workshop, Dagstuhl Germany 11

Application Frameworks and Business Libraries

package com.mail.applogic;

import javax.servlet.*;import javax.servlet.http.*;import com.mail.businesslogic.*;

// Process user mail requestsclass MailServlet extends HttpServlet { private String user; private String message; private int messageId; // ...

public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

this.user = request.getParameter("user"); String event = request.getParameter("event");

if(event.equals("showMessage")) { this.messageId = request.getParameter("messageId"); this.handleShowMessage(); } // ... }

void handleShowMessage() { Mailbox mb = Mailbox(this.user); this.message = mb.GetMessage(this.messageId); }}

TypeApplication framework

UsageApplication logic for Web applications

ComponentsJ2SE, J2EE, business libraries

LanguageJava

UsersSoftware developers

Servlet API

TypeDomain library

UsageAbstract mail data types and operations

ComponentsJ2SE, j2EE, business libraries

LanguageC/C++, Java

UsersSoftware developers, DB developers

Mail Library

Page 12: The Ecology and Biodiversity of Libraries Chris Mueller Software Libraries Workshop Dagstuhl, Germany March 9, 2005.

March 9, 2005 Chris Mueller Software Libraries Workshop, Dagstuhl Germany 12

Tag Libraries

<@ taglib prefix="mailapp” uri="http://www.mail.com/tags/mail"><app-data> <mailapp:message_from/> <mailapp:message_subject/> <mailapp:message_content lines="2"/></app>

<app-data> <mail:from>[email protected]</mail:from> <mail:subject>Libraries</mail:subject> <mail:content> Libraries are so cool! I can't wait to go to Germany and talk about ... </mail:content></app-data>

TypeUser interface, data access

UsageData layout, presentation

ComponentsJ2EE, business libraries

LanguageXML, Java (JSP)

UsersUI designers, software developers

Mail Tag Library

Page 13: The Ecology and Biodiversity of Libraries Chris Mueller Software Libraries Workshop Dagstuhl, Germany March 9, 2005.

March 9, 2005 Chris Mueller Software Libraries Workshop, Dagstuhl Germany 13

Style Libraries

TypeData structure manipulation

UsageTransform data to other formats

ComponentsLanguage libraries

Transformation Libraries

LanguageXSLT, Perl, Python, Bash, csh

UsersUI designers, software developers, “branders”, translators

Device Transform (mail-to-html.xsl)

<html> <brand-header/> <b>From:</b> [email protected] </br> <b>Subject:</b> Libraries </br> <p i18n="no"> Libraries are so cool! I can't wait to go to Germany ... <p> <brand-footer/></html>

Brand Transform (osl-brand.xsl)

<html> <head><title>OSL Mail</title></head> <body> <b>From:</b> [email protected] </br> <b>Subject:</b> Libraries </br> <p i18n="no"> Libraries are so cool! I can't wait to go to Germany ... <p> <font size="-10"> You will obey Andy </font> </body></html>

I18N Transform (translate.pl)

<html> <head><title>OSL Post</title></head> <body> <b>Von:</b> [email protected] </br> <b>Thema:</b> Libraries </br> <p> Libraries are so cool! I can't wait to go to Germany ... <p> <font size="-10"> Sie befolgen Andy </font> </body></html>

Page 14: The Ecology and Biodiversity of Libraries Chris Mueller Software Libraries Workshop Dagstuhl, Germany March 9, 2005.

March 9, 2005 Chris Mueller Software Libraries Workshop, Dagstuhl Germany 14

Component Libraries

# COM in Python:

from win32com.client import Dispatch

xl = Dispatch("Excel.Application")xl.Visible = 1xl.Workbooks.Add()xl.ActiveSheet.Cells(1,1).Value = ’Libraries rule!'xl.ActiveSheet.Cells(2,1).Value = ’Dagstuhl rules!'xl.ActiveWorkbook.Close(SaveChanges=0)xl.Quit()

TypeLanguage neutral software components, platform

UsageExpose language-specific libraries to other languages and applications

ComponentsLanguage libraries

LanguageAll

UsersEveryone

COM

Page 15: The Ecology and Biodiversity of Libraries Chris Mueller Software Libraries Workshop Dagstuhl, Germany March 9, 2005.

March 9, 2005 Chris Mueller Software Libraries Workshop, Dagstuhl Germany 15

Quick Observations

Types of Libraries Protocol libraries Plugin libraries Platforms Frameworks Specifications System commands Database libraries Style libraries Component libraries

Users of Libraries Software developers DB developers System administrators UI designers DBAs End users

Ways to Access Libraries Programming languages Shells Menus Config files

Page 16: The Ecology and Biodiversity of Libraries Chris Mueller Software Libraries Workshop Dagstuhl, Germany March 9, 2005.

March 9, 2005 Chris Mueller Software Libraries Workshop, Dagstuhl Germany 16

Library Research

Libraries are plentiful Libraries can be observed in their natural habitat Every library user has a story

Library research should follow the traditional sciences and have a strong empirical component.