Razvoj i primjena intranet aplikacije za grupni rad korištenjem Open Source-a

Razvoj i primjena intranet aplikacije za grupni rad korištenjem Open Source-a

Dragica Popov, Dobrica Pavlinušić

Pliva d.d., Prilaz Baruna Filipovića 25, Zagreb
tel: 01/3781-855, 3781-209
e-mail: dragica.popov@pliva.hr, dpavlin@rot13.org

Abstract

Brzina primjena novih tehnologija, kao odgovor na zahtjeve korisnika, najveći je problem. Vrijeme potrebno za izradu aplikacije koja treba podržati rad grupe ljudi bilo je vrlo kratko. Zbog toga smo se u našem slučaju odlučili za razvoj aplikacije bazirane na dostupnom Open Source rješenju. U procesu razvoja i primjene prilagodili smo ga našim potrebama. Krajnji rezultat predstavlja novu aplikaciju koja je zaživjela u samo nekoliko tjedana na zadovoljstvo korisnika.

Sama aplikacija je dostupna u izvornom kodu i predstavlja evoluciju jednog rješenja koje je završilo potpuno novim projektom.

1  Zahtjevi korisnika

Kao i mnogi projekti, i ovaj je bio motiviran specifičnim potrebama naših korisnika: željeli su sučelje, zasnovano na pristupu iz preglednika (browser-a) u kojem bi mogli na siguran način razmjenjivati dokumente.

Promišljanje o tome problemu pokazalo je da sličnih rješenja, ili komponenti rješenja, već postoje kako na komercijalnom tržištu tako i u zajednici koja podržava Open Source rješenja.

Zahtjev za sigurnošću podataka nametnuo je donekle i način rješavanja problema: nije bilo moguće koristiti djeljene diskove (npr. korištenjem SMB protokola koji upotrebljava Microsoft Networking ili NFS-a) a niti protokole za prijenos datoteka koji ne podržavaju kriptiranje (npr. ftp ili http).

2  Ograničenja pri izboru rješenja

Uvažavajući zahtjeve sa sigurnošću pri prijenosu podataka odlučili smo se za korištenje SSL/TLS šifriranja, tj. secure verzije http protokola nazvane https. Čitatelji koje više interesira siguran prijenos podataka korištenjem SSL/TLS-a mogu potražiti više detalja u [].

Drugi značajan faktor kod odabira rješenja je zahtjev da se sučelje mora izvršavati na intranet poslužitelju koji je Alpha server pod Digital UNIX-om. To je smanjilo izbor alata za realizaciju na perl1 ili php2 (koji je podržan preko Apache web servera na tom poslužitelju).

Projekt je trebao biti gotov u što kraćem vremenskom roku, a zbog dužine odlučivanja oko aktiviranja sredstava nije postojala mogućnost da se pokrene investicija za nabavku komercijalnog rješenja. Sve to nas je dovelo do ideje da potražimo Open Source rješenje koje bi moglo zadovoljiti naše potrebe.

2.1  Odabir rješenja

Kako bi smo odabrali odgovarajuće rješenje počeli smo pretraživanje na najpoznatijem repozitoriju projekata koji su Open Source3 freshmeat.net. Nakon duže evaluacije raznih rješenja iskristalizirala se situacija u kojoj smo mogli odabrati između dva rješenja. Prvo je bio projekt nazvan AnyPortal4 [], pisan u php-u koji omogućuje manipulaciju sa datotekama, mapama i jednostavno editiranje tekstualnih datoteka korištenjem sučelja koje donekle podsjeća na pretraživače datoteka kao što su Windows Explorer i Windows Commander. Drugi mogući izbor je bio Content Management System [] koji omogućava mnogo veću kontrolu nad dokumentima i potpunije zadovoljava naše potrebe jer podržava check-in/check-out5 ciklus editiranja dokumenata, bilješke i višekorisnički rad.

Nažalost, CMS se nije pokazao kao upotrebljiv, što zbog svoje male verzije (0.02), što zbog brzine6, što zbog nedorađenog sučelja. Zbog toga nam je izbor ostao AnyPortal koji je, međutim, trebalo dosta proširiti.

Moramo napomenuti da su korisnici bili naklonjeni ideji da jedno vrijeme koriste sučelje koje nije do kraja dovršeno ili koje se usavršava za vrijeme korištenja ako ga mogu početi brzo koristiti. Pretpostavljamo da je to slučaj u većini projekata koji su potaknuti od strane korisnika7.

