You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 69 Next »

Tässä kartoituksessa on tarkoituksena selvittää tarjolla olevien avoimen lähdekoodin kirjastojärjestelmien soveltuvuutta UKJ-projektin tarpeisiin. Kartoitukseen otetaan mukaan vain sellaisia  järjestelmiä, joita kehitetään edelleen ja jotka omaavat UKJ:hin sisältyvää toiminnallisuutta. Selvitys toteutetaan kahdessa vaiheessa siten, että ensin tuotetaan listaus tarjolla olevista järjestelmistä, jonka jälkeen järjestelmien joukosta valitaan kaksi tai kolme järjestelmää lähempään tarkasteluun. Lähempään tarkasteluun otettavat järjestelmät valitaan järjestelmien sisältämän toiminnallisuuden sekä käyttäjä- että kehittäjäyhteisöjen laajuuden ja aktiivisuuden perusteella. Selvitys toteutetaan kokonaisuudessaan kirjallisuusselvityksenä eli arvioitavia järjestelmiä ei koekäytetä eikä asenneta testipalvelimelle lähempää tarkastelua varten.

Vaihe 1

Taulukossa 1 on esitetty listaus edelleen kehitetyistä keskeisimmistä avoimen lähdekoodin kirjastojärjestelmistä.Listaukseen on otettu mukaan ainoastaan sellaisia järjestelmiä, joita kehitetään edelleen aktiivisesti.

Järjestelmän nimiKehittäjä
  1. julkinen versio
Tuorein versioKotisivuKoodiOhjelmointikieletTietokantaIndeksi/hakumoottoriLisenssi
KohaKoha Community20003.12 (03/2013)wwwGitPerlMySQLZebraGPL
EvergreenGergia Public Library Service (GPLS)20062.3.5 (03/2013)wwwGitPerl, JavaScript, Python, CPostgreSQLOmaGPL
Kuali OLEKuali Foundation20130.6 (01/2013)wwwSVNJava, JavaScriptMySQL / OracleOmaGPL
OpenBiblioOpenBiblio-kehitystiimi20020.7.1 (03/2012)wwwMercurialPHPMySQLOmaGPL
NewGenLibVerus Solutions20053.0.4u2 (03/2013)wwwSVNJavaPostgreSQLLucene, SolrGPL

Taulukko 1. Keskeisimmät avoimen lähdekoodin kirjastojärjestelmät.

Taulukossa 2 on listattu valittujen avoimen lähdekoodin kirjastojärjestelmien moduuleita sekä järjestelmien tukemia standardeja ja rajapintoja.

JärjestelmäKäytön hallintaLuettelointiHankintaKausijulkaisujen hallintaAdminRaportoinit ja tilastointiStandardit ja rajapinnat

Koha

KylläKylläKylläKylläKylläKylläMarc21, UNIMARC, Marc export/import, Z39.50, SIP2, SRU, OAI-PMH, unAPI, OpenSearch, LDAP, Mozilla Persona, EDI, EZproxy, OpenURL
EvergreenKylläKylläKylläKylläKylläKylläMarc21, MODS, DC, SIP2, Z39.50, SRU, EDI, EZproxy, OpenURL, unAPI
Kuali OLE

V. 0.8 (Q2/2013)

V. 1.0 (Q4/2013)

Metatietovaranto kyllä, luettelointiohjelma ei

V. 0.8 (Q2/2013)

V. 1.0 (Q4/2013)

KylläV. 1.0 (Q4/2013)OsittainOsittain

Marc21, MarcXML, DC

Tulossa: NCIP, SIP2, SRU/SRW, Z39.50, SUSHI, COUNTER, ONIX

OpenBiblioKylläKylläEiEiKylläEiMarc21 & MarcXML export
NewGenLibKylläKylläKylläKylläKylläKylläMarc21 & MarcXML import/export, Z39.76, MODS 3.0, AGRIP AP, ISBD, OAI-PMH, SRU/W, Z39.50

Taulukko 2. Järjestelmien moduulit sekä tuetut standardit ja rajapinnat.

