Mjesečne arhive: May 2008

Problemi u zemlji malih zelenih (laptopa)

XOOLPC projekt u zadnje vrijeme zapada u sve više problema i kontroverzi. Osim ponekih povećanja cijene i kašnjenja (što se događa svakom softverskom i/ili hardverskom projektu, do te mjere da se ljudi mogu hvaliti ukoliko im se dogodi da nije bilo kašnjenja), kao i problemima s Give 1 Get 1 projektom cijelo vrijeme vuče se i priča o Windows/OLPC kombinaciji.

Unutar samog tima zaduženog za razvoj OLPC-a također izgleda dolazi do trzavica, što je rezultiralo u ostavki, većinom zbog neslaganja sa novim smjerovima u kojima se OLPC kreće. Pred par dana je Ivan napisao i poprilično oštar post o svom viđenju stanja u OLPC-u, nekih detalja iz prošlosti projekta i ljudi iza njega, te mišljenje o budućnosti istog (za balansirani pogled ipak bacite oko i na Ivanov nešto raniji i optimističniji post).

Njegov post podigao je prilično prašine i backslasha, a par dana saznali smo i (po mom mišljenju) razlog takve oštrine: Windows službeno dolazi na OLPC. Pa nek si ljudi misle

Jedan od često spominjanih razloga za probleme OLPC projekta je da je projekt previše zagrizao te da ciljevi koje si je postavio naprosto nisu mogući. Ako se uzme u obzir tehnološki napredak koji je nuspojava projekta (npr. zanimljiva pobošljanja na lcdu, bitfrost sigurnosna arhitektura, …) i marketinški/ekonomski utjecaj (mislim da se može reći da je XO izravna inspiracija za eeePC i masu drugih najavljenih ultra-mobile i ultra-jeftinih laptopa), projekt je već sada uspio.

A što je sa Sugarom, inovativnim sučeljem OLPC-a? Sugar neće umrijeti niti bačen u prvi plan. Ekipa iz OLPC-a uvjerava nas da se na tome radi punom parom i da činjenica da će i Windowsi biti dostupni na OLPCu (kao i činjenica da će se većina ljudi odlučiti za Windowse kad već može) ne znači da će Sugar pasti u zaborav. A čak i ako OLPC projekt opet promjeni mišljenje, više nije jedini koji se bavi Sugarom – bivši prvi čovjek za OLPC software pokrenuo je Sugar Labs organizaciju koja će se baviti daljnjim razvojem sučelja (za nadati se da neće raditi neki svoj fork nego da će surađivati sa OLPC projektom, ali nikad se ne zna).

A za slučaj da vam u ovom postu nije bilo dovoljno informacija, slobodno skoknite do Ars.Technice gdje možete pronaći još mnoštvo informacija te odmjerene (rijetkost danas kad su svi pro ili anti nečeg u sklopu projekta) komentare OLPC teme.

Workaround za Firefox3b5 probleme u Linuxu

Ukoliko koristite zadnju betu Firefoxa3 na Linux sustavu, vjerojatno ste već primjetili poprilično naporan fsync bug kod kojeg se Firefox svako malo smrzne i onda čekate par sekundi. Stvar je još više izražena na AJAXoidnim stranicama, a što više tabova imate otvoreni, još gore.

Problem je zapravo u nizu nesretnih događaja:

  1. Novi Firefox koristi novi SQLite za spremanje konfiguracije, settingsa, cookiea, historya i svega ostalog. Dakle, svako malo se nešto (recimo cookie ili history entry) zapisuje u bazu.
  2. Novi SQLite ima odličan mehanizam zaštite podataka, pri kojem nakon svake promjene podatka u bazi pokreće fsync() syscall kako bi kernelu dao do znanja da je podatak bitan i da ga odmah zapiše.
  3. U novim Linux kernelima je fsync() iz nekog razloga izuzetno spor.

Tko je točno tu kriv teško je reći (slično kao i kod Debian vs. OpenSSL fijaska neki dan), ali kombinacija svega ovoga je neupotrebljivost Firefoxa.

Ukoliko želite žrtvovati sigurnost svojih Firefox cookiea, historya i ostalih settingsa za uopće mogućnost korištenja Firefoxa, u komentarima buga se može naći workaround. Upravo isprobao, stvar radi. Samo, disclaimer, ako to koristite, budite svjesni da krah sustava u nezgodnom trenutku može značiti korupciju podataka.

