Jedná se o názorový článek niftynei, vývojářského pedagoga, který vede akademii protokolu Base58 Bitcoin a organizátora nadcházející konference zaměřené na Nix Bitcoin++.
Když si chcete do počítače nainstalovat novou aplikaci, odkud ji získáte?
Rozhodování o tom, který zdrojový kód použít, je překvapivě obtížně řešitelný problém, se kterým se však potýká každá počítačová platforma.
Před rozšířením internetu se nové softwarové „balíčky“ distribuovaly na pevných médiích, jako jsou CD nebo USB klíčenky. Pokud jste chtěli získat nejnovější verzi operačního systému (OS) svého počítače nebo například nejnovější verzi Bitcoin Core, museli jste si ji koupit fyzicky v obchodě nebo si ji nechat poslat poštou. Poté byste disk nebo USB klíč vložili do počítače a vytvořili kopii nového softwaru na svůj místní disk
Jako vývojář píšící kód byste museli fyzicky rozdávat kopie svých programů přátelům a rodině. Nebo byste pracovali pro velkou korporaci, která by měla vztahy s firmami a obchody s počítači, které by vymyslely, jak distribuovat vámi napsaný software svým klientům a zákazníkům.
S příchodem neustále připojených počítačů se prostředí distribuce softwaru navždy změnilo. Místo toho, abyste si nyní museli fyzicky vyzvednout kopii bitů programu, můžete si jeho kopii snadno stáhnout z internetu
To novým vývojářům výrazně usnadnilo psaní aplikací, které si může stáhnout kdokoli. Problémem je však nyní odpověď na otázku: Odkud na internetu si mají uživatelé nový software stáhnout?
Hackerský obchod s aplikacemi
Způsob, jakým ekosystémy mobilních telefonů řeší problém distribuce nových aplikací, je program v telefonu nazvaný „App Store“ (nebo „Google Play store“ v systému Android).
Vývojáři nahrávají nejnovější kopie svých aplikací na servery společnosti Apple nebo Google. Tyto společnosti pak rozešlou tiché oznámení na všechny telefony, které mají aplikaci nainstalovanou, a aplikace se na pozadí aktualizuje v telefonech uživatelů, aniž by se na tom uživatelé podíleli
Pokud jste uživatelem a chcete si do telefonu přidat novou aplikaci, ve většině případů ji najdete v App Store a stáhnete si ji odtud
Ne všechen software je však k dispozici jako aplikace pro mobilní telefon. Některé softwarové projekty jsou aplikace pro stolní počítače nebo nástroje, které vývojáři používají k psaní nového softwaru. I tyto aplikace potřebují distribuční kanál. V desktopových operačních systémech máme tendenci nazývat software „App Store“ termínem „správci balíčků“ Ty spravují balíčky softwaru, které si stáhnete do počítače
Moderní správci balíčků se skládají z centrálního serveru, někdy nazývaného úložiště, který může sledovat nejnovější verzi aplikace, a z aplikace na straně klienta, která běží na počítači uživatele balíčku.
Pokud jste vývojář, pravděpodobně jste se někdy v životě setkali s „homebrew“ nebo „apt-get install“. „Homebrew“ a „apt“ jsou správci balíčků.“
Podle způsobu fungování správců balíčků se aplikace na straně klienta občas spojí s centrálním úložištěm, aby zjistila, zda pro některý z aktuálně nainstalovaných balíčků nejsou k dispozici nové aktualizace. Nebo, pokud máte správný operační systém a nastavená správná oprávnění, možná váš počítač tyto kontroly provede automaticky, stáhne a nainstaluje nejnovější verzi aplikace.“
(Na okraj, do místního klienta správce balíčků můžete přidat další zdroje softwarových balíčků. Pokud vývojář sám hostuje své aplikace místo toho, aby je nahrával do centrálního úložiště, museli byste přidat jeho vlastní webovou stránku do seznamu míst, kde se mají hledat aktualizace ve vaší vlastní klientské aplikaci správce balíčků.“
Co kdybychom mohli reprodukovat všechno?
Nix je správce balíčků, jehož cílem je přinést reprodukovatelná sestavení všech balíčků, které pomáhá distribuovat.
Nix řeší problémy s distribucí softwaru tím, že podrobně sleduje všechny vstupy do sestavení, každý vstup jednoznačně identifikuje a používá stejné vstupy jako původní sestavovatel. Díky tomu je schopen sestavit pokaždé totéž a na jakémkoli stroji.
Nix hashuje každý vstup a výstup sestavení; díky tomu lze snadno identifikovat, kdy se vstup změnil. Když se změní vstupy sestavení, je zaručeno, že se změní i výstupy.
Jedním z velkých problémů s reprodukovatelnými sestaveními je, že různí uživatelé budou mít různé verze vstupů, s nimiž je třeba program sestavit. Každý nový program, který sestavíte na svém počítači, může potřebovat jinou verzi svých vstupů, aby byl reprodukovatelný.
Nix to řeší tím, že sleduje sestavení pomocí seznamů hashů a používá pouze vstupy, které odpovídají seznamu hashů, který očekává. Kompromisem je, že Nix spotřebuje mnohem více místa na disku a jeho stahování může často trvat o něco déle, protože bude muset stáhnout správné vstupy do procesu binárního sestavení, pokud je ještě nemáte v počítači
Rád žertuji, že Nix byl umožněn jen díky Moorovu zákonu, což znamená, že nyní máme dost místa na disku navíc, abychom se nemuseli starat o to, že máme více kopií stejného programu, jen v trochu jiných verzích.
Nix tedy umožňuje mnohem snadněji distribuovat reprodukovatelné sestavení vašeho softwaru, což znamená, že uživatel může spolehlivě obnovit váš software na svém počítači a ten bude prostě fungovat, bez jakýchkoli otázek.
Jako malou poznámku na okraj si všimněte, že „reprodukovatelné“ u sestavení Nixu znamená, že „pokud balíček funguje na jednom počítači, bude fungovat i na jiném“ To není totéž jako reprodukovatelnost, kterou se vývojáři Bitcoin Core snaží zaručit u oficiálních binárek Bitcoinu, u nichž probíhá samostatný proces kontroly, zda jsou bit po bitu identické.
Nix a Bitcoin
Distribuce open-source softwaru způsobem, který je pro koncové uživatele snadno spustitelný a reprodukovatelný na jakémkoli systému, je velmi užitečná a důležitá vlastnost. Usnadňuje každému, aby začal projekt používat, a také novým vývojářům, aby začali přispívat zpět do projektu
Před několika lety skupina neohrožených vývojářů spustila repozitář nejběžnějších softwarových projektů Bitcoinu, které jsou zabaleny jako balíčky a moduly Nix
Balíčky výrazně usnadňují každému, kdo používá správce balíčků Nix, instalaci a spuštění uzlu Bitcoinu, a to téměř na jakékoli architektuře. Nemusíte se starat o instalaci správných závislostí před spuštěním příkazů pro sestavení a projekt se sestaví ze zdrojových kódů na vašem vlastním počítači. Je to docela ideální, pokud jde o možnost rychle stáhnout, sestavit a spustit uzel Bitcoin od nuly.
Repozitář Nix-Bitcoin poskytuje „moduly“ Nix, což jsou konfigurace softwarových aplikací, které mají fungovat v systému NixOS. Moduly Nix-Bitcoin umožňují každému, kdo používá systém NixOS, reprodukovat sestavení jádra Bitcoinu a dalších open-source projektů Bitcoinu a rychle je zprovoznit na svých počítačích s minimem starostí.“
V rozhovoru pro tento článek řekl Jonas Nick, jeden z hlavních správců projektu Nix-Bitcoin, o používání projektu následující:
„Hlavní výhodou, kterou Nix-Bitcoin získává od Nix/NixOS, je deklarativní správa konfigurace. Konfigurace systému pomocí programovacího jazyka Nix umožňuje abstrakci, takže můžete modulovat logiku a znovu používat a testovat jednotlivé komponenty. To umožňuje zvládat složitost, která při budování systémů nevyhnutelně vzniká, a pomáhá budovat správný a bezpečný systém. Například mnoho bezpečnostních funkcí, které Nix-Bitcoin poskytuje, by bylo velmi nepříjemné udržovat, kdybychom neměli systém modulů. Reprodukovatelnost v NixOS také velmi pomáhá při aktualizacích, protože přesně víme, co běží na systémech našich uživatelů. A konečně, s NixOS lze také získat chyby v době vyhodnocování namísto za běhu.“
Bitcoin Core není jediným projektem, který je zabalen pro distribuci v Nixu
Existuje také Core Lightning, BTCPay Server a řada dalších projektů. Tyto projekty jsou většinou přidávány a baleny pro distribuci v systému Nix fanoušky systému správy balíčků Nix, nikoliv vývojáři, kteří software píší. Úplnější seznam dostupných balíčků najdete v seznamu „modulů“ v repozitáři Nix-Bitcoin na GitHubu.
Proč ne Nix všude?
Pokud je Nix tak skvělou změnou ve způsobu, jakým jsou projekty Bitcoinu vytvářeny a dodávány, proč ho nepoužívají všichni? Pravdou je, že Nix je velký projekt, do kterého je trochu obtížné se dostat. Křivka učení pro používání Nixu je poměrně strmá a paradigma provozování Nixu jako správce balíčků může být zcela odlišné, než na jaké je většina z nich zvyklá.“
NixOS začal jako výzkumný projekt Eelca Dolstry v roce 2003 a od té doby si pomalu buduje příznivce a uživatelskou základnu.
Bitcoin++ Berlin:
Pořádáním nadcházející konference Bitcoin++ v Berlíně chceme tuto situaci změnit. Bitcoin++ je série konferencí zaměřených na vývojáře, které se věnují různým tématům v oblasti bitcoinových vývojářů. Původně byla zahájena v Austinu v Texasu v roce 2022, poslední konference koncem dubna 2023 se zaměřila na technologie 2. vrstvy v Bitcoinu, jako je Archa, Lightning Network
a rollupy platnosti
Nadcházející berlínská konference, plánovaná na 6. a 7. října 2023, si klade za cíl stát se „Nix-pilling“ událostí pro ekosystém vývojářů Bitcoinu. Zúčastní se jí hlavní správci projektu Nix-Bitcoin na platformě Fort Nix (včetně Nicka, Pavola Rusnaka a Erica Siriona, abychom jmenovali alespoň některé). Dvoudenní akce bude plná praktických workshopů a přednášek,
jejichž cílem je naučit vývojáře z celého ekosystému, jak používat Nix k balíčkování
svých projektů a lepšímu propojování vývojových závislostí, aby noví
přispěvatelé mohli rychleji začít kódovat a přispívat, a také ukázat, jak rychlé a snadné je nasazení softwaru pomocí modulů v NixOS.
Další odkazy na články
- Reprodukovatelnost s Nixem
- Rozhovor s „nixbitcoindev“
- Kde začít
- Proč Nix-Bitcoin, pro bitcoináře
Toto je hostující příspěvek od niftynei. Vyjádřené názory jsou výhradně jeho vlastní a nemusí nutně odrážet názory společnosti BTC Inc. nebo časopisu Bitcoin Magazine