Vertailuun mukaan otetuista järjestelmistä monipuolisimman toiminnallisuuden tarjoavat Koha, Evergreen ja Kuali OLE. Koha ja Evergreen ovat tunnetuimmat sekä myös käytetyimmät avoimen lähdekoodin kirjastojärjestelmät, joilla molemmilla on laajat kansainväliset käyttäjä- ja kehittäjäyhteisöt. Kumpaakin järjestelmää käytetään eri kokoisissa ja eri tyyppisissä kirjastoissa ympäri maailman, joka tekee niistä kiinnostavia vaihtoehtoja myös tämän kartoituksen kannalta. Kuali OLE puolestaan eroaa Kohasta ja Evergreenistä monellakin tavoin, sillä se on vasta aivan elinkaarensa alkupäässä, eikä kaikkia taulukossa 2 esitettyjä toiminnallisuuksia ei ole vielä edes toteutettu, koska järjestelmä on edelleen kehitysvaiheessa. Valmistuessaan Kuali OLE:n kuitenkin pitäisi sisältää erittäin kattava toimintokokonaisuus sekä standardien ja rajapintojen tuki, joka yhdessä sen modernin arkkitehtuurin kanssa tekee siitä erittäin kiinnostavan vaihtoehdon.

Vaihe 2

Erityisesti Kohan ja Evergreenin kohdalla on tehty monia selvityksiä ja vertailuja, joissa keskitytään niiden tarjoamia toimintojen tarkasteluun ja vertailuun. Tässä tapauksessa tällaisen vertailun teko ei ole perusteltua, koska uudelle kirjastojärjestelmälle asetetut vaatimukset eivät vielä tätä selvitystä kirjoitettaessa ole riittävällä tarkkuudella tiedossa, jonka vuoksi vertailussa ei pystyttäisi kiinnittämään huomiota UKJ:n kannalta keskeisiin asioihin. Lisäksi Kuali OLE -järjestelmän keskeneräisyys estää sen täysipainoisen vertailun muiden tarkasteltavien järjestelmien kanssa. On myös erittäin epätodennäköistä, että yksikään vertailtavista järjestelmistä täyttäisi yksinään riittävällä tasolla uudelle kirjastojärjestelmälle asetettuja vaatimuksia. Edellä mainittujen seikkojen perusteella tarkemmassa vertailussa keskitytään järjestelmien toimintojen sijaan tarkastelemaan niiden arkkitehtuuria ja ennen kaikkea sitä, kuinka helposti niiden yksittäiset osat ovat vaihdettavissa tai vaihtoehtoisesti siirrettävissä muiden järjestelmien käyttöön. Uuden kirjastojärjestelmän keskeisenä ajatuksena on modulaarisuus eli järjestelmän rakentaminen useista toisiinsa löyhästi sidoksissa olevista moduuleista. Valittujen järjestelmien lähemmässä tarkastelussa onkin siis tarkoituksena paneutua nimenomaan siihen, onko valittujen järjestelmien yksittäisten osien hyödyntäminen UKJ:ssa mahdollista.

Koha

Koha koostuu Perl-ohjelmointikielellä toteutetuista moduuleista ja pakkauksista, jotka vastaavat järjestelmän kaikkien eri osa-alueiden toimintojen toteuttamisesta. Niin tietojen käsittely, tietokantayhteydet kuin käyttäjille näytettävien HTML-sivujen generoiminen on toteutettu edellä mainittujen moduulien ja pakkausten avulla.

Kohan toiminnallisuus on jaettu neljään ylätason moduuliin, jotka sisältävät useita eri tasoisia toisistaan riippuvaisia alatason moduuleita. Osa alatason moduuleista on nimenomaan Kohaa varten toteutettuja ja osa taas yleisesti käytössä olevia Perl-ohjelmointikielen kirjastoja, joiden tarjoamaa toiminnallisuutta Kohan omissa toteutuksissa on hyödynnetty.

