TECH

Jak wspierać Open Source bez znajomości frameworka?

Jak wspierać Open Source bez znajomości frameworka?


Jak wniosłem wkład do projektu open source, nie znając frameworka

Jestem deweloperem Ruby on Rails z kilkuletnim doświadczeniem w różnych projektach i technologiach. Dwa tygodnie temu, po zakończeniu jednego z projektów, mój CTO wspomniał o Open Mercato — opowiedział, kto stoi za tą inicjatywą, jak szybko się rozwija i dlaczego jego zdaniem warto się w nią zaangażować.

Projekt koncentruje się na oprogramowaniu ERP — obszarze zdominowanym przez przestarzałe systemy, które często nie wspierają nawet podstawowych integracji. Open Mercato podchodzi do tego tematu z nowoczesnym stosem technologicznym, silnym naciskiem na otwartość i możliwości integracyjne oraz aktywnym wsparciem dla najnowszych technik agentowego kodowania opartych na LLM. Firma, w której pracuję, aktywnie wspiera inicjatywy open source — szczególnie te, które mają potencjał stać się gamechangerem w swojej dziedzinie.

Conversation about Open Mercato
Dla mnie osobiście były trzy powody, by spróbować. Po pierwsze — chciałem poszerzyć swoją perspektywę techniczną. Uważam, że deweloper, który rozumie więcej niż jeden ekosystem, po prostu lepiej rozwiązuje problemy. Po drugie — projekt jest zbudowany w TypeScript i Next.js, a ja chciałem zdobyć praktyczne doświadczenie w środowisku JavaScript. TypeScript znam, więc sam język nie był barierą, ale Next.js był dla mnie nowym terytorium. Po trzecie — chciałem świadomie rozwijać swoje umiejętności w zakresie AI-assisted coding. Nie chodzi o to, żeby AI pisało za mnie kod, ale o nauczenie się efektywnego wykorzystywania tych narzędzi jako elementu workflow.

Początek

Po uruchomieniu projektu lokalnie nie rzuciłem się od razu na zgłoszenia. Najpierw chciałem zrozumieć, z czym mam do czynienia. Przeanalizowałem codebase przy użyciu Claude zainstalowanego w IDE, rozszerzonego o dedykowane wtyczki do czytania, analizowania i implementowania kodu. To był świadomy wybór — odpowiednie narzędzia naprawdę robią tu różnicę. Poprosiłem o rozpisanie struktury projektu: jakie moduły są używane, jak zorganizowana jest architektura, jakie są ogólne konwencje. Zapytałem też, czy projekt posiada jakieś pliki z wytycznymi dotyczącymi AI.

Tu pojawiło się pierwsze zaskoczenie — projekt ma rozbudowaną dokumentację AI. Jasne wytyczne dotyczące pisania testów, implementacji kodu, formatu PR-ów. To znacząco przyspieszyło wdrożenie się w projekt.

WHAT
Mając klarowny obraz architektury i rozumiejąc konwencje, zacząłem szukać pierwszego zadania. Wybrałem coś, co wydawało się dobrze zdefiniowane i zrozumiałe. Znalezienie odpowiedniej części codebase nie było trudne — projekt jest dobrze przetestowany, a same testy działają jak dokumentacja. Po ich przeczytaniu łatwo było wyizolować problematyczny obszar.

Wróciłem wtedy do Claude — poprosiłem o analizę konkretnego fragmentu kodu w kontekście zgłoszenia. Analiza potwierdziła moje przypuszczenia. Kolejny krok: plan naprawy. Zanim jednak przystąpiłem do implementacji, poprosiłem Claude o sprawdzenie, czy funkcje, które zamierzałem modyfikować, są używane w innych częściach projektu — żeby upewnić się, że naprawiając jedną rzecz, nie zepsuję innej. Plan obejmował zarówno samo rozwiązanie, jak i wytyczne AI zdefiniowane w projekcie.

Pierwsze PR-y

