For a while now, I've been slowly migrating my private data away from Google to a few self-hosted options. For file sync, I've used ownCloud - which comes with built in contact (CardDAV) and calendar (CalDAV) support.
On Android, I used DavDroid to sync my contacts to ownCloud. One thing that I missed the most moving from Google Contacts was that I could no longer create contact groups. It seems that the Almighty Goog in its 'wisdom' restricted the creation of groups ONLY to Google Accounts. This is one feature that I used heavily, and seems hotly requested for support in DavDroid. The problem was, Groups was a Google only thing. DavDroid recently supported groups, but you would get thwarted by Android.
I was discussing this with pulser on the #omnirom irc channel on FreeNode, and pointed this issue out - and that the DavDroid author thought it should be a simple fix within Android to make groups work on all account types. Less than an hour later, the patch was born AND tested. Less than 12 hours later, the patch was included in all currently shipping OmniROM nightlies.
Now, groups sync correctly - and can be edited from any source - the ownCloud web interface, Thunderbird or OmniROM - and sync perfectly between devices. All without giving your data to Google.
THAT is the power of open source software.