Kohan neljä ylätason moduulia ovat : OPAC, Intranet, Daemons ja DB. OPAC-moduuli sisältää asiakkaiden käyttöön tarkoitetun järjestelmän osan eli hakuliittymän toteuttavan koodin sekä sen ulkoasun määrittelevät HTML-sivupohjat. Koodi ja sivupohjat on sijoitettu omiin alatason moduuleihinsa. Intranet-moduuli sisältää puolestaan virkailijoiden käyttöön tarkoitetut järjestelmän osat eli käyttäjienhallinnan, lainauksen, aineiston hallinnan, hankinnan, järjestelmän ylläpidon, raportoinnin sekä tietueiden tuonti-/vientitoiminnot. Eri toimintoihin liittyvät osat on jaettu omiin alatason moduuleihinsa, jonka lisäksi käyttöliittymän ulkoasun määrittelevät sivupohjat on sijoitettu omaan alatason moduuliinsa varsinaisesta toimintalogiikasta erilleen. Toimintojen välillä navigointi sekä käyttäjien tunnistus on myös sijoitettu omaan moduuliinsa, joka toimii linkkinä muiden moduulien välillä. Daemons-moduuli sisältää järjestelmän taustaprosessit ja DB-moduuli puolestaan tietokantaoperaatioiden suorittamiseen tarvittavat osat. OPAC-, Intranet- ja Daemons-moduulit käyttävät DB-moduulin tarjoamia palveluita tietokantaoperaatioiden suorittamiseen.

Moduulien välinen tiedonvaihto ja kommunikointi on toteutettu niiden ohjelmallisten rajapintojen kautta. Käytännössä tämä tarkoittaa sitä, että tietyn moduulin tarjoamia palveluja käytettäessä on kyseinen moduuli sisällytettävä siihen ohjelman osaan, jossa palvelua halutaan käyttää. Ohjelmiston eri osien vaihtaminen toisiin on mahdollista, mutta osien toteutuksessa käytettävä ohjelmointikieli on sidottu Perl:iin, sillä sisällyttäminen on mahdollista vain samalla ohjelmointikielellä toteutettujen osien välillä.

Evergreen

Evergreen on rakennettu Open Service Request Framework (OpenSRF) –kehyksen ympärille, joka mahdollistaa ohjelmiston koostamisen useista toisiinsa löyhästi kytketyistä palveluista. OpenSRF-kehys toteuttaa palvelujen ja asiakasohjelmien välisen kommunikoinnin kehyksen sisältämän viestiväylän (messaging bus) kautta. Väylän sisällä liikkuvat viestit kulkevat JavaScript Object Notation (JSON) -muodossa Extensible Messaging and Presence Protocol (XMPP) –protokollaa käyttäen. Kehys mahdollistaa sen avulla toteutettujen palvelujen ja asiakasohjelmistojen sijoittamisen yhdelle palvelimelle tai hajauttamisen useille maantieteellisesti toisistaan erillään oleville palvelimille, jonka lisäksi myös tiettyä toiminnallisuutta tarjoavia palveluita voi olla sijoitettuna useille eri palvelimilla.  Eri palvelimilla sijaitsevat palvelut kommunikoivat keskenään viestiväylän kautta.

OpenSRF-kehyksen viestiväylä käyttää viestien välittämiseen XMPP-protokollaa ja käytännössä viestiväylän toiminta rakentuu XMPP-viestejä välittävän ejabberd-palvelinsovelluksen ympärille. XMPP-protokollaa käytetään yleisesti erityisesti pikaviestintään tarkoitetuissa sovelluksissa. XMPP on XML-pohjainen protokolla, joten OpenSRF:n JSON-pohjaiset viestit on paketoitu XMPP:n XML-viestien sisälle. OpenSRF käyttää JSON-formaattia XML-formaatin sijaan, koska välitettävät tiedot pystytään esittämään tiiviimmässä muodossa, jonka lisäksi JSON-muotoisten tietojen käsittely on huomattavasti XML-pohjaisen tiedon käsittelyä kevyempää.

OpenSRF-kirjastoja on tarjolla useilla eri ohjelmointikielillä. Asiakasohjelmien toteutuksen mahdollistavia kirjastoja on tarjolla C-, Java-, JavaScript-, Perl- ja Python-ohjelmointikielillä. Palvelujen toteuttamiseen tarkoitettuja kirjastoja on sen sijaan tarjolla C-, Perl- ja Python-kielillä.

