Preklad úvah Teodora Ts’o (Theodore Ts’o), zakladateľa súborového systému Ext4, o vývoji ext4, súborovom systéme BcacheFS, jadre Linux, ZFS, etickom kódexe a súborových systémoch ako takých:
O vývoji ext4.
Do každého vydania jadra ext4 prispieva viac ako dvoch desiatok ľudí. V súčasnosti väčšinu svojho času venujem recenzovaniu kódu, testovaniu a vylepšovaniu testovacej aplikácie {kvm,gce,qemu,android}-xfstests. A veľmi sa spolieham na 2-3 ďalších vývojárov pracujúcich v SUSE a IBM, ktorí mi pomáhajú s recenzovaním kódu.
O BcacheFS
Úprimne, bcachefs nie je úplne samostatný projekt - napríklad, Kent bol autorom 72% záplat medzi vydaniami jadra 6.11 a 6.12, zatiaľ čo z 103 záplat k ext4 za rovnaké obdobie som bol autorom presne 0%. Je to preto, že pevne verím, že programovanie je tímový šport, a moja úloha ako technického vedúceho je umožniť účastníkom ext4 urobiť všetko možné pre zlepšenie súborového systému. Konáme týždenné konferencie, a Derrick Wong, hlavný vývojár XFS a bývalý správca XFS, sa zúčastňuje týchto konferencií - a ja, ako je známe, som mu pomáhal v otázkach testovania XFS, zatiaľ čo Derrick mi pomáhal v rôznych otázkach testovania ext4 a dokonca preskúmal niekoľko záplat ext4. Spolupracujeme navzájom a je to dobré.
Dávam ostatným ľuďom na výber, či chcú dôverovať svojim údajom niekomu, kto je osamelý horúci programátor, ktorý môže byť talentovanejší než ja, ale dám vám tip - môžete "švindlovať", keď zapojíte tím do riešenia problému. Nenechajte to vyžadovať samočinné. Samozrejme, na to potrebujete vedieť, ako prebudiť to najlepšie v ostatných, a musíte spolupracovať. A zdvorilý prístup k sebe navzájom v mailing listoch neuškodí.
O jadre, CoC, možnostiach a budúcnosti ext4
Ext4 skutočne získava niektoré nové funkcie, ale sú to tie, ktoré sú firmy ochotné financovať, pretože návratnosť investícií do vývoja funkcie má zmysel z pohľadu nákladov a prínosov. Napríklad, fscrypt a adresáre bez ohľadu na veľkosť písmen boli funkcie, ktoré boli užitočné pre Android a Chrome OS a boli financované aspoň čiastočne týmito skupinami vývojárov (Steam sa tiež obával ohľadne spracovania veľkosti písmen a podporil jedného z inžinierov). Chceme pridať podporu pre zápis bez prerušenia (untorn), pretože to zlepší výkon databáz na cloudových emulovaných blokových zariadeniach, kde je možné zaručiť 16k atomárnych zápisov, čo by umožnilo zbaviť sa dvojitej bufferingu v MySQL a PostgreSQL.
(V skutočnosti to môžu Amazon a Google urobiť vo svojich vlastných DBMS produktoch, urobia predpoklady o tom, ako fungujú Amazon EBS a Google Persistent Disk, ale chceme to urobiť všeobecnejšie, aby to bolo dlhodobejšie udržateľné). Je to menej atraktívne ako také veci ako reflinks, ale návratnosť investícií je oveľa ľahšie ospravedlniteľná, pretože náklady sú nižšie (menej práce pri vývoji, testovaní a kvalifikácii pre podnikové nasadenie) a tiež preto, že výhody sú oveľa ľahšie kvantifikovateľné. Také veci ako 'môžem ušetriť náklady na plat XX zamestnancov programátorov v priebehu piatich rokov' sa oveľa ľahšie preukazujú pre tento typ funkcií zvyšovania výkonu.
Na rozdiel od toho, reflinks sú zábavné, ale nedokázal som nájsť klienta ochotného zaplatiť náklady na vývoj, ani spoločnosť, ktorá verí, že ich klienti budú kupovať viac ich produktu, ak do ext4 pridajú reflinks. Môže to znieť hrozne korporátne, ale existuje príbeh o tom, ako inžinieri ZFS začali projekt z nuly, bez toho, aby sa opýtali vedenia alebo dostali návrhy od predajného oddelenia, a predstavili Sun, čo bolo v podstate hotové dielo.
Znie to skvele, ale ak si spomenieme, že nakoniec spoločnosť Sun začala strácať peniaze, až bola nútená sa predať inej firme, a prakticky inžinierska organizácia, ktorá podporovala ZFS, už neexistuje. Približne v čase, keď bola ZFS oznámená, som sa zúčastnil výskumu na úrovni celej firmy, aby sme zistili, či má zmysel investovať do funkcií súborového systému pre AIX a Linux – dospeli sme k záveru, že nie, návratnosť investícií je nízka, a nové funkcie súborového systému nevedú k zvýšeniu počtu zákazníkov, ktorí kupujú zariadenia, softvér alebo systémy IBM. Možno, že IBM prežívala ťažké časy, ale stále existuje, zatiaľ čo Sun – nie.
Približne v rovnakom čase sa predstavitelia niekoľkých linuxových spoločností zišli, aby prišli na to, ako bude Linux konkurovať ZFS. Na tomto stretnutí bola vyjadrená myšlienka, že btrfs bude dlhodobou odpoveďou, a ext4 – krátkodobým riešením, ktoré zabezpečí podporu takých vecí, ako je real-time zmena veľkosti, 64-bitové čísla blokov a ďalšie veci, ktoré boli v tradičných Legacy Unix OS a ktoré neexistovali v ext3.
Na tom stretnutí ma požiadali, aby som určil, čo bude potrebné na vytvorenie úplne nového súborového systému. Urobil som prieskum, aby som zistil, koľko úsilia bolo potrebné na vytvorenie takých súborových systémov, ako sú GPFS a JFS od IBM, advfs od Digital, a posúdil som, koľko času trvalo spoločnosti Sun vytvoriť ZFS a posunúť tento súborový systém do stavu plne pripraveného na výrobu. Odpoveď, ktorú som dostal, bola približne 100 človeko-rokov, s jednou nízkou odhadovanou hodnotou 50 človeko-rokov a vysokou hodnotou 200 človeko-rokov (ale to bolo pre GPFS, ktorý bol klastrovým súborovým systémom, a preto oveľa zložitejším).
O tejto skutočnosti som informoval na schôdzke, a istý starší inžinier z Intelu povedal: „Nie, nehovorte o tom vedúcim, pretože oni nikdy neschvália projekt! Povedzte im, že btrfs bude pripravený za 18 mesiacov.“ Dávam ľuďom možnosť rozhodnúť sa, kedy btrfs dosiahne status „pripravený na firemné použitie“, najmä pre tie nové atraktívne rozšírené funkcie, ktoré mali konkurovať ZFS, ale nemyslím si, že je na diskusiu, že sa to nestalo za 18 mesiacov.
A aj predtým, ako sa spoločnosť Sun rozpadla, mnohé firmy, ktoré poslali svojich zástupcov na stretnutie, odmietli zapojiť inžinierov do práce na btrfs, čo samozrejme nepomohlo. Ale pravdepodobne to súviselo s tým, že firmy sú racionálne organizácie, ktoré prijímajú vlastné rozhodnutia o návratnosti investícií, a financovanie nového súborového systému nemalo rovnaký zmysel, ako rozprávať ľuďom, že Linux bude mať odpoveď na ZFS.
Pri pohľade späť sa dá povedať, že hoci ZFS malo naozaj skvelé funkcie, bolo ich málo na to, aby presvedčili väčšinu používateľov vybrať si Solaris pred zakúpením oveľa lacnejších platforiem x86 a inštaláciou Linuxu. A keď sa Sun rozhodla vyskúšať stratégiu OpenSolaris a Solaris x86, bolo už príliš neskoro. Sieťové efekty boli obrovské a stratégia x86 nedávala odpoveď na otázku, ako mohla jedna firma, Sun, zaplatiť platy všetkým supertalentovaným inžinierom pracujúcim na Solaris. Nákup x86 servera za 5000 dolárov nenesie veľkú návratnosť zisku v porovnaní s serverom SunFire E10k Sparc za 100000 dolárov, ktorý Sun nazývala "bodom" v "dot Com".
Podstatou je, že inžinierska činnosť v reálnom svete je kompromis a obchodné reality sú súčasťou tohto kompromisu. Neomlúvam sa za to, že preferujem jesť jedlo a že chcem zarábať dosť peňazí, aby som sa raz mohol dôchodkovať. To zase znamená, že musím dobre rozumieť, ako prinášam zamestnávateľovi užitočnosť, aspoň 10-krát presahujúcu moju mzdu. Ak to dokážem urobiť a zároveň robiť s otvoreným zdrojovým kódom a pomáhať iným firmám zarábať peniaze, aby boli ochotné prispieť do ext4, nuž, to je časť výzvy a dôvod, prečo mám rád prácu s otvoreným zdrojovým kódom.
A pokiaľ ide o Etický kódex, chcem povedať, že takmer všetci správcovia hlavných súborových systémov podporili Kódex nie kvôli nejakým slabým liberálnym úvahám. Je to preto, že potrebujeme každého inžiniera, ktorý je ochotný prispieť do nášho projektu, a väčšina z nás videla ľudí, ktorí odmietli pracovať v Linuxe a prešli na iné operačné systémy (poznám jedného človeka, ktorý prešiel na Windows a bol cenným vývojárom Linuxového jadra v IBM Linux Technology Center) alebo pracovali na interných projektoch, ale nie na tých, ktoré vyžadovali interakciu s LKML, kvôli toxickému prostrediu niekoľkých ľudí na mailing liste.
V niektorých prípadoch boli obavy neopodstatnené; napríklad Linus zakričal na staršieho vývojára, ktorý naozaj mal vedieť lepšie a s ktorým sa Linus väčšinou stretával osobne, a mali už vytvorené vzťahy. Problém je v tom, že nováčikovia toto nevedeli a báli sa — „ale čo ak ma Linus poníži na verejnosti rovnako ako to urobil so Steveom“, nechápajúc, že sa to v praxi nestane. Preto máme CoC; nie pre nás, starších inžinierov, ale na podporu mladších inžinierov v našich tímach, ktorých chceme školiť, aby nás v určitom okamihu nahradili, keď príde čas odchádzať do dôchodku, alebo nás zrazí autobus, alebo inak opustíme tento pominuteľný svet.
Nezabúdajte na 50-100 človekorokov práce na vytvorení súborového systému pripraveného na použitie v podnikovej sfére. Potrebujeme všetkých inžinierov, ktorých môžeme získať, a mnohí z nás robia dodatočnú prácu vo voľnom čase, pretože nám na tom záleží. Vytvorenie kvalitného súborového systému je tímová práca a potrebujeme každého talentovaného inžiniera, ktorého môžeme získať. Aj keď jeden inžinier je super 10-násobný programátor, ak nakoniec odradí hromadu iných inžinierov, ktorí môžu pracovať na testovaní, optimalizácii výkonu a podobne, rozhodne to nestojí za to, aby sme niekomu dovolili byť zlomyseľným.
Zdroj: opennet.ru
