Wstęp
Mam za sobą 6 lat studiów na polskich uczelniach, kierunek: Informatyka. 5 lat na popularnej, publicznej uczelni, czyli Politechnice Lubelskiej (3,5 roku studiów inżynierskich + 1,5 roku studiów magisterskich) w trybie dziennym, stacjonarnym oraz rok studiów na uczelni prywatnej (poziom magisterski, specjalizacja “cyberbezpieczeństwo”) w trybie niestacjonarnym. Na tych studiach korzystałem z Linuxa, również gdy te przyjęły rolę zdalnych z powodu COVID.
Ten artykuł został przeze mnie udostępniony już kilka miesięcy temu, za pomocą aplikacji HedgeDoc. Udostępniam go jednak jeszcze raz tutaj, ale w nieco zmodyfikowanej, zaktualizowanej formie.
W tym artykule słowo “Linux” będę wykorzystywał zamiennie ze słowem “system operacyjny”. Pisząc więc “Linux” mam na myśli “System operacyjny typu Linux”. Nie będę natomiast wskazywał na konkretne dystrybucje Linux, z których korzystałem, bowiem jest to tak naprawdę wtórne.
tl;dr
Przejście całych studiów wykorzystując tylko system Linux jest możliwe, a nawet można uzyskać sporą przewagę nad innymi studentami niekorzystającymi z Linuxa, ale trzeba do tego OS-a podejść nieco chętniej, poznać go lepiej - mowa tu, przede wszystkim, o podstawach jego działania, korzystania z terminala i różnych menedżerów pakietów. Warto też dodać, że linuksowe GUI jest naprawdę dobre - sam uwielbiam GNOME - i zalety DE można fajnie wykorzystać w codziennej pracy (patrz: workspace’y, tiling i inne). GNOME służy mi do dzisiaj, nie tylko prywatnie, ale również i w pracy zawodowej.
Warto dodać, żę są osoby, które poszły z tematem o krok dalej i uznały, że będą korzystać tylko z oprogramowania FOSS -> https://www.gnu.org/education/how-i-fought-to-graduate-without-using-non-free-software.html
Politechnika Lubelska
Pierwsze 1,5 roku studiów
Pierwsze półtora roku studiów odbyło się w pełni stacjonarnie, wszak to jeszcze było przed pandemią. Na kierunku “Informatyka” pierwsze 3 semestry to czas nauki nie tylko tematów stricte komputerowych, ale też matematyki, fizyki i innych. Dlatego też ograniczę się do samych komputerów. Tak naprawdę głównie miałem programowanie i jego podstawy. Pisanie w C czy w C++ nie jest na Linuxie problemem, uważam je nawet za łatwiejsze, bo potrzebny stack jest zainstalowany na dzień dobry w większości dystrybucji. Miłym faktem było to, że uczyliśmy się również Qt, a Qt to natywna technologia dla Linuxa, zwłaszcza w KDE Plasma. Oczywiście wykorzystywany Qt Creator jest dostępny na Linux.
Niecodzienny software
Taką wewnętrzną aplikacją dla uczelni był NS Builder - program do budowania i testowania schematów blokowych NS. Aplikacja jest open source, napisana w Qt i dostępna na Linux.
Problememem mógł być HLA, czyli High Level Assembler. Jednakże stack do programowania w HLA włączaliśmy w VM z Windows XP, również na uczelni. Włączenie VM na Linuxie to żaden problem (do czego będę tutaj nawiązywał wielokrotnie).
Był też przedmiot poświęcony Linuxowi. Użytkownik Linuxa tutaj zyskiwał pewną przewagę, bowiem jest z nim bardziej obyty, a nawet sama znajomość GUI w postaci GNOME (czyli podstawowe DE w Ubuntu) była pomocna. Warto dodać, że Ubuntu to też taki domyślny system operacyjny typu Linux, z którym z pewnością większość osób spotka się na studiach.
Semestr IV
Początek 2020 roku, a więc był to pierwszy semestr zdalny. Wszystkie potrzebne aplikacje do pracy zdalnej były dostępne na Linux – a przynajmniej w przypadku mojej uczelni. Pierwszy semestr takiej pracy to też czas braku normalizacji, tudzież pewnej samowolki, dlatego dominował Discord (ale czasami potrzebny był Zoom). Jeden prowadzący zajęcia chciał korzystać z Webex, którego na Linuxa nie ma, ale udało się go namówić na Discord.
Jeśli chodzi o inne laboratoria (czyli zajęcia praktyczne w grupach do 15 osób), to nie miałem większych problemów - programowanie web/frontend lub w Javie wraz z narzędziami JetBrains to była przyjemność. Nie inaczej było na zajęciach z grafiki komputerowej, gdzie dominał w pełni zestaw aplikacji Open Source – Blender, GIMP czy Inkspace są dostępne na Linux. Do doświadczenia z Blenderem właśnie powoli wracam, ponieważ zakupiłem drukarkę 3D :-).
Reasumując, ten semestr był naprawdę nieproblematyczny i przejście go z komputerem pracującym pod kontrolą systemu Linux było jak najbardziej możliwe.
III rok studiów
Przechodzimy do kolejnego roku studiów, w zasadzie finalnego dla przyszłych inżynierów informatyki. No i w tym momencie zaczynają się schody, głównie z zajęciami z związanymi z mikrokontrolerami oraz systemami wbudowanymi. Wykorzystywane narzędzia były dostępne tylko na Windowsa ale:
- W przypadku Atmel Studio wystarczyła maszyna wirtualna z Windows 10 AME (dzisiaj ten projekt już nie istnieje w tej postaci).
- W przypadku innych narzędzi wystarczyła maszyna wirtualna z Windows XP. Co tutaj ważne, dla lepszej kompatybilności z takiej maszyny korzystali również użytkownicy Windowsa.
Mniej znany software
Na tym semestrze pojawiły się również duże zalety Linuxa będące zarazem przewagą nad Windowsem. Otóż instalacja dwóch mniej znanych interpretatorów języków programowania była ułatwiona - mowa o Haskellu oraz PROLOG (+Python, ale to akurat znane rozwiązanie).
W kontekście baz danych, to również tutaj mamy przewagę Linuxa, ale z małą gwiazdką. MySQL i Postgres wraz z dedykowanymi klientami GUI to żaden problem na Linux, ponieważ można i skorzystać z Dockera, i z natywnych paczek. Problem pojawił się przy MS SQL. Sam silnik jest dostępny na Linuxa, ale dedykowane narzędzie GUI - SQL Server Management Studio - zostało udostępnione tylko dla użytkowników systemu od MS. Całe szczęście wystarczyło tutaj skorzystanie z DBeaver czy, w moim przypadku, Visual Studio.
Największym problemem był dosyć przestarzały stack deweloperski w postaci XAMPP. Istnieje on na Linuxa w wersji LAMPP, ale nie ma wszystkich narzędzi i może strasznie namieszać, ponieważ (jak dobrze pamiętam) katalog deweloperski tworzy się w /opt. Jest to o tyle tragiczne, że domyślnie tam dostępy są tylko dla root. Praca z takim stackiem wymaga kombinowania i rodzi problemy. Dlatego też programowanie w PHP z LAMPP to był dla mnie ogromny problem i z wiedzą, którą zdobyłem nieco później podszedłbym do tematu kompletnie inaczej, chociażby korzystając z Dockera.
w kontekście baz danych (a raczej laboratoriów dotyczących nauki zagadnień bazodanowych) pojawił się zgrzyt na tle formatów i korporacji (czyli coś, co mastodończycy uwielbiają najbardziej). Otóż pewien prowadzący chciał przyjmować sprawozdania tylko w formacie .docx. Udało się go jednak przekonać, że ograniczenie tylko do formatu korporacyjnego nie jest dobrym pomysłem i .odt został dopuszczony. Nie zabrakło jednak argumentu od drugiej strony na tle finansowym, twierdzącego, że pewnie nie stać mnie na MS Office i dlatego używam LibreOffice (xDD).
A co z programowaniem aplikacji na systemy mobilne? Uczelnia wybrała platformę Android, na którą to przygotowywaliśmy projekty. Tutaj mamy kolejną, wielką przewagę Linuxa, ponieważ Android Studio działa szybciej na tym systemie i nawet mając niezbyt wydajny sprzęt (a właśnie taki miałem), nadal mogliśmy cieszyć się wysoką szybkością.
Oprócz programowania…
W zasadzie pamiętam tylko jedne zajęcia niezwiązane stricte z pisaniem kodu. Były to laboratoria “Inżynieria oprogramowania”, na których pracowałem w Draw.io (ciekawostka - zalecany był odpowiednik od Microsoftu, ale na niego narzekało wielu studentów, aż wszyscy wraz z prowadzącym przeszli na Draw.io, również za moim poleceniem) oraz w LibreOffice.
Ostatni semestr i praca inżynierska
W kontekście laboratoriów to dalej wykorzystywane były podobne narzędzia, które na Linux były dostępne lub po prostu istniała dowolność w doborze narzędzi.
Pracę inżynierską napisałem w stosie technologicznym: PHP, Laravel i MariaDB. Ponadto sama aplikacja “stała” na Raspberry Pi. Nie ma co tutaj dodawać, ponieważ wszystko tutaj działało na Linuxie. Problemem było jednak samo napisanie pracy, ponieważ odpowiednie formatowanie było trudne do odwzorowania w LibreOffice Writer, tym bardziej, że nie wszyscy w mojej grupie z LibreOffice korzystali. Pomoc kolegów z MS Office Word (lub z VM z Wordem) była tutaj bardzo przydatna.
Poziom magisterski - semestr I
Tutaj niestety pojawiły się problemy. Na jednym z przedmiotów wykorzystywany był Microsoft Project niedostępny na Linuxie, a żadne alternatywne programy nie wchodziły w grę. Pomogła jednak maszyna wirtualna z Windows 10 AME. Na kolejnym przedmiocie wykorzystywane były inne zamknięte narzędzia i ograniczone do samego Windowsa. Byłby to problem gdyby nie fakt, że i tak nie mieliśmy licencji do uruchomienia tego oprogramowania poza uczelnią. Laboratoria można było spokojnie wykonać na uczelnianych komputerach. Co ważne, tutaj zacząłem bawić się w selfhosting i notatki oraz sprawozdania zacząłem pisać w HedgeDoc. Co więcej, HedgeDoc pomógł mi również w notowaniu na komputerach uczelnianych.
Reszta narzędzi z innych laboratoriów była dostępna na Linux.
Semestr II i III magisterki
Kolejne semestry to kontynuacja wykorzystywania tych samych narzędzi - albo sam korzystałem z narzędzi linuxowych, bo była taka dowolność, albo narzucone narzędzia były dostępne na Linux. Pojawił się też PLSQL (w Oracle SQL), jednak nie miałem z nim żadnych problemów - połączenie kontenera dockerowego oraz DataGrip sprawdzało się świetnie.
Problemem niejako mógł być też przedmiot związany z hurtowniami danych. O ile głównie wykorzystywane narzędzie Knime jest Open Source i dostępne na Linux, tak problem był z Tableau. Na szczęście pomogła mi maszyna wirtualna z Windowsem 10.
Zadania związane z DevOps
Wyszczególniam ten dział z dwóch powodów - po pierwsze, zawodowo właśnie jestem inżynierem DevOps, a po drugie, tutaj też wychodzi przewaga w korzystaniu z systemu typu Linux. Zajęcia związane z chmurą internetową dotyczyły głównie Dockera, a jeśli mówimy o Dockerze, to też mówimy o Linuxie. Znajomość pisania konfiguracji, korzystania z Dockera czy pisania skryptów Bash była tutaj nieoceniona. Budowanie obrazów Docker również było wygodniejsze na Linuxie, głównie ze względu na znacznie wyższą wydajność. Kiedy przeszliśmy do fazy wdrożeń, to korzystaliśmy z Github Actions, które również bazują na Linuxie.
Praca magisterska
Finałem studiów była praca magisterska. Nauczony doświadczeniem, magisterkę pisałem tym razem w LaTeX, czyli po prostu w kodzie. Problemem mogło być napisanie artykułu naukowego (publikacja takiego artykułu była obowiążkowa dla każdego studenta POLLUB), co było możliwe tylko w Microsoft Word. Pomogła mi tutaj maszyna wirtualna.
A praca magisterska? No cóż, pisałem o Linuxie :-), a dokładnie o menedżerach pakietów Flatpak i Snap. OGROMNYM skrótem pracy jest artykuł naukowy, który znajdziecie tutaj. Przy okazji dodam, że sam szablon pracy dyplomowej LaTeX udostępniłem publicznie m.in. na Codeberg.
Druga uczelnia
Tak jak wspomniałem, Rozpocząłem również studia na drugiej uczelni. Ponownie na poziomie magisterskim, tym razem jednak na innej specjalizacji. Tutaj też mówimy o mniejszej, prywatnej uczelni, gdzie studiowałem w trybie niestacjonarnym.
Druga magisterka - rok pierwszy
Jako osoba doświadczona korzystałem ze stacku już mi znanego na Linuxie - powróciłem do PHP, Laravel oraz Pythona. Tylko jeden przedmiot wymagał oprogramowania niedostępnego na Linuxie (MS Office Excel), ale wysyłałem arkusze zaliczeniowe w LibreOffice Calc, które były pozytywnie oceniane.
Mogę wspomnieć o małym narzędziu, które utworzyłem z myślą o studiach i ułatwieniu sobie pracy. Otóż plan zajęć zmieniał się bardzo często i nie byliśmy o tym informowani. Sam plan natomiast był udostępniany jako arkusz kalkulacyjny. Dlatego też przygotowałem bota, który pobierał aktualnie znajdujący się plan zajęć z systemu e-learningowego (Moodle) i porównywał go z poprzednią wersją (z użyciem skrótów kryptograficznych). Jeśli została wykryta zmiana, to była wysyłana wiadomość na kanał telegramowy z należytą informacją oraz plikiem najnowszego planu zajęć. Skrypt był uruchamiany w cronie. Ten mały projekcik został doceniony też przez innych studentów.
Podsumowanie
Cóż, tl;dr to było dobre podsumowanie, ale chętnie powtórzę. Studia informatyczne w Polsce dla użytkowników Linuxa są możliwe do ukończenia i nie jest to niczym specjalnym. Polskie uczelnie chętnie wykorzystują open sourcowy stack - pewnie z różnych, finansowych powodów, ale jest to na korzyść takich studentów jakim byłem ja. Oczywiście pojawiły się zamknięte narzędzia, ale też nie uważam, że nie wolno takowych uczyć, zwłaszcza jak są bardzo popularne. Gorzej jednak jak student nie jest dopuszczony do wykorzystywania własnych alternatyw, które spełniają założenia laboratoriów (np. LibreOffice zamiast Microsoft Office jako narzędzie do sporządzenia sprawozdania).
Mało mówiłem o selfhostingu, ale ten też okazał się pomocny i żałuję, że nie zacząłem się w to bawić wcześniej. HedgeDoc i Overleaf (selfhosted jest naprawdę szybki i dobrze działający) to narzędzia niezwykle przydatne. Taki też był NextCloud z dostępem do Decka, kalendarza czy list zadań. Przydatna była też Vikunja, którą zresztą przedstawiałem na swojej uczelni jako rozwiązanie do realizacji projektów zespołowych. Dostępnych jest też wiele aplikacji naśladujących popularne rozwiązania do notatek itd. Zapewne ich funkcje znacznie ułatwią i uprzyjemnią naukę.