Never liked using dnsmasq. Always felt like too much in one tool. A local caching resolver, dhcp server, and tftp/pxe boot setup were always things I preferred to configure separately.
That's kinda the point. It is "i run a small router" app in a box.
DHCP and DNS are connected, PXE requires DHCP entries, so to do a simple setup you'd need to glue together at least 3 daemons otherwise, all with different config syntax
There are few dnsmasq (only?) features that are indispensable to some. Examples: sending query of *.example.com to certain upstream servers, or returning NXDOMAIN for phishing sites, or adding all resolved IPs for *.example.org to an ipset for policy routing. The last one works on FreeBSD as well although BSD does not have ipset. The list of *.example_xyz.com can be huge and it is said recent dnsmasq can handle them efficiently.
I agree, it also goes against the Linux "way of doing things".
For example, Opnsense uses the dhcp portions of dnsmasq only (and unbound for the dns parts) which just feels 'wrong'.
When I first came across Linux you would download the code (very slowly) to /usr/src/linux (extract and cd) and run "make config". You'd answer quite a lot of y/n and later y/n/m questions and then copy a binary and later on run a script to put things in place. Then you would fix up lilo and off you trot ... or not 8)
Is that the Linux way you are on about? No obviously not 8)
I think you mean the "unix idealized but never really happened exactly but we are quite close if you squint a bit ... way" where each tool does one job well and the pipeline takes up the slack.
DHCP and DNS are connected, PXE requires DHCP entries, so to do a simple setup you'd need to glue together at least 3 daemons otherwise, all with different config syntax