(Ovo je jedno programersko iskustvo iz Blaise Pascal Newsletter, koje dokazuje da je Pascal multiPlatform/multiOS/multiCPU magija moguća, ali u Open Source svetu kroz Lazarus projekat, koje Vam objavljujem u slobodnom prevodu...- op.a.)
"Ovaj članak pokazuje ogroman napredak koji je Lazarus napravio zbog predanog rada jezgra razvojnog tima. On pokazuje da je danas Lazarus na mnoge načine u rangu s Delphijem, a u nekoliko ključnih područja i daleko ispred Delphija (32/64 bitni, multi-platforma i multi-OS, omogućava razvoj na mobilnim i ugrađenim sistemima).
Naravno, to nije isto kao i Delphi, ali je vrlo jeftino. Lazarus je pristupačan za svakoga i možete da započnete odmah sa realizacijom informatičkih zahteva. Možete stvoriti bilo koji program, koji ste ikada želeli, a broj dostupnih komponenata stalno raste.
Dakle, odgovor je DA. Savršeno za komercijalne svrhe!
Počeo sam svoj posao 2001. u hrvatskoj firmi, koja se zove Holobit. U to vreme Holobit je bio prilično mala firma, sa nekoliko desetina kupaca. Moj primarni zadatak je bio da set trenutnih C++ poslovnih aplikacija prevedem na Linux i Windows, pomoću Delphi, Kylix i Borland-a CLX tehnologije. Nakon godina, C/C++ kodiranje na Linux OOP je izgledalo vrlo jednostavno i dobro organizovano. Dva meseca kasnije sam zaključio da Borland daje odlične proizvode, i vreme kodiranja je puno kraće nego što je bilo sa C/C++ (gtk+, QT) pomoću vi editora. U svakom slučaju, u roku od 3 meseca naše poslovne aplikacije su pretvorene u CLX i firma je počela prodaju za Linux i Win32. Sve je učinjeno sa Kylix 2 i Delphi 6 (kasnije nadogradili na K3 i D7).
Izrada native Linux aplikacija je bila dobra odluka, tako da je broj kupaca počeo ubrzano da raste. Naši klijenti su bili sretni sa mogućnošću izbora između Linux i Windows klijent aplikacija za desktop PC, jer štede novac i stvaraju bolju i sigurniju okolinu. Drugo pitanje pretvaranja, koje je izgledalo prilično komplikovano - u to vreme - bilo je oko baza podataka. Kada sam počeo pretvaranje naših aplikacija, sve od njih su koristile FoxPro. Bio sam jako razočaranim s njim, jer sam tada već koristio PostgreSQL na Linuxu. Pogađate, preselili smo sve naše aplikacije na PostgreSQL.
U to vreme nisam znao za ThirdParty komponente, kao što su Zeos itd. .., pa sam napisao svoj PostgreSQL driver, koji se koristio još nekoliko godina. Kasnije, kada sam pronašao Zeos - ugodno iznenađenje - odmah sam ga počeo koristiti. Tako je došla 2004., bilo je glasina da je Kylix ugašen, nema vesti iz Borlanda - samo tišina ...
Da, bio je ugašen: sram vas Borland, ne zato što ste stavili Kylix u grob, već zato što ste varali svoje klijente. Tokom godina smo se borili sa Borland proizvodima. U međuvremenu, Kylix se nije mogao pokrenuti na bilo kojoj distribuciji, ako se ona temelji na glibc, većem od 2.4.X. Sve dok nisam video da je neko počeo qt-widgetset u Lazarus projektu, i taj tip je bio Felipe, a i zahvaljujući Den Jean za Qt C bindings (jer bez toga nismo mogli imati Qtwidgetset unutar Lazarusa).
Iako sam probao Lazarus samo nekoliko puta pre, nisam bio privučen ranije, jer podržava samo Gtk1 widgetset, koji je izgledao strašno, u poređenju sa Qt2, koji koristi Kylix. Sad sam bio motivisan za preuzimanje Lazarus builda, kako bih saznao za način rada sa Qt. (jer sam već ranije pokušao Gtk). Kao što je spomenuto, rad na Qt widgetset je tek počeo, a rezultat je pokazivao da je potrebno puno poboljšanja, tako to tada nije radilo.
Nakon brzog skeniranja Lazarus principa, biblioteke Lazarus komponenti (LCL) i widgetset veze LCL, počeo sam sa korekcijama, sa primarnim ciljem da Qt widgetset proradi. Moje prve zakrpe su zatim poslate Felipeu. Bunio se mojim standardima kodiranja (hej, hej), pa sam promenio moje standarde kodiranja prema Lazarus principima. U svakom slučaju, nakon nekih godinu dana, Qt widgetset je postao upotrebljiv. U međuvremenu, Lazarus programeri su mi odobrili SVN pristup - tako da nema više potrebe da čekam na Felipeovo odobrenje, i drugih da izvrše svoje zakrpe.
U isto vreme - poslovni problemi narastaju sa Kylix i Delphi programiranjem i uprava firme je razmatrala o tome da se aplikacije presele kompletno u Javu ili .Net. Kada je uprava donela odluku za tu promenu, brzo sam prigovorio.
Nisam bio jako sretan s tim. Ne zbog programa, nego zbog svih ThirdParty komponenata, koje se koriste u našim aplikacijama (ZeosLib, FastReports, TMS mreža, VirtualTrees itd). Rekao sam da ćemo trebati puno vremena i resursa, da se preseli naš kod u Javu ili .Net, a mogući rezultat te operacije nije bio ohrabrujuć. Bio sam uznemiren tom poslovnom odlukom (i već sam imao na umu da promenim posao), tako da sam jednog dana pitao šefa, ako bi se mogli dogovoriti, da mi da neko vreme za razvoj koda koristeći Lazarus. U sledećih nekoliko mjeseci, sam pokazao neke od naših aplikacija koje trče na Qt4.
Imao sam u početku trku sa vremenom, morao sam popraviti Qt-LCL i pretvoriti jedan od naših zahteva za LCL (samo mali jedan). To nije bio lak zadatak, jer qt-LCL još nije završen i puno stvari ne radi. Zeos za Lazarus je već postojao, ali za ove jednostavne aplikacije sam morao imati FastReports i TMS grid kontrole. Dakle, imao sam tri meseca da bi Qt pod Lazarusom bio upotrebljiv, i za pretvaranje FastReports i TMS kontrola (oba CLX licencirani) ...
Nakon stotina sati kodiranja, dan svođenja računa je došao. Morao sam pokazati svoj rad krajem Februara 2008. Napravio sam prezentaciju na Linuxu, 32-bitnom Windowsu i na Mac OSXu i uprava firme je bila zadovoljna. Naravno, bilo je tu još bugova i neprevedenih modula, ali su oni poštovali moj glavni argument : Ako se preselimo u Lazarus, bićemo u mogućnosti da radimo na drugim (čak i više) podržanim platformama, a i zbog toga što je Lazarus - Open Source projekat, ne bismo više bili na milosti i nemilosti odluka od strane drugih firmi (kao što je Borland), koji su nas osujetili u prošlosti.
To je postao najsretniji dan u poslednjih nekoliko godina mog radnog veka. Dobio sam budžet i vreme potrebno za selidbu naših aplikacija u Lazarus. Sada sam imao razuman rok (15 meseci) za poboljšanje Lazarusa i prekodiranje naših aplikacija za Lazarus (i pored drugih svakodnevnih poslova). Tokom 2008/2009, konvertovao sam sve ThirdParty komponente i sve naše aplikacije za FPC/Lazarus, što je takođe doprinelo sa puno zakrpa za sam Lazarus projekat.
Cilj je postignut - Lazarus je bolji sada nego Kylix 3 i počeli smo implementaciju LCL aplikacija za više od 3.500 korisnika. Njihovi utisci su pozitivni, jer naše aplikacije izgledaju prirodno na svim platformama. Nekoliko desetina Mac OSX korisnika su takođe bili zadovoljni, jer smo im dali native aplikacije po prvi put (pre su koristili Paralele + Linux VM).
WOW, kakav slavan dan. Mi više ne trebamo Borland proizvode.
Sada je naš kompletan asortiman softvera razvijen korišćenjem FPC/Lazarus i PostgreSQL RDBMS:
1. HoloERP - ERP sistem sa > 400 modula (obrasci)
2. Cafeman - Caffe barovi i restorani BackOffice i POS sistem
3. TSuS - male trgovine BackOffice i POS sistem
4. Kino - softver za bioskope (rezervacije, ulaznice i sl.)
5. ArhStudio - arhitektonska dokumentacija u bazi podataka.
Sve ove aplikacije koriste sledeće 3rd party komponente:
· ZeosLib
· FastReports (portovan CLX)
· TMS rešetki (portovan CLX, ali takođe smo licencirali najnovije VCL i to portovali)
· TMS Planner (portovan CLX, kasnije VCL)
· FlexCell (licencirani LCL, da postoji LCL verzija)
· Naše specifične komponente
Zaključak:
Zašto?
Lazarus je spreman za komercijalnu upotrebu, posebno za osobe sa ostavštinama u Kylix3 / Delphi7 kodu. Moje lično mišljenje je da je Lazarus/Qt puno bolji, nego K3/D7 u ovom trenutku (0.9.29 stablo), a programeri će biti zadovoljni sa novom 0.9.30 verzijom.
· Jedini OOP RAD koji podržava tolike platforme.
· Stalno razvijan od strane volontera, pa ne zavisi od komercijale odluke, tako da možete izbeći bankrot i sl.
· Troškovi su - gotovo ništa, osim energije i vremena.
· Ako nešto ne bi odgovaralo Vašim potrebama, možete promeniti i doprineti Lazarus projektu.
· Ako postoji bug - možete to popraviti i doprineti, ili barem možete otvoriti pitanje na Lazarus tracker ".
Autor ovog teksta je Lazarus forum član Željan (
http://wiki.lazarus.freepascal.org/User:Zeljan), a softverski slučaj je iz
http://www.holobit.net