JIRA -> GitHub Issues

S VersionPressem silně zvažujeme přechod z Bitbucketu + JIRY na GitHub + GH Issues, což je docela zajímavý střet světů. Mám k tomu pár postřehů a i by mě zajímal váš názor, zkušenosti nebo případné komentáře.

Proč přechod

VersionPress, nebo minimálně jeho části, budou v dohledné době komunitní projekt a nedá se svítit, vývojáři jsou dneska na GitHubu. Tím jdou v podstatě všechny ostatní argumenty stranou, čímž neříkám, že GitHub nemá další pro – např. je cloud-hostovaný, rozumně levný, s plným API apod. Ale komunita je to, co nás “nutí”.

Přejít z JIRY je radost, ne?

Nevím. JIRA má z mého pohledu jen dva nedostatky: je pomalá a je pomalá. Jinak je to jednoduchý systém, s kanban boardem, logickým uspořádáním, moc toho v základu nechybí ani nepřebývá, zkrátka o JIŘE tak trochu platí, že pokud jste si na ni udělali špatný názor před deseti lety, dneska byste se divili.

Spolu s Bitbucketem, který používáme na pull requesty a code reviews, je to harmonický celek, který nás celkem ničím (kromě pomalosti) neštve a funguje dobře.

GitHub

Příslibem a současně problém GitHubu je, že by měl zvládnout roli JIRY, Bitbucketu a možná i ještě něčeho dalšího (lidi to např. často berou jako support kanál, viz label “question” v GH Issues). To je obecně velká výzva a je celkem jasné, že ji GitHub může v plné šíři zvládnout jen těžko.

Mé postřehy jsou následující:

1) Issue tracker doplácí na klasické “jednoduché neznamená nutně dobře použitelné”. V podstatě jediným kategorizačním mechanismem jsou labely, což by i mohlo stačit, kdyby byly udělané dobře. Ale přejmenovat label znamená udělat si v trackeru bordel (labely nemají identitu, v historii ticketů zůstanou jen jako string odkazující se na stránku k ničemu), z toho plyne nutnost je dobře navrhnout už od začátku, ale jak to má člověk bez zkušeností udělat, že jo, apod. Tohle je zcela proti konceptu don’t make me think a znovu, stačilo by, aby labely byly udělané dobře, ve stylu polí v jiných issue trackerech. Ale nejsou.

Plus to kupu věcí neumí, například varovat uživatele, že vkládá issue, která už pravděpodobně existuje, nebo ukládat historii editů, nebo přikládat libovolné soubory (docela nově umějí vedle obrázků aspoň DOCX a PDF). Něco z toho jsou menší věci, ale některé podle mě docela zásadní.

2) Issues používají stejnou číselnou řadu jako pull requesty. To je obecně hrozně zajímavý koncept – ne ta čísla, ale že PRs jsou v podstatě issues. Není to tak dávno zpátky, co mi tohle dávalo velký smysl. U nás se totiž běžně stávalo, že se ticket založil v JIŘE, nějak se tam lehce podiskutovalo, ale jak se začal psát kód a otevřel se PR, tak se komunikace přesunula tam. Ale jen částečně – pořád ještě šly nějaké komentáře k issues. Takže to bylo zbytečně a otravně rozdvojené a říkal jsem si, jak by bylo fajn, kdyby celý issue tracker byl jeden PR za druhým. A asi si to řekli i v GitHubu.

Jenže to nefunguje. Přišli na to sami, když před časem zakázali konvertovat issues do pull requestů – přinášelo to víc zmatku než užitku. Chtě nechtě, issues a PRs jsou dvě různé věci, ač relativně úzce propojené, a mělo by to být v UI i v číselné řadě oddělené. Mimochodem, na JIŘE zpětně oceňuju, že projekt má svůj klíč a číslo issue vypadá např. VP-123. Jak vidím něco takového kdekoliv (ve wiki, v mailu, …), okamžitě vím, že se jedná o VersionPress issue. #123 mi bez kontextu neříká nic, a ani v rámci kontextu projektu nevím, jestli to je PR nebo ticket :) #cognitiveLoad

3) Pull requesty by měly být pýchou GitHubu, ale upřímně, Bitbucket je má zas tak nějak ošklivější, ale funkčnější. Tam založím PR, přidám své kolegy jako reviewery, oni mi buďto dají fajfku jako že vše OK, nebo napíšou komentář, a z jedné stránky přehledně vidím, jak jsou všechny PR na tom. Dead simple. Na GitHubu to jde nasimulovat palcema nahoru nebo kdovíjak všelijak, ale podobně jako u issues, tam, kde mě tool Atlassianu vede a po applovsku mi nedává moc šanci udělat chybu, na GitHubu musím být kreativní a po androidovsku si to tak nějak vykoumat. To je přísné hodnocení, co? Zvlášť když vizuálně GitHub vypadá tak jednoduchý a cool…

