radionica 09: Open Source 04 - pilot projekat, Vladimir Maruna, Beograd

Predavanja će pokušati da u što jednostavnijoj formi približe fenomene savremenih sistema zasnovanih na računarskoj tehnologiji sa posebnim osvrtom na Internet arhitekturu. Cilj predavanja je da omogući aktivnije učešće aktera bez informatičkog predznanja u računarskim procesima odnosno procesima koji su u relaciji sa računarskom tehnologijiom, a koji ih se po nekom drugom osnovu tiču. Cilj predavanja je dakle svojevrsna demistifiakcija računarske tehnologije.

Savremeni ambijent u računarskoj i informatičkoj industriji, najblaže rečeno obeshrabruje učešće, ako ne i onemogućuje, bilo koga bez odgovarajućeg predznanja i obrazovanja. Na taj način samo grupa "odabranih", kolokvijalno nazvanih "programeri", ima prava i mogućnosti da aktivno učestvuje u procesima koji su u relaciji sa računarskom tehnologijom, dok su svi ostali upućeni na njihovo posredovanje. Sa druge strane svi računarski sistemi se proizvode za neku konkretnu namenu, kao alat za upravljanje procesima u nekom izabranom domenu. U svakom od domena postoji domen - specifično znanje, odnosno domen eksperti, ali su oni zbog prethodnog onemogućeni i odsečeni od tehnologije i ne mogu da donesu kvalitetne odluke i sprovedu ih. Rezultat ovoga je obostrana i stalna frustracija na obe strane tehnološke granice. Stiče se utisak na strani stručnjaka u domenu, da digitalna tehnologija mnogo obećava, ali retko kada nešto od toga i ispunjava, odnosno da je cena koju je potrebno platiti daleko veća od dobiti. Sa druge strane "programeri" često zaključuju da druga strana stalno menja zahteve koje je potrebno ispuniti, što ih onemogućava da dođu do nekog upotrebljivog rešenja, a još i više da realizuju dobro i prilagođeno rešenje koje ce efikasno funkcionisati. IT /Informacione Tehnologije/ industrija je ovaj problem definisanja značenja u lokalizovanom domenu, odnosno nerazumevanja, uočila i pokušala da prevaziđe upotrebom formalnih metoda definisanja zahteva, analize tih zahteva i slično. I pored toga i dalje postoji značajan prostor za unapređivanje.

Korak koji je potrebno napraviti jeste edukacija i obrazovanje ljudi van IT domena o njegovim fenomenima, osnovnim konceptima, procesima itd. No sada se pojavljuje novi problem. Problem beskonačnog okeana informacija i znanja koje stoji pred početnikom, i koje se pri tome konstantno dopunjuje novim pojmovima i terminima. Pored toga činjenica je da ipak ne možemo i ne moramo svi biti "programeri", te da IT znanje nije preduslov za sve i bilo koje aktivnosti.

Srećom postoji i "back door" koji nudi potrebna osnovna znanja o IT tehnologiji, a koja pri tome ne zahteva od pojedinca da provede pet godina studiranja i proučavanja i pamćenje ogromne količine pojmova i termina. Preduslov je da se odustane od pokušaja saznavanja, pamćenja i repeticije pojavnog, jednostavnog kliktanja po aktivnim kontrolama na ekranu, i pokuša se sa saznavanjem i razumevanjem osnovnih pojmova na kojima se bazira savremena računarska tehnologija.

Sadašnje stanje IT prakse
Naime, celokupno znanje i praksa IT se bazira na konačnom skupu koncepata koji su formirani pre više godina, ili čak desetina godina, koji su veoma jasni, jednostavni i mogu se lako približiti ljudima koji su van struke. Odmah se postavlja pitanje kako to da se ovi opisi pomenutih koncepata ne mogu naći na internetu, odnosno zašto je tako teško doći do njihove jednostavne definicije. Uzroci ovakvog stanja su mnogobrojni:

