I don't know how best to implement this, but I'd think the easiest way to do it is to fork off a new process. First process checks to see if the needed files exist to process X.ebuild. If they don't, it sits and waits for the child process to finish downloading them. Then, while X.ebuild is being processed, the child process is downloading the requisite files for Y.ebuild, Z.ebuild, et al. If X.ebuild happens to be a perl script, Y might have to pause for a bit while its files download, but at least you'd have a head start. Plus, this would almost never happen after the third or fourth download (ie. initial install [of system, of kde-base, etc], after a day with many fixes, or updating 'world' on a machine that you don't want to update via a cronjob). This would cut the compile time on a new system dramatically. And no, Mr. "I like turning off feature requests", emerge -f is not adequate. It's mighty close, but it doesn't happen in sync. Ease of use before KISS. There'd be nothing lost by implementing this. Heck, even just forking off emerge -f with all the args fed to emerge initially would do the trick.
FEATURES="parallel-fetch" exists.
FEATURES="parallel-fetch" in portage-2.1 does exactly that. *** This bug has been marked as a duplicate of 1661 *** *** This bug has been marked as a duplicate of 1661 ***
There was one thing different between this and the other bug mentioned. The word "default". Why isn't parallel-fetch enabled by default?