OpenSRF-sovellukset koostuvat yhdestä tai useammasta palvelusta, jotka kukin sisältävät yhden tai useamman metodin. Käytännössä palvelun sisältämät metodit toteuttavat kyseisen palvelun tarjoaman toiminnallisuuden. Metodien vaatimien parametrien tai niiden palauttamien tulosten määrää ei ole rajoitettu ja muodoltaan ne voivat olla merkkijonoja, numeroita, boolean-arvoja, taulukoita tai assosiatiivisia taulukoita (hash). Myös muiden tietorakenteiden käyttö parametreinä ja/tai paluuarvoina on mahdollista, mutta tämä edellyttää muutamien lisämääritysten tekemistä.

Palveluita kutsuvissa asiakasohjelmissa sekä itse palveluiden toteutuksessa käytetään käytettävän ohjelmointikielen mukaisia tietotyyppejä, jotka OpenSRF-kehys muuntaa JSON-muotoon siirron ajaksi. Käytettäessä edellä listattuja perustietotyyppejä tapahtuu siirrettävien tietojen muuntaminen eri formaattien välillä OpenSRF:n toimesta automaattisesti. Käytettäessä monimutkaisempia tietorakenteita, kuten esimerkiksi Evergreenin omia luokkia edustavia olioita joudutaan muunnokset sen sijaan määrittelemään erillisessä konfiguraatiotiedostossa. Tiedosto määrittää kuinka Evergreenin luokkia edustavat oliot esitetään JSON-muodossa, jotta OpenSRF osaa tehdä tarvittavat muunnokset kyseisiä olioita sisältävien viestien välittämistä varten. Konfiguraatiotiedoston perusteella OpenSRF kykenee muuntamaan oliot JSON-muotoon sekä vastaavasti luomaan JSON-formaatista luettuja tietoja vastaavat oliot.

Kuali OLE

Kuali Open Library Environment (Kuali OLE) –kirjastojärjestelmä on yksi voittoa tavoittelemattoman Kuali-säätiön koordinoimista järjestelmistä. Säätiön tavoitteena on tuottaa korkeakoulujen tarpeita vastaavia avoimen lähdekoodin järjestelmiä yhteistyössä korkeakoulujen kanssa. Kirjastojärjestelmän lisäksi Kuali-järjestelmien perheeseen kuuluu mm. taloushallinto-ohjelmisto, tutkimuksenhallintaohjelmisto, henkilöstöhallintajärjestelmä sekä joukko erilaisia middleware-ohjelmistoja.

Kuali OLE –kirjastojärjestelmä on oma itsenäinen järjestelmänsä, mutta monien sen toimintojen toteuttamisessa hyödynnetään muita Kuali-perheen järjestelmiä. Hyödynnettäviä Kuali-järjestelmiä ovat mm. KFS (Kuali Financial System), KIM (Kuali Identity Management), KEW (Kuali Enterprise Workflow) ja KRMS (Kuali Rules Management System), joiden avulla toteutetaan mm. käyttäjätietojen hallinta sekä työprosessien ja toimintojen suorittamiseen liittyvien ehtojen määrittely ja hallinta. Eri sovellukset on liitetty toisiinsa Kuali Rice –middleware ohjelmistopakettiin kuuluvaa KSB (Kuali Service Bus) –sovellusta käyttäen, joka toimii palveluväylänä eri sovellusten välillä. Käytännössä tämä tarkoittaa sitä, että eri sovellukset kommunikoivat keskenään palveluväylän kautta lähetettävien XML-muotoisten viestien välityksellä.  KSB mahdollistaa eri Kuali-ohjelmistojen sekä myös muiden kuin Kuali-ohjelmistojen integroimisen järjestelmäkokonaisuuteen ilman ohjelmistoihin tehtäviä muutoksia. KSB:hen kytketyt ohjelmistot voivat sijaita samalla palvelimella tai ne voi olla hajautettu useille eri palvelimille.

Kuali OLE perustuu palvelukeskeiseen arkkitehtuuriin eli järjestelmän moduulit on toteutettu palveluina, jotka kommukoivat keskenään palveluväylän välityksellä samaan tapaan, kuin muut OLEn toiminnassa hyödynnettävät Kuali-perheen ohjelmistot. Yhdessä palvelut muodostavat järjestelmän palvelurajapinnan, jota järjestelmän asiakasohjelmat sekä myös ulkoiset järjestelmät käyttävät. Tämä tekee järjestelmän tarjoamia palveluita hyödyntävien sovellusten kehittämisestä sekä eri järjestelmien välisestä tiedonvaihdosta erittäin joustavaa.

