I like how you’ve spun a negative into a positive, and I do mean that sincerely. But if we are honest, legacy features hidden behind flags have never been an issue requiring deprecation.

removing features reduces code complexity, feature flags don't. and in this case, if you need the legacy features the original apps are still there and maintained, so it's not like we lose functionality like you would if an upgrade removed features and you'd be forced to decide to choose between the old version and the new one.

The thing with this approach is that it only works for a limited time. Then that new project starts to gain the same bloat and people then make the same complaints and rewrite it again. The whole approach is a wasteful churn of NIH (not invented here) syndrome just to produce mediocre replicas.

This is why I said rewrites should be introducing something new, rather than just removing something old.

Plus if you really want to remove old feature flags, you can just do that in the original projects. You don't need to rewrite to remove features.

When I read of rewrites that are a subset of the original, and particularly when they advertise themselves as "opinionated", is a project that the author started to learn x, y or z. And that's a fine goal in itself. But I just wish people were more honest and say "I wrote this to learn Rust".

None of these criticisms apply to bat, though. This tool is adding something new.