Kako znate da je bloganje u Hrvatskoj mainstream?

Jednostavno – kad o toj temi poču nicati grafiti i črčkarije po zidovima.

blog grafit
Viđeno na zidu zgrade jednog novozagrebačkog kvarta

Predinstalirani Windowsi – glavni razlog piratstva na novim računalima

Tehnološki orjentirani medijski portali prenose najnovije istraživanje BSA/IDC o padu softverskog piratstva u Hrvatskoj, doduše za mizernih 1%. Pad softverskog piratstva, bar kakav takav, je dobra stvar (to govorim kao netko tko živi od izrade softvera).

Ono što mi je zanimljivo a spomenuto je usputno je da je “prodaja računala s Linuxom jedan od glavnih razloga visoke stope piratstva” (parafrazirano uz očuvanje konteksta, original vidjeti recimo na BUG Online). Povod ove izjave je vjerojatno činjenica da ljudi kupe računalo s predinstaliranim Linuxom, vesele se smanjenoj cijeni u odnosu na Windows konfiguraciju, pregaze ga uredno piratskim softverom i uživaju. Dakle stvar stoji.

Ali nisam baš siguran da bih predinstalirani Linux nazvao “razlogom” za visoku stopu piratstva. Prije bih rekao da je visoka stopa piratstva razlog predinstaliranom Linuxu, upravo zato da prodavači PC računala mogu imati pokriće zašto nisu predinstalirali Windowse.

S druge strane, moglo bi se reći da su upravo predinstalirani Windowsi jedan od glavnih uzroka piratstva.

Naime, kad prosječan kupac kupi računalo s (legalnim) Windowsima, koji su mu prvi koraci? Instalirati nelegalni MS Office, Adobe Photoshop (ako ne usput i cijeli CS3 i još set Corelovih alata da se nađe), gomilu shareware alata koji se nikad ne registriraju, raznorazne igre koje obično koštaju po parsto kn komad… Uzmimo samo MS Office (Basic/CRO ~1500kn) i Adobe Photoshop CS3 (~7000kn), što košta oko 8000kn. Nasuprot tome, npr Windows Vista Ultimate OEM (kojeg recimo dobije predinstaliranog) dođe oko 1500kn (znam da ima milijardu Vista verzija, ovu sam izvukao iz HGSpotovog cjenika), što je netto “piratluk” od 6500kn, minimalno.

S druge strane, Linux korisnik ekvivalentnu funkcionalnost (da, sad o tome možemo diskutirati, ali to nije poanta ovog posta – grafički dizajneri možda ne misle da je GIMP usporediv s Photoshopom, ali je za prosječnog Juru ili Šteficu sasvim ok; OpenOffice ditto) dobije odmah u paketu, te ne mora piratizirati dodatan softver. Netto “piratluk” 0kn.

Tako da – ukoliko želite svesti stopu piratstva na 0, samo svima instalirajte Linux i educirajte ih kako ga se koristi. Opcionalno, možete i svima prodati Maca jer Appleovi korisnici iz nekog razloga imaju fobiju prema piratluku i puno se radije odvajaju od hrvatskih velikana kad to zatreba. Zašto? Pojma nemam. Možda zato jer misle da za te novce i dobiju nešto…

(PS. Napomena: ovdje pričam o privatnim korisnicima. Firme kojima iz bilo kojih razloga stvarno treba MS-ov (ili bilo čiji) softver i imaju razloge zašto su na njemu, imaju para da to i plate. Ali te firme ionako ne uzimaju masovno Linux računala pa onda piratiziraju Windowse po njima.)

Distribuirana tvrtka – da ili ne?

Na ovogodišnjem Web.Startu imao sam priliku reći par riječi o radu u distribuiranim tvrtkama te podijeliti svoja iskustva iz dvije tako organizirane tvrtke (Collabora i Rei).

Za one koji su propustili ovogodišnji Web.Start (nemate izlike) ili su bili tamo ali su propustili moje predavanje (imate izlike), “ukratko” ću ga prepričati u ovom postu. (Edit: Berislav se pred dvije godine dotaknuo iste teme sa malo drugačijim zaključcima)