Nicméně…

Statisticky na GitHubu projektu prostě fungují v pohodě. Je tam Facebook, Microsoft, Automattic (WordPress company) a mnoho dalších. Půjde to i u nás, jen asi musíme rezignovat z “čistoty” současných postupů. Ono se to asi stejně stane, až nám do našeho “svatého” issue trackeru začnou lidi valit jednu duplicitu za druhou. Jak už to bývá, u issue #5 zamrzí, že je zabraná nějakým blbým pull requestem, ale u issue #2617 je to už úplně jedno.

Prosba – zkušenosti s OSS projekty

Na závěr bych vás moc rád požádal o jakékoliv tipy, které máte k provozování OSS projektů na GitHubu, hlavně z pohledu autora / maintainera. Pro nás to bude nová zkušenost, a pokud by se daly ušetřit nějaké starosti, určitě by to neuškodilo :) Díky a konec úvahy.

Nový .NET – promarněná příležitost?

Pokud jste nebyli poslední dva dny kompletně offline, nemohlo vás minout, že Microsoft oznámil “nový .NET” – plně open source (MIT licence), na GitHubu, rozběhatelný na Linuxu a Mac OS, k tomu Visual Studio zdarma atd. I z programátorského pohledu začínají konečně fixovat roky staré bolístky a například ASP.NET 5 bude hezký, moderní stack se vším všudy (příčetný projektový systém, o hodně vylepšený vývojový i deployment model a podobně).

Tohle všechno je paráda, a třeba to Visual Studio zdarma jde podle mě daleko za očekávání, přesto jsem si uvědomil jednu věc, když jsem koukal na parádní integraci C# do Sublime Textu: není to všechno jen svým způsobem promarněná příležitost? C# v Sublime Textu skoro včetně refaktoringu, wow, ale je C# ten jazyk, který dlouhodobě chceme? Je .NET a jeho BCL a jeho konvence a jeho všechno to, co dlouhodobě chceme? Continue reading

Zdálo se mi o WebExpo 2014

WebExpo logoHolky a kluci, co dělají tento rok WebExpo požádali garanty a vůbec všechny, aby se podělili o svůj průchod WebExpem. Už se podělil Riki Fridrich i Jirka Sekera, u mě byla touha podělit se dokonce tak silná, že se mi dneska v noci zdálo o tom, jak bude WebExpem prolítávat Špaček. Musím si to zapsat, abych ho náhodou nezapomněl a pak si 14. září večer neříkal “jakou přednášku jsem to vlastně chtěl vidět?” Ten sen vypadal tedy nějak takhle:

Hned po ránu vyrážím do CEVRO Institutu na Tomáše Hálu z ACTIVE24, který tam od 13h povídá o projektu Fénix, bezpečné VLAN, která v případě DoS útoku umožní vybraným službám spolu komunikovat, ať se děje, co se děje. Ale to nám, obyčejným uživatelům webových prohlížečů je stejně k ničemu, protože do takové sítě přístup mít nebudeme a tak se na ty služby v době útoku stejně nepřipojíme.

Po malé přestávce se nechtěně probouzím na přednášce Petra Chytila z AVAST Software, ten zrovna popisuje techniky, pomocí kterých dostávají informace o virech do našich antivirů. Petr také prozrazuje, že tahle vlna “exekutorských e-mailů” byla už určitě poslední, protože od příště tyhle zprávy budou našejejich antiviry blokovat ještě dříve, než je váš oblíbený exekutor odešle.

Traffic v CEVRO Institutu i nadále skenuje AVAST, od Jakuba Janečka se dozvídám o masivně škálovatelných službách, o úplně nejvíc Web Scale databázi MongoDB se ale bohužel nemluví, takže si nenápadně odskakuji na toaletu a už se nevracím. Zapomenutou bundu mi žádný dobrák nepřinese. Večer na party je dostatečný klid, takže si do sluchátek pouštím podcast, ve kterém se právě o technologiích používaných v AVASTu mluví a já začínám litovat, že jsem nezůstal do konce.

