[ros-general] ReactOS IP Policy Document
jason.filby at gmail.com
Wed Feb 2 20:19:14 CET 2005
Thanks to everyone for the feedback regarding the IP Policy. Find the
latest revision attached. Unless there are any more objections I'll
publish this copy.
-------------- next part --------------
REACTOS PROJECT DEVELOPMENT POLICY
2 February 2005
The ReactOS(TM) Project is an international group of developers whose goal is
to create a work-alike version of the Microsoft Windows operating system. In
light of recent activity in the free software world relating to copyright and
patent concerns, the administrators of the ReactOS Project feel that a formal
Development Policy is needed. This document sets down that policy.
For questions regarding this policy, please e-mail one of the following:
- ros-general at reactos.com - General mailing list for the Project (first subscribe at reactos.com)
- jason.filby at gmail.com - ReactOS Project Founder and Coordinator
- vizzini at reactos.com - ReactOS Kernel Coordinator
Please note that none of this should be construed as legal advice, as
warranties made by the Project about the code, or in any way other than as a
statement of policy on the part of the Project.
The "Microsoft" and "Windows" marks are property of Microsoft Corp.
Because of the nature of the ReactOS Project, copyright, patent, and other
legal issues regularly arise in the course of development. This document
analyzes each of these areas law and explores implications for ReactOS
This policy has been developed in the context of United States laws. However,
similar laws exist in most other places, and an effort has been made to ensure
that this policy is generally compatible with other jurisdictions.
A. Helpful Definitions
Throughout this policy document, the following definitions will apply, unless
Application Programming Interface (API): A collection of functions, data
structures, constants, objects, etc., which defines the programming interface
to a piece of software. For example, computer operating systems have APIs that
must be used in order to write software to interoperate with those systems.
"API" can refer to an individual function provided by the operating system.
Compiler: A software development tool that translates human-readable source
code into object code for execution in the target environment.
Copyright: A form of government-created monopoly that protects creative
expression, including written works, recorded works, songs, visual art,
computer source code, and the like. Copyright protects the literal expression
contained in a work, not the ideas and concepts that a work embodies.
Copyright arises automatically in any copyrightable work at the moment it is
fixed in tangible form, including the writing of computer source code and,
sometimes, object code.
Debugger: A piece of software that is used to help developers fix flaws in
their software, or which is used to help developers understand more about the
system on which they are developing. Examples include SoftICE from Compuware
and WinDbg from Microsoft.
Device Driver ("Driver"): A piece of software designed to directly or
indirectly manage a piece of hardware on behalf of an operating system.
Sometimes also used to refer to any software designed to run as a direct
plug-in to an operating system kernel. Drivers tend to be very low-level,
becoming part of the core of the operating system once they are loaded. They
are generally very closely tied to an operating system architecture.
Disassembler: A piece of software used to allow developers to convert object
code into human-readable assembly language code. These are used to help
developers fix flaws in their software and to help them understand the system
in which their code runs. They are also used for source code recovery in case
of loss of the original source code.
Free Software: Software whose license conforms to the Free Software
definition, as published by the Free Software Foundation (http://www.gnu.org).
The GNU General Public License (GPL) is a popular Free Software license.
Header File: A source code file, usually in the C or C++ programming
languages, that is included by reference in other source code files. Header
files provide information that defines the APIs, data structures, operational
constants, and other characteristics of a software system. For example, to
write software to run on an operating system, one must use the header files
provided by that system's developers in order to interface with that system.
Library: An object code file that contains reusable software components. In
the setting of an Operating System, the system libraries must be used by
third-party software to "link" functions with the operating system, so that the
software can properly run on the operating system.
Non-Free [Software]: Software that is not Free Software. Most commercial
software still falls into this category.
Object Code: Output from a compiler or other similar program designed to
translate human-readable source code into a format suitable for execution in
the targeted environment. Typically refers to machine language instructions
that may be executed directly on a microprocessor. The counterpart of Source
Code, which is translated (usually by a compiler) into object code.
Operating System (OS): A special class of computer software designed to
provide an environment in which general software can be run. Operating systems
interface directly with the hardware of a computer, and provide a standardized
set of services that applications can interface with. Examples include
Microsoft(R) Windows(TM) XP, GNU/Linux(TM), and Apple(R) Mac OS(R).
Patent: A legal monopoly granted by the government to the inventor of a new and
useful invention. Patents refer to tangible or intangible concepts, methods,
procedures, practices, devices, and so on. Patents are not specific to a
particular expression of an invention.
Public domain: A work that is eligible for copyright protection may be placed
in the public domain by explicit notice given by the original creator of the
work. Once in the public domain, the work has no copyright whatsoever, and
carries no protection of any kind.
Service Mark: A trademark that is used to identify the source of one's
Software Development Kit (SDK): Software and documentation used to create
computer programs that interoperate with those of the SDK's supplier.
Typically, these kits include C language header files, object code libraries,
and various forms of documentation regarding the use of the kit and the details
of the software that the kit is designed to support.
Source Code: The representation of computer software in a computer programming
language (such as C or C++). This term refers to the form of a program that is
directly human-readable, and in which the software is typically originally
written and maintained. Source code typically includes comments to aid the
reader in understanding the software. In particular, source code includes
Trade Secret: Information that is valuable to its owner (typically a company),
which would damage the company's ability to compete in the marketplace if it
were revealed, which the owner takes affirmative steps to protect.
Trademark: A mark that distinguishes a product of a particular producer.
Trademarks are typically used to uniquely identify a product within an
II. COPYRIGHT ISSUES
Copyright law is relevant to ReactOS in several contexts. The primary license
in use by the Project, the GNU GPL, relies on the basic framework of copyright
to provide for enforcement of its freedoms. Nearly all of the sample code,
documentation, header files, and reference material available about the Windows
APIs is subject to some form of copyright.
A. ReactOS Copyright
The ReactOS Project releases almost all of its code under the GNU
General Public License (http://www.gnu.org). Some portions of ReactOS
may be licensed under other licenses, including the GNU Lesser GPL, or
placed into the public domain. This is generally done only when
necessary for compatibility with other projects.
Each developer maintains his or her copyright in the developed source
code. All code initially developed for use by the ReactOS Project must
be licensed under the GPL.
B. ReactOS License Binary Linking Exception
The GNU GPL generally prohibits the combining of non-free software with
GPL-licensed software such as ReactOS. That (or any other such policy)
notwithstanding, the ReactOS Project's official position with respect to
runtime linking of non-free modules is as follows: ReactOS may be used and
distributed with non-free software such as commercial device drivers and
commercial applications. This exception does not alter any other
responsibilities of the licensee under the GPL.
This exception is seen as a compromise by the Project. We do not encourage the
use of non-free software on ethical principle. We urge the use of hardware
that does not require the use of non-free software for proper operation, and we
support and recommend companies that supply Free (as in speech) drivers,
software, and tools. Furthermore, the Project urges developers to continue to
create Free device drivers for hardware where only non-free drivers currently
C. Copyrights of Others
The ReactOS Project depends on copyright law for the protection of its code,
and by the same token, it respects the copyrights of others.
Following are the policies of the ReactOS Project as they relate to copyright:
1) Code copying is absolutely never allowed, unless the copied code is in the
public domain or is distributed under a Free software license which permits
is combination with a GPL program, such as ReactOS (i.e. is GPL Compatible).
You should always assume that you do not have a license unless you are
explicitly given one.
2) Source code with non-free licenses may not be included in ReactOS. This
includes header files, support files, and implementation files. Such code
may be used for educational purposes, however, assuming you have a license
to possess the code. For example, in the absence of non-disclosure
agreements, and in the presence of a valid license, you may study and learn
from non-free sample code.
2a) An important side-effect of a non-free license is that you may never copy
and paste code from a non- free system into ReactOS. Furthermore, simply
re-typing existing code constitutes copying, and is a violation of the
copyright. To produce code that works similarly to given sample code,
the developer is permitted to reverse engineer a program to study and
understand the existing code, subject to the terms of any license
agreement. The developer, however, must craft new code from scratch
based on what he/she has learned.
2b) Developers are encouraged to NOT attempt to copy the coding style
of non-free code. While coding style may not be covered by copyright, a
similar or identical coding style to a piece of non-free code casts
suspicion on the new code.
2c) In particular, source code comments are covered by the code's copyright
and may NOT be copied, even into an otherwise-original work, subject to
the exception of fair use.
3) Source code which is acquired under a non-disclosure agreement is a special
case, and requires study of the non-disclosure agreement itself. Before
using any knowledge gained from studying such code, please discuss the
specifics of the NDA with the Project administrators.
4) In all cases, the ReactOS Project requires its participants to adhere to the
terms of the licenses of any software used in the development of ReactOS.
It is best, in general, to avoid any non-free licenses at all, of course.
5) Fair Use. Copyrighted materials carry with them certain irrevocable rights
of fair use. One important such right is the right to study a copyrighted
work for educational purposes. It is in this light that third-party,
non-NDA-covered development kits are studied in order that the Project
participants might produce compatible software.
6) Reverse engineering. Many non-free software packages have a specific clause
in their licenses to prohibit reverse engineering. It is the opinion of the
ReactOS Project that these license restrictions are only valid to the extent
that they prohibit intentional conversion of object code to corresponding
source code and subsequently claiming ownership of that source code.
Reverse engineering, a form of which happens every time a developer traces
into an operating system's core code with a debugger to find a problem with
his/her code, is held to be covered by Fair Use. Any source code produced
by direct reverse engineering should be treated in exactly the same way as
any other non-free source code - useful for study and understanding of the
system, but not permitted for inclusion in ReactOS.
6a) Disassembly of object code is held to be a form of reverse engineering.
Disassembled code listings should be treated with the same terms of
license as the object code itself.
7) SDK License restrictions. Certain SDKs that are frequently referenced by
Project members are distributed under a non-free license. Some of these
licenses include various restrictions on the use of the software developed
with the SDKs. In particular, Microsoft lists restrictions on which
operating systems drivers built using its DDK may be used. These
restrictions are in force only in drivers which directly include
Microsoft-supplied header or library files in the source or object code. In
general, these kinds of restrictions do not go to the documentation
contained within such SDKs, and source code (header files, in particular)
may be referenced for educational purposes and to facilitate
interoperability, as discussed above.
7a) It is the position of the ReactOS Project that certain components of
these SDKs are not covered by copyright. The Project believes that
names of symbolic constants, data structure types, and so on, are not
statutory copyright material because they are functional elements and do
not include creative expression. Therefore, it is the position of the
Project that developers may name their own corresponding data structures,
manifest constants, enumerated types, etc., identically to those found
in copyrighted works.
7b) Furthermore, the names of data structures and components are required
to be identical for compatibility with third-party source code, and as
such, are the same as are found in Microsoft SDKs.
7c) Data structures must match identically with those that are expected by
third-party software in order to achieve full compatibility of ReactOS
with Windows. While it is prohibited to directly copy any data from a
copyrighted file, ReactOS permits the re-creation of compatible data
structures to those found in non-free SDKs.
8) "Tainted Developers". There is a legal theory that is occasionally cited in
the context of producing a work-alike implementation of a published
copyrighted work. There is concern that, if the creators of the new work
have seen the original work, they will be unable to create a similar work
without infringing the copyright of the original. It is the position of the
Project that this theory is invalid for a number of reasons. As a general
rule, there is no reason that a developer who has seen non-free code cannot
write logically similar code for ReactOS.
8a) Developers who have entered into non-disclosure agreements preventing
them from using knowledge they gain working on non-free code in the
development of ReactOS should abide by the rules of their respective
agreements. The Project administrators require disclosure of any
relevant non-disclosure agreements prior to the submission of any code to
the Project, or indeed prior to any non-trivial participation of any
sort, including posting on mailing lists, participating in IRC, and so
on. These developers have clearly "tainted" themselves quite
8b) Developers who have had access to proprietary source code that would have
originally fallen under trade secret protection (including, for example,
the leaked Microsoft Windows source code) are a special case. The
copyright issues are unchanged, as are the patent issues, but any
developer who has the code is clearly either under an NDA or else does
not have a license to possess the code. In the latter case, there is a
clear violation of the relevant trade secrets by the developer. As such,
this kind of code is unsuitable even for research and understanding. It
is the policy of the Project to not take submissions from developers who
have or use any such proprietary code in their development efforts for
9) The project coordinators will make every effort to ensure that the codebase
honors the copyrights and licenses of all code that is a part of the system.
However, because of the size and complexity of the system, it is impossible
to guarantee that infringement will never occur. The coordinators of the
Project agree to promptly remove any infringing code from the codebase after
being notified of such infringement, subject to confirmatory analysis by a
Project administrator. Please notify the three e-mail addresses listed at
the top of this document to request removal of material you believe to be in
violation of its copyright.
III. PATENT ISSUES
Software patents have a profound effect on the ReactOS Project. Currently,
software patents are legal (i.e. software is statutory matter) in the United
States. As a rule, patents are fundamentally incompatible with Free Software,
and should be carefully avoided in the context of such projects.
Patent infringement occurs whenever anyone "makes, sells, uses, or offers to
sell" a patented invention without a license to do so from the patent's owner.
It is clear that all developers on the Project are affected by patents. This
is an extremely difficult issue to address, but the Project's policies
regarding patents are as follows:
1) The ReactOS Project administrators, coordinators, and participants are not
required to make an active search for potentially relevant patents. A
patent search covering all aspects of a system as complicated as ReactOS
would be impractical, or at least prohibitively expensive and time-
2) The Project participants will make a good-faith effort to disclose any known
patents relevant to the development of ReactOS to the project
administrators. This does not mean that the project desires others to
engage in a full patent search; it does, however, mean that developers are
duty-bound to report any patents that they know of that they suspect might
3) The Project administrators will maintain a list of relevant patents, and
will make a good-faith effort to avoid infringement. As a rule, legal
counsel will not be sought out on each patent. Instead, the project
leaders, at their discretion, will make a determination as to the technical
relevance of patents, and if necessary, will direct the removal and/or
redesign of infringing parts of the system.
4) Project participants agree that they will not seek patent protection for any
new developments made in conjunction with ReactOS, or in the alternative,
agree in advance to assign ownership of such patents to the ReactOS
Foundation, or else to grant a perpetual, irrevocable, transferable,
royalty-free license to anyone who wishes to use the patented invention in
conjunction with the ReactOS system or in any derivative work of the system
(in other words, something like a "patent-left").
5) The coordinators of the Project agree to promptly remove infringing
implementations of patented inventions from the codebase, subject to a
confirmatory analysis by a Project administrator. Please notify the three
e-mail addresses listed at the top of this document to request removal of
material you believe to be in violation of a patent.
IV. TRADEMARK ISSUES
The ReactOS Project endeavors to respect the trademarks of others, and takes
steps to protect the integrity of its marks. Project policies relating to
trademarks include the following:
1) The integrity of the ReactOS mark must be maintained at all times.
Developers are asked to use ReactOS mark carefully, and to always note the
existence of the mark with a (TM) sign after the first use in any published
2) Any Project member writing published materials such as documentation, news
articles, website content, and so on, must take all appropriate measures to
protect the marks of others by indicating the appropriate (TM) and (R)
designations on first use of a mark.
V. TRADE SECRET ISSUES
>From time to time, members of the ReactOS Project may find themselves in
possession of information that is prohibited from further dissemination. This
is the case when the participant is in possession of trade secrets.
Possessors of trade secrets are encouraged to maintain the secrecy of the
relevant information. Public projects such as ReactOS are generally
incompatible with trade secrets. Project members should never reveal trade
secrets to the Project. The Project maintains no trade secrets, and while it
makes every effort to respect the trade secrets of others, the Project makes no
guarantees on behalf of any of the members of the project.
It is the policy of the Project to not possess trade secrets. This means that
project participants should never acquire access to trade secrets in the
context of their work on ReactOS.
VI. NON-DISCLOSURE AGREEMENTS
Members of the ReactOS project may occasionally find it necessary to enter into
various non-disclosure agreements. Due to the fundamentally incompatible
nature of the Project with the concept of non-disclosure, it is the policy of
the project not to enter into any non-disclosure agreements for any reason.
Project members are required to inform the Project coordinators of any such
agreements that might be relevant to their participation in the project. The
Project will make a good-faith effort to prevent the violation of non-disclosure
agreements on the part of project participants, but it makes no guarantees as to
the behavior of participants.
Participants that are found to be under a relevant NDA are prohibited from
supplying code, documentation, implementation advice, architecture advice,
etc., that is covered by that NDA to the project. Any such code that is
supplied in violation of an NDA will be removed from the codebase.
1) Trademark and Service Mark Anti-Dilution. Anti-dilution provisions prevent
even the un-related use of a "famous" mark or a trademark that is
confusingly similar to a famous mark. ReactOS uses only one mark, the
ReactOS mark itself, which does not appear to raise any trademark anti-
dilution issues with any other marks.
2) Trade Dress. Trade Dress refers to the look-and-feel of a product. Famous
examples include the Coca-Cola bottle and the Apple Macintosh user
interface. It is the policy of the ReactOS Project to respect the trade
dress of others. The Project is currently unaware of any trade dress issues
with other products. Developers should attempt to continue to distinguish
ReactOS from other products for the purpose of avoiding trade dress
VIII. DEVELOPMENT KITS
ReactOS requires the use of several third-party software development kits for
its development. These each present unique legal issues. The following
development kits are used in the development of ReactOS:
- Microsoft Platform SDK (including related and component SDKs): This SDK
can be found at http://www.microsoft.com/msdownload/platformsdk/sdkupdate/.
This SDK contains header files, libraries, documentation, and other support
files, as well as sample source code for programs that illustrate use of
the API defined in the SDK. This is the main development kit that is used
to develop third-party software to be run on Microsoft and
Microsoft-compatible operating systems.
- Microsoft Driver Development Kit (DDK): A special-purpose SDK designed for
the development of kernel-mode software (including device drivers).
- Microsoft Installable File system Kit (IFS): A special-purpose SDK designed
for the development of certain kernel-mode components known as file
systems. This kit is distributed under a restrictive license and for a
fee of around $1000.
More information about the ros-general