On Sat, Aug 6, 2022 at 11:09 AM Linus Torvalds <torvalds@xxxxxxxxxxxxxxxxxxxx> wrote: > > Feature bitmasks work. Version numbers don't. Version numbers > fundamentally break when something is backported or any other > non-linearity happens. Side note: even feature bitmaps should be discouraged as an interface, unless there's some fundamental need for actually negotiating some kind of initial state. For 99% of all kernel cases, the better option is to simply just rely on unsupported features erroring out (ie making sure unsupported argument flags are checked and cause errors, rather than silently ignored). So while version numbers are actively broken as an interface description, often feature bitmask are just pointless and wrong too. And yes, lots of things get this wrong, and have "I implement feature Xyz", and then you have pain and gnashing of teeth when versions change and you have to support them all. It's just a horrible design pattern. Linus