Je už dost starej na to, aby se dalo říci, že s vysokou pravděpodobností "starého vlka novým kouskům nenaučíš". Jestli mu vyhovuje schytávat tyto následky své nevymáchané huby, pak je to kompromisní cesta, se kterou se dá fungovat. Tak holt to pojede přes DKMS a kdo bude chtít, Bcachefs nasadí, kdo ne, tomu to může být naprosto fuk.
Myslím že o "nevymáchanou hubu" tolik nešlo a že kdyby to byl jediný problém, Linus by to nejspíš až takhle nevyhrotil. Zásadní problém byla spíš naprostá neochota respektovat pravidla ohledně toho, jak má probíhat review a kdy se co může posílat. Těch průšvihů už bylo moc a reakce maintainera nedávaly žádnou naději, že je sebemenší ochota přístup změnit.
Nemyslím, že by to byla až taková překážka.. spousta lidí se s tím drbe kvůli ZFS nebo Nvidii.
Navíc bych teď tipoval, že uživatelé, co Bcachefs teď používají nebo s ním hrajou, jsou spíš testeři nebo nadšenci, co tohle nezastaví.
Ano s těmi out-of-tree filesystémy je vždycky trochu oprurz, pokud je na tom root.. ať už s instalací nebo aktualizacemi, initramfs atp. Ale pokud je to další oddíl jen na data, je to vcelku v pohodě.
Naopak to DKMS občas skýtá i výhody, zvlášť pokud se projekt nějak rapidněji vyvíjí, člověk používá třeba LTS verzi jádra a chce novější modul nebo pohodlně zkoušet různé verze bez toho, aby pořád aktualizoval jádro, případně si to ručně přerážel syvými sestaveními toho modulu.
Naopak to DKMS občas skýtá i výhody, zvlášť pokud se projekt nějak rapidněji vyvíjí, člověk používá třeba LTS verzi jádra a chce novější modul nebo pohodlně zkoušet různé verze bez toho, aby pořád aktualizoval jádro, případně si to ručně přerážel syvými sestaveními toho modulu.
Právě tohle je ale v praxi jeden z největších průšvihů s out-of-tree moduly, protože pokud se má stejný zdroják překládat proti širokému rozsahu verzí jádra, znamená to vzhledem ke změnám API hromadu #if ů na mnoha místech, což kód dost znepřehledňuje. A pokud to má fungovat i s jádry z aspoň nejrozšířenějších distribucí, je to ještě komplikovanější: někdy ten test, jaká verze API se má použít, nejde udělat jinak než podle čísla verze, jenže pak zjistíte, že v konkrétním RHEL nebo SLE jádře by sice podle verze měla být starší varianta, ale už je tam nabackportovaná novější. Kdo někdy něco upravoval v nějakém větším out-of-tree modulu, dobře ví, o čem mluvím.
Jsem zvědav, jak dlouho a jak důsledně si s tímhle bude chtít Kent Overstreet hrát. Nebo jestli se na starší jádra vykašle a bude to udržovat jen pro aktuální mainline, nanejvýš pár verzí zpátky.
Mimochodem, kvůli tomuhle je taky trochu naivní ta představa, že s DKMS se po upgradu jádra moduly automaticky přeloží a uživatel nebude muset hnout prstem. Vzhledem k tomu, že jsem docela dlouho provozoval host moduly pro VMware Workstation s aktuálními upstreamovými jádry, vím o tom svoje. Případů, kdy po upgradu na novou verzi jádra šly moduly přeložit bez úprav, byla tak polovina, možná ještě méně.
Já s vámi ohledně out-of-tree modulů souhlasím. Rozhodně to není tak, že bych si myslel, že je to optimální situace nebo že s tím případným udržováním kompatiblity s nejrůznějšími verzemi jádra nepřibyde práce.
Jen si úplně nemyslím, že je to nutně faktický konec a nikdo to teď nebude používat, jak naznačoval @cc. Ale samozřejmě záleží, jak to K. Overstreet pojme.. (možná jsem naiva, co se snaží tu sklenici vidět vždycky spíš poloplnou :) ) Ani upřímně nevím, jestli má třeba potenicálně víc reálných uživatelů s mainline jádry, nebo by byl užitečný fokus i na držení kompatibility DKMS modulu s těmi server distribucemi (RHEL/klony, Debian, SLES/Leap atp.).
Chápu jaké problémy to s sebou nese. Bojoval jsem s hromadou převážně proprietárních modulů a nějakých shimů, co se odmítaly sestavit na konrketním jádře, nejen od NVIDIA, ale i IBM, Quantumu atp. Naposled třeba u modulu pro video I/O karty Blackmagic, která má podmíněné části kódu podle detekované verze jádra, podobně jak jste zmiňoval. Chodí třeba se starším RHEL nebo novějším Ubuntu.. ale na Leapu (jádro 6.4) to vyžadovalo manuální intervenci, aby si to sedlo do správné varianty a šlo sestavit přes DKMS.
Jinak vlastně si ani nevzpomenu, že by nějaký modul z mainline jádra vyletěl kvůli jiným důvodům než, že to není udržované a podobné "extempore" vlastně registruji poprvé.
Nedovedu odhadnout, jestli je status: externally maintained definitivní, nebo by se to mohlo časem ještě vrátit.
Jak už jsem tu někde zmiňoval, pro mě je tam obecně pořád strašně velký bus factor (viděli jsme u Hanse Reisera).. pokud by se podařilo získat nějaké investice, zájem firmy, která by v tom viděla potenciál pro své služby, možná by to mohlo změnit situaci. Třeba v tom smyslu, že by k sobě mohl dovolit mít trvale pár dalších lidí, co by do toho trochu víc viděli, starali se o víc o ty release cykly, testy a možná trochu "bufferovali" komunikaci s okolím.
Ale těžko říct, srovnání třeba se ZFS kulhá, tam šlo o projekt, co měl za sebou koordinovaný vývoj pod Sunem/Oraclem s týmem lidí. A jakmile se to uvolnilo, objevily se další komerčních subjekty, co na tom stavěly, přispívaly do projektu a třeba zaměstnaly nebo najaly i některé původní vývojáře.
Ad „Jsem zvědav, jak dlouho a jak důsledně si s tímhle bude chtít Kent Overstreet hrát. Nebo jestli se na starší jádra vykašle a bude to udržovat jen pro aktuální mainline, nanejvýš pár verzí zpátky.“
Což je ale v podstatě stejný stav, jako kdyby to bylo přímo v oficiálním jádře – tam by asi taky aktuální verzi modulu podporoval pouze pro aktuální jádro a do starších by portoval maximálně opravy, ne?
Což je ale v podstatě stejný stav, jako kdyby to bylo přímo v oficiálním jádře – tam by asi taky aktuální verzi modulu podporoval pouze pro aktuální jádro a do starších by portoval maximálně opravy, ne?
Jak se to vezme. Pokud je modul součástí mainline, backportují se tam opravy podle stejných pravidel jako u zbytku jádra, ať už v rámci distribuce nebo "usptreamového" LTS procesu. Pokud je out of tree a nikdo si nedá práci s tím, aby šel přeložit - a také fungoval - i se staršími jádry, pak jste odkázán na tu verzi, kde to s vaším starším jádrem (distribučním nebo LTS) ještě fungovalo, ale pozdější opravy vám do ní nikdo backportovat nebude.
Chápu, že zpropagovat opravu do starší větve v rámci jednoho repozitáře je trochu jednodušší, ale jinak v tom nevidím moc rozdíl – tu práci (vyřešit případné konflikty, zkompilovat, otestovat) stejně musí někdo udělat. Nebo to bylo myšleno tak, že v případě změny API tu práci za autora modulu udělá někdo jiný?
Treba proto, ze dotycny FS poskytuje vlastnosti, ktere jaderne filesystemy nemaji. Jiste, nektere vlastnosti ZFS se postupne dostavaji treba i do BTRFS, ale je to beh na dlouhe trati a ne vse tam je dotazene.