Reflexe Hacktoberfestu
03.11.2025
Jak jsem prožil letošní Hacktoberfest jako správce vlastního projektu
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. Tady 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. Jsou jich už stovky a nové přibývají každého půl roku s každým novým vydáním JDK (nejnovější 25 ze srpna 2025). 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 dá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. Aktualizoval jsem projekt, aby běžel na nejnovějším JDK 25 (prostřednictvím čerstvé distribuce GraalVM), vytvořil na GitHubu úkoly s labelem hacktoberfest, aby pokryly alespoň nové JEP z Javy 24 a 25 (celkem 42 - Java tým se v poslední době zdá být mimořádně aktivní 🤯) a čekal, co přijde.
Opravdu jsem nic moc nečekal. Účastní se spousta projektů, řada z nich velmi známá a zavedená. Ani jsem se propagaci nijak zvlášť nevěnoval - odkaz na svůj repozitář jsem zveřejnil tak pod jedním nebo dvěma články na webu dev.to. Žádná velká propagace. Žádné "pojďte mi pomoct prosím" reklamy všude možně...
Ale vývojáři přišli. Myslím, že Java Demos má jednu velkou výhodu oproti mnoha jiným projektům - je ze své podstaty přátelský 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 je ještě daleko od dokončení. Takže bylo hodně relativně snadných věcí k dodělání, a toho si programátoři sami všimli, aniž bych musel cokoliv dělat.
Do konce měsíce se objevilo 29 nových přispěvatelů a mergoval jsem více než 100 jejich PR. I když to nemusí být ohromující čísla, pro mě to znamená opravdu hodně. Že se (alespoň) 29 jedinečných osob 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 mělo smysl. Udělali jsme mnohem víc, než jsem doufal. Nově 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 však také svým způsobem náročné. 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 onde 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 sám provést nějaké změny. Koneckonců autor pravděpodobně podal svůj nejlepší výkon, zatímco 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í vývojářské práce. Ale vždy přitom každého nabádám, aby o kódu, který LLM vyplivne, přemýšlel. A vážně pochybuji, že někteří to z přispěvatelů dělali. To mě opět vede k nutnosti být při posuzování PR přísnější. Přísný, ale zdvořilý a hlavně ne toxický jako mají někteří "senioři" tendenci být.
Zneužívání AI se zvlášť projevilo, když jsem v průběhu října 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 žádali "Prosím, přiřaď mi to". A já na to: "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 zpátky odpověď, 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é trochu zklamaný. A zůstal 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, že?
Toto nebylo míněno jako výpad proti AI. Sám používám svůj ChatGPT a svůj Copilot denně. A povzbuzuji všechny ostatní, aby zvyšovali svou produktivitu využití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 vždy bdělý a ověřovat, co se potenciální přispěvatelé (snad neúmyslně) snaží do projektů propašovat. Vždy jsem se snažil všem 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 tak základní věci nemusel vysvětlovat.
Můj článek začíná být dlouhý, takže už jen 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, stále do hlavní větve probublávaly z některých PR chyby. Objevily se chyby při kompilaci (většinou z nesprávného řešení merge konfliktů), ale dokonce i nějaké běhové výjimky svědčící o nedostatku testování (zdravím AI "vibe" kodéry).
Nejlepší věc pro prevenci takových problémů? Zavést povinné kontroly - každé PR musí jít zkompilovat a (přidáno později) program musí doběhnout bez chyb. S GitHubem je překvapivě snadné zavést workflow, které to zařídí. Věděl jsem to předtím? Ne. Ale trvalo mi doslova jen minuty konzultovat s ChatGPT Plus model 5 a měl jsem řešení. Důležité ovšem je - nepřijal jsem ho naslepo. Vše jsem si pečlivě prošel a ujistil se, že všemu rozumím. Bylo to trochu jednodušší, protože jsem už o GitHub action pipeline pár věcí věděl (koneckonců jsem už i jednu úpravou existující stvořil). Ale i když víte, že to bude trvat dlouho, měli byste opravdu vždycky investovat svůj čas do demystifikace kódu, který jste dostali ze sice schopného, ale stále nemyslící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, nebyla původně moje, ale byl to jeden z Hacktoberfest příspěvků od jednoho z aktivnějších přispěvatelů. Vlastní iniciativa nebyla úplně běžná, lidé si většinou vybírali úkoly, které jsem pro ně připravil, takže mu za to (i za další) patří uznání.
Jsem si docela jistý, že bych toho měl víc co říct, ale vlak už se blíží k mému domovu, takže musím končit. Očekávám, že projekt teď bude opět klidnější, takže budu snad mít čas lépe zkontrolovat, co všechno bylo přidáno, a pomalu se připravit na příští Hacktoberfest. Už se na to těším.
