Hi all,
After talking to some developers about the recent state of the ReactOS tree, compiler times and disk space, I've analyzed our tree and found the following preliminary round of changes that should be made to stay in line with our policy that ReactOS provides what Windows does, at the core level. Any extra functionality or applications not provided by Windows have always been supposed to go into rosapps, as well as test applications. For testing/regression testing, I actually recommend the creation of a ros-tests repository, which will contain the tests in rosapps plus the ones I've mentionned below.
This isn't just about disk space or compiling speed, but also to keep our tree clean and conformant.
Here's the list:
\base\applications\devmgmt should go into a new folder called "mscutils" along with similar MSC clones. \base\applications\getfirefox should be removed. \base\applications\devmgr should be removed. \base\applications\downloader should be moved to rosapps. \base\applications\gettype should be moved to rosapps. \base\applications\ibrowser should be removed. \base\applications\imagesoft shoudl be moved to rosapps. \base\applications\network\roshttpd should be moved to rosapps. \base\applications\reporterror should be removed. \base\applications\screenshot should be moved to rosapps. \base\applications\servman should go into a new folder called "mscutils" along with similar MSC clones. \base\applications\shutdown should go to \cmdutils. \base\applications\sm should be removed. \base\applications\testsets should go to rosapps. \base\applications\utils should go to rosapps. \base\applications\winefiel should to rosapps. \base\services\dhcpd should go to rosapps. \drivers\base\debugout should be removed. \drivers\base\green should go to rosapps. \drivers\base\ramdrv should go to rosapps. \drivers\base\test should go to rosapps. \drivers\filesystems\ext2 should go to rosapps. \drivers\filesystems\minix should go to rosapps. \drivers\filesystems\template should go to rosapps. \drivers\multimedia\avtest should go to rosapps. \drivers\network\tditest should go to rosapps. \regtests should go to rosapps.
As well, there has been talk that \tools should become part of RosBE as -O3, heavily optimized binaries on Windows. They should stay in the default reactos trunk download, but building them shouldn't be done on Windows unless the binaries can't be found or the option has been forced. This will make bug reporting and testing safer since we'll know the tools are the same ones the developers are using (at least on Windows, where we can manage this better). I am very much pushing for this change to happen, as it will make our life easier for a variety of reasons:
- MSVC or GCC 4.2 -O3 tools decrease build times. A highly optimized rbuild binary does dependency checking almost twice as fast as a regular -Os binary. - Decrease build times since the tools don't have to be rebuilt/cleaned each time. - Decrease storage space for developers that want to locally delete the entire tree. - Reduce the number of potential problems that outside testers might have to due to improper building of their tools. The tools Microsoft releases in the DDK are the same ones they use internally, so any bugs appear on both versions, and it makes diagnosing a lot easier.
Unfortunately binaries can't be provided for Linux, but since /tools would stay in the reactos directory, Linux builders would be completely unaffected (except they wouldn't have the added advantages).
As far as I know, Aleksey, Christoph and Johannes are willing to back this up and do the necessary changes for the /tools; I'll handle fixing the .xml files and doing the tree moves.