On the iSeries, back before they went with 'free' code, everything was in columns -- very easy to parse, so I had a program that would treat a program like a bill of material, to put like what you're talking about, but upside down, since the mainline had to be first. I'd like to do something like that in Python, but things are a bit more complicated now. What do you do with functions dedicated to one thread or another? Do you separate things by the thread they run under? "main" goes at the bottom, then should I put all 2nd-level above that before going to any 3rd-level, or put 3rd-level immediately above functions that they serve? I haven't seen anywhere on the web that discusses this.
I'm with you on splitting things up into modules, and I'm already using two sources. But I use global variables to communicate between threads, so that glues a lot of stuff together. Is this the way it's done?
Statements resembling facts are IMO only. "he" means "he or she", etc. "Mother Nature" is an abstraction, not a real spirit.