Aktualizacja projektu open source React Native – marzec 2019
Ta strona została przetłumaczona przez PageTurner AI (beta). Nie jest oficjalnie zatwierdzona przez projekt. Znalazłeś błąd? Zgłoś problem →
W czwartym kwartale 2018 roku ogłosiliśmy naszą mapę drogową React Native Open Source po podjęciu decyzji o większym zaangażowaniu w społeczność open source React Native.
W pierwszym kamieniu milowym skupiliśmy się na zidentyfikowaniu i ulepszeniu najbardziej widocznych aspektów naszej społeczności. Nasze cele obejmowały: redukcję zaległych pull requestów, zmniejszenie obszaru projektu, identyfikację kluczowych problemów użytkowników oraz ustalenie wytycznych zarządzania społecznością.
W ciągu ostatnich dwóch miesięcy osiągnęliśmy większy postęp, niż się spodziewaliśmy. Czytaj dalej, aby poznać szczegóły:
Pull Requesty
Aby zbudować zdrową społeczność, musimy szybko reagować na wkłady kodu. W minionych latach zepchnęliśmy na dalszy plan przeglądanie wkładów społeczności, co doprowadziło do nagromadzenia 280 pull requestów (grudzień 2018). W pierwszym kamieniu milowym zmniejszyliśmy liczbę otwartych pull requestów do ~65. Jednocześnie średnia liczba otwieranych pull requestów dziennie wzrosła z 3.5 do 7, co oznacza, że obsłużyliśmy około 600 pull requestów w ciągu ostatnich trzech miesięcy.
Scaliliśmy prawie dwie trzecie i zamknęliśmy jedną trzecią pull requestów. Zamykaliśmy je bez scalania, jeśli były przestarzałe, niskiej jakości lub niepotrzebnie zwiększały obszar projektu. Większość scalonych pull requestów naprawiała błędy, poprawiała zgodność międzyplatformową lub wprowadzała nowe funkcje. Wśród znaczących wkładów znalazły się poprawa bezpieczeństwa typów oraz trwające prace nad wsparciem dla AndroidX.
W Facebooku korzystamy z React Native bezpośrednio z gałęzi master, więc najpierw testujemy wszystkie zmiany, zanim trafią do wydania React Native. Spośród wszystkich scalonych pull requestów tylko sześć spowodowało problemy: cztery dotyczyły wyłącznie rozwoju wewnętrznego, a dwa zostały wychwycone na etapie kandydata do wydania.
Jednym z bardziej widocznych wkładów społeczności był zaktualizowany ekran „RedBox”. To doskonały przykład, jak społeczność czyni doświadczenie deweloperskie bardziej przyjaznym.
Lean Core
React Native ma obecnie bardzo szeroki obszar z wieloma nieutrzymywanymi abstrakcjami, których rzadko używamy w Facebooku. Pracujemy nad zmniejszeniem tego obszaru, aby uczynić React Native mniejszym i umożliwić społeczności lepszą opiekę nad abstrakcjami, które są w Facebooku głównie nieużywane.
W pierwszym kamieniu milowym poprosiliśmy społeczność o pomoc w projekcie Lean Core. Odzew był przytłaczający i ledwo nadążaliśmy z postępem. Zobacz całą pracę wykonaną w mniej niż miesiąc!
Najbardziej cieszy nas, że opiekunowie zaangażowali się w naprawę długotrwałych problemów, dodawanie testów i wspieranie długo oczekiwanych funkcji. Te moduły otrzymują więcej wsparcia niż kiedykolwiek w ramach React Native, co pokazuje, że to świetny krok dla społeczności. Przykładami takich projektów są WebView, który otrzymał wiele pull requestów od czasu wydzielenia, oraz CLI, które jest teraz utrzymywane przez członków społeczności i otrzymało bardzo potrzebne ulepszenia oraz poprawki.
Główne problemy użytkowników
W grudniu zapytaliśmy społeczność, co nie podoba im się w React Native. Zebraliśmy odpowiedzi i odpowiedzieliśmy na każdy zgłoszony problem. Na szczęście wiele wyzwań naszej społeczności to również problemy wewnątrz Facebooka. W kolejnym kamieniu milowym planujemy rozwiązać kluczowe z nich.
Jednym z najczęściej wskazywanych problemów było doświadczenie deweloperskie przy aktualizowaniu React Native. Niestety, sami tego nie doświadczamy, ponieważ korzystamy bezpośrednio z gałęzi głównej. Na szczęście członkowie społeczności już podjęli działania:
-
Michał Pierzchała z Callstack ulepszył proces aktualizacji wykorzystując rn-diff-purge. Zaktualizowaliśmy też dokumentację usuwając przestarzałe instrukcje.
-
Planujemy rekomendować CocoaPods jako domyślne rozwiązanie dla iOS, co zmniejszy chaos w plikach projektu podczas aktualizacji. Ułatwi to instalację i linkowanie modułów innych firm – szczególnie ważne w kontekście Lean Core, gdzie projekty będą domyślnie linkować więcej modułów.
Wydanie wersji 0.59
Bez pomocy społeczności React Native, zwłaszcza Mike'a Grabowskiego i Lorenzo Sciandry, nie bylibyśmy w stanie publikować wersji. Chcemy ulepszyć proces zarządzania wydaniami:
-
Będziemy współpracować ze społecznością przy tworzeniu wpisów na blogu dla każdej głównej wersji
-
Będziemy wyświetlać breaking changes bezpośrednio w CLI podczas aktualizacji
-
Skrócimy czas publikacji wersji. Badamy możliwości zwiększenia automatyzacji testów i tworzymy ulepszony plan testów manualnych
Wiele z tych planów znajdzie się w nadchodzącym wydaniu React Native 0.59. Wersja 0.59 zawiera React Hooks, 64-bitową wersję JavaScriptCore dla Androida oraz liczne ulepszenia wydajnościowe. Obecnie dostępna jako release candidate, stabilna wersja powinna pojawić się w ciągu dwóch tygodni.
Kolejne kroki
Przez najbliższe dwa miesiące będziemy utrzymywać tempo w zarządzaniu pull requestami jednocześnie redukując zaległe zgłoszenia na GitHubie. Kontynuujemy zmniejszanie powierzchni projektu poprzez Lean Core i planujemy rozwiązać 5 głównych problemów społeczności. Po finalizacji wytycznych społeczności skupimy się na stronie i dokumentacji.
Z niecierpliwością czekamy na przyjęcie ponad dziesięciu współtwórców w siedzibie Facebooka w Londynie, gdzie będziemy wspólnie pracować nad tymi inicjatywami. Cieszymy się, że korzystasz z React Native i mamy nadzieję, że zauważysz poprawę w 2019 roku. Wrócimy z kolejnymi aktualizacjami za kilka miesięcy, a w międzyczasie będziemy mergować wasze pull requesty! ⚛️✌️