[ros-kernel] Proposed ReactOS headers and code sharing policy

Jonathan Wilson jonwil at tpgi.com.au
Sun Oct 19 09:16:10 CEST 2003


Vizzini wrote:

> Folks,
> 
> 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
> 
> Details
> -------
> 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
> modules.
> 
> 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
> (http://www.cvshome.org/docs/manual/cvs-1.11.7/cvs_13.html).
> 
> 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.
Good idea.




More information about the Ros-kernel mailing list