Palveluväylä

Suuret ohjelmistokokonaisuudet koostuvat monista eri ohjelmistoista, joiden välinen kommunikointi on usein erittäin monimutkaista johtuen ohjelmistojen käyttämistä erilaisista rajapinnoista ja tietorakenteista. Tämän seurauksena yhden ohjelmiston kommunikointitavoissa tapahtuvat muutokset voivat vaikuttaa suoraan monen muun eri ohjelmiston toimintaan ja voivat pahimmillaan estää koko ohjelmistokokonaisuuden toiminnan. Samasta syystä myös yksittäisen ohjelmiston korvaaminen toisella tai uuden ohjelmiston lisääminen kokonaisuuteen on erittäin työlästä aiheuttaen pahimmillaan muutoksia useisiin muihin järjestelmiin.

Palveluväylän keskeisenä ajatuksena on toimia ohjelmistokokonaisuuteen kuuluvien ohjelmistojen välisten viestien välittäjänä, jonka ansiosta ohjelmistojen välille ei synny suoria keskinäisiä riippuvuuksia. Käytännössä tämä tapahtuu toteuttamalla ohjelmistojen välinen kommunikointi ja tiedonvaihto palveluväylää pitkin lähetettävien viestien avulla, jolloin ohjelmistojen välille ei synny suoria keskinäisiä riippuvuuksia. Palveluväylän sisällä kulkevat viestit noudattavat väylän omaa tietomallia, josta tiedot muunnetaan aina kunkin ohjelman ymmärtämään muotoon. Käytännössä viestien muuntaminen tapahtuu väylän ja ohjelmiston välissä olevan muuntimen avulla, jolloin yksittäisessä ohjelmassa tapahtuvat muutokset vaikuttavat vain väylän ja kyseisen ohjelmiston väliseen muuntimeen. Tämä tekee järjestelmäkokonaisuuden ylläpidosta joustavaa ja mahdollistaa yksittäisten järjestelmien vaihtamisen ja uusien järjestelmien lisäämisen huomattavasti aiempaa vaivattomammin.

Palveluväylä on oma itsenäinen ohjelmistonsa, jonka sisältämät toiminnallisuudet ja ominaisuudet ovat ohjelmistokohtaisia ja saattavat näin ollen vaihdella suurestikin eri ohjelmistojen välillä. Yleisiä palveluväylään liittyviä ominaisuuksia ovat esimerkiksi viestien suodattaminen ja reitittäminen sekä työprosessien määritteleminen. Palveluväylä voi toteuttaa koko järjestelmäkokonaisuuden julkisen palvelurajapinnan, jonka tarjoamat julkiset palvelut voivat koostua useista yksittäisistä palveluista, jotka väylään kytketyt eri ohjelmistot toteuttavat. Tällaisia palveluita kutsutaan koosteisiksi palveluiksi ja samoja yksittäisiä palveluita voidaan helposti hyödyntää monissa koosteisissa palveluissa.

Yhteenveto

Koha, Evergreen ja Kuali OLE ovat kaikki rakenteeltaan modulaarisia ainakin siinä mielessä, että ne kaikki rakentuvat useista eri osista, jotka kommunikoivat keskenään erilaisten rajapintojen kautta. Kohan tapauksessa rajapinta on puhtaasti ohjelmallinen ja on näin ollen sidoksissa tiettyyn toteutustekniikkaan, Perl-ohjelmointikieleen. Evergreenin tapauksessa järjestelmän eri osat eivät ole suoraan yhteydessä toisiinsa ohjelmallisen rajapinnan kautta, vaan niiden välinen kommunikointi on toteutettu viestiväylän avulla. Tässäkin tapauksessa sekä palvelujen että asiakasohjelmien toteutus on kuitenkin sidottu tiettyihin tekniikoihin ja ohjelmointikieliin viestiväylän toteutustekniikasta johtuen. Kuali OLE on puolestaan rakennettu siten, että sen eri osien välillä ei ole suoria riippuvuuksia, vaan osat kommunikoivat keskenään palveluväylän välityksellä. Ratkaisu mahdollistaa sen, että eri osien toteutustekniikkaa ei ole millään tavalla rajoitettu ja eri osat voivat olla toteutettu toisistaan täysin poikkeavilla tekniikoilla.