- fascinacija tehnologijom, kojoj su podložni svi od najsvežijeg početnika do iskusnog "programera",
- fargmentacija znanja kao rezultat velike brzine i razvoja,
- autizam IT industrije koja nema velikih interesa od širokog obrazovanja,
- autizam stručnjaka u domenu koji su zadovoljni svojim položajem i pri tome čak uočavaju pogodnosti u trenutno rasporedu snaga i tome slično.

Sugestija autora ovih predavanja je da svi moraju pokušati da shvate neke osnovne koncepte teorije i prakse računarstva kako bi potom u nekoj konkretnoj situaciji po potrebi svoje znanje dopunjavali sa lokalizmima i informacijama nastalim na radu na nekom konkretnom sistemu.

OSNOVNE OBLASTI
U tom smislu smo izabrali sledećih pet bazičnih oblasti kao dobar početak za savladavanje kompleksnosti IT industrije:

1. Mrežni protokoli
2. Internet Arhitektura
3. Algoritmi i protokoli zaštite
4. Objektno Orijentisane metodologije i programiranja
5. Fenomen otvorenog koda

1. Mrežni protokoli
Mreža je skup medusobno povezanih računarskih sistema. Povezivanje mora da obezbedi funkciju razmene podataka i shodno tome može da podrži odgovarajuće nivoe komunikacija između njih uključujući : fizički, nivo podataka, mrežni nivo, trasnsportni nivo, nivo sesije i nivo aplikacija. Nivou su hijerarhijski organizovani tako da je fizički nivo najniže hijerarhije. Za svaki od nivoa su definisani odgovarajući protokoli koji određuju način komunikacija tog nivoa sa nivoom iznad, nivoom ispod i sa istim nivoom na računarskom sistemu sa kojim se komunicira. Protokolom se definišu struktura poruka, dinamika razmene, procesi uspostavljanja i raskidanja komunikacija i tome slično. Protokoli su javno dobro i definisani su standardima. Pojedini standardi se mogu kombinovati tako da se postigne tražena puna funkcionalnost mreže. Racunarska tehnologija nudi i protokole i standarde za povezivanje (lokalnih) mreža u zajedničku mrežu. Internet je primer jedne globalne mreže mreža i shodno tome on se bazira na protokolima za povezivanje mreža.
Predavanje ima za cilj da definiše mrežu i elemente mreže, mrežne protokole, OSI model dekompozicije nivoa u mreži, osnovne hijerarhijske organizacija i povezivanje mreža (Internet), rezolucija adresa, globalni adresni prostor, osnovni elementi URL-a, URN-a, URI-ja i HTTP-a.

2. Internet Arhitektura
Povezivanje računara je potreban uslov za realizaciju kompleksnih računarski sistema za podršku ali nije i dovoljan. Sledeći korak je podela uloga i dužnosti u sistemu, povezivanje tako uočenih aktera, realizacija potrebnih programskih komponenti i njihova saradnja u realizaciji osnovnih funkcija celokupnog sistema. Podelom uloga se uvodi odredeni nivo međusobna nezavisnosti programskih komponenti pri čemu se misli na nezavisnost i realizacija i funkcionisanja. Nezavisnošću se povećava robustnost sistema na izmene i probleme u funkcionisanju, omogućava se upotreba komercijalnih komponenti, postiže se tehnološka nezavisnost od proizvođača računarskih alata i razvojnih sistema i slično.
Predavanje ima za cilj da definiše osnovne programske aktere savremene Internet arhitekture. Predavanje prikazuje dekompoziciju na nivoe i njihovu distribuciju u ambijentu počevši od već zastarelih main-frame računara do današnjih arhitektura kao što su MVC i J2EE. Pored toga u okviru predavanja će poseba pažnja biti posvećena elementima WWW arhitekture.

