Microsoftovo carstvo se zasniva na Windowsima, računalnom operativnom sustavu koji pokreće mnoga računala, laptope, telefone i servere. Na to dodajte još i Office franšizu i dobili ste dva proizvoda koji Microsoftu generiraju vjerojatno najviše novaca. No, postoji šansa da Microsoft jednog dana ‘otvori’ Windowse i oni postanu open source, odnosno kôd bi mogao biti dostupan svima koje zanima. Barem tako tvrdi Mark Russinovich – jedan od Microsoftovih top inženjera. Od kuda ta ideja da Microsoft krene u open source svijet?
Microsoft je do nedavno zazirao od istoga, a bivši CEO Steve Ballmer je čak Linux (vjerojatno misleći pri tome i na open source zajednicu) nazvao rakom IT-ja. Steve Gates nije baš tako nešto rekao, ali vjerojatno nije mislio da će njegova kompanija krenuti tim smjerom. No, ovo je novi Microsoft koji je pružio ruku open source zajednici, otvorio dio proizvoda (.NET, CLR, C# jezik …) zajednici i pustio da im zajednica pomogne unaprijediti iste. Sav kôd vam je dostupan na GitHub servisu pa ga možete pogledati, ili sudjelovati u razvoju ukoliko se razumijete u programiranje, odnosno ukoliko spadate u top programere.
Mark Russinovich je bio jedan od govornika na konferenciji ChefConf (Chef je inače alat koji pomaže tech geekovima izraditi infrastrukturu koja stoji iza web stranica, raznih drugih poslovnih aplikacija … i koristi se većinom u open source zajednicama jer je to open source alat) na kojem je pitao publiku, a bilo je nekoliko stotina IT profesionalaca u publici, koliko njih koristi isključivo Microsoftove alate u poslovanju. Samo je jedna osoba, od tih nekoliko stotina, podignula ruku. To je bio odličan znak da se poslovni svijet mijenja i da se sve više koriste besplatni open source alati u poslovanju.
Prije niste imali izbora. Mogli ste koristiti Microsoft i alate napravljene isključivo za dotični OS, eventualno OS X i to je bilo to. Mali broj ljudi je koristio Linux što zbog slabe potpore, što zbog neznanja ili nemogućnosti da se Linux iskoristi za poslovanje i pokretanje svih poslovnih procesa u kompaniji. Danas je slika drugačija i Microsoft se tome mora prilagoditi. Mora biti dio te zajednice ukoliko želi privući nove korisnike, ali i zadržati one postojeće. Zato već sada na Azureu možete instalirati Linux OS. Gotovo 20 posto korisnika koristi Linux na Azure cloud servisu, a ta brojka će vjerojatno još rasti.
Open source znači mnogo više od „besplatnog softvera“
Budućnost IT sektora ne leži u modelu koji je svih ovih godina bio broj jedan, a to je da ste platili komad softvera i mogli ste ga neometano koristiti određeni vremenski period. S druge strane Linux je bio open source, bio je besplatan, napajao je servere, napajao je računalne centre, praktički je dio i Googleovog Androida i još mnogih drugih uređaja. Budućnost, čak i Microsoftove, leži u prodaji drugih stvari, uključujući servise poput Azurea i drugih aplikacija i servisa koje imaju u svojoj ponudi ili će ih tek imati. Office 365 je također zasnovan na cloud tehnologijama, što je jedan logičan korak naprijed i više ne morate kupiti Office i instalirati ga na računalo, nego platiti pretplatu i sa bilo kojeg uređaja na kojem imate pristup Internetu ga koristiti. Office je postao „servis“. Ako Microsoft odluči jednog dana otvoriti Windowse, to znači da će ga moći proširiti i brže razvijati. Otvoreni kôd je lakše testirati, lakše ga je „oblikovati“ i lakše ga je prenamijeniti ili proširiti. A samim time možete i povećati broj korisnika i povećati bazu dostupnog softvera. Mada to u ovom trenutku ništa ne znači –
Windowsi imaju i previše softvera na tržištu.
Ranije ove godine, Microsoft je otvorio.NET, o čemu ćemo više reći u nastavku teksta..NET platforma je baza svih aplikacija koje gradite, a baziraju se na Microsoftovim tehnologijama. Određeni dio programera radi na tome da se.NET prebaci na Linux, a tamo se zove.NET Core. Uz to,:NET ćete moći pokrenuti, tj. koristiti i na OS X-u, tako da ćete aplikacije zasnovane na MS tehnologijama moći razvijati na sve tri platforme. Ponavljamo, to je donedavno bilo nezamislivo, a danas je stvarnost.
Ako se ipak malo još vratimo na Windowse, spomenimo da će Microsoft moći zarađivati na istome bez obzira što bi jednog dana kôd mogao biti dostupan na Internetu. I dalje će morati postojati netko tko će ga pakirati, distribuirati, ažurirati … kao što se to radi i sa Linuxom. Tu se ne radi o situaciji „besplatno naspram komercijalno“ – stvar je mnogo kompliciranija i zato smo rekli da je „open source“ mnogo više od besplatnog softvera. Ovu situaciju su komentirali mnogi top programeri i inženjeri iz velikih kompanija kao što su Google, Twitter i slične i pozdravili su promjenu koja je nastala. Dapače, to možda znači povratak Microsofta na njihove servere i možda će opet početi koristiti Microsoftove alate za razvoj svojih informacijskih sustava i općenito proizvoda koje razvijaju.
Powershell na Linuxu
Prva velika stvar koju moramo spomenuti je Powershell DSC koji je odnedavno dostupan na Linuxu. DSC je inače kratica za „Desired State Configuration“. Powershell dobijete sa Microsoft Windowsima 8/8.1 a inače ga možete ručno instalirati na svoj OS. Uglavnom ga se instalira na serverske Windowse jer je Powershell configuration management framework koji služi za pisanje skripti ili malo većih programa za automatizaciju određene radnje u Windowsima. Vi kao pojedinac si sve možete sami napraviti i podesiti, no što kad u domeni imate 200 ili mnogo više korisnika. Zar ćete određenu postavku ići postavljati kod svakog korisnika? Naravno da nećete. Napisati ćete skriptu i svim korisnicima u domeni ili domenama promijeniti određenu postavku. Naravno, to je jednostavni primjer što PowerShell može. Može on mnogo toga. PowerShell vam daje potpuni pristup COM i WMI-ju kako bi administratori mogli raditi administratorske akcije na svom računalu, ali i na ostalim računalima koji su u njihovoj nadležnosti.
U Linuxu se tu radi o WS-Managementu i CIM-u. PowerShell taskove izvode cmdlets (čitaju se command-lets) što su zapravo specijalizirane.NET klase koje imaju implementirane određene mogućnosti. Inače, PowerShell se oslanja na.NET Framework kao i većina Microsoftovih proizvoda. Pisanje skripti nije prezahtjevno, no naginje programiranju i morati ćete naučiti neke osnove istoga kako biste pisali dobre skripte. Moramo reći i to da je PowerShell i općenito upravljanje velikim sustavima (sistemsko administriranje) polje za sebe i ako naučite PowerShell možete si naći posao samo na osnovu toga. U Hrvatskoj nešto manje radnih mjesta ima, no zato van Hrvatske ima koliko god želite. Dapače, preporučamo i polaganje certifikata koji će pokazati da znate raditi sa ovim alatom. S druge strane – Linux.
Linux se također godinama koristi za administriranje servera i svi važniji i jači serveri na svijetu imaju neku od Linux distribucija kao primarni operativni sustav i njime upravljaju sistem administratori koji jako dobro poznaju Linux i kako upravljati svim njegovim segmentima. Linux od svojih početaka dolazi sa najjačim mogućim alatom – Terminalom. Terminal je nešto nezamjenjivo i nešto što bi svaki pravi sistemaš mora znati. Upravljati Linuxom pomoću Terminala je ponekad prava muka, ali s druge strane gotovo je nemoguće bez toga. Terminal je, ponavljamo, najjači alat koji imate na raspolaganju i morate ga naučiti koristiti ako koristite Linux.
I tu dolazimo do PowerShella za Linux. Microsoft je odlučio „portati“ svoj PowerShell na Linux kako bi postojeći korisnici mogli koristiti poznati alat i poznate naredbe na Linuxu. Iz toga bismo mogli zaključiti da PowerShell želi zamijeniti, odnosno želi konkurirati Terminalu. Da li je to moguće? Je. Da li je PowerShell na razini kao i Terminal? Nije. Barem nije još. Možda će jednog dana biti svejedno koji od spomenutih alata koristite, no sada je još uvijek Terminal „jači“ alat za administriranje Linuxa. Ali to je sasvim razumljivo jer se radi o inicijalnoj verziji napravljenoj za Linux. Kako budu dolazile nove verzije, tako će i PowerShell na Linuxu biti jači i korisniji. Za sada imate određene mogućnosti koje možete isprobati na distribucijama CentOS, Debian, Oracle Linux, Red Hat Enterprise Linux, SUSE Linux Enterprise Server i Ubuntu Server. Postoji 10-ak naredbi koje možete koristiti kako biste izvršili određene radnje. Također, ugrađena je i određena zaštita „Automatic protection against configuration drift“ koja će vas spriječiti da učinite nešto loše ili krivo nenamjerno.
Što se tiče maloprije spomenutih naredbi:
– nxArchive: Omogućuje da se arhiva ekstrakta u destinacijski folder, što je odlično kod aplikacija koje se često i slijedno ažuriraju
– nxEnvironment: Upravlja važnim varijablama za okruženje
– nxFile: Upravlja datotekama i mapama. Kontrolira pristupe postojećim mapama i datotekama, može sinkronizirati sadržaj datoteke ili mape između dvije destinacije i još mnogo toga. Izvor sinkronizacije može biti lokalna putanja (lokalni resurs) ili HTTP, HTTPS, FTP putanja.
– nxFileLine: Omogućuje vam da nađete datoteku koja sadrži ili ne sadrži određenu liniju teksta kako biste ju mogli modificirati i prepraviti. Odlično za konfiguriranje sistemskih datoteka.
– nxGroup: Upravlja lokalnim Linux korisničkim grupama
– nxPackage: Upravlja instalacijom Linux paketa na računalima. Paket se može instalirati pomoću nekoliko paket managera (Yum, Apt, Zypper) ili kao zasebni paket (.rpm/.deb) iz lokalne putanje ili FTP-a ili web stranice.
– nxScript: Upravlja skriptama
– nxService: Upravlja servisima (daemonima) i kontrolira njihovo paljenje/gašenje i podešavanje
– nxSshAuthorizedKeys: Upravlja definiranim SSH (javnim) ključevima za korisnike
– nxUser: Upravlja pojedinim Linux korisnicima
.NET Core
Druga važna stvar koju moramo spomenuti je.NET Core. Više od 12 godina,.NET Framework je služio programerima da grade aplikacije na Windowsima za Windowse..NET Framework je zapravo skup biblioteka na kojima ste vi gradili aplikacije, bez obzira da li se radilo o desktop aplikacijama, web aplikacijama, mobilnim aplikacijama. Bilo je prilično nezamislivo da bi se.NET mogao pojaviti na drugim operativnim sustavima. Zato su prijašnjih godina neki pojedinci i kompanije pokušali napraviti reimplementaciju.NET-a na druge OS-ove, no to je zahtijevalo puno vremena, truda, na kraju krajeva i novaca da se napravi. Sigurno ste čuli za Mono i Xamarin.
Mono je zapravo ne baš legalna reimplementacija .NET Frameworka jer je Microsofot svojom licencom zabranjivao takve poteze pa su se mnoge tvrtke toga klonile jer znaju što bi im to donijelo – moguće tužbe i veliku štetu ako jednog dana sav njihov trud padne u vodu. No, Mono se ipak održao na tržištu, a koliko je bio uspješan neka presude oni koji su ga dugi niz godina i koristili. Recimo samo da se nama nije činio kao jako uspješan projekt, no to je samo naše mišljenje. Sada će se .NET Framework probati reimplementirati u .NET Core koji će se moći koristiti na Linuxu i Appleovom OS X-u. Trenutačno oko 6 milijuna programera koristi .NET Framework na Windowsima i to je odlična brojka i veliki uspjeh 12 godina stare tehnologije, no pitanje je kako ići dalje. Kako napredovati? Jedan od odgovora je širenje na druge platforme, točnije operativne sustave. Jedan od vodećih Microsoftovih ljudi za razvoj S. Somasegar je rekao Microsoft planira surađivati sa Mono zajednicom, te će dopustiti.NET Foundationu da nadgleda cijeli projekt i aktivno sudjeluje u tome. Za one koji ne znaju,.NET Foundation je neovisna organizacija stvorena s ciljem poticanja otvorenog razvoja i suradnje na brzo rastućoj kolekciji otvorenog kôda za Microsoftov.NET.
.NET Core je trenutačno podskup.NET Frameworka, a evo što to znači. To znači da će se dijelovi.NET Frameworka (biblioteke) postupno prebacivati u.NET Core koji je objavljen pod MIT-ovom licencom što joj omogućuje da bude open source u punom smislu te riječi. Trenutačno se radi na pročišćivanju kôda u „glavnom“.NET Frameworku, a kada se to završi krenuti će brža reimplementacija kôda u.NET Core. On će se koristiti na Linuxu i OS X-u. Točnije,.NET Core će se koristiti na mnogim drugim uređajima i platformama, a implementacija bi trebala biti potpuno ista u svim situacijama..NET Core je modularan i multi platformski, a srce istoga je BCL (Base Class Library) Core. Glavni kanal za distribuciju modula.NET Corea je NuGet, popularni packet manager za.NET. Moramo reći da je.NET Core startao sa svega nekoliko biblioteka ili libraryja, kako želite – to su biblioteke za parsiranje XML-a, immutable kolekcijom, biblioteke za Parallel LINQ, TPL Dataflow …
Proces prebacivanja biblioteka iz.NET Frameworka u Core će potrajati, no i vi se možete uključiti u razvoj. Kako? Microsoft je na GitHubu postavio kôd te možete pratiti što se događa (https://github.com/Microsoft/dotnet), možete prijavljivati bugove u kôdu, dokumentaciji, možete „forkati“ kôd kako bi ga optimizirali i ubrzali i slično. Već su mnogi developeri počeli raditi na tome i donijeli su nekoliko dobrih stvari, a prebacivanje biblioteka je tek počelo. Zanimljivo je da se Microsoft odlučio na GitHub, a ne na svoj Codeplex, no ovaj potez je donekle i razumljiv. GitHub je najpopularnija stranica ovog tipa, pa je Microsoft vjerojatno htio približiti tim korisnicima. U svakom slučaju, na spomenutoj web stranici možete pratiti razvoj .NET Corea, te vidjeti kôd koji će biti implementiran. Napokon će sada svi programeri moći sudjelovati u tome, a ne samo oni koji rade u Microsoftu.
Microsoft ima možda i najtalentiranije programere na svijetu, no i njima se ponekad potkrade kakva greška ili neoptimiziran kôd, a ovako će se ti problemi riješiti. Ipak su tu milijuni.NET programera koji žele pomoći. Dobro, vjerojatno ne žele baš svi, no mnogi će pomoći, a to je dobra stvar.
Visual Studio 2015 RC (Community/Enterprise verzija)
I za kraj smo ostavili novi Visual Studio koji se trenutačno može skinuti besplatno sa Interneta, a riječ je o RC verziji, odnosno „Release candidate“ verziji koja se neće mnogo razlikovati od „prave“ verzije koja će izaći na tržište vjerojatno isto kada i novi Windowsi. Visual Studio je, barem nama, najbolji IDE koji postoji na tržištu i bez obzira što mislili o Microsoftu i koristili ili ne njihove proizvode, ne možete reći da VS nije dobar. Definitivno je najkompletniji i najstabilniji IDE kojeg možete naći na tržištu vjerojatno no u njemu možete programirati samo Windows aplikacije.
Ne više – od sada sa VS-om možete raditi aplikacije za Windowse, Android, iPhone, web … Još bolje je to što će postojati verzije za Linux i OS X pa više nećete ovisiti o Windows operativnom sustavu. O tome smo već pričali u jednom od ovogodišnjih brojeva vašeg omiljenog časopisa. Danas ćemo se zadržati isključivo na VS-u kojeg možete instalirati na Windowsima. Ova verzija donosi jako puno noviteta i to ne bi bilo ništa čudno jer svaka nova verzija donosi hrpu novih stvari, no ova verzija odskače od toga. Korisnik Microsoftovih proizvoda bi pomislio da će dobiti bolje debugging alate, možda novije kontrole za izradu WinForms aplikacija ili tako nešto, no dobili smo toliko toga da smo jednostavno oduševljeni i da teško možemo u par odlomaka opisati sve novitete.
Dapače, iako intenzivno koristimo VS, nismo uspjeli još sve nove mogućnosti niti isprobati. Prije nego se pozabavimo mogućnostima i spomenemo one najveće, moramo reći da će VS doći u dvije varijante. Prva je Community Edition koja će biti u potpunosti besplatna i koja će vam omogućiti da čak i u komercijalne svrhe razvijate aplikacije. Ona neće imati apsolutno sve mogućnosti dostupne, ali će imati i više nego dovoljne. I to tvrdim kao netko tko svaki dan profesionalno koristi VS za razvoj aplikacija. Community Edition će zamijeniti Express verziju koja je do sada bila besplatna i imati će daleko više mogućnosti od Express verzije. Tako da ako mislite da vam neće biti dovoljna ili vam u prošlosti Express verzija nije bila dovoljna, budite uvjereni da hoće. Enterprise verzija će biti verzija namijenjena srednjim i velikim kompanijama koje će morati platiti licencu i nuditi će neke vrlo specifične mogućnosti koje vjerojatno ni oni neće moći u potpunosti iskoristiti. Manje kompanije će moći koristiti Community verziju za razvoj aplikacija i moći će ih prodavati i zarađivati na tome. No, vratimo se na mogućnosti ovog proizvoda.
Tko bi rekao da će Visual Studio doći sa Android Emulatorom i da ćete moći razvijati Android aplikacije? Vjerojatno nitko. No, VS 2015 donosi između ostalog i to. Možda ćete pomisliti da VS želi konkurirati Eclipseu ili Android Studiju, no to nije istina. VS vam dozvoljava limitiran razvoj Android aplikacija i ograničeni ste na Cordova bazirane HTML/JavaScript aplikacije koristeći Xamarin i C# libraryje. Ne možete raditi standardne Java bazirane Android aplikacije kao što možete u „pravim“ alatima za razvoj Android aplikacija.
No, pustimo Android aplikacije, ionako će te mogućnosti koristiti manji broj korisnika. Onaj tko koristi VS razvija najčešće Web ili desktop aplikacije, a sada će moći razvijati „Universal aplikacije“, odnosno aplikacije koje ćete moći koristiti na svim uređajima koji će koristiti Windows 10. To može biti pametno telefon, desktop računalo ili X-Box. Ista aplikacija, isti paket, samo se pokreće na drugom uređaju. To svakako pozdravljamo jer bi takav pristup mogao povećati broj korisnika koji koriste Windows Phone, odnosno pametne telefone sa Windows OS-om. Tu su naravno i noviteti u svim jezicima (C#, VB, C++, F#), a najviše će ih biti u C++-u. Neke mogućnosti su implementirane iz drugih jezika, a neke su u potpunosti nove.
Što se samog editora tiče i on je dobio novo korisničko sučelje (UI) i imate mnogo bolji IntelliSense bez obzira da li razvijate WPF ili web aplikaciju. Za razvoj aplikacija možete koristiti novi.NET Framework 4.6 koji donosi asinkroni model vezivanja, novi Roslyn kompajler, http/2 podršku i još mnogo toga. Ono što nas izuzetno veseli je mnogo bolja i lakša izrada korisničkog sučelja za korisnike, pogotovo kod razvoja Desktop aplikacija i mogućnost da se WinForme skaliraju prema broju DPI-ja što je do sada bio ogroman problem. Napravite aplikaciju za 100% DPI-ja, a onda korisnik poveća broj i aplikacija mu čudno izgleda ili se dobro ne prikazuje. Taj problem ste onda rješavali kroz kôd što nije uvijek baš bilo moguće riješiti. Ili ste morali tražiti kompromis, a to nije baš najbolja solucija. Tu je još i 64-bitni JIT kompajler za managed kôd, podrška za konvertiranje DateTime-a u ili iz Unix vremena, novi model bindinga za ASP.net, podrška za Entity Framework 7, mogućnost izrade Shared projekata (napravite projekt u kojem ćete imati klase i metode koje koristite u više aplikacija), referencirate taj shared project u svom projektu i bez problema ih koristite (op.a. svaka čast Microsoftu na tome, biti će izuzetno korisno u praksi), mogućnost debuggiranja lambda izraza … Jako je puno toga i ako koristite VS, svakako pređite na novu verziju!
Piše: B.P.