Koha ja Kuali OLE tarjoavat puhtaasti www-pohjaiset virkailijakäyttöliittymät eli työsasemakohtaisia asennuksia ei tarvita. Evergreenin virkailijakäyttöliittymät on sen sijaan asennettava työasemakohtaisesti. Kohan tapauksessa käyttöliittymä ja sen hyödyntämät palvelut ovat tiiviisti sidoksissa toisiinsa. Palvelut on suunniteltu tietyn käyttöliittymän tarpeisiin ja vaihtoehtoisen käyttöliittymän toteuttaminen edellyttäisi myös palvelujen tuplaamista ja mahdollisesti myös muokkaamista vaihtoehtoisen käyttöliittymän tarpeita vastaaviksi. Evergreenin ja Kuali OLE:n tapauksessa käyttöliittymä ja sen hyödyntämät palvelut on puolestaan erotettu toisistaan, jonka ansiosta useat vaihtoehtoiset käyttöliittymät voivat hyödyntää samoja järjestelmän tarjoamia palveluita.

Vertailussa mukana olleista järjestelmistä sekä Kuali OLE:n että Evergreenin toteutustapa on palvelukeskeinen eli järjestelmät koostuvat useista toisiinsa heikosti sidoksissa olevista palveluista, jotka kommunikoivat keskenään. Käytännön toteutuksien osalta järjestelmät kuitenkin eroavat toisistaan melkoisesti. Kuali OLE:n palvelurajapinnan toteutustapa on teknologianeutraali eli se ei ota kantaa sitä käyttävien järjestelmien tekniikoihin tai ohjelmointikieliin, vaan palveluiden käyttö tapahtuu internetin kautta avointen rajapintojen ja tekniikoiden avulla. Evergreenin toteutustapa sen sijaan sitoo sen palveluja käyttävät järjestelmät OpenSRF-kehyksen ja sitä tukevien ohjelmointikielten käyttöön. OpenSRF-kehys on avoimen lähdekoodin toteutus, mutta sen avulla toteutettujen palvelujen hyödyntäminen edellyttää asiakasohjelmille tarkoitetun OpenSRF-ohjelmistokirjaston käyttöä, joka on saatavilla tietyille ohjelmointikielille.

Kaiken kaikkiaan Kuali OLE:n palveluväylään perustuva toteutustapa on ehdottomasti joustavin ja tarjoaa parhaat edellytykset aidosti modulaarisen ohjelmistokokonaisuuden rakentamiseen. Totetustapa mahdollistaa ohjelmistokonaisuuden koostamisen useista eri osista siten, että osien vaihdolla tai uusien lisäämisellä ei tarvitse olla vaikutusta muihin osiin. Kuali OLE hyödyntää muita Kuali-perheen ohjelmistoja sekä itse palveluväylän että varsinaisen toiminnallisuuden toteuttamisessa, mutta mikään ei estä korvaamasta näitä osia muilla vastaavilla ohjelmistoilla. Ratkaisu mahdollistaa sekä avoimen lähdekoodin että kaupallisten järjestelmien käytön kokonaisuuden rakentamisessa. Olennaista on, että kokonaisuuteen liitettävä järjestelmä sisältävää toimivat ja hyvin dokumentoidut rajapinnat palveluväylään liittämistä varten.

Linkkejä:

http://opensourceils.com/ (Open Source tietoportaali kirjastonhoitajille. Enimmäkseen KOHAa ja EverGreeniä tuntuu käsittelevän)

http://opensource.califa.org/ (Open Source Open Libraries. Kalifornian kirjastojen? sivusto avoimen lähdekoodin kirjastojärjestelmistä. Sisältää mm. toiminnalisen määrittelyn kirjastojärjestelmälle. Tarkemmin TP13 -kuvailussa)

http://foss4lib.org/package-type/Integrated-Library-System (Sivusto listaa eri OS kirjastosysteemejä)

http://features.galecia.com/ (Koha-Evergeen-vertailu)

http://en.wikipedia.org/wiki/List_of_next-generation_library_catalogs (Wikipedia, vertailu)

  • No labels