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.
--
Best regards,
Alex Ionescu
Project Lead, TinyKRNL
Kernel-Mode Software Design Engineer, ReactOS