Xaraya

**Xaraya** on avoimeen lähdekoodiin perustuva web-sovelluskehys ja sisällönhallintajärjestelmä. Se sisältää työkalut WWW-dokumentin esitystavan, sisällön ja toimintalogiikan erottamiseen toisistaan.

Xaraya vaatii toimiakseen WWW-palvelimen joka tukee PHP:n versiota 4.1.2 tai uudempaa sekä relaatiotietokannan. Tuetut tietokannat ovat MySQL, PostgreSQL ja SQLite.

Nimi *Xaraya* muistuttaa espanjankielistä sanaa *raya*, joka tarkoittaa rauskua. Xarayan kehittäjät pitävät "sanan merellisestä merkityksestä, varsinkin jos Internetin ajatellaan olevan tiedon 'valtameri'". 

## Historia
Xaraya-projekti aloitettiin vuonna 2002 kun Postnuken kehittäjäryhmän jäsenet olivat tyytymättömiä silloisen projektipäällikön toimintaan. Xarayan projektipäälliköksi äänestettiin John Cox *(joka oli itse perustamassa Postnukea vuonna 2001)*. Samoihin aikoihin projektille perustettiin myös hallintakomitea organisoimaan kehitystyötä.

Ohjelmiston ensimmäinen alfaversio perustui Postnuken julkaisemattomaan kehitysversioon 0.8. Vuoden 2003 huhtikuussa julkaistiin ensimmäinen beta-versio 0.900. Seuraava merkittävä beta-versio .9.1.0 julkaistiin syyskuussa 2003, jonka myötä ohjelmiston arkkitehtuuria muutettiin vastaamaan virallista kohdejulkaisua (1.0.0).

Vuoden 2004 syyskuussa projektipäällikkö John Cox ja hallintakomitean jäsen Marcel van der Boom luopuivat asemistaan. Heidän tilalleen tuli kaksi uutta jäsentä. Projektin hallintakomitean jäsenet ovat nykyään Carl Corliss, Jason Judge, Joanna Dalle Nogare ja Marc Lutolf. Heinäkuussa 2005 Xaraya-projekti siirsi versionhallinnan Bitkeeperistä Monotoneen. 6. marraskuuta 2005 julkaistiin Xarayan virallinen 1.0 versio.

## Ominaisuudet
Xaraya käyttää MVC-arkkitehtuuria ja on suunniteltu mahdollisimman modulaariseksi, jotta se soveltuisi erikokoisten web-sovellusten alustaksi. Järjestelmän ydin koostuu ohjelmointirajapinnasta sekä kymmenestä moduulista: *Autentikointi*, *Pohja*, *Lohkot*, *Dynaaminen tieto*, *Asennus*, *Sähköposti*, *Moduulit*, *Valtuudet*, *Roolit* ja *Teemat*. Ydinmoduulit on vaadittu jokaisessa asennuksessa, mutta myös muita kolmansien osapuolten kehittämiä moduuleja ja laajennuksia on saatavilla.

Moduulit voivat keskustella keskenään ohjelma*koukkujen* avulla. *Koukku* on osa moduulin koodia, joka aktivoituessaan kutsuu toista moduulia ja siirtää tiedonkäsittelyn kutsutulle moduulille, joka puolestaan voi tuoda uutta tietoa takaisin kutsuvalle moduulille. Esimerkiksi Kommentit-moduuli voidaan yhdistää koukulla Artikkelit-moduuliin, jolloin artikkeleihin voi lisätä kommentteja. Xaraya ei rajoita sisällöntuotantoa valmiiksi määriteltyihin julkaisutyyppeihin, kuten uutisiin ja tekstiartikkeleihin, vaan Artikkelit-moduulilla voidaan luoda uusia julkaisutyyppejä, esimerkiksi kyselyitä ja blogeja.

Järjestelmän ylläpito ja hallinta tapahtuu WWW-sivuston kautta, pois lukien teemojen luonti ja muokkaus, joka täytyy tehdä tiedostotasolla. Kaikki käyttöliittymän tekstielementit on käännettävissä muille kielille mukana tulevalla Käännökset-moduulilla. Xaraya käyttää UTF-8-koodaustapaa tiedon tallentamiseen sekä esittämiseen ja tukee täysin monikielisten web-sovellusten ja sivustojen rakentamista.

### Dynaaminen tieto

*Dynaaminen tieto*-moduulin avulla relaatiotietokantaan voidaan määritellä dataobjekteja, jotka sisältävät metatietoa. Dataobjekti voi sisältää useita eri ominaisuuksia, myös täysin uusien ominaisuuksien luonti on tarvittaessa mahdollista. Muut moduulit käyttävät lähes poikkeuksetta *Dynaamista tietoa* hyväkseen, yleensä laajentamalla toisten moduulien dataobjekteja omilla metatiedoillaan. Dynaamiset dataobjektit voivat käyttää tietovarastoinaan yksittäisiä fyysisiä tietokantatauluja, jaettuja tauluja, tekstitiedostoja sekä muita varastointimekanismeja laajentamalla olemassa olevia luokkia.

### Mallinejärjestelmä
Kaikki järjestelmän ja moduulien tuloste ohjautuu *Block Layout* -mallinejärjestelmälle, joka päättää lopullisesta esitysmuodosta. Esitysmuodot määritellään erillisissä teemoissa; oletusasennuksessa on normaalien HTML-teemojen lisäksi teemat RSS-virralle ja tulostettaville dokumenteille. Jokainen teema voi korvata moduulin yksittäisen toiminnon oletustulosteen omalla mallineellaan ja kenties näyttää sen täysin eri muodossa kuin moduulin kehittäjä on alun perin ajatellut.

*Block Layout* käyttää XML-syntaksia, joka käännetään tulostusvaiheessa PHP-koodiksi, joten esitysmuodon määrittely on varsin universaali. Uusia teemoja luomalla esitystavaksi voi määritellä esimerkiksi PDF-dokumentin tai XUL-käyttöliittymän. Mallineessa voidaan kutsua muuttujia ja Xarayan ohjelmointirajapintaa sekä käyttää loogisia rakenteita; toistoja, ehtoja ja valintoja.

Oletusteema tuottaa validia XHTML 1.0 -koodia ja käyttää CSS:ää ulkoasun sekä sivun asettelun määrittelyyn.

## Arvostelu
Toistuva kritiikin aihe on korkea oppimiskynnys, joka johtuu suurilta osin puutteellisesta tai vanhentuneesta dokumentaatiosta sekä runsaasta teknisten termien viljelystä.

Mukana tuleva sisällönhallintajärjestelmä ei ole yhtä helppokäyttöinen ja nopeasti omaksuttavissa kuin muut vastaavat sisällönhallintajärjestelmät. Kehittäjäryhmä mieltääkin Xarayan mieluiten **työkalukokoelmaksi**, jolla voi rakentaa tarvitsemansa sivuston, sisällönhallintajärjestelmän tai web-sovelluksen.

## Lähteet

## Aiheesta muualla
* Xarayan kotisivu  
* Xarayan suomennosprojekti 
* Xarayaa käyttäviä sivustoja