Swift i open source, czyli dlaczego Apple zdecydował się dać nam coś za darmo
Coraz więcej firm udostępnia swoje narzędzia dla programistów na zasadzie open source. Co to jednak właściwie oznacza dla użytkownika? I co zyskają na tym programiści, chcący używać tych narzędzi?
Apple w trakcie odbywającej się w czerwcu 2015 roku konferencji dla programistów, zapowiedział, że narzędzia związane z pisaniem programów w ich nowym, obiektowym języku Swift zostają udostępnione w ramach open source. Kilka dni temu doczekaliśmy się - faktycznie tak właśnie się stało. Niektórzy z czytelników byli zaskoczeni posunięciem Apple. Jak to, firma nastawiona na zysk udostępnia coś - w tym wypadku narzędzia do pisania aplikacji w języku Swift - za darmo, do tego wraz z ich kodem źródłowym! Czy oni zwariowali?
Przede wszystkim, wyjaśnijmy sobie pojęcie oprogramowania o otwartych źródłach. Open source (otwarte źródło), to sposób dystrybucji oprogramowania w taki sposób, aby znany był użytkownikowi końcowemu kod źródłowy. Każdy może taki kod pobrać oraz zmodyfikować. Nie oznacza to jednak, że można sobie taki program przywłaszczyć i podpisać własnym nazwiskiem. Autor wciąż może na takim oprogramowaniu zarabiać, mogą zarabiać również inni, którzy programów open source używają w swojej pracy.
Tak się składa, że od dawna bardzo dużo narzędzi przeznaczonych dla twórców oprogramowania jest udostępnianych jako open source. Dotyczy to w szczególności kompilatorów, parserów i innych narzędzi wspomagających tworzenie programów.
Spośród narzędzi programistycznych jako open source udostępnione są m.in. narzędzia programowania w C++ dla Linuxa, w Javie pod Androida, Angular od Google, czy duża część bibliotek związanych z frameworkiem .NET od Microsoftu - w tym najważniejsza, czyli kompilator .NET znany pod kodową nazwą Roslyn. Tak naprawdę wiele z najpopularniejszych programów używanych przez ogół użytkowników oprogramowania jest open source.
Dlaczego tak się dzieje, dlaczego firmy, w tym Apple, udostępniają efekty swojej pracy "za darmo" jako otwarty kod?
W wielu przypadkach można wyciągnąć z tego wiele korzyści. Na przykład udostępnienie kodu źródłowego poprawia jakość programu i jego bezpieczeństwo. Działa tu efekt skali - jeśli odpowiednio dużo osób będzie programu używać i analizować jego kod, to po pierwsze mają większe szanse na znalezienie w nim luk bezpieczeństwa, po drugie mogą znaleźć (a nawet poprawić!) znajdujące się w nim błędy. To drugie oczywiście wtedy, gdy twórca umożliwił dodawanie kodu przez innych użytkowników.
Inną korzyścią dla firmy jest popularyzacja ich rozwiązań i zachęcenie inżynierów do ich używania. Dlatego właśnie Apple udostępnił narzędzia związane ze Swift, a Microsoft bibliotekę uruchomieniową .NET Core - dzięki temu programiści pracujący na innych platformach pomyślą o możliwości ich używania.
Czy to działa?
Na pewno. Dosłownie dwa dni po tym, jak Apple udostępnił źródła narzędzi do języka Swift, mogłem pobrać paczkę skompilowaną na Ubuntu, z przeróbkami umożliwiającymi używanie standardowej biblioteki glibc zamiast biblioteki Apple, która udostępniona nie została. Tego wszystkiego dokonali "ochotnicy" w przeciągu kilkudziesięciu godzin. Po kilku minutach uruchomiłem pierwszy program "Hello world". Podobnie było z .NET Core na tym samym systemie Ubuntu - instalacja tego pakietu sprowadziło się do jednego polecenia.
Jakie są przypadki wspomagania środowiska open source przez firmy?
Takie przypadki są bardzo częste - oprócz stałych, dawno już udostępnionych programów, nie ma tygodnia, aby nie pojawiła się informacja o kolejnych. Na przykład w tym tygodniu, oprócz Swift, usłyszeliśmy od silniku Java Script będącym częścią przeglądarki Edge - ChakraCore. To właśnie ChakraCore będzie udostępniony w formie otwartych źródeł przez firmę z Redmond w przyszłym miesiącu.
Apple, oprócz narzędzi związanych z językiem programowania Swift, udostępnia od bardzo dawna wiele innych pakietów open source. Są to między innymi
- WebKit - czyli biblioteka odpowiadającą za rendering dokumentów w Safari
- ResearchKit - biblioteka służąca do wspomagania analiz medycznych
- Bonjour - kod sieciowy służący np. do automatycznego konfigurowania drukarek i szybkiego rozpoznawania urządzeń sieciowych
- LLVM - Low Level Virtual Machine - specjalny, użytkowany w tworzeniu programów na OS X kompilator, do którego rozwoju Apple mocno przyłożyło rękę.
Niestety, choć Apple miał zapewne szlachetne intencje, nie obyło się bez potknięć. Aby podkreślić swoje dokonania na polu open source, Apple umieścił na swoich stronach informację, że jest "pierwszą dużą firmą komputerową wspierającą open source". Po licznych nieprzychylnych wypowiedziach ze strony środowiska wolnego oprogramowania, stwierdzenie to zostało usunięte.