Introduction

There are several different versions of the SMB protocol, but version 1 is not considered secure, and is not enabled by default in Windows 10.  Furthermore, if it isn't used for a period of time, it is automatically disabled.

So the long and the short is a solution is needed that doesn't require the used of the SMBv1 protocol.

Set up the Linux Firewall Correctly
ufw allow Samba
ufw allow OpenSSH
ufw allow CUPS
Configuring Samba to Not Use SMBV1

In the /etc/smb.conf file, make sure the following entries appear in the [general] section:
server min protocol = SMB2
client min protocol = SMB2
client max protocol = SMB3
And re-start the samba services:
sudo systemctl restart smbd
sudo systemctl restart nmbd
Make sure you have valid samba users if you have made shares available:
smbpasswd -a username
Browsing Clients

At this stage, you should be able to browse Windows clients in the Thunar browser
smb://windowsmachine/
Browsing Workgroups

To enable workgroup browsing, the Linux machine needs to support the Windows Discovery Service, as with the later versions of Windows, the Netbios Discovery Service has  been deprecated as the Windows SMB protocol has moved from port 139 (NetBios) to port 445 (over TCP/IP).  Windows 10 does not support NetBios by default.

Announcing Services

Samba should be announcing services - if it is not, the services can be announced via the avahi-daemon:

Create /etc/avahi/services/smb.service
<?xml version="1.0" standalone='no'?>
<!DOCTYPE service-group SYSTEM "avahi-service.dtd">
<service-group>
   <name replace-wildcards="yes">%h SMB</name> ## Display Name
   <service>
       <type>_smb._tcp</type>
       <port>445</port>
   </service>
</service-group>
systemctl restart avahi-daemon