Master Coda - Logo
Master Coda
Nepravidelný blog o programování
This blog is written in Czech. You can read my articles in English at dev.to.

Reflexe Hacktoberfestu

03.11.2025
Jak jsem prožil letošní Hacktoberfest jako správce vlastního projektu
Indikátor strojového překladu

Nepodařilo se mi dokončit letošní Hacktoberfest. Stejně jako loni. Mít celý měsíc na to, abych přispěl 6 smysluplnými příspěvky do (mnoha) účastnících se open-source repozitářů zní dost jednoduše, ale ukazuje se to být těžší, než se zdá. Nicméně tentokrát mám solidní omluvu – volné hodiny, které jsem mohl strávit prací na vlastních PR, jsem strávil správou vlastního Hacktoberfest projektu a kontrolou příspěvků od ostatních. Toto je ohlédnutí za mými zkušenostmi z minulého měsíce.

Projekt, který vedu, se jmenuje Java Demos. Jeho hlavním cílem je poskytnout vysvětlení/demo implementaci pro každý Java Enhancement Proposal (JEP), který existuje. Je jich už stovky a nové se objevují každého půl roku s každým novým vydáním JDK. Projekt začal jako malá sbírka nových funkcí jazyka prezentovaných mým kolegům v práci, když vyšla Java 17, ale měl jsem pocit, že by měl pokračovat a růst.

Dlouhou dobu jsem s tím zápasil, protože nemám dostatek času (nebo vůle), abych držel krok s tempem vývoje Javy. Stav na konci září 2025 byl – kód na JDK 23, pokryto jen pár funkcí. Rozhodl jsem se využít příležitosti nadcházejícího Hacktoberfestu, gamifikované iniciativy na podporu open source od DigitalOcean, kterou jsem objevil před pár lety. Takže jsem aktualizoval projekt, aby běžel na nejnovějším JDK 25 (prostřednictvím čerstvé distribuce GraalVM), vytvořil úkoly s označením hacktoberfest na GitHubu, aby pokryly alespoň nové JEP z Javy 24 a 25 (celkem 42 – Java tým se v poslední době zdá být v přetlaku 🤯) a čekal, co přijde.

Opravdu jsem moc nečekal. Účastní se spousta projektů, mnoho z nich velmi známých a zavedených. Ani mě to moc netrápilo – myslím, že jsem odkaz na svůj repozitář zveřejnil jen pod jedním nebo dvěma články zde na dev.to. Žádná velká propagace. Žádné reklamování všude – pojďte mi pomoct prosím...

Ale vývojáři přišli. Myslím, že Java Demos má jednu velkou výhodu oproti mnoha jiným projektům – jsme ze své podstaty přátelští k začátečníkům, protože nastavení malého ukázkového kódu je doslova ta nejzákladnější věc, kterou můžete udělat. A na rozdíl od jiných projektů pro nováčky jsme daleko od dokončení. Takže bylo hodně relativně snadných věcí k udělání a toho si všimli, aniž bych musel cokoliv dělat.

Do konce měsíce přispělo 29 nových přispěvatelů a bylo mergováno více než sto jejich PR. I když to nemusí být ohromující čísla, pro mě to opravdu hodně znamená, protože to znamená, že (alespoň) 29 jedinečných osob se natolik zajímalo o něco, co jsem vytvořil, že strávili svůj čas forkováním projektu, studovali ho, aby pochopili, jak funguje, a otevřeli PR ve snaze ho vylepšit. I když je to těžké popsat, je to opravdu skvělý pocit. Pravděpodobně to nezmění svět, ale přesto to alespoň trochu znamená. Udělali jsme mnohem víc, než jsem doufal. Teď jsou dema pro všechno od Javy 17 a většinu dalších věcí až zpět k Javě 13. I když kvalita některých příspěvků ještě bude muset být zkontrolována (alespoň mám téma pro Hacktoberfest 2026 :)), projekt udělal velký skok vpřed. Díky úplným cizincům, kteří ho nějak našli.

Bylo to také náročné svým způsobem. Najednou tu byli lidé, kteří žádali o přidělení úkolů, měli otázky a otvírali PR čekající na zpětnou vazbu. Trochu to na mě vyvíjelo tlak, protože jsem se snažil odpovídat co nejdříve a nebylo to vždy pohodlné. Procházení kódu a psaní požadavků na změny tu a tam také zabere čas. Ale stálo to za to.

Také jsem se naučil pár věcí – nejdůležitější a také nejtěžší lekce je říct "NE" a zůstat pevný v odmítání změn, dokud nejsou připravené. No, abych byl upřímný, tohle se stále potřebuji naučit. Stále mám tendenci přijímat PR, která jsou "už dost dobrá", přestože vím, že budu muset později provést nějaké změny. Koneckonců autor pravděpodobně dal svůj nejlepší výkon a pro mě je to jen okamžik. Měl bych ho spíše povzbudit, aby to zkusil dál, než ho zahnat pryč, ne?

