Before the tools we will talk about today hit the market, it was common practice to manage items through Sitecore .zip packages which was very error prone. Sitecore TDS was originally developed by Hedgehog Development as an internal project. After it gained popularity, Sitecore acquired Hedgehog Development in 2019, rebranded and optimized TDS with many opt-in features. Unicorn is an opensource tool that was mainly driven forward by a developer named Kam Figy in the period between 2013 and 2018.
The main purpose of both tools is to serialize Sitecore items to the file system and store them in source control. Sitecore TDS installs a service to your local site and is operated through a Visual Studio extension UI. Unicorn changes Sitecore’s default Data Provider to use .yml files as master copy and is operated by it's own admin panel.
Sitecore TDS allows the developer to select single items, or folder structures for (de)serializing.
Unicorn isn't that detailed. There is a possibility to create different sections - so called "Configurations" - via a config file, wich can be synced / deserialized.
Sitecore TDS is licensed per developer and is available as an annual subscription ($399/year). Unicorn is a opensource tool and therefore free to use for everyone.
Both tools have community support (Slack, Stack Exchange). In addition, Sitecore TDS has 24 hours enterprise support.
I have used both tools in different projects, and both did their job - serializing and dezerializing - quite well.
Despite this, I tend to Unicorn because of two reasons:
I mean it's a "nice to have"-feature to select single items and (de)serialize them, but in the projects i worked with unicorn, i got used to the fact, that this isn't possible, and i didn't miss it either.
If you have any questions, feel free to contact me