Hello, Daniel! On Wed, 2008-01-30 at 11:57 -0500, Daniel Finnie wrote: > I've been using gPodder for a few weeks now and it is definitely the > best podcast client I've used on Linux, but that's not to say the > software is without flaws. The biggest thing about gPodder that I > would like to see improved is the modal feed checking, file > downloading, and file transfers to an MP3 player. I don't see a > technical reason why the application can't transfer an episode to my > MP3 player while I click around to find other episodes to transfer. I can see some reasons: * Delete episodes in the GUI while they are being transferred * Selecting episodes in the GUI, then lose the selection, because the tree model is updated as a result of a feed cache update Also, downloading isn't modal and never was - you can close the episode dialog and the download continues in the background. > Much like the downloads are handled now, I would add options to select > how many concurrent transfers are allowed and how many concurrent feed > updates are allowed. Possibly, a "total concurrent actions" option > could be implemented. I don't see the point in "total concurrent actions", because limits are there to make up for bandwidth and processing restrictions (only one download because of small bandwidth, only one transfer, because the bottleneck is the USB device's storage, not the copy algorithm). I see the point for a "total concurrent downloads" if we decide to make the channel feed update parallel (something that is planned for the April 2008 release). Do we really need to transfer episodes in parallel? > I see this as a huge benefit as it allows: > - Users with fast Internet connections to update multiple feeds at > once. Sure, updating the feed cache in parallel is something I wanted to implement for some time now (and has also been requested), but due to lack of time, there has not been an implementation yet. Also, I thought about not displaying the feed update in the "Downloads" tab but directly in the channel navigator (the left panel), maybe with an animation or the "refresh" icon as emblem on the channel cover, just as we do now with the "played" and "locked" status on episode icons. > - Users would be able to pick one file to transfer to an MP3 player > and have it transfer while browsing around for another file to > transfer. The code can get much more complicated and buggy, because we have to make sure to avoid race conditions, such as the one mentioned above (sync A, B, and C; while A is still syncing, delete B in GUI; what does the sync process do?). The "Ctrl+S" sync mode automatically syncs all your unplayed episodes (if you have configured it do to so) to your player without having to manually select which episodes to transfer. > The only drawback I can see is the additional coding required, however > I don't think it is too intensive. When the user requests a feed > update, it will add itself to the queue and start executing if the > max. concurrent feed updates has not been reached. When a feed update > completes, it another feed update so long as there is one to update. > > In addition, threads will probably have to be used if they are not > already. Because gPodder is not cross-platform, I don't think this > will be too much of a problem. Threads are already used for some parts of the code. As much as possible, I want to avoid threading, as it brings in many nasty problems and invisible bugs. I don't know if a possible buggy and hard-to-debug gPodder is not a too high price to pay for small things like non-modal MP3 player sync. > So, finally, if I wrote up the code that implemented the above > suggestion, would it get merged into the gPodder trunk? Or is there a > reason that this was not done already? If the implementation is nice and clean, and if you keep sending the patches while you are developing, why not? Best would be if you could send your changes step by step, so that we can review it and give some comments and maybe partially merge it into the codebase. If you develop three weeks or so behind closed doors and then come up with a huge patch, it is a PITA to apply and merge the patch, because it probably grew huge in the meantime. Please, feel free to try to implement the features you requested (apart from the "total concurrent actions" feature for reasons mentioned above) and send in patches. I'd really love to see this in gPodder! :) Thomas