Pierwsze zgłoszenie dotyczyło maili z powiadomieniami — linki w wysyłanych wiadomościach były niepoprawne, gdy APP_URL było źle skonfigurowane. System używał ogólnego linku do panelu zamiast konkretnego adresu przypisanego do danego typu powiadomienia. Dodatkowo brak APP_URL skutkował wysyłaniem maili z uszkodzonymi linkami zamiast całkowitego zablokowania wysyłki.

Problem with emails
Drugie zgłoszenie dotyczyło modułu schedulera działającego w domyślnej konfiguracji deweloperskiej (QUEUE_STRATEGY=local). Trzy problemy: kliknięcie „Run Now” zwracało ogólny błąd zamiast czytelnego komunikatu, strona szczegółów schedulera crashowała przy próbie pobrania danych niedostępnych w tej konfiguracji, a pole JSON w formularzach korzystało ze zwykłego textarea zamiast z dedykowanego komponentu dostępnego już w projekcie.

Problem with scheduler
Warto wspomnieć o jednej świadomej decyzji: część zgłoszenia została celowo pominięta — analiza wykazała, że jej implementacja wymagałaby zmian architektonicznych wykraczających daleko poza zakres bugfixa. Zostało to udokumentowane w PR i zgłoszone jako osobna propozycja funkcjonalności. Uważam, że taka transparentność jest elementem dobrej kultury współpracy.

Zgodnie z dokumentacją projektu zacząłem od forka. Zanim otworzyłem PR do głównego repozytorium, przeprowadziłem wewnętrzny review z naszym zespołem. PR był dobrze opisany — problem, przyczyna, rozwiązanie — zgodnie z formatem wymaganym przez projekt. Co warte podkreślenia: nasz zespół nie miał wcześniejszej znajomości codebase, a mimo to dzięki szczegółowej dokumentacji kodu i funkcjonalności — wspieranej przez Claude — był w stanie szybko się wdrożyć, przeprowadzić sensowny review, odnieść się do proponowanej architektury i implementacji oraz wnieść realną wartość do procesu. Wewnętrzny feedback sprowadził się do jednego punktu: upewnić się, że poprawione funkcje nie wpływają na inne części systemu. Zająłem się tym i tego samego dnia uzyskałem wewnętrzną akceptację.

Tego samego dnia otworzyłem PR-y w oryginalnym repozytorium. Następnego dnia — zaakceptowane bez uwag. Oba zmergowane.

Do czego to się sprowadza

Wejście w nowy projekt, nowy framework, nową społeczność — brzmi jak dużo. Ale przy odpowiednim podejściu bariera wejścia jest znacznie niższa, niż się wydaje.

Kilka rzeczy, które pomogły:


  • rozpoczęcie od zrozumienia projektu przed dotykaniem zgłoszeń,
  • traktowanie testów jako dokumentacji,
  • świadome używanie AI jako narzędzia do analizy i planowania zamiast generatora kodu,
  • wybranie na start czegoś małego i dobrze zdefiniowanego.


Chaos of Cards
Open source to dobre środowisko do takiego rozwoju. Projekty są publiczne, kod jest dostępny do czytania, a pierwsze kontrybucje nie muszą być przełomowe. Muszą po prostu być poprawne.

Przeczytaj więcej na naszym blogu

Sprawdź bazę wiedzy zebraną i opracowaną przez doświadczonych
profesjonalistów.
Designing Agentic Workflow
Tech
AI

AI is an amazing tool, especially when it comes to writing code. But it is also fundamentally different from what we, as programmers, are used to. This becomes even more visible when we use AI in...

Zarządzanie niebezpiecznym długiem poznawczym
Tech

Parę słów na temat użycia AI podczas pracy (gdzie jako pracę rozumiemy nie tylko kodowanie), aczkolwiek od kodowania zaczniemy, a konkretnie od często ostatniego jego etapu - code review oraz...

Ship with Confidence: Rails Production Checklist
Tech

You finally click Deploy. The terminal scrolls, CI is all green, and for a few seconds, you feel unstoppable. You open the app in production, click around, and everything seems fine. Then an...

ul. Powstańców Warszawy 5
15-129 Białystok
+48 668 842 999
SKONTAKTUJ SIĘ Z NAMI