On Fri, Feb 07, 2025 at 06:16:38AM -0600, Dr. Greg wrote: > > Not sure what the fix is, from a project management perspective the > technology industry has never faced a challenge like this. The fork > model, which was the classic protection in open-source, doesn't work > at this scale. Maybe not quite a fork, but I wonder if the Rust project did something similar to what PREEMPT_RT did. That was to keep an out of tree patch. The full patch was just merged last September after being out of tree for a good 20 years. In the beginning there was a few things in that patch that Christoph was against, but over time he became accepting of it. Yes, being out of tree is very difficult because you have to constantly rebase (we actually found quilt being a better tool than git in this case!). But it also gives you full flexibility to try new approaches. Just because something is out of tree doesn't mean it can't be published and used. Red Hat and SUSE, as well as many others shipped PREEMPT_RT while it was out of tree. Note, even though PREEMPT_RT started in 2004 and wasn't fully merged until 2024, it slowly did creep in bit by bit. For example, here's a few things that came from the RT patch, and each was rewritten at least 3 times to become acceptable by the upstream maintainers: - NOHZ - High res timers - threaded interrupts - mutex code (yes, before RT everything used a semaphore) - lockdep - ftrace - generic interrupt code - generic timer code - priority inheritance - SCHED_DEADLINE - RT push/pull scheduling and more. Point being, if you are having issues with getting code upstream, don't be afraid to make it out of tree. Just make it easy for others to use. And slowly move your code into mainline. This is also a way to prove beyond a doubt how useful your code is. The number of users is a technical argument. Linus does pull things in when there is a large user base, even over other maintainer's objections (see sched_ext). It worked for us, it can work for you ;-) -- Steve