I have ubuntu on a surface go 1 and it's running better than stock windows (except for IR camera). On the SP7 it was working decently on the latest ubuntu release - even the WiFi OOTB. However, touch screen wasn't working (ootb - custom kernel can enable it) and that was a deal breaker for me. I still need windows to boot from USB (!) as the device was designed this way, so don't count on being totally defenenestraded. You will need windows for firmware updates too.
Check out the Linux surface repo mentioned earlier, it's full of good resources for Linux on surface device's.