COSS.fi

COSS.fi

Kesäkoodi 2009

Kesäkoodarit ovat tässä!

Tanu Kaskinen: D-Bus Interface for PulseAudio
Akseli Mantila: Banshee shoutcast/streamtuner
Riku Salminen: XCB and OpenGL 3.0 Libwm

Vuoden 2009 finalistit valittu!

Finaaliin valittiin:
Tanu Kaskinen
Jussi Kekäläinen
Akseli Mantila
Riku Salminen
Kimmo Virtanen

Finaali pidetään 25.3., jolloin selviää tämän vuoden Kesäkoodarit! Onnea finalisteille ja kiitoksia kaikille hakemuksen lähettäneille.

Finalistien projektiesittelyt

Tanu Kaskinen: D-Bus Interface for PulseAudio

Jos tulen valituksi, tulen viettämään kesäni kehittämällä PulseAudio-äänipalvelimeen D-Bus-rajapinnan. PulseAudio on monen suositun Linux-distribuution oletusäänijärjestelmä, ja D-Bus on laajalti käytetty protokolla ohjelmien väliseen viestintään.

Työn päämotivaatio on se, että nykyisessä protokollassa, jota asiakkaat (ääntä tuottavat tai nauhoittavat ohjelmat) käyttävät PulseAudio-palvelimen kanssa kommunikointiin, on erinäisiä ongelmia: protokolla on huono matalan viiveen saavuttamiseksi, huono käytettäväksi verkon yli, jos verkko ei ole erityisen virheettömästi toimiva, ja protokollan käyttö käytännössä vaatii erityisen C-kirjaston käyttöä, mikä ei ole kovin helppoa muilla ohjelmointikielillä kuin C:llä. Nykyinen protokolla on suunniteltu korvattavaksi D-Busilla viestipohjaisen kommunikoinnin osalta ja RTP:llä ja RTSP:llä äänivirtojen osalta.

Pelkkä D-Bus-rajapinta ei ratkaise suurimpia ongelmia, mutta se on ensimmäinen askel tavoitteen saavuttamisessa. D-Bus-rajapinnasta saadaan kuitenkin todellisia hyötyjä sinälläänkin. Se tulee helpottamaan skriptausta: D-Busin käyttö esimerkiksi Pythonilla on varsin yksinkertaista, joten kuka tahansa, joka osaa hieman Pythonia, voi tehdä pieniä skriptejä jotka kontrolloivat PulseAudiota uusilla tavoilla tai reagoivat erilaisiin tapahtumiin. Esimerkiksi yksi usein toivottu ominaisuus on mahdollisuus siirtää kaikki äänivirrat USB-äänikortille automaattisesti, kun sellainen kytketään tietokoneeseen. Tämä ominaisuus tullaan joskus toteuttamaan muutenkin PulseAudiossa, mutta sitä odotellessa skripti voisi hoitaa homman.

Jussi Kekäläinen: Reality Factory 2

Reality Factory 2 on C++:lla toteutettu, OGRE-grafiikkamoottorin ympärille rakennettu, vielä kehitysvaiheessa oleva 3D-pelimoottori. Pääasiallinen tehtäväni on suunnitella ja toteuttaa polunetsimisalgoritmi tekoälylle – käytännössä siis A* algoritmi. Itse algoritmin kirjoittamisen odotan olevan nopea prosessi, mutta sen integroiminen pelimoottoriin onkin sitten eri asia. En tiedä tarkalleen kuinka pitkälle tekoälyn hallintaa on kehitetty Reality Factory 2:ssa, mutta joudun todennäköisesti tekemään paljon hommia tekoälyn kanssa yleisesti. Tavoitteenamme Reality Factory 2 -tiimin kanssa on tehdä Dungeon Siege -tyyppinen demopeli syksyyn mennessä.

Akseli Mantila: Banshee shoutcast/streamtuner

Banshee (http://banshee-project.org/) on yksi suosituimmista ja aktiivisimmin kehitetyistä media-soittimista GNU/Linux käyttöjärjestelmälle. Se on pääasiassa kirjoitettu c#-kielellä ja pyörii mono-framework:n päällä.

Lukuisien ominaisuuksien lisäksi Banshee tukee internet-radiokanavien kuuntelua. Vakioasennuksen jälkeen radiokanavalistaus on kuitenkin tyhjä. Www.shoutcast.com-verkosivu tarjoaa tuhansia radiokanava-streameja. Modernien soittimien kuten winamp:n avulla käyttäjä voi selata shoutcast:n streameja suoraan media-soittimesta, eikä verkkosivulla surffailu ole tarpeellista.

Projektini olisi siis lisätä Banshee:hen laajennus, jonka avulla voi selata streameja suoraan media-soittimessa. Toinen ominaisuus, jonka haluan lisätä on integroida streamripper Bansheehen. Streamripper:n avulla voi nauhoittaa internet-radiostreamia mp3-tiedostoiksi.

Riku Salminen: XCB and OpenGL 3.0

XCB on matalan tason ohjelmointirajapinta X-ikkunointijärjestelmään. X-ikkunointia käytetään Linux- ja Unix-työpöytäympäristöissä. XCB:n tavoite on luoda parempi ohjelmointirajapinta korvaamaan nykyisin käytössä oleva Xlib-kirjasto. Minun kesäkoodiprojektini on toteuttaa XCB-laajennoksia, jotta on mahdollista tehdä laitteistokiihdytettyjä 3d-grafiikkaohjelmistoja X-ikkunointiympäristöön käyttäen XCB:tä ja OpenGL 3.0:aa.

Kimmo Virtanen: Moblin.org:n Fast Boot

Projekti johon haluaisin osallistua Kesäkoodin tukemana on Moblin.org:n Fast Boot. Fast bootin tarkoituksena on saada Linux käynnistymään netbook-laitteissa alle 5 sekunnissa. Tämä on myös saavutettu ja projektin tekniikat demonstroitu julkisesti toimivaksi mm. Linux Plumbers -konferenssissa.  Lisäksi se on myös tuottanut laajemmin Linux-kernelissä käyttöön otettuja päivityksiä.

Arjan van de Venin toteuttamaa Fast boot-käynnistystä pystyisi vielä nopeuttamaan käyttämällä muun muassa  Linuxin init- tyyppisen käynnistyksen sijaan Asuksen Eee-kannettavissa käyttämää Fastinit-käynnistystä. Fastinitin avoimen lähdekoodin toteutus on nimeltään Finit.

Finitin idea on korvata vakioidussa ympäristössä Linuxin normaali init/runlevel-yhdistelmä laitteen mahdollisimman nopeasti graafisen käyttöliittymään  käynnistävällä ohjelmalla. Tällä ja Fast bootilla yhdessä on mahdollista saavuttaa ”instant-on” tyyppinen käyttökokemus jossa laite käynnistyy ”heti”.

Se mitä haluaisin Kesäkoodissa tehdä on saada Finitistä ja Fast bootista laajemmalle yleisölle soveltuvan kokonaisuuden. Käytännössä tämä tapahtuisi siivoamalla Finitin koodi, dokumentoimalla sen käyttö ja integroimalla  Fast boot-Finit yhdistelmä loppukäyttäjälle soveltuvasti Ubuntuun.


    

Scroll to Top