Na toaletu samozřejmě nejdu, to ještě pár dní vydržím, místo toho se vydávám do Světozoru. Cestou ovšem zabloudím, kolem Václaváku nejsem místní, a omylem se zjevuji na Startup Stage, kde slyším pár vět a v nich, jako jeden z mála posluchačů, rozumím jen jednomu jedinému slovíčku – hacking. Tomu ale zase nerozumí ostatní návštěvníci. V tu chvíli se o slovo opět hlásí potřeba a já si vzpomínám, že jsem vlastně chtěl jít na záchod. Po technické přestávce se tedy konečně dostávám do Světozoru, kde Daniel Bagge povídá o evoluci hrozeb starších než on. Daniel pracuje v Národním bezpečnostním úřadu a já už jsem párkrát slyšel mluvit jeho nejvyššího, takže správně tipuji, že tou hrozbou, o které bude přednáška, je právě jeho šéf. Podle fotky starší je, takže to sedí.

Ve Světozoru zůstávám na přednášku Pera Thorsheima. Per založil konferenci Passwords, která se koná dvakrát ročně, jednou v Las Vegas, podruhé kdesi za severním polárním kruhem. Každým rokem se na této konferenci sjíždějí odborníci, kteří svá hesla zapomněli a Per jim je vždy připomene. Jsem moc rád, že se Per ukáže v Praze, od mého posledního výletu do Las Vegas už pár dní uplynulo, takže jsem zase několik hesel stihl zapomenout.

Nejsem sám, kdo zapomíná hesla, takže Perova přednáška se protahuje až do brzkých ranních hodin do míst, kde točí Plzeň. Všechna nová hesla všech účastníků Perovo prodloužené přednášky si hned zapisuji a díky tomu nestíhám workshop Jana Pavla od 10h ráno, ale co už, kyberzločincem již podle některých jsem, takže to zas tak nevadí. Pokud vy nejste a chtěli byste být, neváhejte, ale doma to děti raději nezkoušejte.

Veřejným tajemstvím letošního WebExpa je skutečnost, že AVAST tentokrát v rámci sponzorství místo finančního příspěvku poslal organizátorům na účet asi dvacet spíkrů, takže mě nepřekvapuje, že nestíhám ani přednášku dalšího avasťáka, .NET vývojáře Michala Augustýna, tentokrát o Postgresu, od 10:20. Jestli tam někdo půjdete, tak se hlavně neptejte, proč Michal nezvolil MSSQL, jinak se ostatní posluchači neprobudí ani na oběd, který letos vlastně ani není v ceně.

Vzpomínám si, že jsem chtěl slyšet i něco zajímavého ze světa databází, jenže před sedmi lety jsem přičuchnul k PostgreSQL a tak mě další varianta MySQL zas tak moc netankuje. V klidu tedy pokračuji v zapisování všech nových hesel a chvilkami mě mrzí, že jich mám tolik, že jsem nestihl Michala, ale do notýsku si k jeho heslu PasswordAvast3 píšu poznámku, že si mám na večer stáhnout další podcast, ze kterého se o PostgreSQL později dozvídám i něco nového.

Node.js, Azure a Skype je ďábelská kombinace, před pár lety skoro nepředstavitelná. Pokud pro Skype náhodou nepracujete a chtěli byste o téhle kombinaci něco slyšet, dostavte se od 11h do České Spořitelny, Catalin Ionut Fratila (to je jeden člověk), vám řekne, jak to ve Skype míchají. Podle mých informací jim to jde ještě lépe, než když jsme tam s Lukášem Hudečkem míchali rum s kolou, takže se máte se na co těšit.

Po pauze na oběd, která vlastně žádná není, se nějakým zázrakem probouzím v České Spořitelně na přednášce Matěje Kvocera s názvem Rent-a-hacker. V CEVRO Institutu probíhá souběžně přednáška Stanislava Hackera a já celou dobu přemýšlím, jakou dostanu cenu za to, že jsem tenhle easter egg pořadatelů objevil. Přednášku tím pádem moc nevnímám, ale mám na sobě tričko s číslem svého bankovního účtu, kdyby si mě někdo chtěl náhodou najmout.

Od 14h povídá Innovation evangelist České Spořitelny v České Spořitelně o API České Spořitelny. Za mě dobrý a palec nahoru organizátorům za výběr místa na tuhle přednášku. Já osobně bych ji dal do Era světa. Budete-li mi chtít v komentářích sdělit, kam jinam byste tu přednášku dali vy, nezapomeňte do textu uvést slovo kiwi, ať víme, že jste si můj sen přečetli celý.