3. Algoritmi i protokoli zaštite
Jedno od polja koje je trenutno prilično zanemareno, a pri tome veoma značajno jeste i zaštita računarskih sistema. Danas se zaštita svodi na instalaciju anti virusnih programa i njihovo povremeno ažurianja. Smatramo da je problem zaštite i privatnosti jedan od najvažnijih u vremenu koje je pred nama te stoga smatramo da se svaki korisnik računarske tehnologije mora upoznati sa algoritmima koji su na raspolaganju kao i procesima koji se mogu koristiti radi zaštite ličnih podataka i privatnosti. Sistem zaštite se sastoji od protokola zaštite i šeme enkripcije. Osnovna namena svakog sistema zaštite je obezbedi poverljivost i integritet podataka, autentifikaciju i identifikaciju korisnika, neporecivost aktivnosti aktera bezbednost komunikacije. Za svaki sistem zaštite se mogu evaluirati podržani nivo zaštićenosti, performanse i jednostavnost realizacija. Pri tome se mora stalno imati u vidu da ne postoji idealni i apsolutni sistem zaštite odnosno da je dobar onaj sistem koji štiti zadate resurse u zadatom vremenskom intervalu i od pretpostavljenog napadača sa ograničenim vremenskim i procesnim mogućnostima.
U okviru predavanja će biti definisani sistem zaštite, šeme enkripcije, atributi evaluacije sistema zaštite, protokoli razmene poruka i ključeva i slično. U okviru predavanja će biti prikazani i neki osnovni načini napada na sisteme zaštite, a posebno poglavlje će se baviti slonamernim programima i virusima. I na kraju posebna pažnja će biti data savremnim algoritmima i protokolima kao što su DES, RSA, PGP i HTTP(s).

4. Objektno orijentisano programiranje i metodologije
Savremeni razvojni sistem u IT idnustriji su danas bazirani na OO paradigmi. OO paradigma uključuje i procese analize, dizajna i implementacije. Zasnivaju se na teoriji objekata koja uključuje proces njihovog uočavanja u ambijentu, njihove klasifikacije u klase objekata, atribucije i povezivanja sa drugima u domenu. Teorija OO definiše više vrsta relacija između objekata uključujući specijalizacija, generalizacija, kompozicija, agregacija, asocijacija i slično. U okviru računarske industrije su oduvek postojali pokušaji da se formalno definišu i specificiraju elementi domena ali se tek u skorije vreme sa pojavom UML-a i UP-a došlo do rešenja koje u velikom meri primenljivo i u praksi. UML je unificirani jezika za opis računarskih sistema i koristi se za opis, specifikaciju, definiciju i dokumentaciju artefakata domena, UP je sveobuhvatna metodologija u okviru koje su definisani sve faze, procesi, akteri i artifaktni koji se koriste ili nastaju u procesu realizacije nekog računarskog sistema kao rešenja ne neki realnu potrebu korisnika. Smatramo da su svakom potrebna barem osnovna znanja o prethodnom kako bi se mogao aktivno uključiti u proces izrade.
Predavanje prikazuje osnovne elemente OO paradigme, UML-a i elemenata UML-a kao i sve osnovne elemente UP-a. U okviru predavanja će biti prikazan jedan ceo ciklus razvoja računarskog sistema sa ciljem da se učesnicima omogući da sagledaju kompleksnost postupka ali i najvažnije tacke, u vremenu i prostoru, u kojima moraju donositi odluke ako žele da proizvedeno odgovara njihovim zahtevima.