Na druhou stranu značná část PR byla bezpochyby vytvořena s AI včetně "vysvětlujících" ( = zbytečných) komentářů zanechaných agentem uvnitř zdrojového kódu. Jsem velkým fanouškem používání AI k usnadnění každodenní práce vývojáře. Ale vždy povzbuzuji každého, aby přemýšlel o kódu, který LLM vyplivne. A vážně pochybuji, že někteří z přispěvatelů to dělali. To mě opět vede k nutnosti být přísnější při posuzování PR. Přísný, ale zdvořilý a ne toxický jako někteří "senioři" mají tendenci být.

Zneužívání AI se zvláště projevilo, když jsem během měsíce otevřel pár pokročilých úkolů, kde jsem navrhl nějaká budoucí vylepšení jdoucí nad rámec obvyklého "Implementuj nové demo pro JEP xyz". Lidé se ozvali a ptali se "Prosím, přiřaď mi to". A já byl jako "Ok, ale to ještě ani není pořádný úkol, jen vize. Jak bys přistoupil k problému? Potřebuji, abys pochopil, co bys měl dělat a proč". A dostal jsem odpověď zpět, ale bylo obscénně zjevné, že je to "plán" napsaný AI s nulovou přidanou hodnotou od autora... To byly momenty, kdy jsem byl také zklamaný. A zůstal jsem ohromen faktem, že pravděpodobně ani nechápou, že udělali něco špatně. Takhle to teď prostě funguje, ne? Už žádné kódování, už žádné myšlení, jen napsat prompt a zkopírovat-vložit výsledek. Co se může pokazit, co?

Toto nebylo míněno jako výpad proti AI. Používám svůj ChatGPT a svůj Copilot denně. A povzbuzuji všechny ostatní, aby zvýšili svou produktivitu přijetím jeho schopností. Ale ještě jednou – nepoužívejte to naslepo. Dodržujte principy The AI Manifesto. A pro správce open-source to znamená zůstat bdělý a ověřovat, co se potenciální přispěvatelé neúmyslně snaží do projektů propašovat. Vždy jsem se snažil vysvětlit, proč trvám na jejich vlastním porozumění. Někteří se nechali odradit a požádali místo toho o nějaký jednodušší úkol, ale také jsem některé z nich přiměl přemýšlet více a nakonec přinesli užitečné řešení. Věřím, že to stálo za můj čas, i když bych byl šťastnější, kdybych nemusel vysvětlovat tak základní věci.

Můj článek se stává dlouhým, takže je tu ještě jedna poslední věc, na kterou chci poukázat. Navzdory mému maximálnímu úsilí zachytit je během kontrol a navzdory vylepšeným instrukcím v příručce pro přispěvatele se chyby stále probublávaly do hlavní větve s některými PR. Viděli jsme chyby při kompilaci (většinou z nesprávného řešení merge konfliktů), ale dokonce i nějaké výjimky za běhu.

Nejlepší věc pro prevenci takových problémů? Zavést povinné kontroly – každé PR se musí zkompilovat a (přidáno později) program musí běžet. S GitHubem je překvapivě snadné zavést workflow, který to dělá. Věděl jsem to předtím? Ne. Ale trvalo to doslova minuty konzultovat s ChatGPT Plus model 5 a měl jsem řešení. Ale důležité je – nepřijal jsem řešení naslepo. Prošel jsem si to pečlivě a ujistil se, že všemu rozumím. Bylo to trochu jednodušší, protože jsem už o GitHub action pipeline věděl jednu dvě věci (koneckonců už jsem forkl a upravil jeden). Ale i když víte, že to bude trvat dlouho, měli byste vždy investovat svůj čas do demystifikace kódu, který jste dostali zpět z inteligentního, ale bezmyšlenkovitého stroje. Abych byl k vám úplně upřímný, druhá část akce, která kontroluje, zda program stále může běžet bez výjimky za běhu, je jeden z Hacktoberfest příspěvků od jednoho z aktivnějších přispěvatelů. Vlastní iniciativa nebyla tak běžná, lidé většinou vybírali úkoly, které jsem pro ně připravil, takže mu patří uznání za to (a další).

Jsem si docela jistý, že bych toho měl víc co říct, ale vlak se blíží k mému městu, takže musím končit. Očekávám, že projekt bude teď klidnější, takže budu mít čas vyleštit, co bylo přidáno, a připravit to na příští Hacktoberfest. Už se na to těším.