2.2  Potrebna proširenja

Nakon što smo shvatili da ne možemo koristiti CMS kao osnovu za naš projekt, shvatili smo da ćemo morati većinu mogućnosti CMS-a dodati u AnyPortal. Mogućnosti su dodavane po redoslijedu koji je u tom trenutku bio logičan (prema međuovisnostima), prema jednostavnosti implementacije i prema najvećim potrebama korisnika. Tako je redoslijed dodavanja mogućnosti bio slijedeći:

  1. podrška za korištenje sigurnog (https) protokola
  2. podrška za više korisnika (login/password http autorizacija)
  3. stvaranje sigurnosnih kopija dokumenata u slučaju da se isti dokument mora prebrisati
  4. zapisivanje promjena svake datoteke
  5. podrška za vraćanje obrisanih datoteka
  6. dodana podrška za promjenu imena datoteke (stvarno je čudno što originalno sučelje nije imalo ovu mogućnost)
  7. podrška za kratke bilješke uz svaku datoteku
  8. podrška za check-out/check-in editiranje dokumenata
  9. podrška za praćenje svih dokumenata u sustavu (potrebno da bi se ispisale promjene u zadnjem danu)

3  Vrijeme potrebno za izradu promjena

Moramo napomenuti da je vrijeme implementacije bilo vrlo kratko. Promjene označene rednim brojevima 1 do 7 napravljene su u roku od samo 4 dana, dok su promjene do 8 napravljene u roku od tjedan dana. Zadnja promjena napravljena je samo 4 tjedna nakon početnog korištenja aplikacije, a na zahtjev korisnika (više o tome možete pročitati na strani , u poglavlju )

4  Iskustva korisnika

Nakon početne prezentacije sučelja, korisnici su bili zadovoljni i predložili nekoliko poboljšanja koja bi njima u svakodnevnom korištenju bila korisna:

Prva točka iz popisa je implementirana relativno brzo nakon zahtjeva korisnika. U vezi druge točke dolazimo do ograničenja web preglednika koji ne omogućava upload cijele mape nego tek više datoteka istovremeno (potrebno je naglasiti da trenutno nije moguće poslati više od jedne datoteke). Treća točka još uvijek čeka svoj razvoj jer zahtjeva veće promjene u sučelju koje nisu sasvim u skladu s namjenom i realizacijom sučelja (ista funkcionalnost može se postići korištenjem nntp poslužitelja i news grupa).

5  Pokretanje novog projekta

U toku razvoja programske podrške koja je dostupna kao Open Source često se dešava da se jedan ili nekoliko ljudi uključenih u razvoj odvoje od originalnih autora i naprave svoju verziju programa (tzv. fork-anje projeka). To je uobičajeno dozvoljeno ako projekt promjeni ime, ali se ne smatra dobrom praksom jer se stvaraju dvije verzije istog programa koje više međusobno ne dijele unapređenja. Upravo zbog toga, bili smo jako neodlučni da li pokrenuti novi projekt koji bi se bavio ovom našom verzijom sučelja zasnovanom na check-out/check-in principu.

Da bi smo to odlučili, kontaktirali smo originalnog autora, Stefana Wiesendangera sa promjenama u njegovom sučelju koje ga još uvijek nisu pretvorili u content management tool što je bio naš cilj, kako bi i njegov projekt mogao iskoristiti naš razvoj. Također smo se konzultirali da li bi njegov projekt želio postati content management ili da napravimo svoj s takvim mogućnostima.

Stefan je odgovorio da se zahvaljuje na promjenama, ali da do jeseni (e-mail je napisan u srpnju) neće imati vremena raditi na svome projektu. Također se složio s idejom da nova verzija bude zaštićena GPL licencom. Kako nismo željeli čekati do jeseni sa objavljivanjem svojih promjena, odlučili smo svoj rad nastaviti na projektu koji će AnyPortal sučelje pretvoriti više u content management.

Svoj smo projekt nazvali Document Management i ponudili ga Open Source zajednici sa kompletnim izvornim kodom na adresi http://www.rot13.org/dpavlin/docman.html. Obavijest o našem projektu smo objavili na freshmeat-u gdje smo i našli originalni projekt.

