|
ReactOS Development > REACTOS PROJECT DEVELOPMENT POLICY12 December 2004PrefaceThe ReactOS™ 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 ros-general@reactos.org (General mailing list for the Project) 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. I. INTRODUCTIONBecause 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 development.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 DefinitionsThroughout this policy document, the following definitions will apply, unless stated otherwise: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® Windows™ XP, GNU/Linux™, and Apple® Macintosh™. 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 services. 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 header files. 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 industry. II. COPYRIGHT ISSUESCopyright 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 CopyrightThe ReactOS Project releases almost all of its code under the GNU General Public License (http://www.gnu.org). Each developer maintains his or her copyright in the developed source code, but licenses that code under the GPL for use by the ReactOS Project.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. B. ReactOS License Binary Linking ExceptionThe 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 exist. C. Copyrights of OthersThe 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:
III. PATENT ISSUESSoftware patents have a profound affect 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:
IV. TRADEMARK ISSUESThe 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:
V. TRADE SECRET ISSUESFrom 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 AGREEMENTSMembers 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. VII. Other
VIII. DEVELOPMENT KITSReactOS 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:
|