[ros-kernel] Proposed ReactOS headers and code sharing policy
jonwil at tpgi.com.au
Sun Oct 19 09:16:10 CEST 2003
> I think we have the Final Answer on what we're going to do about headers
> and code sharing. I want to get feedback from the ReactOS team and from
> the MinGW and Wine projects before we do this, because I only want to do
> it once. I will implement this policy (with any modifications made by
> this message thread) as soon as we are in general agreement.
> Executive Summary
> - Use MinGW for all public interface headers, i.e. everything that
> MinGW supports
> - Use non-OS-specific Wine libraries unmodified
> - Use portions of OS-specific Wine libraries (e.g. user32)
> - Keep it all straight with CVS vendor branches
> For headers, we will use MinGW as our external interface in all cases
> that MinGW supports, including kernel-mode code (i.e. the DDK). We will
> submit patches to MinGW when we find problems with the public
> interfaces. There is the added benefit of having a compatibility check
> against our public interface.
> We will continue to maintain our own internal headers for anything that
> doesn't belong in the public headers. We will begin to port our
> kernel-mode code to use the MinGW DDK headers, maintaining our internal
> headers for non-public things.
> There are two classes of DLLs we can borrow from Wine. The first class
> includes system-specific DLLs like user32.dll, kernel32.dll, gdi32.dll,
> advapi32.dll, and ntdll.dll. The second class includes basically
> everything else.
> We will immediately start using the second class of libraries
> essentially unmodified. Any bugfixes we make will be sent back to Wine
> as patches, but no ReactOS-specific code will ever be added to these
> The first class of libraries is more difficult. Some chunks of code
> will be used unmodified, ideally on a file-by-file basis. Other chunks
> of code will have to be ReactOS-specific, and we will maintain those in
> our local tree. If Wine ever chooses to merge our changes, that's fine
> too, but it certainly won't be required.
> I plan on managing both Wine and MinGW sources as CVS vendor branches.
> The ReactOS build system will have to be tweaked a little to look in the
> right spots for things. We will stay current with MinGW and Wine
> changes through regular imports, probably on a major-release basis. CVS
> makes this easy
> I would appreciate any feedback. This represents a major change for the
> ReactOS project, but I believe it is the wisest thing to do. This
> system puts ReactOS in the position to grow and mature as cleanly as
> possible, and provides a high degree of code sharing and collaboration
> among our projects.
More information about the Ros-kernel