Već je sasvim normalno da se na Webu informiramo, igramo (neki i žive :), kupujemo, zabavljamo pa i radimo. Raditi preko neta nije ništa novo, bilo kao telecommuting (gdje zapravo imamo mjesto na poslu, ali ponekad možemo i od kuće), ili kao outsourcing (kod kojeg se dobro definirani zaokruženi zadatak daje udaljenom timu i samo se čeka krajnji rezultat). No, što ako cijelo vrijeme radimo od kuće (ili od bilo gdje drugdje), ali kao dio tima a ne udaljeni kooperant?

Prednosti

U takvoj situaciji tvrtki ne treba nikakav prostor niti ured, što može poprilično smanjiti troškove, pogotovo ako je tvrtka malena ili tek započinje s poslom. Osim toga, izbjegavaju se sve moguće komplikacije sa putovanjem na posao (gužve, izgubljeno vrijeme, troškovi, itd), a u krajnjem slučaju tvrtka niti nije ograničena na rad sa ljudima iz neposredne blizine (niti je itko primoran na selidbu).

Primjer za ovo su i već spomenute dvije tvrtke. Collabora doduše ima urede, ali su i oni na raznim lokacijama, velik dio ljudi radi od kuće, i ne postoji nikakva zemljopisno-uvjetovana podjela na organizacijske cjeline. Rei također ima radnike iz različitih krajeva (Hrvatske, ovaj put :), a komunikacija i interakcija se odvija preko ‘neta.

Problemi

Naravno da ima i problema. Jedan od prvih koji pada na pamet je kako raditi management ljudi ako nitko nije “tu”, odnosno kako provjeriti/natjerati ljude da rade. Ako ljudi zabušavaju, istina je da je to nemoguće provjeriti preko neta (niti je moguće provjeriti koliko točno sati rade), ali ista stvar je i sa radom u uredu; kad se netko bavi kreativnim poslom nije baš moguće zaviriti mu u glavu i provjeriti radi li sad ili razmišlja o tome gdje će na more slijedeće ljeto..

S druge strane, realan problem je motivacija (ili nedostatak iste). Kako svatko radi solo od kuće, ponekad se teško natjerati obaviti neki naporni dio posla, ili naprosto započeti sa samim poslom. Kako nema suradnika koji su upravo krenuli raditi (što bi bila neka motivacija da se i mi primimo posla), ali zato ima svih mogućih distrakcija i opravdanja, od “malo TV-a” do “mogu sat vremena dulje spavati, nadoknadim popodne”. Ovo sa “nadoknadim kasnije” može biti prilično loše, jer si neki broj radnih sati lako razvučete preko cijelog dana i još napravitte manje nego što biste napravili da ste se jednostavno primili posla.

Kod rada kod kuće, pogotovo ako se radi u istom prostoru u kojem se i živi, može biti dosta teško povući granicu između rada i života. Ja osobno cijelo vrijeme osciliram između dviju krajnosti (a switch se događa obično kad rokovi stisnu, ili kad puknem od preopterećenosti).

Zato, ako radite/ćete raditi od doma, svakako preporučam da si složite neki prostor koji će biti samo “radni” (garaža, tavan, soba, ili bar kut sobe), i koji koristite samo kad ste u “radnom modu”, kako bi si na taj način povukli psihičku granicu između “na poslu” i “kod kuće”. Po mom iskustvu, potrebna je.

Komunikacija

Mislim da je najveći problem distribuiranog rada ipak komunikacija (odnosno, opet, nedostatak iste). Osim nekakve formalne komunikacije mailovima, i poslovnim sastancima, puno više komunikacije u svakodnevnom radu otpada na neformalnu komunikaciju: čavrljanje u pauzama, brza pitanja vezana uz posao, razgovori i opuštanje za vrijeme ručka ili nakon posla, i slično. Osim što se velika količina informacija prenosi i na ovakav način, nuspojava je i da se ljudi koji zajedno rade tako i osjećaju.

Za razliku od toga, kad se sva komunikacija odvija preko neta, puno teže je kreirati to zajedništvo i motivirati adhoc komunikaciju. Jedan od po meni dobrih načina je korištenje IRC-a, ili nekog sličnog multiuser text chata. Svi u tvrtki dođu na isti kanal, koji onda može služiti kao neki lounge, soba za sastanke i mjesto za neobavezno čavrljanje, sve u jednom. Dodatna prednost IRC-a je i da je moguće logirati svu komunikaciju, pa se tako nakon sastanaka ili usputnog spominjanja nečeg vezanog uz posao uvijek može naći tko je što rekao, što smanjuje mogućnost zabune, a i ne treba dodatno voditi bilješke sa sastanaka ;-)

Za 1:1 komunikaciju dobra stvar je i neki drugi IM, recimo GTalk ili Skype. Pritom je meni osobno draža text komunikacija zbog manje mogućnosti zabune (ako su obje strane navikle na text komunikaciju :) i jednostavnije mogućnosti logiranja, ali ponekad su i audio pozivi zgodniji.

Ono sa čim nikako nisam imao dobrih iskustava su bilo kakvi oblici telekonferencija. Kod voice konferencija ukoliko ima više ljudi (što je i poanta) stvar postaje prilično zbunjujuća, jer nema vizualnih hintova kad će tko reagirati ili tko bi što želio reći, pa u takvim slučajevima uvijek mora postojati neki moderator koji naposlijetku naizmjence poll-a sve druge kako bi i oni nešto rekli.

Videokonferencije su mi također nespretne, iz razloga što su prebliske stvarnoj komunikaciji, a ipak nisu stvarna komunikacija oči u oči, pa se zapravo s njima ništa korisno ne dobija (osim mogućnosti hvalisanja kako “mi imamo videokonferencije”). Ono što mene osobno muči kod videokonferencija je mali delay (nemoguće ga je potpuno ukloniti) koji daje dojam da je sugovornik lagano pospan ili mu danas razmišljanje nije baš jača strana, te činjenica da kamere ne mogu biti u centru ekrana što rezultira osjećajem da sugovornik stalno gleda nešto preko ramena ili u pod…

Još par alata koji su korisni i inače, ali mislim da su ključni za uspješno funkcioniranje distribuirane tvrtke (koja se bavi nekakvim razvojem softvera ili nekim knowledge biznisom):

Issue tracker

Issue (ili bug) tracker je odlična stvar za sve slučajeve kad želite nešto zabilježiti, i biti sigurni da je kasnije netko reagirao. To ne mora biti bug u softveru, nego i svojevrsna shared todo lista (npr. ubacite high priority major severity issue “Prijaviti radnike na slijedeći WebStart” – baš mi je žao što se ovog primjera nisam prilikom izlaganja prezentacije sjetio, trema je učinila svoje :). Popularni open-source trackeri su recimo Bugzilla i Trac.

Groupware

Ukoliko više ljudi radi na istom projektu (a obično radi), dobro je imati mjesto gdje se vodi evidencija tko što u kojem trenutku treba raditi, kao i sva prateća komunikacija oko toga. Odlični primjeri web2.0 groupwarea su activeCollab (instalirate na svoj server) te Basecamp (hosted rješenje). Google Calendar također može poslužiti za sinkroniziranje.

U prezentaciji sam spomenuo da bi bilo zgodno imati i nekakvi oblik privatnog inhouse Twittera kako bi se vidjeli kratki status updatei tko što radi, te sam kasnije saznao da će novi activeCollab imati i tu mogućnost! Definitivno korisna stvar. Kad već hvalim aC, na WebStartu sam imao prilike iz prve ruke vidjeti kako taj softver radi i ostao sam totalno zadivljen – stvar je odlična, svakako preporučim da pogledate!

(Distribuirani) Version Control Sustav

Odlična stvar čak i ako solo radite na projektu koji nikad nitko drugi neće vidjeti, a nezamjenjivo ukoliko više ljudi radi na istom projektu. Jednom kad se naviknete, nema nazad :-) Distribuirani VCS-ovi pružaju veću slobodu i fleksibilnost od centraliziranih, što mislim da je dodatna prednost ako je cijela tvrtka distribuirana. Take your pick: git (vjerojatno najbolji), darcs (moj omiljeni iako ima par quirkova), ili bzr (gura ga Canonical/Ubuntu). Ukoliko ste ipak konzervativniji, tu je naravno Subversion (tu je recimo zgodno da se Trac odlično integrira sa svn-om).

Code review

