Two years ago I began migrating away from the Appleverse to Linux and open source. The biggest issue I faced was my calendars and contacts.
I still use my iPhone and needed to have access and synchronisation between my phone and desktop. I overcame this issue and wrote a blog ( using your iCloud address book in linux )
Moving on and settling on Thunderbird as my email client, there are now some great addons out there that I use to enhance and simplify electronic work flow. Of note is the great work that has been done by John Bieling ( Jobiasoft of Git Hub ) and his tbSync, Provider for CalDAV & CardDAV and Providor for Exchange ActiveSync. These are all 5 star Thunderbird Addons and his Github pages is very active ( https://github.com/jobisoft )
I can recommend that you save yourself a lot of time and use John’s tbSync addon for syncing your iCloud contacts and Calendar with Thunderbird (on either Linux or Windows).
If you use the Evolution gnome based email client, my 2 year old blog will still help in getting you across the line with contacts, reminders and calendar synchronisation. I just need to update it to include application passwords which is now a thing (a good thing) with apple iCloud accounts.
As always, Beer and profit