I like Roku, but their remote is stupid, for those few people who still watch OATV.
I think the best of both worlds is to get a TV with a good built-in tuner \ tuner-app, then hook a standalone Roku unit to it. All the Roku features & you get to keep the number keys & CC button.
ChromeCast was far too finicky & app-dependent for my liking; also didn’t seem to add any platform-specific content I cared about.
Samsung was awful. Didn’t work with anything except Samsung & then still very app-specific.
Raspberry Pi is a great way to put a proper desktop browser, & standard devices like a HDD/NAS, KB/mouse, touchscreen control, on a TV; but it doesn’t receive casts from one’s phone out of the box, nor offer any exclusive streaming content. That said, a Pi running Kodi can be a pretty great media center PC, for content you already have.
Roku often has free streaming content that I & my family actually like to watch.
I also find it to be a much less tightly gated app ecosystem, than ChromeCast etc. There are Roku apps (annoyingly called “channels”) that allow me to cast whatever files I’ve got on mobile, or whatever media streams I browse to; no restrictive “this app doesn’t cast that” limitations. I have seen similarly general-purpose casting apps for ChromeCast etc, but the only ones I’ve seen used were a lot more limited than what I run on Roku. Several seemed to have had their functionality actively disrupted by system updates from Google. Never had any such issue on Roku; in fact, my venerable RokuHD unit plays more codecs than it used it, & had an actual bugfix just last year, despite Roku announcing EOL in 2019. The RokuExpress is a bit of a dog (about as slow as the RokuHD), but it works for non 4K content. The RokuUltra has worked flawlessly so far.
I don’t know of any smart TVs from major OEMs, that support streaming direct from Samba shares / NAS, right out of the box; but there are apps (“channels”) for that.
Roku remotes have no numbers on them; if you get a RokuTV (a TV with Roku built-in), it will not ever accept numbers input, even from another remote. For this reason, I recommend getting a TV with proper tuner & number keys, if there’s any chance the TV will get used for actual OATV broadcasts. (“Free, over the airwaves, as God intended.” - David Letterman)
ATSC 3.0 is getting encrypted, though (violates the terms of the broadcast license, but the FCC isn’t stopping it). So, useful OATV without internet, may disappear soon anyway. Also worth noting: changing channels betwen encrypted ATSC 3.0 OATV streams, is sloooow. Like really slow; don’t push the button too quickly or the TV tuner might crash, slow.
None of the streaming devices like ChromeCast/Roku/etc, have the full breadth of DigitalVideoRecorder capability. If you actually want a great OATV DVR experience, consider getting an external ATSC 3.0 tuner with “NextGen TV” certification logo. You might even want a dual/multi tuner unit: Even though many TVs & streamboxes & tuners, have multiple inputs, none of them support Picture-In-Picture except the dual tuner units. More than I can say for the TVs themselves: HiSense replaced a 40" with a 44" because the power-switch daughterboard died, & they sent a replacement part but then realized they had no techs in the area to install it. (They didn’t have the 40" anymore, poor me.) Element has repeatedly made their tuner app worse & worse, to the point where it doesn’t even go to what channel you’re on when you pull up the guide, dumps out of the guide at seemingly random intervals, & sometimes switches to the wrong channel & then freezes up. Bear in mind, the TV manufacturer makes the OATV tuner app, for each of these TVs, not Google/Roku/etc. Which makes the insanely bad layout of the Samsung TV & casting apps, even more inexcusable: they had control of both ends, & seem to have put minimal effort into anything but restricting features that were “universal” over 10 years ago.