5. Fenomen otvorenog koda
Fenomen otvorenog koda ne treba vezivati samo za računarsku tehnologiju iako u njoj ima snažan izvor. Autor smatra da ovaj "open source" prevazilazi okvire računarske tehnologije i da se može primenjivati i primenjuje se i u drugim granama kao što su muzička i video produkcija i slično. Pored toga autora smatra da se ovaj fenomen mora posmatrati sa više aspekata uključujući pravni, ekonomski, organizacioni, socijalni i tome slično. "Open source" je danas veoma popularan i često se zagovara kao rešenje ali se pri tome treba stalno zanemaruje da on zahteva da se njegovi korisnici do izvesne mere moraju računarski obrazovati. Ovo je razlog zbog koga su uz "open source" vezane i mnoge kontroverze i frustracije. Da bi se to izbeglo u budućnosti odnosno da bi se omogućilo da korisnici imaju veće koristi od njega potrebno je dodatno proučiti njegove prednosti i nedostatke.
Predavanje će pokušati da prikaže sve aspekte otvorenog koda i to ne samo u računarskoj industriji nego i u ostalima. Pri tome će biti prikazana njegova istorija, u četiri faze, kako bi se demistifikovalo uobičajeno shvatanje da je on savremena tvorevina. U okviru predavanja će posebno biti razmatrani pravni, organizacioni i ekonomski aspket. Biće prikazani neki elementi savremene situacije u industriji gde ćemo pokušati da damo odgovor zašto je "open source" sada toliko važan.

Primeri:
Tam tam - softver za web kolaboraciju
Aleksandar Erkalovic, Multimedijalni Institut mi2, Zagreb, Hrvatska

Tamtam je gnu/gpl softver za web kolaboraciju koji razvija kreativna laboratorija Multimedijalnog instituta/mi2 iz Zagreba. Razvijan je na osnovi wikiwiki koncepta, ali je prvobitna ideja proširena i prilagođena lokalnim potrebama. U više od godinu dana aktivnog razvoja i korišćenja, tamtam se pokazao kao alat s kojim je izrazito lako uređivati i održavati web stranice na kojima radi više ljudi. Tamtam se pokazao kao dobra platforma za dinamičke i nestruktuirane projekte (web stranice koji nemaju od samog početka čvrstu strukturu već se razvijaju s vremenom). Zasnovan na nekoliko pravila koja se lako pamte, tamtam omogućuje skoro svakome da upravlja i organizuje sopstvenu web stranicu.

tam tam pages: http://tamtam.mi2.hr/tamtamdev/
multimedia institut: http://tamtam.mi2.hr/about/
wikiwiki: http://c2.com/cgi/wiki
http://coyote1.kein.org:20000 i
http://mapmyths.rixc.lv/

SLIX - Slovenačka distribucija Linux-a
Ljubljana digital media lab - Ljudmila, Ljubljana, Slovenija

Slix je distribucija Linux-a koja olakšava upotrebu računara. Ljubljana digital media lab - Ljudmila iz Ljubljane napravila je verziju na slovenačkom jeziku, omogućivši korišćenje open source/free software aplikacija na njihovom maternjem jeziku kao i olakšanu upotrebu putem ikonica i tzv. user-friendly okruženja. Nudi veliki broj programa: za oblikovanje teksta /AbiWord, Open Office.org, Quanta Plus,../, grafika, programi za pravljenje prezentacija, tabele, programi za obradu zvuka, browser-i /programi za korišćene Interneta/, čime obuhvata veoma široku grupu korisnika, kao i mogućih modela korišćenja.
Upotreba Slix-a je vrlo jednostavna, prebacivanje sadržaja CD-a na hard disk računara nije neophodno.

Zahtevi:
Minimalni zahtevi: računar PC Pentium, procesor 450Mhz, 128Mb RAM memorije, sa CD ili DVD, tastatura, monitor, miš. Preporučuje se: tvrdi disk, USB Flash disk (kljuc), CD-R, procesor 2Ghz ili veći, 512Mb RAM.

Ljubljana digital media lab - Ljudmila, http://www.ljudmila.org
SLIX, http://slix.ljudmila.org
Slo-Tech Linux, http://slo-tech.com/linux/.

Vreme dešavanja: oktobar 2004.
Mesto dešavanja: Centar za nove medije_kuda.org, Brace Mogin 2, 21000 Novi Sad, [email protected], http://kuda.org

Autor teksta i predavač: Vladimir Maruna, Beograd

Radionicu pomogao: Fond za otvoreno društvo, www.fosserbia.org

kuda.produkcija