Xaraya

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.
Xarayan kehittäjäryhmä on kasvanut tasaisesti vuosien varrella ja siihen kuuluu nykyisin yli 40 ohjelmistokehittäjää useasta eri maasta.

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ä moduuleita ja laajennuksia on saatavilla.
Moduulit voivat keskustella keskenään ohjelmakoukkujen 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

Erityisen maininnan arvoinen moduuli on Dynaaminen tieto. Sen 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.

Alkeisesimerkki Block Layout -koodista

Noudetaan Avainsanat-moduulin sanalista ja näytetään sanat painotettuna listana (tai tagipilvenä), jossa avainsanan linkki on sitä suuremmalla kirjasinkoolla, mitä suositumpi kyseinen avainsana on. xar-nimiavaruus on Block Layoutin käyttämä XML-nimiavaruus.
<xar:set name="keyarray">xarModAPIFunc('keywords','user','getlist',array('count'=>'1'))</xar:set>
<xar:set name="max">max($keyarray)</xar:set>
<xar:if condition="!empty($keyarray)">
  <xar:if condition="!empty($title)" id="title_condition">
    <div class="xar-block-head">
      <div class="xar-block-title">
        <xar:mlstring>Tagcloud</xar:mlstring>
      </div>
    </div>
  </xar:if>
  <div class="xar-block-body xar-center">
    <xar:foreach in="$keyarray" key="$keyword" value="$count">
      <xar:set name="ratio">round(70+80*$count/$max)</xar:set>
      <a href="index.php/keywords/#$keyword#" style="font-size:#$ratio#%;" title="#$count# #xarML('items')#">#$keyword#</a>
    </xar:foreach>
  </div>
</xar:if>

Kritiikki

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.