Two years ago I began migrating away from the Appleverse to Linux and opensource. 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 (https://webby.land/2017/08/11/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 (https://addons.thunderbird.net/en-US/thunderbird/user/jobisoft/) 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). I 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