Neptejte se mě proč, sám z toho občas nejsem nadšený, ale jako jeden z posledních lidí na světě jsem stále na Windows. V praxi se s nimi dá žít, ale nebudu zastírat, že souhlasím s filosofií “čím linuxovatější, tím pro vývoj lepší“. Dobře to uchopil Mac, kterému se historicky podařilo skloubit dobrý hardware, použitelné uživatelské prostředí a unixový základ systému. Pro mě osobně je pak ještě lákavější Linux, zvlášť v době zařízení typu Dell XPS 13 Developer Edition, ale případné úvahy na toto téma nechme na jindy. Teď bych se chtěl podívat na to, jak jsou na tom Windows s linuxovými nástroji dnes.
“Linux” jde do systému dostat třemi základními způsoby:
- Cygwin nebo MSYS2, v podstatě emulace UNIX-like / POSIX prostředí. Mimochodem, v MSYS2 je plný
pacman
, package manager z Arch linuxu, takže je to docela ‘real deal’. - Git for Windows, se kterým přijde “Git Bash”. Do začátku dobrá a jednoduchá možnost, založená na MSYS2 (zde jsou detaily).
- Windows Subsystem for Linux (WSL), známý především skrze “Bash on Ubuntu on Windows” (Microsoft pojmenování vždycky uměl!).
První dvě možnosti jsou dobré v tom, že z cmd.exe lze snadno dělat věci jako rm -rf
nebo grep
, aktivně to využívám a už to Windows povyšuje na jinou úroveň.
Hodně zajímavá je ale třetí možnost, WSL. To je totiž (zjednodušeně řečeno) plné Ubuntu běžící “nativně” ve Windows. WSL emuluje Linux kernel a umožňuje spouštět normální Linux binárky, takže třeba když donedávna pro Windows chyběl kubectl
klient, šlo ho doinstalovat pomocí apt-get install
a frčet. Další důležitý use case je výkon, např. přefiltrovat Git historii je daleko rychlejší ve WSL než v Git for Windows. Nevýhodou pak je, že je to v podstatě systém v systému: binárky se instalují dvakrát, sync mezi počítači si jinak řeší Windows a Ubuntu, apod.
Windows (včetně WSL) mají ještě jeden zásadní problém, a to je výkon. Např. Git operace jsou na čistém Linuxu rychlejší minimálně o řád. Nevím, jestli to je pomalostí NTFS nebo je něco špatně v jádře Windows, ale zatímco lehký opruz se zpětnými lomítky, tupým základním shellem apod. se dá řešit, výkon bohužel ne.
Naštěstí se poslední dobou dějí v Microsoftu věci. Pro samostatný blog post si nechám to, co dělají kolem Gitu, a zatím postnu toto:
Nebo se podívejte na tento komentář na GitHubu. V Microsoftu vědí, že mají problém, a snaží se. Celkem nemám pochybnosti, že technicky se stanou velké věci: např. nativní běh Dockeru na WSL je IMO jen otázkou času (a byla by to pecka!). Pak je ještě otázka, nakolik se podaří propojit historicky dva oddělené světy, například bych si ve svém oblíbeném klikacím Git klientovi rád nastavil git
binárku tu z Linuxu, půjde to? A kde se bude ukládat klíč k GitHub účtu, ve Windows Credential Storu nebo v Linuxovém ekvivalentu? Frikci bohužel očekávám a “Mac je stále Mac”, ale za posledních mnoho let je zrovna teď čas, kdy je naděje na vývojářsky silné Windows asi největší.