6  GPL Licenca

AnyPortal je distribuiran pod licencom koja nije sasvim precizno definirana. Nakon što smo počeli raditi velike promjene postavilo se pitanje pod kojom licencom želimo te promjene vratiti zajednici. Originalni tekst licenci u izvornom kodu programa je bio:

Copyright 1999 by John Martin d/b/a www.ANYPORTAL.com

All Rights Reserved.

This software is freeware and is not in the public domain.

You are hereby granted the right to freely distribute this software as long as this copyright notice remains in place.

This is the PHP port: AnyPortal(php)-0.1

PHP version 2000 by Stefan@Wiesendanger.org

No Rights Reserved. What for, anyhow ?

Iz tog teksta se može zaključiti da je autor originalnog AnyPortala (pisanog u ASP-u) John Martin odlučio sebi zadržati sva prava i staviti source u freeware, dok je Stefan Wiesendanger odlučio odreći se svih prava. Zbog zaštite našeg rada, željeli smo uzeti licencu koja je ipak malo više formalna, a istovremeno ne ograničava prava korisnika. Izbor je bio manje-više jednostavan: GNU Public Licence. Kontaktirali smo autora PHP verzije, Stefana koji se složio s našim izborom da licenca bude GPL. Time smo promijenili licencu pod kojom se distribuira originalni kod sa našim promjenama8. Rezultat toga je da će sve promjene koje će eventualni korisnici napraviti na našem kodu biti vraćeni ponovo autorima i zajednici i da će na taj način cijeli projekt umnogome profitirati.

7  Reference

  1. Željko Hutinski, Dobrica Pavlinušić: Security policy implementation within distributed organizations confidential data transfer, presented at CIS 2000, Portorož
    http://www.rot13.org/dpavlin/papers.html
  2. phpAnyPortal web stranice
    http://www.alief.com/anyportal/
  3. Content Management System web stranice
    http://cms.sourceforge.net

Footnotes:

1perl je višeplatformski skriptni programski jezik o kome se više detalja može naći na www.perl.org.

2php je skriptni jezik koji se piše unutar html dokumenata.Izvršava se dinamički na poslužitelju u trenutku kada korisnik zatraži stranicu sa php kodom. Više podataka o php-u možete naći na www.php.net.

3Open Source je skupni naziv za niz licenci (od kojih je najpopularnija GPL - GNU Public Licence) koje jamče korisnicima mogućnost dobivanja i mijenjanja izvornog koda. GPL kao najpoznatiji predstavnik ima i klauzulu po kojoj se promjene izvornog koda moraju vratiti ``natrag'' zajednici, iako to nije potrebno ako se promjene koriste samo od strane osobe koja je promjene i napravila.

4Striktno govoreći, radi se o projektu phpAnyPortal, a ne o njegovoj originalnoj verziji AnyPortal koja je pisana u Active Server Pages (asp-u). Međutim, u ovom ćemo članku php verziju zvati jednostavno AnyPortal.

5check-in/check-out procedura je potrebna kada više korisnika istovremeno radi na istim datotekama. Korisnik koji želi promijeniti dokument prvo napravi svoju lokalnu kopiju (check-out) i radi promjenje na njoj. Za to vrijeme je svim ostalim korisnicima datoteka zaključana da se ne bi desilo da korisnici koriste staru verziju datoteke ili da dva korisnika počnu editirati istu datoteku. Nakon što korisnik koji je napravio check-out završi editiranje on vraća novu verziju datoteke (check-in) na server.

6perl se izvršava kao cgi program koji pokreće poslužitelj kod svakog zahtjeva što je bitno sporije od php-a

7To ne znači da smo korisnicima davali beta verzije sučelja da bi pronašli greške. Razvoj sučelja rađen je na drugom računalu i tek kada je sučelje bilo stabilno korisnici bi dobili novu funkcionalnost. Međutim, taj upgrade rađen je skoro dnevno.

8Neki bi upotrijebili riječ ``zarazili'' jer se kod koji se jednom stavi pod GPL ne može više povući iz GPL-a. Ovo ograničenje ne važi za novije verzije koda, ali kod koji je jednom bio pod GPL-om ne može biti ponovo licenciran nekom restriktivnijom licencom tako da GPL više na njega ne vrijedi. Samo originalni autor može povući kod iz GPL-a i to samo novije verzije.