Trzy korzyści z pracy w projektach open-source i jak to się w ogóle może opłacać?
Firmy działające w trybie Talent as a Service, takie jak Mobica, często kojarzone są z komercyjnymi projektami dla dużych firm chroniących swoją własność intelektualną i kod źródłowy. Jednak w projektach z obszaru Embedded to sprzęt jest faktycznym produktem, a oprogramowanie często tworzone jest przez Software House’y i publikowane jako open-source.
Spis treści
Czym jest oprogramowanie open-source?
Oprogramowanie open-source, czyli z otwartym kodem źródłowym jest rozwijane w przestrzeni publicznej przy wsparciu całej społeczności danego projektu. Licencja pozwala na niemal dowolne wykorzystanie powstałego kodu, w zależności od wariantu, dopuszczając nawet wykorzystanie go w programach typu closed-source.
Przyjrzyjmy się teraz powodom, dla których inżynierowie wyjątkowo cenią sobie pracę nad projektami open-source i jak wpływa ona na ich rozwój i karierę.
Trzy główne korzyści z rozwijania oprogramowania open-source
1. Zwiększona widoczność w środowisku programistów
Rozwijanie projektów open-source to świetny sposób na to, aby zaistnieć w społeczności programistycznej. Projekty te cieszą się dużą popularnością, co daje specjalistom możliwość autopromocji i ułatwia nawiązywanie kontaktów z osobami o podobnych zainteresowaniach i umiejętnościach.
2. Rozwój umiejętności programistycznych
Każdy commit w oprogramowaniu open-source jest publicznie widoczny, nawet jeśli nie wyląduje w Pull Request, albo Pull Request nie zostanie zaakceptowany. W efekcie jakość tak powstałego kodu jest bardzo wysoka i można się nim pochwalić podczas procesów rekrutacyjnych lub wykorzystać jako argument do awansu.
3. Wspieranie innowacji
Umiejętność pracy w projektach open-source jest istotnym elementem rozwoju kariery. Przyjrzyjmy się zaletom takich projektów oraz temu, co na temat pracy w nich mają do powiedzenia sami specjaliści.
– Praca w projekcie open-source oznacza ciągłą naukę nowych reguł i stylów programowania. Można znacząco podnieść jakość pisanego kodu i wiele nauczyć się o jego testowaniu, systemach CI i CD. Jako kontrybutor w projekcie open-source jesteś częścią jego społeczności i możesz brać udział w konkretnych wydarzeniach (np. Test Days). I to wszystko w ramach pracy – mówi Artur Tynecki, Expert Software Engineer w Mobica, pracujący nad projektem Embedded w branży IoT.
Zalety oprogramowania open-source
Niektórych może zaskoczyć fakt, że duże korporacje decydują się na umieszczenie efektów swojej pracy w domenie open-source, zamiast zatrzymać ją tylko dla siebie. Istnieją jednak ważne powody, dla których decydują się one pójść tą drogą. Oczywiście open-source niekoniecznie sprawdzi się przy komercyjnych projektach z innych dziedzin, np. aplikacji mobilnych czy webowych, gdzie każda aplikacja stanowi oddzielną całość i nie ma konieczności jej częstych modyfikacji.
O jakich więc powodach mowa?
Więcej wolności dla programistów
Motto konsorcjum AUTOSAR brzmi: „Pracujmy razem nad standardami, a konkurujmy przy implementacji”. Wpisuje się to w bieżące podejście wielu przedsiębiorstw z branży oprogramowania. AUTOSAR to całkowicie otwarty standard projektowania i tworzenia oprogramowania w motoryzacji, który gwarantuje modułowość, skalowalność, przenoszalność, możliwość ponownego wykorzystania i standaryzację kodu, jednocześnie likwidując zamknięte silosy i nieefektywność. Dla programistów natomiast oznacza to większą elastyczność i możliwość pracy z różnymi firmami z branży.
Równe traktowanie odbiorców
Grupa Khronos gromadzi 150 najważniejszych firm z branży które współpracują ze sobą po to, aby stworzyć darmowy standard w obszarze grafiki 3D, rozszerzonej i wirtualnej rzeczywistości, obliczeń równoległych i sztucznej inteligencji. Wszyscy członkowie grupy, z takim samym prawem głosu, mają możliwość rozwijania standardu i zapewnienia obsługi swoich produktów na podstawie dokładnie takich samych interfejsów, niezależnie od platformy sprzętowej czy konkretnego urządzenia.
Oszczędność czasu
Niektórzy producenci sprzętu tacy jak ARM, udostępniają swoje oprogramowanie na licencjach open-source bez tworzenia grup czy konsorcjów. W ten sposób, na permisywnej licencji Apache 2.0, dostępny jest cały ekosystem Mbed, na który składają się między innymi system operacyjny mbed-os, narzędzia i przykładowe aplikacje.
ARM oddaje więc użytkownikom swoich platform oficjalne, działające oprogramowanie wraz z pełną możliwością jego dopasowania, portowania czy optymalizacji pod kątem konkretnego zastosowania. Klienci ARM-a oszczędzają dzięki temu mnóstwo czasu i pracy, a co za tym idzie pieniędzy, które musieliby zużyć na napisanie własnego oprogramowania lub na oczekiwanie aż zespół programistów ARM-a naprawi lub dopisze potrzebne dla nich funkcje.
Open-source skupia najlepszych programistów
Można również spojrzeć na kod open-source pod kątem olbrzymiej liczby osób testujących i zgłaszających błędy, a nawet poprawki do kodu źródłowego. Co więcej, dzięki publicznie dostępnym systemom kontroli wersji i utrzymywania kodu, bardzo łatwo jest przygotować i udostępnić poprawkę każdemu, kto ma na to ochotę. Umożliwia to także sugerowanie, dyskutowanie, głosowanie, a nawet implementację nowych pomysłów czy funkcji, jeśli okażą się przydatne. Na koniec warto wspomnieć, że daje to programistom, nawet tym bardzo doświadczonym, możliwość szlifowania swoich umiejętności, pomagając zarazem wszystkim, którzy korzystają z danego programu.
– Miło jest widzieć, jak ludzie pałają prawdziwą pasją do projektu, nad którym pracujesz! Niektórzy poświęcają mnóstwo prywatnego czasu, żeby udostępnić innym nową funkcję, która wydaje im się przydatna. To sprawia, że naprawdę można spojrzeć na swoją pracę z innej perspektywy – mówi Andrzej Kurek, Principal Engineer w Mobica, aktywnie pracujący nad projektami open-source zarówno komercyjnie, jak i w swoim wolnym czasie.
Oprogramowanie open-source jest bardziej odporne na cyberzagrożenia
Oprogramowanie open-source jest wyjątkowo odporne na wszelkie zagrożenia właśnie ze względu na swoją otwartą naturę, która zachęca społeczność do szybkiej identyfikacji i naprawy wszelkich luk i słabości. Liczba ludzi zaangażowanych w dany projekt w dużej mierze przekłada się na szybkość eliminowania wykrytych potencjalnych zagrożeń. Istnieją nawet zespoły (zarówno akademickie, jak i pracujące dla biznesu), które specjalizują się w identyfikacji możliwych problemów w projektach open-source i ogłaszaniu swoich znalezisk jako „trofeów”. Krótko mówiąc, otwartość oprogramowania znacząco wpływa na jego cyberbezpieczeństwo.
Spójrzmy teraz na niektóre projekty open-source, nad którymi pracują inżynierowie w Mobica.
Wewnętrzne projekty w Mobica
Mobica jest zaangażowana w różne projekty z obszaru embedded, których kod źródłowy dostępny jest na licencjach open-source na portalach takich jak GitHub; pracuje nad projektami open-source w ramach wewnętrznych inicjatyw R&D; aktywnie rozwija Vulkan Samples, czyli jeden z otwartoźródłowych projektów grupy Khronos.
Oskar Płaska, Technical Domain Manager, prowadzi współpracę Mobica z grupą Khronos w zakresie wspomnianych Vulkan Samples, SDK OpenCL’a i jego połączeń (ang. bindings) z C++.
– Głównym celem sampli jest demonstracja wykorzystania jakiegoś konkretnego rozszerzenia Vulkana z poziomu API – tłumaczy Oskar.
Prawdopodobnie najbardziej efektywnym sposobem nauki Vulkana jest własnoręczne napisanie kodu, który bezpośrednio korzysta z API, nie polegając na żadnych pośrednich
warstwach oprogramowania. Można w ten sposób nie tylko dobrze się bawić, ale także zdobyć wiedzę i rozwinąć umiejętności.
– Udział w projekcie open-source nie tylko pozwolił mi zdobyć umiejętności w zakresie Vulkana i przyczynić się do obrocie oprogramowania open-source, ale także pomógł mi osiągnąć poziom znajomości tej technologii wystarczający do wejścia w komercyjny projekt z obszaru programowania GPU u wiodącego producenta z tej branży – mówi Mateusz Kowalewski, Software Engineer, który brał udział w projekcie Vulkan Samples w Mobica.
Project OpenCL
OpenCL to kluczowa technologia w dziedzinie High-Performance Computing i trenowania sztucznej inteligencji na dużą skalę. Celem wewnętrznego projektu Mobica jest implementacja nowych powiązań (ang. bindings) do języka C++, naprawa bugów i implementacja nowych sampli do nowopowstałych powiązań SDK OpenCL. Udział w tym projekcie umożliwia inżynierom nie tylko zwiększenie znajomości C++, ale także zdobycie wiedzy o tym, jak przerzucić niektóre zadania na dedykowane platformy sprzętowe, takie jak GPU.
Podsumowując, trudno przecenić rolę oprogramowania open-source w dziedzinie embedded – szczególnie jeśli połączymy ją z ekspertyzą doświadczonych programistów z całego świata. Dzięki projektom open-source pracownicy Mobica mogą nie tylko rozszerzać swoją znajomość języka czy technologii, ale także pokazać swoje umiejętności na poziomie globalnym. Wszystko to obrazuje, jak liczne są zalety oprogramowania open-source i że mogą one zyskiwać z czasem coraz większe znaczenie.
Czy jesteś gotów, aby rozwijać open-source razem z Mobica? Zapraszamy!