Miksi olen päätynyt käyttämään sanaa kludge tästä projektista? Yritin aiemmin epäonnistuen kirjoittaa projektista raporttia sellaisista lähtökohdista, että lähestymistapoja, tekniikoita ja suunnittelua on etukäteen jollakin tavalla perinpohjaisesti harkittu. Todellisuudessa näin ei ole ollut missään vaiheessa. Projektin alkuunsaaneet olosuhteet olivat sattumaa ja niin ovat myös monella tavalla sen piiriin kuuluvat osaset ja tekijät.
Ajateltuani asiaa pitkään, uskoin ymmärtäneeni, mikä on projektin yleinen luonne ja millaista suunnittelu- ja toteutustyyliä se edustaa.
Projekti on kokoelma erilaisista lähteistä, täysin eri lähtökohdilla, tuotettua materiaalia, jonka osien integraatio on luotu käyttämällä karkeita ja epäharmonisia menetelmiä. Mutta se toimii.
Mikäli jokin asia reaalimaailmassa täyttää täysin jonkin konseptin sanallisen määritelmän, on todennäköistä, että tämä reaalimaailman asia edustaa ko. sanallista määritelmää. Luettuani kludgen määritelmän, sekä siitä löytyneitä vähälukuisia artikkeleita, minusta tuntui kuin Microjournal-projektin toteutuslogiikkaa olisi selostettu auki.
Kuten voi huomata, kludgen määritelmä sisältää asioita, jotka sijaitsevat tekniikan, mutta myös estetiikan tasoilla.A kludge (or kluge) is a workaround_, a_ quick-and-dirty solution, a clumsy or inelegant, yet effective, solution to a problem, typically using parts that are cobbled together.
Esimerkiksi kömpelyys(clumsy) sisältää esteettisiä arvotuksia. On vaikea määritellä, mitä täsmälleen tarkoitetaan kun ohjelmistotekniikassa käytetään sanaa kömpelö. Voiko esim. kuitenkin tehokas tai toimiva (effective) ratkaisu olla täysin kömpelö? Voikin pohtia, kuuleeko puhuttavan kömpelöistä sumo-painijoista? Eleganssin puute (inelegant) lienee intuitiivisesti selvä käsite useimmille ihmisille, mutta mitä se tässä yhteydessä tarkoittaa? Elegantti ratkaisu on usein ilmiselvä ilmestyessään ja helpompi kuin mikään toinen ratkaisu. Kuitenkin elegantin ratkaisun saavuttaminen voi vaatia valtavia resursseja suhteessa vähemmän eleganttiin ratkaisuun(tästä saadaan jatkuvasti esimerkkejä monilta tieteen aloilta, esimerkiksi matematiikasta). Eleganssi voi kuitenkin myös usein olla periaatteellista, ts. välittömien tavoitteidemme piirissä selviämme aina ilman eleganssia(esimerkiksi matemaattisten yhtälöiden yleisluontoinen päässälasku), joten ajallisesti rajoitettuun ohjelmistosuunnitteluun sopii soveltaa vain rajallista määrää eleganssia.
Käytetään osia, jotka on improvisoitu yhteen (using parts that are cobbled together). Tekniikan kehityksen luonteesta johtuen killerapp:it ja hyödylliset työkalut saapuvat käyttöön vaihtelevilla alustoilla ja tekniikoilla toteutettuina. Etherpadin tapauksessa tilanne korostuu poikkeuksellisesti, sillä koodin avoimeksi teko -prosessi oli yllättävä ja nopea, eikä vaikuta siltä että tähän avoimeen käyttöön olisi millään tavalla valmistauduttu Etherpadin kehityksessä. Yllätykset ovat myös kaksisuuntaisia, sillä Microjournalin suunnittelussa voitiin tietenkin varautua, vain näköpiirissä oleviin ja resurssien takia mahdollisiin haasteisiin.
[siirretään jonnekin muualle]
Microjournal:
kieli: php
alusta: symfony
tietokanta: sqlite
serverialusta: apache
kommunikaatio: http
Etherpad:
kieli: java
alusta: java
tietokanta: mysql
serverialusta: custom
kommunikaatio: http
[/]