I've just committed a large chunk of work on the refactoring process. It's still a bit messy, but its getting there.
For the programmers out there, I've been moving the headers into their proper directories and getting rid of the include dir. Then, I've gone through every single header file (sigh) and added appropiate forward declarations in favour of header inclusion. After that, I went through the cpp files to make sure they included the proper headers.
We've also added a "_public.h" file for each subsystem. The other subsystems strictly use this to communicate with another subsystem. For example, a file in the renderer might need VFS, so it includes vfs/vfs_public.h and only that file.
Now, this may not seem like the best idea, seeing as these public headers can become quite bloated, and honestly, its not. It is a temporary solution as part of the cleanup, and serve only to make the current codebase cleaner. At some point in the future, after the intiial refactoring is done, each subsystem will gradually get migrated to a proper class based architecture. This will then allow us to cleanly include parts of the subsytems in other subsystems on a class by class basis.
Thats all for now. Tell your friends.