Adding further to Rob’s history, fwiw, and my $0.02:
Once upon a time there was NO built-in scene manager. Then there was Director (a third-party scene manager). Then Corona borrowed ideas to create Storyboard (a scene manager). Then Storyboard was rebranded as Composer (a scene manager, essentially “Storyboard 2.0”).
Composer also contained new code to support the development of “Composer GUI” (which was NOT a scene manager in-and-of-itself, but rather a short-lived wysiwyg scene “designer”, built on top of the actual scene manager: Composer). Presumably to make that new code more manageable, they split out some of the scene-specific code from composer.lua into composer_scene.lua.
Composer GUI allowed you to define some basic physics properties on the display objects defined in the scene - in this way you could create simple physics-based “apps” without coding. Or, at least, that was the plan… though the wysiwyg designer never reached the stage where you could actually do anything truly “useful” with it. But that is why composer_scene requires physics.
Aside: The physics library itself leaks a global “physics” probably because it was implemented with the old-style module system via package.seeall. (we don’t know for sure, as they haven’t open-sourced that one yet, but it’s a reasonable guess given its age) But there’s no “good” reason that it should leak. (ie, it could easily be rewritten with modern module style to eliminate that leak)
Composer GUI is now abandoned and long-dead. Thus, the vast bulk of code in composer_scene.lua (including the require of the physics library) is now completely useless (and almost all of which is completely undocumented, including some that was apparently abandoned in-progress/incomplete).
IMHO, “Composer GUI” should never have been so tightly “bundled” with Composer. (IMVHO they shouldn’t have wasted their time on Composer GUI in the first place!) It should have been a separate require, (with self-contained functionality where possible/feasible, and monkey-patching scene only if/as needed, in much the same way that widget monkey-patches display), so as to leave Composer “clean”.
As it stands, Composer is now in need of a “Composer 2.0” overhaul to clear out the “junk” from the Composer GUI era. It would be similar to the Storyboard->Composer rebranding all over again, except in reverse. (instead of adding code to support Composer GUI, it’d be to remove that code)