Manje alat a više praksa kod kojeg svaki komad koda koji se commita prije toga pregleda još netko (osim samog autora). Prednosti ovoga su da se uhvati veliki broj sitnih (i ne tako sitnih) bugova, nikad se ne dogodi da samo jedna osoba zna neki dio koda, osoba koja radi review ima priliku nešto naučiti na kodu kojeg gleda, a originalni autor također ima priliku nešto naučiti iz komentara reviewera. Osim toga na ovaj način se i lako osigurava konzistencija stila kodiranja, komentara i slično. Code review je posebno dobar u distribuiranim timovima jer u njima nema mogućnosti da netko “preko ramena” pogleda komad koda i da komentar, pa su oni zapravo i zamjena za tako nešto.

U prezentaciji nisam poimence spominjao alate za code review (prikazani screenshot je od VMWareovog Review Boarda), ali se slažem sa Stjepanom da bi trebalo istaknuti Guidov Rietveld te VMWaretov Review Board. Collabora za to koristi interno razvijeni alat Merge Monkey.

Ostali alati

Za slučajeve kad trebaju stvarno dvije osobe istovremeno raditi na jednom dijelu koda (ili netko treba nekome nešto pokazati, ili se radi pair-programming), nezamjenjiv je alat za dijeljenje desktopa ala VNC.

Za spremanje podataka o projektu ili internom ustroju firme zgodno je postaviti i interni wiki, kojeg onda svi mogu uređivati i popunjavati podacima koji su im bitni. Wiki je koristan upravo zbog toga što ne forsira nikakvu specijalnu strukturu dokumentacije, pa je stvar lako prilagoditi baš onom workflowu kojeg mi koristimo.

Google Docs, ili bilo koji online office suite – ne znam ima li smisla ovo uključivati u cijelu priču. Svakako ima svoju upotrebu (i web2.0 je :), te ima neke prednosti u odnosu na offline izradu dokumenata i mailanje / stavljanje na wiki, ali ih nisam smatrao dovoljno značajnima za poseban slide.

Team building

Team building, pojam koji kod većine zaposlenika različitih tvrtki s kojima ja imam kontakt (čitaj: prijatelji zaposleni na raznoraznim mjestima) izaziva prilično negativne osjećaje. Možda zato što smatraju da dovoljno (i previše) vremena ionako provode uz ljude iz firme, i onda ih se još dodatno tjera da se i umjetno “druže” s njima?

Kod distriburianih firmi team building ipak nije samo tlaka, nego je jedinstvena prilika da se suradnici koji se inače nemaju priliku uživo vidjeti bar upoznaju, druže neko kratko vrijeme i u tom razdoblju steknu neku bliskost i osjećaj pripadnosti timu/tvrtki. U tom smislu teambuilding više zamjenjuje ležerne kave nakon / prije posla a manje neka intenzivna forsirana druženja.

Distribuirana tvrkta (Yes/No/Abort)?

Na kraju ovog podugačkog posta (nadam se da prezentacija nije bila predugačka :), što je na kraju bolje, raditi u uredu ili imati distribuiranu tvrtku? Kao i obično, odgovor je negdje u sredini. Apsolutno distribuiranu tvrtku, gdje svi uvijek udaljeno rade – definitivno ne. Previše je tu potencijalnih problema u komunikaciji i motivaciji. No (a ovo možda nisam naglasio u prezentaciji, a svakako sam trebao), mislim da je dobra ideja iskoristiti prednosti rada na daljinu i kombinirati ih sa prednostima rada na zajedničkoj lokaciji.

Po mom mišljenju idealno bi bilo da se neki dio vremena (recimo jedan dan u tjednu, ili jedan tjedan u mjesecu) provede u uredu/HQ-u/omiljenom kafiću (ali radno!:)/zajedno, s tim da bi pritom svi trebali u isto vrijeme biti na okupu baš zbog druženja, komunikacije i dizanja morala. Ostatak vremena i dalje ostaje na volju ljudima da si organiziraju kako im najviše odgovara (a opet ostanu u svakodnevnom kontaktu sa svim ostalima). Na ovaj način iskombiniraju se dobre strane i jednog i drugog pristupa.

Ako ste do ovdje pročitali, svaka čast! Ispričavam se na dugačkom postu, nisam ga stigao skratiti[tm] :-)