A few months ago, I implemented the 'device sync' feature from gPodder 2 back into the gPodder 3 codebase - but for filesystem-based devices only. I wanted to sync my podcasts to my Android phone. (I'm not an Apple guy, even though I live San Francisco, the Apple capital of the world.) It's been working well and since then I've improved it with the addition of playlists and two-way sync, so that deleting a track on your device removes it from gPodder on the next sync.
But you can't support mobile devices without supporting Apple, so after a friend kindly gave me her old iPod Touch (thanks Kendra!) I got to work.
I started with the code from the gPodder 2 branch, and refactored it into the gPodder 3 codebase, much as I did for filesystem-based syncing. With a bit of work, and by using the libimobile library, I was able to successfully sync my podcasts with the iPod!
I used libimobile tools to mount the iPod before syncing, and gtkpod to help manage the iPod's internal database. However, I don't expect people will need to use gtkpod during normal operation, only to initialize the iPod prior to the first sync.
I'll be working with Thomas to figure out precisely when and how to get this code merged into the master branch. Code that works on a first generation iPod Touch may not necessarily work on other Apple devices, so we may want to test on more hardware before merging.
We had another short hack day this weekend. This is the last official hack day, there won't be any future public hack days. What we did: