Difference between revisions of "ReactOS FAQ"

From ReactOS Wiki
Jump to: navigation, search
m
m (Jedi-to-be moved page FAQ to ReactOS FAQ: to be able to link)
(24 intermediate revisions by 7 users not shown)
Line 1: Line 1:
''See Also [[File_Systems#FAQ|File Systems FAQ]]''
+
== User FAQ ==
==User FAQ==
+
=== [[ReactOS#What Is ReactOS|What is ReactOS?]] ===
 +
ReactOS (short for React Operating System) is an open-source effort to develop a quality operating system that is compatible with Microsoft Windows™ applications and drivers.
  
===[[ReactOS#What_Is_ReactOS|What is ReactOS?]]===
+
=== Why re-implement NT? ===
 +
First of all, the 'Windows' the general public knows is actually just one part of the modern Windows NT™ operating system. They usually mean the [[Win32]] subsystem, a layer that sits upon the NT kernel, providing the user and application interface.
  
[[ReactOS]] (short for React Operating System) is an open-source effort to develop a quality operating system that is compatible with Microsoft Windows applications and drivers.
+
=== "NT is still around, known as XP and Vista" ===
 
+
Most people think of 'NT' as 'WinNT 4', while in reality the term NT refers to the NT series, which ranges from version 3 over NT5 (2000, XP, 2003) and NT6 (Vista, 2008, 7, 8, 2012, 8.1) to NT10 (10, 2016).
===Why re-implement NT?===
 
First of all, the 'Windows' the general public knows is actually just one part of the modern Windows NT operating system. They usually mean the [[Win32]] subsystem, a layer that sits upon the NT kernel, providing the user and application interface.
 
 
 
==="NT is still around, known as XP and Vista"===
 
Most people think of 'NT' as 'WinNT 4', while in reality the term NT refers to the NT series, which ranges from version 3 over NT5 (2000, XP, 2003) to NT6 (Vista, 2008 and 7).
 
  
 
The NT architecture was designed by a team lead by David Cutler, a former lead developer of VMS. It took them more than 4 years to combine the best of UNIX, VMS and OS/2 and create the NT architecture.
 
The NT architecture was designed by a team lead by David Cutler, a former lead developer of VMS. It took them more than 4 years to combine the best of UNIX, VMS and OS/2 and create the NT architecture.
  
===What about UNIX?===
+
=== What about UNIX? ===
Mac OS X, Linux, BSD and other UNIX derivates share a common heritage based on a more than three decades old design of a simple basic operating system, that has evolved over time into a complex structure.
+
Mac OS X, Linux, BSD and other UNIX derivatives share a common heritage based on a more than three decades old design of a simple basic operating system, that has evolved over time into a complex structure.
 
Modern incarnations like Mac OS X put a fancy graphical user interface on top of UNIX, to hide system details, but focus mainly on beginners, and many advanced users are left out in the rain, as most advanced features cannot be accessed from the graphical user interface. Almost all UNIX flavors retain some of the original design flaws and binary compatibility between various versions is usually non-existent.
 
Modern incarnations like Mac OS X put a fancy graphical user interface on top of UNIX, to hide system details, but focus mainly on beginners, and many advanced users are left out in the rain, as most advanced features cannot be accessed from the graphical user interface. Almost all UNIX flavors retain some of the original design flaws and binary compatibility between various versions is usually non-existent.
  
In theory there are a few UNIX standards like POSIX but in practice the standards are old and cover only the basic operating system and the terminal environment. Other standards such as the Linux Standard Base are often not implemented faithfully. As there is no user interface standard nor a standard API, most people still have to use command line applications or fight through the GUI mess. Many UNIX derivates use the de-facto standard X-Window system for graphical output, which might well possess one of the worst designs in software history.
+
In theory there are a few UNIX standards like [[Psxss.exe|POSIX]] but in practice the standards are old and cover only the basic operating system and the terminal environment. Other standards such as the Linux Standard Base are often not implemented faithfully. As there is no user interface standard nor a standard API, most people still have to use command line applications or fight through the GUI mess. Many UNIX derivatives use the de-facto standard X-Window system for graphical output, which might well possess one of the worst designs in software history.
Still, modern UNIX derivates are trying to catch up with recent innovations and some of them already possess important features like access control list support.
+
Still, modern UNIX derivatives are trying to catch up with recent innovations and some of them already possess important features like access control list support.
  
In contrast to UNIX, [[ReactOS]] was designed for people familiar and comfortable with the Windows environment. Everything can be done through the well known Win32 user interface and advanced users are free to automate tasks with scripts or use the console.
+
In contrast to UNIX, ReactOS was designed for people familiar and comfortable with the Windows environment. Everything can be done through the well known Win32 user interface and advanced users are free to automate tasks with scripts or use the console.
  
===Why use [[ReactOS]]?===
+
=== Why use ReactOS? ===
A lot of people in popular discussion forums keep asking “why should I use [[ReactOS]]” or “why would someone need [[ReactOS]]” or “why not help develop [[Wine]] instead?” or “why not use Linux with [[Wine]]?”.
+
A lot of people in popular discussion forums keep asking “why should I use ReactOS” or “why would someone need ReactOS” or “why not help develop Wine instead?” or “why not use Linux with Wine?”.
  
 
We have an answer for all these questions, but it's not some simple magic word. Let's name a few key issues here:
 
We have an answer for all these questions, but it's not some simple magic word. Let's name a few key issues here:
  
*There are plenty of *nix operating systems out there, this is very good. However they have different targeting (they perfectly fit server market, but desktop still isn't conquered, and several factors work against most Windows alternatives out today).
+
*There are plenty of *nix operating systems out there, this is very good. However they have different targeting (they perfectly fit the server market, but the desktop still isn't conquered, and several factors work against most Windows alternatives out today).
 
 
*There is currently no operating system which implements the kernel architecture design of MS Windows NT family (GNU/Linux is the best for comparison here: Linux was started as “clone” of Minix and Unix (eventually going on to be a Unix replacement), and [[ReactOS]] was started as “clone” of Windows NT).
 
 
 
*Linux+[[Wine]] is never going to be a complete replacement for a full Windows system. It's not only because Linux (despite there are some really user-friendly Linux distros out there), and not only because many users might find a transition to Linux/BSD difficult, but it's due to design and implementation decisions of Linux and [[Wine]] architectures, which prevent 100% compatibility.
 
 
 
*Even though Linux supports many types of hardware, Windows is still the dominant platform for device manufactorers. There are attempts to overcome this situation (like NDIS Wrapper for NT network card drivers, there are rumours about supporting NT video drivers, Captive NTFS for NT filesystem support), but [[ReactOS]] solves them from the first day by its design – be compatible with existing drivers and existing applications.
 
 
 
*There are many people who do not like how *nix systems behave or dislikes the conventions used. For them, Linux, BSD, and Mac OS X are not options, even before application compatibility and hardware support come into play. An operating system should give the consumers what they want instead of demanding the consumer conform. Even with [[WINE]], you are still running an operating system that behaves quite differently from Windows, at a user and system level.
 
 
 
*Backwards compatibility. This is something vital for many people and companies, but the development philosophy of Linux and the GNU project do not consider it a priority. The Windows family has always went out of its way to ensure a stable API and backwards compatibility. By its design, [[ReactOS]] will also follow the philosophy of backwards compatibility with existing and future applications designed for the Windows NT family.
 
There are no plans for Windows to become released under a GPL-compatible license (at least, [[ReactOS]] team is not aware of them).
 
 
 
Finally, [[ReactOS]] offers a third alternative, for people who are fed up with Microsoft's policies but do not want to give up the familiar environment, architectural design, and millions of existing software applications and thousands of hardware drivers.
 
 
 
===Is [[ReactOS]] based on Microsoft® Windows®?===
 
 
 
No! [[ReactOS]] consists only of GNU GPL (General Public License) and GPL compatible licensed source code.
 
 
 
===Is [[ReactOS]] based on *nix or Linux?===
 
 
 
No! [[ReactOS]] is not based on UNIX/Linux. It's written from scratch.
 
 
 
===Is [[ReactOS]] legal?===
 
 
 
Yes. It's fully legal.
 
 
 
Developers have not looked at Windows® source code. They have used the public documentation of Windows® OSes. They have made several tests to understand how Windows® works. In fact, [[ReactOS]] does the same things Windows® does, but not exactly in the same way, because they haven't the same source code. All code in [[ReactOS]] is under the GNU GPL (General Public License).
 
  
===The [[ReactOS]] GUI sucks! Why don't you use another shell?===
+
*There is currently no operating system which implements the kernel architecture design of MS Windows NT™ family (GNU/Linux is the best for comparison here: Linux was started as “clone” of Minix and Unix (eventually going on to be a Unix replacement), and ReactOS was started as “clone” of Windows NT).
  
When [[ReactOS]] is more complete you will be free to use any other alternative shell. But we need a Explorer like shell, to be fully compatible. Your moaning won't change anything...
+
*Linux+Wine is never going to be a complete replacement for a full Windows system. It's not only because of Linux (despite some really user-friendly Linux distributions out there), and not only because many users might find a transition to Linux/BSD difficult, but it's due to design and implementation decisions of Linux and Wine architectures, which prevent 100% compatibility.
  
===Why does a certain application of mine not work under [[ReactOS]]?===
+
*Even though Linux supports many types of hardware, Windows is still the dominant platform for device manufacturers. There are attempts to overcome this situation (like NDIS Wrapper for NT network card drivers, there are rumours about supporting NT video drivers, Captive NTFS for NT filesystem support), but ReactOS solves them from the first day by its design – be compatible with existing drivers and existing applications.
  
[[ReactOS]] is in alpha stage and not recommended for everyday use. Many applications do not work (correctly) because many API calls simply haven't been implemented yet. This may be one of the reasons for the software not working.
+
*There are many people who do not like how *nix systems behave or dislike the conventions used. For them, Linux, BSD, and Mac OS X are not options, even before application compatibility and hardware support come into play. An operating system should give the consumers what they want instead of demanding the consumer conform. Even with Wine, you are still running an operating system that behaves quite differently from Windows, at both the user and system levels.
  
===Why [[ReactOS]]? Why clone Microsoft Windows?===
+
*Backwards compatibility. This is something vital for many people and companies, but the development philosophy of Linux and the GNU project do not consider it a priority. The Windows family has always gone out of its way to ensure a stable API and backwards compatibility. By its design, ReactOS will also follow the philosophy of backwards compatibility with existing and future applications designed for the Windows NT family.
 +
There are no plans for any of Microsoft's versions of Windows to be released under a GPL-compatible license (at least, ReactOS team is not aware of them).
  
First of all, [[ReactOS]] is not a clone of Windows. [[ReactOS]] is an operating system that is compatible with Microsoft Windows applications and drivers. Some of the reasons are the same as the reasons for developing Linux (an open-source UNIX clone)? In short, Linux is a great operating system, but it is not the answer for everybody. There are a lot of people that like Microsoft Windows, but are very frustrated with Microsoft's policies on various issues.
+
Finally, ReactOS offers a third alternative, for people who are fed up with Microsoft's policies but do not want to give up the familiar environment, architectural design, and millions of existing software applications and thousands of hardware drivers.
  
The 9x family of Microsoft Windows is based on DOS, and shares many of its weaknesses, which is the primary reason why Microsoft Windows has such a bad name. The Microsoft Windows NT family of Windows, however, has a solid design. Not everything is perfect, but without access to the source code, there is no way to fix it, so a compatible operating system must be built from the ground up.
+
=== Is ReactOS based on Microsoft Windows™? ===
 +
No! ReactOS consists only of GNU GPL (General Public License) and GPL compatible licensed source code.
  
===Why don't you help develop Wine/Linux instead?===
+
=== Is ReactOS based on *nix or Linux? ===
 +
No! ReactOS is not based on UNIX/Linux. It's written from scratch.
  
[[ReactOS]] works very closely with [[Wine]], and thus both projects actually benefit from each other. We have several developers in both the [[WINE]] and [[ReactOS]] projects that work on cross-compatibility issues between the two projects.  
+
=== Is ReactOS legal? ===
 +
Yes. ReactOS is fully legal.
  
It is our view that Linux + [[Wine]] can never be a full replacement for Microsoft(R) Windows(R). [[ReactOS]] has the potential for a much higher degree of compatibility - especially for Microsoft(R) Windows(R) drivers - which [[WINE]] does not address.
+
Developers (devs) have not looked at Microsoft Windows™ source code. They have used the public documentation of Microsoft Windows OSes. They have made several tests to understand how Microsoft Windows works. In fact, ReactOS does the same things Microsoft                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               Windows does, but not exactly in the same way, because they haven't the same source code. All code in ReactOS is under the GNU GPL (General Public License).
  
===Why don't you help the [[Wine]] project instead?===
+
=== Why does a certain application of mine not work under ReactOS? ===
 +
ReactOS is in alpha stage and not recommended for everyday use. Many applications do not work (correctly) because many API calls simply haven't been implemented yet. This may be one of the reasons for the software not working.
  
Actually we work very closely with the [[Wine]] project. [[Wine]] probably has a lot more in common with [[ReactOS]] than with Linux. The [[Wine]] project has the goal of implementing the entire windows API on top of WineServer. There are only a few [[WINE]] dlls that cannot be used in [[ReactOS]]. These are NTDLL, USER32, KERNEL32, GDI32, and ADVAPI. The rest of [[WINE]]'s DLLs can be shared with [[ReactOS]]. We have several developers in both the [[WINE]] and [[ReactOS]] projects that work on cross-compatibility issues between the two projects. It is our view that Linux + [[Wine]] can never be a full replacement for Microsoft(R) Windows(R). [[ReactOS]] has the potential for a much higher degree of compatibility - especially for Microsoft(R) Windows(R) drivers - which [[WINE]] does not address.
+
=== Why ReactOS? Why clone Microsoft Windows™? ===
 +
First of all, ReactOS is not a clone of Windows. ReactOS is an operating system that is compatible with Microsoft Windows applications and drivers. Some of the reasons are the same as the reasons for developing Linux (an open-source UNIX clone)? In short, Linux is a great operating system, but it is not the answer for everybody. There are a lot of people that like Microsoft Windows, but are very frustrated with Microsoft's policies on various issues.
  
===On which processors will [[ReactOS]] run?===
+
The 9x family of Microsoft Windows is based on DOS, and shares many of its weaknesses, which is the primary reason why Microsoft Windows has such a bad name. The Microsoft Windows NT™ family of Windows, however, has a solid design. Not everything is perfect, but without access to the source code, there is no way to fix it, so a compatible operating system must be built from the ground up.
  
[[ReactOS]] currently only supports the x86 processor architecture, although a PowerPC and AMD port has begun. [[ReactOS]] will run on Intel(R) Pentium(R) x64, Intel Xeon(R) x64, AMD(R) Athlon(R) x64 and AMD Opteron(R) processors in 32-bit mode, but the 64-bit functionality of these processors is not currently supported. See [http://www.ReactOS.org/compat/ Compatibility Database] for a list of supported device drivers.
+
=== Why don't you help develop Wine/Linux instead? ===
 +
ReactOS works very closely with Wine, and thus both projects actually benefit from each other. We have several developers in both the Wine and ReactOS projects that work on cross-compatibility issues between the two projects.
  
===Does [[ReactOS]] work in PPC ,x64 or ARM processors/?===
+
It is our view that Linux + Wine can never be a full replacement for Microsoft Windows™. ReactOS has the potential for a much higher degree of compatibility – especially for Microsoft Windows drivers – which Wine does not address.
  
- [[ReactOS]] currently works only in x86 based computers
+
=== Why don't you help the Wine project instead? ===
- [[ReactOS]] will work on ARM some day soon, there is some serious work going on to accomplish this...
+
Actually we work very closely with the Wine project. Wine probably has a lot more in common with ReactOS than with Linux. The Wine project has the goal of implementing the entire windows API on top of WineServer. There are only a few Wine dlls that cannot be used in ReactOS. These are [[Ntdll.dll]], [[User32.dll]], [[Kernel32.dll]], [[Gdi32.dll]], and [[Advapi32.dll]]. The rest of Wine's DLLs can be shared with ReactOS. We have several developers in both the Wine and ReactOS projects that work on cross-compatibility issues between the two projects. It is our view that Linux + Wine can never be a full replacement for Microsoft Windows™. ReactOS has the potential for a much higher degree of compatibility – especially for Microsoft Windows drivers – which Wine does not address.
- [[ReactOS]] will run on x64 based computers, but only in x86 mode. (Someday soon some one will make us x64 compatible and if you want us to hurry this up, get the people who write our tools to develop a system that can properly build to x64)
 
- Someday [[ReactOS]] will work on other processors/architectures. But we currently don't have the man power to port to 20 different architectures...
 
- x86, x64, ARM and PPC represent the majority of processors out there.
 
  
===Where can I download [[ReactOS]]?===
+
=== Where can I download ReactOS? ===
 +
Please visit the [http://www.reactos.org/download/ download page].
  
Please visit the [http://www.ReactOS.org/en/download.html download page].
+
=== How can I contribute to ReactOS? ===
 
+
* We need coordinated [[Testing Central|testers]], which means we need people that help us testing in a coordinated way.
===How can I contribute to [[ReactOS]]?===
+
To join our testing come to the IRC channels. Find any dev and ask us what to test.  Every day the ReactOS project has different testing needs so testing is not boring.
 
+
*We need coordinated [[Translation Introduction|translators]].
Please visit the [http://www.ReactOS.org/en/dev_contribute.html contribute to [[ReactOS]] page].
 
 
 
* We need coordinated testers, which means we need people that help us testing in a coordinated way.
 
To join our testing come to the IRC channels. Find me or any dev, we are some, and ask us what to test, everyday we have different needs so testing is not boring but different
 
*We need coordinated translators.
 
 
*We need coordinated designers.
 
*We need coordinated designers.
*We need coordinated developers.
+
*We need coordinated [[Development Introduction|developers]].
 
*We need coordinated bloggers
 
*We need coordinated bloggers
  
To find your place just come and join the IRC channels. See you there  
+
To find your place just come and join the IRC channels. See you there.
 
 
===I don't know how to code... How can I help?===
 
 
 
We are always testing something. Just come to IRC and ask for something to be tested. We will give you some RosWork accordingly to your skills.
 
The "I don't know how to code" is the preferred excuse followed by the "I don't have time" or "Each time I test [[ReactOS]] god kills a kitty".
 
  
===I know how to code.... How can I help?===
+
=== I don't know how to code... How can I help? ===
 +
Devs always require testing of something. Just come to IRC and ask for something to test. Devs will give you some ReactOS testing work suited to your skills.
 +
The "I don't know how to code" is the preferred excuse followed by the "I don't have time" or "Each time I test ReactOS god kills a kitty" excuses.
  
If you are a Dev, then join IRC and ask any doubts about our code, find a place in [[ReactOS]] to work, you can select any, but first contact and tell us. Maybe other Devs are currently working in that particular area.
+
=== I know how to code.... How can I help? ===
 +
If you are a Dev, then join IRC and ask any doubts about our code, find a place in ReactOS to work, you can select any, but first contact and tell us. Maybe other Devs are currently working in that particular area.
 
"Less time wasted when efforts coordinated!"-Yoda said.
 
"Less time wasted when efforts coordinated!"-Yoda said.
  
===I don't know how to code but I want to learn. How?===
+
=== I don't know how to code but I want to learn. How? ===
 
 
 
Study C, C++, WinAPI, then read books as "Windows Internals" and/or "Operating System Concepts".
 
Study C, C++, WinAPI, then read books as "Windows Internals" and/or "Operating System Concepts".
Come and ask us. For C and C++ questions you have the C and C++ irc channels, they will solve your doubts much faster.
+
Come and ask us. For C and C++ questions you have the C and C++ IRC channels, they will solve your doubts much faster.
 
 
===What can I do to help?===
 
 
 
We're always looking for either coders or testers. We're especially in need of people who know how to write NT drivers, cause our current drivers could use some improvement.
 
  
Testing on real hw is especially important as the kernel rewrite approaches completion. Some issues are known, such as missing assembly code and broken implementations causing issues on certain processors. Bugs found in trunk can be reported in Bugzilla, but try to avoid entering duplicate bugs.
+
=== What can I do to help? ===
 +
We're always looking for either coders or testers. We're especially in need of people who know how to write NT drivers because our current drivers could use some improvement.
  
===Who should I talk to about helping [[ReactOS]]?===
+
Testing on real hardware is especially important as the kernel rewrite approaches completion. Some issues are known, such as missing assembly code and broken implementations causing issues on certain processors. Bugs found in trunk can be reported in Jira, but try to avoid entering duplicate bugs.
  
The best way to get in touch with a developer is to hop onto the irc channel.
+
=== Who should I talk to about helping ReactOS? ===
 +
The best way to get in touch with a developer is to hop onto the IRC channel.
  
http://www.ReactOS.org/en/community_irc.html
+
[[Connect to the ReactOS IRC Channels]]
  
A list of the developers, their IRC nicks, and their respective fields is here: http://www.ReactOS.org/wiki/index.php/Developer_Roles
+
A list of the developers, their IRC nicks, and their respective fields is here: [[Developer Roles]]
  
Note: If you have a question, don't first ask to ask the question. Just ask the question and if someone knows the answer, they'll usually answer. If you want a specific developer, ping them and then ask the question.
+
Note: If you have a question, don't first ask to ask the question. Just ask the question and if someone knows the answer, they'll usually answer. If you want a specific developer then ping that developer and ask the question.
  
 
Others will be added as I figure out what they do.
 
Others will be added as I figure out what they do.
Line 145: Line 110:
 
Another way is to join the ROS-dev mailing list:
 
Another way is to join the ROS-dev mailing list:
  
http://www.ReactOS.org/mailman/listinfo/ros-dev
+
http://www.reactos.org/mailman/listinfo/ros-dev
  
===When will [[ReactOS]] be done?===
+
=== When will ReactOS be done? ===
 +
First you need to define what ReactOS should be capable of when it is to be considered done. Since this definition may vary greatly between people, this question cannot be completely answered. One thing is for sure: ReactOS will continue to be developed, as there will always be a need for improvements. For more information, visit the [[Roadmap]] page.
  
First you need to define what [[ReactOS]] should be capable of when it is to be considered done. Since this definition may vary greatly between people, this question cannot be completely answered. One thing is for sure: [[ReactOS]] will continue to be developed, as there will always be a need for improvements. For more information, visit the [[Roadmap]] page.
+
=== Can I test ReactOS without risking my existing hardware/installations? ===
 +
Yes, you can test ReactOS on [[Virtualization software|virtual hardware]]. This way, you can start ReactOS in a window without leaving your operating system. Official preloaded packages for Qemu, VMware, and VirtualBox are available in the "Advanced Downloads" section of the [https://www.reactos.org/download download page]. ReactOS is also known to run in Bochs and VirtualPC. If you know of other virtual machines that support it, please send an e-mail to the ros-dev mailing list.
  
===I want to test [[ReactOS]] without risking my existing hardware/installations. Can I test [[ReactOS]] another way?===
+
Because a virtual machine is an emulated environment, a virtual machine can not run ReactOS as fast as ReactOS could run on the actual hardware. Virtual machines like Qemu that emulate hardware at the instruction decoding level will run ReactOS much slower than actual hardware.
  
Yes, you can test [[ReactOS]] on virtual hardware. You can test it in Qemu, for which there are official packages available on the [http://www.ReactOS.org/en/download.html download page]. This way, you can start [[ReactOS]] in a window without leaving your operating system. However, because Qemu is an emulator, [[ReactOS]] will run much slower than it would if it were running on actual hardware. Other virtual machines/x86 emulators should be able to run [[ReactOS]] as well, and [[ReactOS]] is known to run in at least Bochs, VMWare, VirtualPC and QEMU. If you know of other virtual machines that support it, please send an e-mail to the ros-dev mailing list.
+
=== Is ReactOS able to run Windows apps and Windows drivers? ===
 +
Yes. ReactOS is able to load Windows apps and Windows drivers without hacking them. Remember: we are still in the Alpha stage so we have a long walk ahead before we reach these objectives. You can visit our Software and Hardware Compatibility databases to know which Drivers and Apps are compatible with the latest ReactOS version.
  
===Is [[ReactOS]] able to run Windows apps and Windows drivers?===
+
The original target for ReactOS, with regards to driver and application compatibility, was Microsoft Windows NT 4.0™. Since then, Microsoft Windows 2000, XP, Server 2003, Vista, and others have been released. All these are descendants of Windows NT. As such we can gradually shift our compatibility target without worrying about the architecture changing too much. In fact, internally, Windows 2000 reports version information as Windows 5.0, XP as Windows 5.1, 2003 Server as Windows 5.2, and Vista as Windows 6.0. The ReactOS team currently targets Windows 2003 Server as the official compatibility target. Of the current releases, 2003 Server has proven to be one of the most robust.
  
Yes. [[ReactOS]] is able to load Windows apps and Windows drivers without hacking them. Remember: we are still in the Alpha stage so we have a big walk until reaching these objectives.  
+
=== How about Windows Vista™/7 programs and drivers? ===
You can visit our Software and Hardware Compatibility databases to know which Drivers and Apps are compatible with the latest [[ReactOS]] version.
+
The present compatibility target for ReactOS of Microsoft Windows Server 2003™ (NT 5.2) does not mean that features present in later versions of Windows NT™ based operating systems will not be implemented in ReactOS. Work is continually done to implement newer APIs or to provide for their future implementation.
  
===My mouse/keyboard/pendrive/external HDD are not working!===
+
=== Can I install ReactOS on a pen drive/stick? ===
 +
''See: [[LiveUSB]]''
  
[[ReactOS]] doesn't have USB support (yet), so forget about devices that use USB plugs. No, your pendrive won't work.
+
=== My screen turns black when loading ReactOS. I don't see anything. ===
 +
It seems your video card is not yet compatible with ReactOS, search our Hardware Compatibility Database to find a compatible one. Also report yours as not compatible, it will help others. Share your findings!
  
===Can I install [[ReactOS]] from a pendrive/stick?===
+
=== Does ReactOS have a [[Psxss.exe|POSIX]] subsystem? ===
 +
* We currently don't have a [[Psxss.exe|POSIX]] subsystem. Well, we have one but it's broken and it's not a priority in terms of compatibility. After all, we're trying to run Windows programs here, not [[Psxss.exe|POSIX]] programs.
 +
* Think first: ReactOS should be stable and support a good deal of windows apps. Then worry about [[Psxss.exe|POSIX]]/*NIX, Mac, WinCe, OS/2, RiscOS, whatever else...
  
There is no known way to install [[ReactOS]] from pendrive/stick. Any method relies in [[ReactOS]] installing itself, so it needs USB support to accomplish the task. [[ReactOS]] doesn't have USB support so:
+
=== I inserted the Installation CD but the installation doesn't begin ===
- Use a CD-RW instead, or a normal CD
+
Maybe your CD/DVD is a SATA device that UniATA doesn't support yet. (So neither does ReactOS).
 
 
===My screen turns black when loading [[ReactOS]]. I don't see anything.===
 
 
 
It seems your video card is not yet compatible with [[ReactOS]], search our Hardware Compatibility Database to find a compatible one. Also report yours as not compatible, it will help others. Share your findings!
 
 
 
===Does [[ReactOS]] have a POSIX subsystem?===
 
 
 
- We currently don't have a POSIX subsystem. Well, we have one but it's broken and it's not a priority in terms of compatibility. After all, we're trying to run Windows programs here, not POSIX programs.
 
- Think first: [[ReactOS]] should be stable and support a good deal of windows apps. Then worry about POSIX/*NIX, Mac, WinCe, OS/2, RiscOS, whatever else...
 
 
 
===I inserted the Installation CD but the installation doesn't begin===
 
 
 
Maybe your CD/DVD is a SATA device that Uniata doesn't support yet. (So neither [[ReactOS]]).  
 
 
If your CD/DVD is ATA then try the next trick:
 
If your CD/DVD is ATA then try the next trick:
  
OPTIONAL STEP( backing up):
+
OPTIONAL STEP (make backup files):
 
1)Back up uniata.sys as uniataB_UP.sys.
 
1)Back up uniata.sys as uniataB_UP.sys.
 
2)Back up atapi.sys as atapiB_UP.sys
 
2)Back up atapi.sys as atapiB_UP.sys
Line 192: Line 151:
 
5)Rename atapi2.sys to atapi.sys
 
5)Rename atapi2.sys to atapi.sys
  
If you mess the files/get lost when replacing, you can use the backep up files from the Optional Step.
+
If you damage or lose the files when replacing them, you can use the backup files from the Optional Step.
 
 
===The installation hangs or hangs before reaching the Desktop===
 
  
 +
=== The installation hangs or hangs before reaching the Desktop ===
 
Try the "I inserted the Installation CD but the installation doesn't begin" trick if your HDD is an ATA device. Remember that trick doesn't work at all with SATA devices.
 
Try the "I inserted the Installation CD but the installation doesn't begin" trick if your HDD is an ATA device. Remember that trick doesn't work at all with SATA devices.
  
===When is 0.4 appearing? And Beta? And 1.0? And 123.0? And...===
+
=== When is 0.5 appearing? And Beta? And 1.0? And 123.0? And... ===
 
+
It depends. We need Developers and Testers (Coordinated Testers).
It depends. We need Devs and Testers (Coordinated Testers).  
+
Statistics suggest that 99.99% of the forum users who ask these questions have never helped in a Coordinated Testing. So stop asking and use that time to help us, if you want it asap then contribute a little. Money is appreciated but testing is much more useful at current stage.
Last statistic says 99.99% of the forum users who ask these questions has never helped in a Coordinated Testing. So stop asking and use that time to help us , if you want it asap then contribute a little. Money is appreciated but testing is much more useful at current stage.
 
  
 
We perform several Coordinated Testings via IRC. Join them and you will discover the feelings of being part of the Community, not just part of the Forum.
 
We perform several Coordinated Testings via IRC. Join them and you will discover the feelings of being part of the Community, not just part of the Forum.
  
===Why there is no [[Roadmap]]?===
+
=== Why there is no [[Roadmap]]? ===
 
 
 
An OS covers a wide area of knowledge, it is not an App, it is a whole,-in-the-way-to-become-awesome OS.
 
An OS covers a wide area of knowledge, it is not an App, it is a whole,-in-the-way-to-become-awesome OS.
 
So we need devs from all the areas, it's not easy to find skilled devs, and also they are not paid, they have their real-life-work, families and problems. So no, we can't press them to work in a particular area. We can just thank them for dedicating some time to make this OS become a reality.
 
So we need devs from all the areas, it's not easy to find skilled devs, and also they are not paid, they have their real-life-work, families and problems. So no, we can't press them to work in a particular area. We can just thank them for dedicating some time to make this OS become a reality.
  
===[[ReactOS]] desktop looks quite old! Why don't you create a new explorer.exe?===
+
= Developer FAQ =
 
+
== General ==
[[ReactOS]] is an Alpha Operating System. Currently our devs have other tasks in our TODO list, as Improving software and hardware compatibility, that must be completed first. Anyway, we have a branch where a explorer-new.exe is being developed. Currently its development is stopped due to unimplemented COM/OLE background code which is needed to make it work.
+
=== What language do you guys use? ===
 
 
There are alternative Shells out there, when [[ReactOS]] is compatible enough it will be able to load them. Also an Italian dev (Dax) is developing an alternative explorer (currently unofficial) that seems to be a nice replacement. It is written in C++, so if you want to help its development just download the sources and play with it.
 
 
 
===About the shell: Why don't you add KDE4 to [[ReactOS]]?===
 
 
 
* KDE 4 is gonna run on Windows. But that has nothing to do with [[ReactOS]]. We do not need nor do we want to have KDE4 within the source repository. Alternative shells fall under the "user installable and not needed for compatibility" category and thus will not be included.
 
* We are alpha software, [[ReactOS]] can barely boot at times, we are not going to release "distros" any time soon. So no custom GUIs with KDE 4 or whatever else... Feel free to make your own if you want, but the dev team will not do so.
 
* [[ReactOS]] Explorer is the default shell, this will not change anytime soon. And any change to its coding will not dramatically change the way it looks either.
 
* We appreciate your suggestions about icons, themes, fonts and all that jazz... [[ReactOS]] doesn't have theme support, the default "theme" is going to stay there for some time. (ALWAYS use the design forum for these suggestions).
 
 
 
==Website==
 
===Why not let my employer host your site for free?===
 
 
 
Thanks for the offer, but no, thanks. Things may change within your organization and then we'd be either politely asked to start paying X amount or go elsewhere. With our current setup, we have direct access to the machine, bandwidth is not a problem, although the hardware does need improvement (if you wish to [http://www.ReactOS.org/en/foundation_donate.html donate hardware] for this cause, contact one of the [[ReactOS]] coordinators).
 
 
 
===I can not login. It says that I am already logged in.===
 
 
 
This problem is being worked on. However, as a workaround to login again, you can use the [http://www.ReactOS.org/roscms/?page=getpwd "Did you forget your Password?"] link and change your password; your old sesion will be deleted and you can login again using the new password. After that, remember to change the "multisession" option in your profile, which will allow you to login multiple times.
 
 
 
=Developer FAQ=
 
==General==
 
===What language do you guys use?===
 
 
 
 
C and assembly, with very little C++ for some included programs. In the OS itself, only C and assembly is allowed.
 
C and assembly, with very little C++ for some included programs. In the OS itself, only C and assembly is allowed.
  
===Why only C and assembly?===
+
=== Why only C and assembly? ===
 
 
 
The reasoning is actually because of the tools we use. GCC's C++ compiler is less than stellar so we limit things to C and assembly to make our lives easier.
 
The reasoning is actually because of the tools we use. GCC's C++ compiler is less than stellar so we limit things to C and assembly to make our lives easier.
  
---How do I get [[ReactOS]]' source code and build it?---
+
=== How do I get ReactOS' source code and build it? ===
 
+
This information is covered on this page: [[Build Environment]]
This information is covered on this page: [[Build_Environment|Build Envionment]]
 
  
 
The recommended build environment is the [[RosBE]]. It's designed to run on Windows and *nix, though the *nix version may not be as up to date as the Windows version.
 
The recommended build environment is the [[RosBE]]. It's designed to run on Windows and *nix, though the *nix version may not be as up to date as the Windows version.
  
---Is there any kind of coding style that is expected?---
+
=== Is there any kind of coding style that is expected? ===
 
+
''See [[Coding Style]]''
See [[Coding_Style|Coding Style]]
 
 
 
===How will you avoid the inevitable "Microsoft" text throughout [[ReactOS]]?===
 
  
 +
=== How will you avoid the inevitable "Microsoft" text throughout ReactOS? ===
 
We believe that this falls under fair use. It is also not needed except in the registry.
 
We believe that this falls under fair use. It is also not needed except in the registry.
  
===Will drivers designed for Windows work on [[ReactOS]]?===
+
=== Will drivers designed for Windows work on ReactOS? ===
 
 
 
Some drivers have been known to work, but at this point there is no definitive answer as some facilities in kernel land that are unimplemented.
 
Some drivers have been known to work, but at this point there is no definitive answer as some facilities in kernel land that are unimplemented.
  
===What do I need to compile [[ReactOS]] from sources?===
+
=== What do I need to compile ReactOS from sources? ===
 
+
Refer to our [[Build Environment]] page for information on how to compile ReactOS from the source.
Refer to our [[Build_Environment|Build Environment page] for information on how to compile [[ReactOS]] from the source.
 
 
 
 
 
===What IDE should I use to develop for [[ReactOS]]?===
 
 
 
See [[Using_an_IDE|using an IDE]] for information on supported code editors.
 
 
 
===What about so-called SEH-problem?===
 
 
 
Structured exception handling (SEH) is used in programming [[ReactOS]] as it is used in programming for OS/2 or Microsoft(R) Windows(R) NT. SEH is a game wich is played between OS and Compiler (Keywords: __try, __except, __finally). [[ReactOS]] itself is SEH-aware and provides the infrastructure. However up till now, the used GNU-compiler is not capable of generating SEH aware code. So one can't compile a driver or program which uses SEH with the GNU-Compiler.
 
  
==Graphics Subsystem==
+
=== What about the so-called SEH-problem? ===
 +
Structured exception handling (SEH) is used in programming ReactOS as it is used in programming for OS/2 or Microsoft(R) Windows(R) NT. SEH is a game which is played between the OS and compiler (Keywords: __try, __except, __finally). ReactOS itself is SEH-aware and provides the infrastructure. However up till now, the GNU-compiler used is not capable of generating SEH-aware code. So one can't compile a driver or program which uses SEH with the GNU-Compiler.
  
==Why is the graphics subsystem not in Ring 3 but in Ring 0?===
+
== Graphics Subsystem ==
  
 +
=== Why is the graphics subsystem not in Ring 3 but in Ring 0? ===
 
The short answer is that because Microsoft has done it this way, and we aim for driver compatibility, we have to do it the same way.
 
The short answer is that because Microsoft has done it this way, and we aim for driver compatibility, we have to do it the same way.
  
===Why did Microsoft put the GUI in Ring 0?===
+
=== Why did Microsoft put the GUI in Ring 0? ===
 
 
 
Because this gives quite an advantage in speed. Contrary to a GUI-server, which will run in its own process, there are no context changes necessary when performing GUI operations. This does make the architecture less clean of course, and when the GUI crashes, the whole system crashes. The same discussion took place in Redmond, when the GUI went into the kernel in Microsoft(R) Windows(R) NT 4.0. They came to the conclusion that the GUI has matured, so that nothing will go wrong unless a faulty driver is present, and that the consequences are similar to when something goes wrong in user mode.
 
Because this gives quite an advantage in speed. Contrary to a GUI-server, which will run in its own process, there are no context changes necessary when performing GUI operations. This does make the architecture less clean of course, and when the GUI crashes, the whole system crashes. The same discussion took place in Redmond, when the GUI went into the kernel in Microsoft(R) Windows(R) NT 4.0. They came to the conclusion that the GUI has matured, so that nothing will go wrong unless a faulty driver is present, and that the consequences are similar to when something goes wrong in user mode.
  
===Does [[ReactOS]] have the same security problems as Microsoft(R) Windows(R)?===
+
=== Does ReactOS have the same security problems as Microsoft Windows™? ===
 
+
Microsoft Windows NT™ and successors aren't really inherently insecure systems. We believe that Microsoft® made a secure system insecure as a result of some poor decisions. For example, Windows XP™ gives every user Administrator rights by default. Some services are poorly implemented and ease of use often takes priority over security. We can, however, rearrange these priorities in ReactOS. What will be problematic is that for a long time Microsoft hadn't pressured software creators to design their products to run with Normal user rights.
Microsoft(R) Windows(R) NT and successors aren't really inherently insecure systems. We believe that Microsoft made a secure system insecure as a result of some poor decisions. For example, Windows XP gives every user Administrator rights by default. Some services are poorly implemented and ease of use often takes priority over security. We can, however, rearrange these priorities in [[ReactOS]]. What will be problematic is that Microsoft hasn't pressured software creators to let their products run with normal user rights.
 
 
 
===Which GUI can I use?===
 
 
 
To answer this, one must understand how the GUI functions in [[ReactOS]]/Microsoft(R) Windows(R):
 
- The DIB Engine (in the graphics subsystem), along with your video card's driver, provide rendering primitives, such as rectangles, lines and BitBlit operations.
 
- Then there is the Win32 subsystem (CSRSS), which provides the windowing functionality, including console windows.
 
- The USER32.DLL library provides slightly more complex windows, such as buttons and checkboxes.
 
- The library COMCTL32 provides even more sophisticated windows, such as file open dialogs.
 
- The shell (for instance Explorer) is an ordinary program, which is started upon bootup. It creates the desktop with its icons, and the start menu. It is this last component which can be changed out with another shell. There are many popular open source "Explorer replacements" like LiteStep and BlackBox available, which we intend to support.
 
 
 
==Debugging==
 
 
 
===How do I trace an unhandled exception in user mode?===
 
 
 
The trace looks something like this: (KERNEL32:process/create.c:328) Process terminated abnormally due to unhandled exception (KERNEL32:process/create.c:329) Address: 761a13e0 (KERNEL32:process/create.c:334) Frames: (KERNEL32:process/create.c:338) 761a2be9 Look at [[ReactOS]]/baseaddress.cfg, find the nearest lower address that matches the address you're trying to trace. Open the .map file for the corresponding DLL in viewer and search for the offset.
 
 
 
=See Also=
 
[http://www.ReactOS.org/en/about_userfaq.html ReactOS User FAQ]
 
  
[http://www.ReactOS.org/en/dev_faq.html ReactOS Developer FAQ]
+
== Debugging ==
 +
=== How do I trace an unhandled exception in user mode? ===
 +
The trace looks something like this: (KERNEL32:process/create.c:328) Process terminated abnormally due to unhandled exception (KERNEL32:process/create.c:329) Address: 761a13e0 (KERNEL32:process/create.c:334) Frames: (KERNEL32:process/create.c:338) 761a2be9 Look at ReactOS/baseaddress.cfg, find the nearest lower address that matches the address you're trying to trace. Open the .map file for the corresponding DLL in the viewer and search for the offset.
  
[http://www.ReactOS.org/forum/viewtopic.php?f=2&t=8814 ReactOS Forum FAQ]
+
= See Also =
 +
* [[File Systems#FAQ|File Systems FAQ]]
 +
* [[ReactOS Explorer#FAQ|ReactOS Explorer & GUI FAQ]]
 +
* [[ReactOS Foundation#FAQ|ReactOS Website FAQ]]
 +
* [[ReactOS ports#FAQ|ReactOS Ports FAQ]] for questions about ARM, AMD64, and PowerPC
 +
* [http://www.reactos.org/forum/viewtopic.php?f=2&t=8814 ReactOS Forum FAQ]
 +
* [http://www.reactos.org/forum/viewtopic.php?f=9&t=3673 ReactOS Forum Developer FAQ]
  
[http://www.ReactOS.org/forum/viewtopic.php?f=9&t=3673 ReactOS Forum Developer FAQ]
+
[[Category:Community]]

Revision as of 16:34, 3 July 2019

Contents

User FAQ

What is ReactOS?

ReactOS (short for React Operating System) is an open-source effort to develop a quality operating system that is compatible with Microsoft Windows™ applications and drivers.

Why re-implement NT?

First of all, the 'Windows' the general public knows is actually just one part of the modern Windows NT™ operating system. They usually mean the Win32 subsystem, a layer that sits upon the NT kernel, providing the user and application interface.

"NT is still around, known as XP and Vista"

Most people think of 'NT' as 'WinNT 4', while in reality the term NT refers to the NT series, which ranges from version 3 over NT5 (2000, XP, 2003) and NT6 (Vista, 2008, 7, 8, 2012, 8.1) to NT10 (10, 2016).

The NT architecture was designed by a team lead by David Cutler, a former lead developer of VMS. It took them more than 4 years to combine the best of UNIX, VMS and OS/2 and create the NT architecture.

What about UNIX?

Mac OS X, Linux, BSD and other UNIX derivatives share a common heritage based on a more than three decades old design of a simple basic operating system, that has evolved over time into a complex structure. Modern incarnations like Mac OS X put a fancy graphical user interface on top of UNIX, to hide system details, but focus mainly on beginners, and many advanced users are left out in the rain, as most advanced features cannot be accessed from the graphical user interface. Almost all UNIX flavors retain some of the original design flaws and binary compatibility between various versions is usually non-existent.

In theory there are a few UNIX standards like POSIX but in practice the standards are old and cover only the basic operating system and the terminal environment. Other standards such as the Linux Standard Base are often not implemented faithfully. As there is no user interface standard nor a standard API, most people still have to use command line applications or fight through the GUI mess. Many UNIX derivatives use the de-facto standard X-Window system for graphical output, which might well possess one of the worst designs in software history. Still, modern UNIX derivatives are trying to catch up with recent innovations and some of them already possess important features like access control list support.

In contrast to UNIX, ReactOS was designed for people familiar and comfortable with the Windows environment. Everything can be done through the well known Win32 user interface and advanced users are free to automate tasks with scripts or use the console.

Why use ReactOS?

A lot of people in popular discussion forums keep asking “why should I use ReactOS” or “why would someone need ReactOS” or “why not help develop Wine instead?” or “why not use Linux with Wine?”.

We have an answer for all these questions, but it's not some simple magic word. Let's name a few key issues here:

  • There are plenty of *nix operating systems out there, this is very good. However they have different targeting (they perfectly fit the server market, but the desktop still isn't conquered, and several factors work against most Windows alternatives out today).
  • There is currently no operating system which implements the kernel architecture design of MS Windows NT™ family (GNU/Linux is the best for comparison here: Linux was started as “clone” of Minix and Unix (eventually going on to be a Unix replacement), and ReactOS was started as “clone” of Windows NT).
  • Linux+Wine is never going to be a complete replacement for a full Windows system. It's not only because of Linux (despite some really user-friendly Linux distributions out there), and not only because many users might find a transition to Linux/BSD difficult, but it's due to design and implementation decisions of Linux and Wine architectures, which prevent 100% compatibility.
  • Even though Linux supports many types of hardware, Windows is still the dominant platform for device manufacturers. There are attempts to overcome this situation (like NDIS Wrapper for NT network card drivers, there are rumours about supporting NT video drivers, Captive NTFS for NT filesystem support), but ReactOS solves them from the first day by its design – be compatible with existing drivers and existing applications.
  • There are many people who do not like how *nix systems behave or dislike the conventions used. For them, Linux, BSD, and Mac OS X are not options, even before application compatibility and hardware support come into play. An operating system should give the consumers what they want instead of demanding the consumer conform. Even with Wine, you are still running an operating system that behaves quite differently from Windows, at both the user and system levels.
  • Backwards compatibility. This is something vital for many people and companies, but the development philosophy of Linux and the GNU project do not consider it a priority. The Windows family has always gone out of its way to ensure a stable API and backwards compatibility. By its design, ReactOS will also follow the philosophy of backwards compatibility with existing and future applications designed for the Windows NT family.

There are no plans for any of Microsoft's versions of Windows to be released under a GPL-compatible license (at least, ReactOS team is not aware of them).

Finally, ReactOS offers a third alternative, for people who are fed up with Microsoft's policies but do not want to give up the familiar environment, architectural design, and millions of existing software applications and thousands of hardware drivers.

Is ReactOS based on Microsoft Windows™?

No! ReactOS consists only of GNU GPL (General Public License) and GPL compatible licensed source code.

Is ReactOS based on *nix or Linux?

No! ReactOS is not based on UNIX/Linux. It's written from scratch.

Is ReactOS legal?

Yes. ReactOS is fully legal.

Developers (devs) have not looked at Microsoft Windows™ source code. They have used the public documentation of Microsoft Windows OSes. They have made several tests to understand how Microsoft Windows works. In fact, ReactOS does the same things Microsoft Windows does, but not exactly in the same way, because they haven't the same source code. All code in ReactOS is under the GNU GPL (General Public License).

Why does a certain application of mine not work under ReactOS?

ReactOS is in alpha stage and not recommended for everyday use. Many applications do not work (correctly) because many API calls simply haven't been implemented yet. This may be one of the reasons for the software not working.

Why ReactOS? Why clone Microsoft Windows™?

First of all, ReactOS is not a clone of Windows. ReactOS is an operating system that is compatible with Microsoft Windows applications and drivers. Some of the reasons are the same as the reasons for developing Linux (an open-source UNIX clone)? In short, Linux is a great operating system, but it is not the answer for everybody. There are a lot of people that like Microsoft Windows, but are very frustrated with Microsoft's policies on various issues.

The 9x family of Microsoft Windows is based on DOS, and shares many of its weaknesses, which is the primary reason why Microsoft Windows has such a bad name. The Microsoft Windows NT™ family of Windows, however, has a solid design. Not everything is perfect, but without access to the source code, there is no way to fix it, so a compatible operating system must be built from the ground up.

Why don't you help develop Wine/Linux instead?

ReactOS works very closely with Wine, and thus both projects actually benefit from each other. We have several developers in both the Wine and ReactOS projects that work on cross-compatibility issues between the two projects.

It is our view that Linux + Wine can never be a full replacement for Microsoft Windows™. ReactOS has the potential for a much higher degree of compatibility – especially for Microsoft Windows drivers – which Wine does not address.

Why don't you help the Wine project instead?

Actually we work very closely with the Wine project. Wine probably has a lot more in common with ReactOS than with Linux. The Wine project has the goal of implementing the entire windows API on top of WineServer. There are only a few Wine dlls that cannot be used in ReactOS. These are Ntdll.dll, User32.dll, Kernel32.dll, Gdi32.dll, and Advapi32.dll. The rest of Wine's DLLs can be shared with ReactOS. We have several developers in both the Wine and ReactOS projects that work on cross-compatibility issues between the two projects. It is our view that Linux + Wine can never be a full replacement for Microsoft Windows™. ReactOS has the potential for a much higher degree of compatibility – especially for Microsoft Windows drivers – which Wine does not address.

Where can I download ReactOS?

Please visit the download page.

How can I contribute to ReactOS?

  • We need coordinated testers, which means we need people that help us testing in a coordinated way.

To join our testing come to the IRC channels. Find any dev and ask us what to test. Every day the ReactOS project has different testing needs so testing is not boring.

  • We need coordinated translators.
  • We need coordinated designers.
  • We need coordinated developers.
  • We need coordinated bloggers

To find your place just come and join the IRC channels. See you there.

I don't know how to code... How can I help?

Devs always require testing of something. Just come to IRC and ask for something to test. Devs will give you some ReactOS testing work suited to your skills. The "I don't know how to code" is the preferred excuse followed by the "I don't have time" or "Each time I test ReactOS god kills a kitty" excuses.

I know how to code.... How can I help?

If you are a Dev, then join IRC and ask any doubts about our code, find a place in ReactOS to work, you can select any, but first contact and tell us. Maybe other Devs are currently working in that particular area. "Less time wasted when efforts coordinated!"-Yoda said.

I don't know how to code but I want to learn. How?

Study C, C++, WinAPI, then read books as "Windows Internals" and/or "Operating System Concepts". Come and ask us. For C and C++ questions you have the C and C++ IRC channels, they will solve your doubts much faster.

What can I do to help?

We're always looking for either coders or testers. We're especially in need of people who know how to write NT drivers because our current drivers could use some improvement.

Testing on real hardware is especially important as the kernel rewrite approaches completion. Some issues are known, such as missing assembly code and broken implementations causing issues on certain processors. Bugs found in trunk can be reported in Jira, but try to avoid entering duplicate bugs.

Who should I talk to about helping ReactOS?

The best way to get in touch with a developer is to hop onto the IRC channel.

Connect to the ReactOS IRC Channels

A list of the developers, their IRC nicks, and their respective fields is here: Developer Roles

Note: If you have a question, don't first ask to ask the question. Just ask the question and if someone knows the answer, they'll usually answer. If you want a specific developer then ping that developer and ask the question.

Others will be added as I figure out what they do.

Another way is to join the ROS-dev mailing list:

http://www.reactos.org/mailman/listinfo/ros-dev

When will ReactOS be done?

First you need to define what ReactOS should be capable of when it is to be considered done. Since this definition may vary greatly between people, this question cannot be completely answered. One thing is for sure: ReactOS will continue to be developed, as there will always be a need for improvements. For more information, visit the Roadmap page.

Can I test ReactOS without risking my existing hardware/installations?

Yes, you can test ReactOS on virtual hardware. This way, you can start ReactOS in a window without leaving your operating system. Official preloaded packages for Qemu, VMware, and VirtualBox are available in the "Advanced Downloads" section of the download page. ReactOS is also known to run in Bochs and VirtualPC. If you know of other virtual machines that support it, please send an e-mail to the ros-dev mailing list.

Because a virtual machine is an emulated environment, a virtual machine can not run ReactOS as fast as ReactOS could run on the actual hardware. Virtual machines like Qemu that emulate hardware at the instruction decoding level will run ReactOS much slower than actual hardware.

Is ReactOS able to run Windows apps and Windows drivers?

Yes. ReactOS is able to load Windows apps and Windows drivers without hacking them. Remember: we are still in the Alpha stage so we have a long walk ahead before we reach these objectives. You can visit our Software and Hardware Compatibility databases to know which Drivers and Apps are compatible with the latest ReactOS version.

The original target for ReactOS, with regards to driver and application compatibility, was Microsoft Windows NT 4.0™. Since then, Microsoft Windows 2000, XP, Server 2003, Vista, and others have been released. All these are descendants of Windows NT. As such we can gradually shift our compatibility target without worrying about the architecture changing too much. In fact, internally, Windows 2000 reports version information as Windows 5.0, XP as Windows 5.1, 2003 Server as Windows 5.2, and Vista as Windows 6.0. The ReactOS team currently targets Windows 2003 Server as the official compatibility target. Of the current releases, 2003 Server has proven to be one of the most robust.

How about Windows Vista™/7 programs and drivers?

The present compatibility target for ReactOS of Microsoft Windows Server 2003™ (NT 5.2) does not mean that features present in later versions of Windows NT™ based operating systems will not be implemented in ReactOS. Work is continually done to implement newer APIs or to provide for their future implementation.

Can I install ReactOS on a pen drive/stick?

See: LiveUSB

My screen turns black when loading ReactOS. I don't see anything.

It seems your video card is not yet compatible with ReactOS, search our Hardware Compatibility Database to find a compatible one. Also report yours as not compatible, it will help others. Share your findings!

Does ReactOS have a POSIX subsystem?

  • We currently don't have a POSIX subsystem. Well, we have one but it's broken and it's not a priority in terms of compatibility. After all, we're trying to run Windows programs here, not POSIX programs.
  • Think first: ReactOS should be stable and support a good deal of windows apps. Then worry about POSIX/*NIX, Mac, WinCe, OS/2, RiscOS, whatever else...

I inserted the Installation CD but the installation doesn't begin

Maybe your CD/DVD is a SATA device that UniATA doesn't support yet. (So neither does ReactOS). If your CD/DVD is ATA then try the next trick:

OPTIONAL STEP (make backup files): 1)Back up uniata.sys as uniataB_UP.sys. 2)Back up atapi.sys as atapiB_UP.sys

REPLACING 3)Rename uniata.sys to atapi2.sys 4)Rename atapi.sys to uniata.sys 5)Rename atapi2.sys to atapi.sys

If you damage or lose the files when replacing them, you can use the backup files from the Optional Step.

The installation hangs or hangs before reaching the Desktop

Try the "I inserted the Installation CD but the installation doesn't begin" trick if your HDD is an ATA device. Remember that trick doesn't work at all with SATA devices.

When is 0.5 appearing? And Beta? And 1.0? And 123.0? And...

It depends. We need Developers and Testers (Coordinated Testers). Statistics suggest that 99.99% of the forum users who ask these questions have never helped in a Coordinated Testing. So stop asking and use that time to help us, if you want it asap then contribute a little. Money is appreciated but testing is much more useful at current stage.

We perform several Coordinated Testings via IRC. Join them and you will discover the feelings of being part of the Community, not just part of the Forum.

Why there is no Roadmap?

An OS covers a wide area of knowledge, it is not an App, it is a whole,-in-the-way-to-become-awesome OS. So we need devs from all the areas, it's not easy to find skilled devs, and also they are not paid, they have their real-life-work, families and problems. So no, we can't press them to work in a particular area. We can just thank them for dedicating some time to make this OS become a reality.

Developer FAQ

General

What language do you guys use?

C and assembly, with very little C++ for some included programs. In the OS itself, only C and assembly is allowed.

Why only C and assembly?

The reasoning is actually because of the tools we use. GCC's C++ compiler is less than stellar so we limit things to C and assembly to make our lives easier.

How do I get ReactOS' source code and build it?

This information is covered on this page: Build Environment

The recommended build environment is the RosBE. It's designed to run on Windows and *nix, though the *nix version may not be as up to date as the Windows version.

Is there any kind of coding style that is expected?

See Coding Style

How will you avoid the inevitable "Microsoft" text throughout ReactOS?

We believe that this falls under fair use. It is also not needed except in the registry.

Will drivers designed for Windows work on ReactOS?

Some drivers have been known to work, but at this point there is no definitive answer as some facilities in kernel land that are unimplemented.

What do I need to compile ReactOS from sources?

Refer to our Build Environment page for information on how to compile ReactOS from the source.

What about the so-called SEH-problem?

Structured exception handling (SEH) is used in programming ReactOS as it is used in programming for OS/2 or Microsoft(R) Windows(R) NT. SEH is a game which is played between the OS and compiler (Keywords: __try, __except, __finally). ReactOS itself is SEH-aware and provides the infrastructure. However up till now, the GNU-compiler used is not capable of generating SEH-aware code. So one can't compile a driver or program which uses SEH with the GNU-Compiler.

Graphics Subsystem

Why is the graphics subsystem not in Ring 3 but in Ring 0?

The short answer is that because Microsoft has done it this way, and we aim for driver compatibility, we have to do it the same way.

Why did Microsoft put the GUI in Ring 0?

Because this gives quite an advantage in speed. Contrary to a GUI-server, which will run in its own process, there are no context changes necessary when performing GUI operations. This does make the architecture less clean of course, and when the GUI crashes, the whole system crashes. The same discussion took place in Redmond, when the GUI went into the kernel in Microsoft(R) Windows(R) NT 4.0. They came to the conclusion that the GUI has matured, so that nothing will go wrong unless a faulty driver is present, and that the consequences are similar to when something goes wrong in user mode.

Does ReactOS have the same security problems as Microsoft Windows™?

Microsoft Windows NT™ and successors aren't really inherently insecure systems. We believe that Microsoft® made a secure system insecure as a result of some poor decisions. For example, Windows XP™ gives every user Administrator rights by default. Some services are poorly implemented and ease of use often takes priority over security. We can, however, rearrange these priorities in ReactOS. What will be problematic is that for a long time Microsoft hadn't pressured software creators to design their products to run with Normal user rights.

Debugging

How do I trace an unhandled exception in user mode?

The trace looks something like this: (KERNEL32:process/create.c:328) Process terminated abnormally due to unhandled exception (KERNEL32:process/create.c:329) Address: 761a13e0 (KERNEL32:process/create.c:334) Frames: (KERNEL32:process/create.c:338) 761a2be9 Look at ReactOS/baseaddress.cfg, find the nearest lower address that matches the address you're trying to trace. Open the .map file for the corresponding DLL in the viewer and search for the offset.

See Also