Líbí se mi, že když se konečně z těch všech pojišťoven vzpamatuji, tak nemusím nikam přecházet. Michal Kubíček začíná mluvit o tom, jak si nenechat hacknout WordPress. WordPress sice nepoužívám a tak zkouším, jestli web pay4t.cz, za nímž stojí právě Michalova firma, stále ukládá hesla uživatelů pomocí algoritmu MD5 bez přidání soli. A co byste řekl, měl ho tam, pořád. Zbytek přednášky se tedy raději těším na jediného WordPress hackera, kterého znám osobně. Borek Bernard se snaží WordPress ohnout tak, aby uměl verzování všeho možného do Gitu a mě se moc líbí, že je možné publikovat obsah tak, že do Gitu jednoduše pushnu nový textový soubor.

Na konci víkendu mě trochu mrzí, že letošní WebExpo nemělo více vývojářských přednášek a že to byl spíše takový Marketing Festival říznutý Creative Mornings, nicméně už teď vím, že si to týden po WebExpu vynahradím několika dny školení (zvu vás) a návštěvou konference o PHP v Brně.

A co se zdálo dneska vám, hmm? A chci to vůbec vědět?

IntelliJ IDEA – kovbojské IDE

Zkouším pro Flexový vývoj přejít z Flash Builderu (IDE postavené nad Eclipse) na IntelliJ IDEU, což je obecně nástroj vynášený do nebes a i kupa Flexařů přešla a přechod doporučuje. Tak to zkouším a je to hodně zajímavá zkušenost.

Na jednu stranu, a to o nástrojích JetBrains platilo vždy, jejich IDE je velmi inteligentní a dobře rozumí kódu. Flash Builder v tomto taky není úplně špatný a o vztahu různých symbolů v projektu má slušnou představu, ale IDEA je určitě dál. V praktické rovině je například daleko pohodlnější se z deklarace rozhraní prokliknout na jednotlivé implementace (ve Flash Builderu nutno neohrabaně přes Find References), lze udělat rychlý diagram závislostí mezi projekty atd. atd. Tohle je, hádám, hlavní důvod, proč tolik (nejen Flex-) vývojářů IDEU vynáší do nebes a fakt je příjemné v tom kódit, pokud všechno ostatní funguje.

Jenže v tom je ten háček. Už u JavaScriptového vývoje ve WebStormu u mě zhruba platilo, že co hodina práce v IDE, to jeden reportovaný bug. Trochu jsem doufal, že u silně typového Flexu, kde kompilátory i debugger jsou odladěnou součástí Flex SDK a IDE je tak vlastně jen malou slupkou nad nimi, to bude lepší, ale už jen import našeho projektu do IDEY byl docela dílem a dokonce se muselo čekat na opravný setinkový release, aby náš projekt vůbec bez změny kódu fungoval. A potom mám ohromný problém s použitelností toho IDE – ne se vzhledem, ale s fundamentální použitelností na mnoha místech. Continue reading

Webdesign z pohledu programátora, vol. 2014

Po delší době jsem se dostal ke kódování HTML/CSS a jsem překvapen, ne, doslova šokován, jak se věci posunuly dopředu. Pro mě jako pro programátora bylo dělání webů vždycky spíš za trest – když člověk nežil kódováním každý den, bylo docela peklo vyhnout se všemožným záludnostem a doručit výsledek, který by nebyl vyloženě pro ostudu.

V roce 2014 jsou ale věci jinak. Zmíním hlavní věci, které mě zaujaly; některé evidentnější, některé méně. Continue reading

CZ Podcast 75 Errata

Před pár dny jsem konečně zjistil, kolik lidí slyšelo CZ Podcast o bezpečnosti webových aplikací, ve kterém jsem byl hostem. To číslo samozřejmě znám úplně přesně a dokonce všechny tři posluchače znám i jménem. Byl jsem to totiž já, Ondřej Mirtes a Jakub Vrána. Poslední tři jmenovaní mě zároveň upozornili na několik faktických chyb a nepřesností. Důvody, proč k těm chybám a nepřesnostem došlo nejsou podstatné, ale omlouvám se za ně. Rád bych tedy v tomto článku tyto tiskové chyby opravil. Continue reading

Global Day of Code Retreat 2012

V sobotu 8. prosince jsme se v Praze zapojili do celosvětové série Global Day of Code Retreat, která začínala ráno v Austrálii a končila druhý den v Honolulu. Akci jsme organizovali ve čtverici – Aleš Roubíček, Marián Schubert, Michal Těhník a já. Byl to už třetí Code Retreat, který jsem spoluorganizoval, a přesto jsem byl opět příjemně překvapený, kolik lidí mělo chuť přijít v sobotu na osmou ráno a pak se celý den cvičit v psaní čistého kódu a unit-testů. Continue reading