Difference between revisions of "ReactOS FAQ"

From ReactOS Wiki
Jump to: navigation, search
(Can I test ReactOS without risking my existing hardware/installations?)
(Is ReactOS legal?)
 
(120 intermediate revisions by 11 users not shown)
Line 1: Line 1:
 
== User FAQ ==
 
== User FAQ ==
 
=== [[ReactOS#What Is ReactOS|What is ReactOS?]] ===
 
=== [[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 is based upon NT5. The current 'Windows', the version the general public is familiar with, is actually just one part of the modern Windows NT™ operating system. Users and developers are more familiar with the [[Win32]] subsystem, a layer that sits upon the NT kernel providing the user and application interface. Most computer layman mistakenly think of 'NT' as 'WinNT 4' whilst in reality, the term "NT" refers to the whole NT series from 2000 until today. This ranges from version 3 to NT5 (2000, XP, 2003) and then from NT6 (Vista, 2008, 7, 8, 2012, 8.1) to NT10 (10, 2016). The NT architecture was designed by a team led by David Cutler, a former lead developer of Digital Equipment's VMS operating System. It took the team more than 4 years to combine the best of UNIX, VMS, and OS/2 to create the NT architecture. ReactOS aims to replicate this with NT5 (Server 2003) as its main target with the additional aim of compatibility with many of the APIs from later NT6 versions of the Windows o/s.
+
ReactOS (short for React Operating System) is an open-source project to develop a quality operating system that is compatible with Microsoft Windows™ NT applications and drivers. In effect, ReactOS aims to replicate Windows NT. '''Please be aware that ReactOS is in ALPHA - what this means is that ReactOS is under heavy development and therefore NOT ready for every day use.'''  
  
=== Why use ReactOS? ===
+
'''A short but important history lesson regarding NT''': What the general public perceives as current 'Windows' - the user and application interface is actually just one part of the modern Windows NT™ operating system. This in turn is provided by the [[Win32]] subsystem which is a layer that sits upon the NT kernel. The term "NT" refers to the whole Windows NT series from 2000 until today. This range comprises NT version 3 to NT5 (2000, XP & 2003), then from NT6 (Vista, 2008, 7, 8, 2012 & 8.1) to NT10 (10, 11, 2016 & 2019). The NT architecture was originally designed by a team led by David Cutler, a former lead developer of Digital Equipment's VMS operating system. It took the team more than 4 years to combine the best of UNIX, VMS, and OS/2 to create the NT architecture. ReactOS aims to replicate NT starting at NT5 (Server 2003) as NT5 was a stable and functional o/s whose fundamental components (APIs) still comprise the basis of later versions of Windows. An additional aim is compatibility with many of the more modern APIs from later NT6 versions of the Windows o/s.
A lot of people in popular discussion forums quite rightly 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 in one simple magic word. Let's name a few key issues here that may help to answer that question:
+
=== Is ReactOS legal? ===
 
+
Yes. ReactOS is fully legal and adheres to the strongest standards of accountability, ie. it does not use any leaked version of Microsoft's code.
*There are plenty of *nix operating systems out there - this is very good. However, they have different end-user targets (they perfectly fit the server market but the desktop still isn't fully conquered and several usability factors work against most Linux-based alternatives in the market today).
 
 
 
*There is currently no other operating system which implements the kernel architecture design of MS Windows NT™ so if you are unhappy with the direction or goal of Windows there is little real alternative. ReactOS was started as a “clone” of Windows NT to alleviate this situation. To demonstrate the concept of o/s cloning, GNU/Linux is the best for comparison here: Linux was started as a “clone” of Minix and Unix, eventually going on to be a Unix replacement.
 
 
 
*There are no plans for any of Microsoft's versions of Windows to be released under a GPL-compatible license (at least, the ReactOS team and the world are not aware of them).
 
 
 
*Linux+Wine is never going to be a complete replacement for a full Windows system. It's not only because of Linux (despite some user-friendly Linux distributions out there) and not only because many users might find a transition to Linux/BSD difficult but it is largely 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 the NDIS Wrapper for NT network card drivers, there are rumours about supporting NT video drivers and Captive NTFS for NT filesystem support) but ReactOS solves them from day one by its very design – being 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 that 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 backward-compatibility with existing applications designed for the whole Windows NT family whilst providing compatibility to later developments too.
 
  
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.
+
Windows source code is not publically available. ReactOS Developers (devs) do not and have not looked at any leaked Microsoft Windows™ source code. They can only use the publically available documentation that Microsoft publishes and that which exists is not comprehensive. As a result, ReactOS devs have to test Windows in detail to understand how every component of Microsoft Windows works. ReactOS inevitably intends to perform exactly the same as Windows but it WILL accomplish this differently due to having very different source code being programmed by a completely different team of developers. All code in ReactOS is released under the GNU GPL (General Public License) that allows external scrutiny.
  
=== Is ReactOS based on Microsoft Windows™? ===
+
=== Is ReactOS based on Microsoft Windows™ original source code? ===
No! ReactOS consists only of GNU GPL (General Public License) and GPL compatible licensed source code.
+
No! ReactOS consists only of clean-room engineered GNU GPL (General Public License) and GPL compatible licensed source code.
  
 
=== Is ReactOS based on *nix or Linux? ===
 
=== Is ReactOS based on *nix or Linux? ===
No! ReactOS is not based on UNIX/Linux. It's written from scratch.
+
No! ReactOS is not based on UNIX/Linux. It is not a variant of linux and uses no linux source code nor drivers. ReactOS has been written from scratch.
  
=== Is ReactOS legal? ===
+
=== Why doesn't ReactOS have a modern UI? ===
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).
+
There is no such thing as a modern UI. The UI of current Windows changes according to the whim of Microsoft. This is not the case for ReactOS.  
  
=== Why does a certain application of mine not work under ReactOS? ===
+
The target for ReactOS is Windows 2003. ReactOS' default UI is based upon that which you will find in Windows 2003. At the moment there are four alternative theme choices and all are suited for desktop operation. Current Windows (10 & 11) uses a theme that is compatible with both desktop and tablet based versions of the o/s. That theme is tied to the corporate design that Microsoft is currently espousing. The themes that come with ReactOS are not tablet-based themes as ReactOS is a desktop based operating system.
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 doesn't ReactOS have a modern UI? ===
+
There are some users, those that are perhaps a little naive, that believe the UI-look-and-feel is in some way tied to the real functionality of the core o/s but that is not really the case. If you are comparing ReactOS default UI with that of current Windows you may not fully appreciate that ReactOS' UI is configurable and being FOSS will be user-customisable in a way that current Windows simply is not. Eventually it will be possible to configure ReactOS to appear any way you desire with your own 3rd party tools and themes. Simply put, if you want ReactOS to look like Windows 10 or 11 then it is entirely possible. All you need to do is find and install a suitable theme and configure it - or even create one yourself!
The target is Windows 2003 and ReactOS' UI is based upon that. There are two alternative theme choices and both are suited for desktop operation. Note that neither of them are tablet-based themes as you will find in current Windows. Only the naive but  uninformed user believes the UI look-and-feel is in any way tied to the real functionality of the o/s. If you are comparing the default UI with that of current Windows you may not appreciate that ReactOS' UI is configurable and the interface being FOSS will be customisable in a way that current Windows is not. Eventually it will be possible to configure ReactOS to look the way you desire with 3rd party tools and themes.
 
  
 
=== Why ReactOS? Why clone Microsoft Windows™? ===
 
=== 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.
+
We do not consider ReactOS as being a mere clone of Windows. We prefer to think of ReactOS as an operating system that is compatible with Microsoft Windows applications and drivers, one that is free and open source. The developers of Linux (an open-source UNIX clone) was created for very similar reasons. Linux is a great operating system but it is not the answer for everybody and it is not compatible with Windows applications and drivers. There are a lot of people that like the Microsoft Windows environment 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.
+
The Microsoft Windows NT™ family of Windows has a solid design. Not everything is perfect but there is nothing we, the general public can do about it. Without access to the source code there is no way to fix anything - so in response to this we decided that a Windows-compatible operating system must be built from the ground up.
  
 
Think of ReactOS as a community-created o/s with honourable goals, ie. to create a free-to-use Windows-compatible o/s that will be quick to install, quick to run and easy to operate. Think of it in the same spirit as a "Linux for Windows users" or perhaps more accurately as a "Windows o/s for Linux users"? Both built in the same spirit with a similar aim in mind.
 
Think of ReactOS as a community-created o/s with honourable goals, ie. to create a free-to-use Windows-compatible o/s that will be quick to install, quick to run and easy to operate. Think of it in the same spirit as a "Linux for Windows users" or perhaps more accurately as a "Windows o/s for Linux users"? Both built in the same spirit with a similar aim in mind.
  
ReactOS is a desirable object given that it should free Windows development from the shackles of Microsoft's current business model. That is a great target in itself. When it achieves beta release it will provide a home for the continued development of legacy applications (win32, MFC and the like) and their future will be rosy well away from the UWP framework that Microsoft is imposing upon users and developers in its current business aim to dominate tablet and IoT devices.
+
ReactOS is a desirable object given that it should free Windows development from the shackles of Microsoft's current business model. That is a great target in itself. When, if ever ReactOS achieves beta release, it will provide a home for the continued development of legacy applications (win32, MFC and the like), their future will be rosy well away from the UWP framework that Microsoft has been imposing upon both users and developers alike. Microsoft has in its current business aims the desire to dominate desktop, tablet and IoT devices. ReactOS does not have these aims but it can provide an alternative.
 
 
=== 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.
 
 
 
=== Why not use UNIX instead? ===
 
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 syste, 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, thus 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 [[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 standard user interface 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.
 
  
 
=== Where can I download ReactOS? ===
 
=== Where can I download ReactOS? ===
Line 73: Line 41:
 
* We need coordinated [[Testing Central|testers]], which means we need people that help us testing in a coordinated way.
 
* We need coordinated [[Testing Central|testers]], which means we need people that help us testing in a coordinated way.
 
To join our testing come to the [https://chat.reactos.org/reactos/channels/town-square/ Mattermost discussion channels]. Find any dev and ask us what to test.  Every day the ReactOS project has different testing needs so testing is not boring.
 
To join our testing come to the [https://chat.reactos.org/reactos/channels/town-square/ Mattermost discussion 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]].
+
*We need coordinated [[Translation Introduction|translators]] for languages not yet translated.
*We need coordinated designers.
+
*We need coordinated C [[Development Introduction|developers]] for core o/s development.
*We need coordinated [[Development Introduction|developers]].
+
*We need coordinated C++ [[Development Introduction|developers]] for o/s utility development.
 
*We need coordinated bloggers
 
*We need coordinated bloggers
  
Line 81: Line 49:
  
 
=== I am an experienced coder... How can I help? ===
 
=== I am an experienced coder... How can I help? ===
If you are a developer experienced in C and C++ then join [https://chat.reactos.org/reactos/channels/town-square/ Mattermost discussion channels]. There you can ask questions regarding our code and find a component upon which to work. You can select any component that interests you but first contact us and tell us what you are planning to do. Other developers may already be working in that particular area. As Yoda says: "efforts co-ordinated, time wasted less when...".
+
If you are a developer experienced in C and C++ then join [https://chat.reactos.org/reactos/channels/town-square/ Mattermost discussion channels]. There you can ask questions regarding our code and find a component upon which to work. You can select any component that interests you but first contact us and tell us what you are planning to do. Other developers may already be working in that particular area. We're especially in need of people who know how to write NT drivers because our current drivers could use some improvement.
 +
 
 +
There are several ways to contribute to the development of ReactOS. The most often encountered problem is not knowing where to begin or what to do. If you are able to program or understand the technical information that is pertinent to this project, helping the development can be easy.  
 +
 
 +
Please visit the [https://reactos.org/wiki/Development_Introduction Developer Introduction page] for an overview for developers so that you know where to begin.
 +
 
 +
The full developer Wiki page will be found here: [https://reactos.org/wiki/Welcome_to_the_ReactOS_Development_Wiki The Developer Wiki]
  
 
=== 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? ===
Line 89: Line 63:
 
=== I'll never know how to code... How can I still help? ===
 
=== I'll never know how to code... How can I still help? ===
 
Developers always require testing of something. Just come to [https://chat.reactos.org/reactos/channels/town-square/ Mattermost discussion channels] and ask for something to test. Developers will give you some ReactOS testing work suited to your skills.
 
Developers always require testing of something. Just come to [https://chat.reactos.org/reactos/channels/town-square/ Mattermost discussion channels] and ask for something to test. Developers 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.
+
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 the trunk can be reported in Jira, but try to avoid entering duplicate bugs.
  
 
=== I don't know how to test but I want to learn. How? ===
 
=== I don't know how to test but I want to learn. How? ===
First of all, don't raise loads of issues on Mattermost or on the forum. By all means, use this as a method of raising awareness on an issue but if you are really going to help raise a ticket! This means opening a bug report on our bug reporting system known as [https://jira.reactos.org/secure/Dashboard.jspa JIRA]. You can log in using your ReactOS website credentials. If you have questions regarding filing bugs, please see the helpful WIKI entry here - [[File Bugs|Filing bugs on JIRA]]
+
First of all, don't raise loads of issues on Mattermost or on the forum. By all means, use this as a method of raising awareness on an issue but if you are really going to help raise a ticket! This means opening a bug report on our bug reporting system known as [https://jira.reactos.org/secure/Dashboard.jspa JIRA]. You can log in using your ReactOS website credentials. If you have questions regarding filing bugs, please see the helpful WIKI entry here - [[File Bugs|Filing bugs on JIRA]]. In addition to this WIKI there also exists a [[A_layman's_guide - How_to_create_a_JIRA_Issue|layman's guide to filing bugs]], written by one of our regular contributors.
  
=== What can I do to help? ===
+
=== What else 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.
+
You can promote ReactOS around the web, correcting inaccurate opinions where you find them. You can look for useful FOSS code that can provide an element of Windows that ReactOS does not currently have. You can encourage other developers to contribute to ReactOS. You can send a donation to ReactOS or encourage others to do so.
  
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 the trunk can be reported in Jira, but try to avoid entering duplicate bugs.
+
If you find a wandering kernel developer with no current employment then please lasso him and bring him back to the ReactOS team, we need skilled kernel developers!
 +
 
 +
Please note that we are not currently looking for graphic designers to redesign the ReactOS UI. We receive a lot of offers in this regard. The offer of your skills is appreciated but we already have a few capable graphical designers in-house and we are not looking to change the current NT5 style UI. If you really do want to contribute in this area then we would suggest building a theme suitable for XP and testing it there. It will theoretically also be installable on ReactOS and you can offer it as a suitable replacement. Please note we will not be incorporating a lot of themes within the os so lower your expectations of having your own unique theme bundled with ReactOS.
  
 
=== Who should I talk to about helping ReactOS? ===
 
=== Who should I talk to about helping ReactOS? ===
 
The best way to get in touch with a developer is to hop onto the [https://chat.reactos.org/reactos/channels/town-square/ Mattermost discussion channels].
 
The best way to get in touch with a developer is to hop onto the [https://chat.reactos.org/reactos/channels/town-square/ Mattermost discussion channels].
  
Alternatively, you can use the older [[Connect to the ReactOS IRC Channels]] IRC channel that is still used by some developers.
+
*[https://chat.reactos.org/reactos/channels/town-square/ Mattermost discussion channels] Read the [[Mattermost-CoC|Mattermost code of Conduct]] before participating
  
*[https://chat.reactos.org/reactos/channels/town-square/ Mattermost discussion channels]
+
A list of the developers showing their Mattermost nicknames and their respective areas of expertise is here: [[Developer Roles]] - Names of other developers will be added as time progresses and it becomes clear which are contributing and how.
*[[Connect to the ReactOS IRC Channels]]
 
  
A list of the developers showing their IRC nicknames and their respective areas of expertise is here: [[Developer Roles]] - Names of other developers will be added as time progresses and it becomes clear which are contributing and how.
+
Note: If you have a query, simply join a discussion group and ask your question. If someone knows the answer, they'll usually answer straight away. If you want the skills of a specific developer then ping that developer and ask them questions directly.
  
Note: If you have a query simply join a discussion group and ask your question. If someone knows the answer, they'll usually answer straight away. If you want the skills of a specific developer then ping that developer and ask them question directly.
+
Another way is to join the ROS-dev mailing list: http://www.reactos.org/mailman/listinfo/ros-dev
 +
 
 +
=== How can ReactOS help me? ===
 +
Being involved with developing ReactOS can help in the development of your own personal technical skills. ReactOS development is one of the few locations where potential Windows operating system developers can learn their craft. The majority of ReactOS devs gain their first o/s coding experience digging deep into ReactOS' internals. For others it may well be their very first experience of coding of any sort, ReactOS devs are happy to mentor, direct and teach enthusiastic but dedicated amateur coders. We even offer scholarships to student contributors for specific tasks. Apart from a career within Microsoft, there really is no better place to learn how Windows functions at the deepest technical level. You’ll find in ReactOS the possibility to move from theoretical analysis of how Windows operates to seeing how a Windows-like o/s really operates in real-life practical cases.
 +
 
 +
If you are a C or C++ coder then working with like-minded coders can improve your skills in relation to Windows APIs, tools, debugging an o/s and the intricacies of developing in a cleanroom environment.
 +
 
 +
Contributing toward open source projects is a positive act that demonstrates not only where your moral sentiments lie but also shows your ability to work as part of a team towards a common goal. ReactOS is an English-speaking, worldwide community that uses a wide variety of internet-based tools from social networking to online messaging platforms to achieve its aims. Experience of all these skills will be appreciated when you seek job interviews with software companies involved in operating system development. Even an organisation such as Microsoft has been known to absorb former ReactOS developers into its own ranks.  
 +
 
 +
By being involved in ReactOS you have the chance to boost your technical skills to the highest level, to have fun with the sure knowledge that you are doing some good to the world, promoting the use of Free and Open Source Software.
  
Another way is to join the ROS-dev mailing list: http://www.reactos.org/mailman/listinfo/ros-dev
+
=== Testing ReactOS on real hardware ===
 +
Testing on real hardware is especially important as it allows us to receive feedback on ReactOS kernel and driver compatibility. However, it is VITAL that you take precautions to avoid data loss.
  
=== When will ReactOS be done? ===
+
IF you choose to test ReactOS on real hardware then be aware that you should never do so using a computer that contains valuable data or even data that has not been backed-up elsewhere. ReactOS is an alpha-grade o/s and as such could easily damage any file system you already have loaded on that system, even if it is on another drive or on a separate partition. ReactOS file system code is as much alpha-grade as is the rest of the system. The simple rule is - just keep your valuable data away from ReactOS. Some suggest that they'd like to use ReactOS now but we strongly suggest you do NOT. By all means, test it but don't try to use it in a real-life situation other than to test it, you could do damage to your data and potentially even to the machine itself, the latter is very, very unlikely but you ought to consider it before you start testing and looking for someone to blame when things go wrong.
The target for ReactOS is Windows Server 2003 but ReactOS will be capable of use before full compatibility is met as components and sub-systems are developed. The definition of usable is down to the use-case and only you yourself will be able to define whether ReactOS is usable for you. ReactOS is already of use now for teaching developers how to re-engineer and code a Windows-compatible o/s but it is not ready for real-life usage where o/s stability and data security is important. Since the definition of what ReactOS should be capable of when it is considered complete may vary greatly between end users, this question cannot be completely nor accurately answered. One thing is for sure: ReactOS will continue to be developed as there will always be a need for improvements, for example, although ReactOS is an NT5 based o/s, support is already being added for NT6 API compatibility to allow modern programs to operate. For more information, visit the [[Roadmap]] page (note it is impossible to provide a time-dependent roadmap at this stage of ReactOS development due to the 'community' nature of the project).
 
  
=== Why is ReactOS development so slow? ===
+
If you want your testing to go well then choose XP or Vista era hardware as the typical combinations of hardware from that time are more likely to work with ReactOS. Later, more modern technology is best put to use running ReactOS in a VM as it is unlikely that ReactOS will boot at the hardware level at all.
First of all, developing a Windows-compatible o/s is an enormous task due to the sheer complexity of Windows and its undocumented nature. The team cannot work with Microsoft sourced code and all development has to be done via a process called clean-room engineering ensuring that no ReactOS source is contaminated by developer exposure to any copyrighted code from Microsoft. In addition, the slow development progress is primarily due to the 'enthusiast' approach of development ie. the developers are simply people like you and I. They work on whatever task that takes their interest, spending as much of their spare time as they can, working on the project. The complexity of writing an o/s from scratch also requires certain skill-sets that are not generally available within the enthusiast programming community, ie. competent Windows Kernel Developers available to contribute - are thin on the ground. The slow pace is also partly due to the lack of sponsors, leading to the majority of code being contributed by unpaid effort. Despite this, recent testing shows how much ReactOS has progressed and it is remarkable how much the project has achieved ([https://reactos.org/forum/viewtopic.php?f=2&t=10972&start=1230 see ReactOS Epic Wins]) but it has a long way to go before approaching beta stage. However, developers have a firm target and the team is a dynamic one with solid supporters and contributors, meaning that the task is achievable, it'll just take a while. The ReactOS team likes to think of progress as being steady rather than slow.
+
 
 +
SUMMARY: Don't install ReactOS anywhere where it could adversely affect your precious belongings, data or otherwise.
  
=== Can I test ReactOS without risking my existing hardware/installations? ===
+
=== How 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.
+
You can test ReactOS on [[Virtualization software|virtual hardware]] in a comparatively safe manner. 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.
  
 
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.
 
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.
  
If you choose to test ReactOS on real hardware then be aware that you should never do so using a computer that contains valuable data or even data that has not been backed-up elsewhere. ReactOS is an alpha-grade o/s and as such could easily damage any file system you already have loaded on that system, even if it is on another drive or on a separate partition. Just keep your valuable data away from ReactOS. Some suggest that they'd like to use ReactOS now but we strongly suggest you do not. By all means test it but don't try to use it in a real life situation other than to test it, you could do damage to your data and potentially even to the machine itself, the latter is very, very unlikely but you ought to consider it before you start testing and looking for someone to blame when things go wrong.
+
* ''See: [[Installing ReactOS]]''
  
If you want your testing to go well then choose XP or Vista era hardware as the typical combinations of hardware from that time are more likely to work with ReactOS. Later, more modern technology is best put to use running ReactOS in a VM as it is unlikely that ReactOS will boot at the hardware level at all.
+
=== Why isn't this or that feature in ReactOS? ===
 +
This question is asked a lot and the simple answer is almost always "because it hasn't been coded yet". If you read this FAQ from top to bottom it will become clear that ReactOS is a community effort. YOU are part of the community if you choose to donate, code or document. IF there is anything you specifically require in ReactOS then you can help make it happen, write specifications, create documentation, search for suitable FOSS code, code it yourself or engage the services of a developer to contribute actual code, you could even raise a bounty! If you want something specific done then the simple rule is - do it yourself! The alternative is to wait for the community to come up with that functionality by itself, it might be a long wait that does not suit your timescales but in the end, if it was part of Windows server 2003 then most likely it will come, just not yet.
 +
 
 +
=== Why isn't ReactOS 64-bit? ===
 +
ReactOS' design intends to replicate that of Windows Server 2003/XP x64 Edition (NT 5.2 kernel). Although there were 64-bit versions of these series of operating systems, the majority of users would have typically encountered only the 32-bit version. Bear in mind that finishing 32-bit ReactOS has been the project's main focus up until fairly recently. The core of ReactOS still requires considerable development and attention. At the time of writing this FAQ, a 64-bit version of ReactOS is under development and progress is steady. Due to this, there is now a functioning 64-bit version of ReactOS under development for you to download but be warned, it is very experimental and as a result, quite unstable. This is expected to change in the near future as the 64-bit version of ReactOS is now receiving constant attention, please be patient in the knowledge that stability will come, in time.
 +
 
 +
With regard to the current 32-bit target, for most practical purposes 64-bit processes are generally not required to obtain  XP/2003 compatibility and currently, 32-bit proves to be enough for the majority of applications that XP/2003 NT5 is ever likely to encounter. A 32-bit Windows program designed for XP/2003 should run and operate on ReactOS as quickly and as functional as you would expect. If you have a 64-bit Windows 2003 program that requires more than 3.25gig of RAM, is compiled to take advantage of 64-bit operation then clearly a 64-bit version of the program is what you require. The 64-bit development of ReactOS will help you in this regard - when it is available.
 +
 
 +
Many modern Windows 10 programs are now being compiled for 64-bit operation by default and for this reason (and others) will not run on ReactOS at the moment. Note that developers may also maintain a current 32-bit version of your desired program or perhaps an older 32-bit version may also exist for you to test. As long as they use no NT6+ APIs and they function on XP/2003 there is a good chance they will operate on ReactOS too.
 +
 
 +
=== Is ReactOS able to run Windows software and Windows drivers? ===
 +
Yes. ReactOS is able to load Windows XP/2003 software 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 100%. You can visit our Software and Hardware Compatibility databases to know which Drivers and Apps are compatible with the latest ReactOS version.
 +
 
 +
If your chosen software has Windows XP or Server 2003 as its compatibility target then it ought to run on ReactOS without a problem. If it does not then it is more than likely a bug in ReactOS. Later versions of programs that do not offer XP nor server 2003 compatibility may not work currently but might function in the future as support for more recent NT6 APIs are added to ReactOS.
 +
 
 +
=== How about Windows Vista™/7/8 or 10 programs and drivers? ===
 +
The original target for ReactOS with regard to driver and application compatibility was Microsoft Windows NT 4.0™. Since then, Microsoft Windows 2000, XP, Server 2003, Vista, Win 7, 8 and Win10 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. The ReactOS team currently targets Windows 2003 Server as the official compatibility target as 2003 Server has proven to be one of the most robust.
 +
 
 +
The present compatibility target for ReactOS is Microsoft Windows Server 2003™ (NT 5.2). Features present in later versions of Windows NT™ based operating systems may also be implemented in ReactOS but this is lower priority until basic NT 5.2 compatibility is completed. Work is continually being done to implement newer NT6 APIs or to provide for their future implementation.
 +
 
 +
=== 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 fully or correctly because many API calls simply haven't been implemented nor are the existing ones fully operational. In any case, to put it bluntly, ReactOS is in alpha and there are lots of serious bugs. This may be the reason for your software not working.  
  
=== Is ReactOS able to run Windows apps and Windows drivers? ===
+
In this case, raise a bug report but do avoid ticket duplication as it is quite likely that the issue is known already. Search the bug reporting system first for a similar bug as it is important to avoid duplications. Report a bug here: [[File Bugs]].
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.
+
In most cases it is simply a matter of waiting for the specific bugs to be fixed - then your software will magically start to operate - one day. If you want to speed this process up then donate!
  
=== How about Windows Vista™/7 programs and drivers? ===
+
=== I installed ReactOS but I don't see any applications, why not? ===
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.
+
Note that ReactOS is an operating system and by default an o/s doesn't necessarily come with any software pre-installed, that job is up to you. Even though that pre-installed apps may be a trend with current tablet-based OSes, it isn't a trend that ReactOS will follow. So, no Candy Crush here. There is no 'app store' like Apple and Microsoft so you are expected to select and install any software yourself, doing it manually just as we have always done so in Windows. To assist you, ReactOS has an in-built package or application manager called RAPPS that you can utilise to download programs that are known to work on ReactOS. Some of the few 'basic' apps that came with Windows NT5 will eventually come bundled in ReactOS, these may be as simple as Notepad, Paint or perhaps even a simple media player but please note that not all these have been coded yet.
  
 
=== Can I install ReactOS on a pen drive/stick? ===
 
=== Can I install ReactOS on a pen drive/stick? ===
ReactOS' state of development is a process of continuous change and as such USB support is under development but improving. For more details ''See: [[LiveUSB]]''
+
ReactOS's state of development is a process of continuous change and as such USB support is under development but improving. For more details ''See: [[LiveUSB]]''
 +
 
 +
=== My Anti-Virus claims that ReactOS has a virus ===
 +
Common sense should tell you that these must be false positives. Malware scanners that base their operation upon imperfect malware signatures can flag perfectly safe programs as being infected. In some cases, even Windows components signed by Microsoft have been flagged as malware. That is the case with ReactOS. Your scanner is flagging a ReactOS component as a false positive. We recommend that you use a tool such as VirusTotal but learn how to differentiate a malware report from a false positive. When you come across such an occurrence in ReactOS then take the correct action to report the false positive to your chosen anti-malware provider. Each tool provides such a utility, either through the tool itself or via a web page. That is your responsibility as a user of the tool.
 +
 
 +
Be assured that ReactOS is FOSS and as such the code can be checked by you and by experts for any hidden malware. Anyone who chooses to do so can review the code at any time. No malware has ever been detected in ReactOS and we aim to keep it that way.
  
 
=== How many cores does ReactOS support? ===
 
=== How many cores does ReactOS support? ===
ReactOS' currently only supports a single core as ReactOS does not yet have a SMP enabled kernel. However, ReactOS does run very quickly on a single core system so the lack of this feature is not as desperately needed as you would imagine at this stage in ReactOS development. SMP support will come in time. IF you know of any Windows kernel developers available to work on this feature then do let us know.
+
ReactOS currently only supports a single core as ReactOS does not yet have an SMP-enabled kernel. However, ReactOS does run very quickly on a single core system so the lack of this feature is not as desperately needed as you would imagine, at this stage in ReactOS development. SMP support will come in time but note that this important element IS currently receiving developer attention. Progress is being made. IF you know of any Windows kernel developers available to help work on this feature then do let us know.
  
 
=== My screen turns black when loading ReactOS. I don't see anything. ===
 
=== 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!
+
It seems your video card is not yet compatible with ReactOS, search our list of [[Supported Hardware/Video cards]] to find a compatible one. Also, report yours as not compatible, it will help others. Share your findings!
 +
 
 +
=== My ReactOS installation doesn't produce any sounds, why is that? ===
 +
It seems your sound card is not yet compatible with ReactOS, search our [[Supported Hardware/Sound cards|supported sound Hardware Compatibility list]] to find a compatible one. In addition, report yours as not compatible as it will help others. Share your findings! If you are running in a VM then there will be some configuration changes that are needed to support sound. You can find those links on that page.
 +
 
 +
In truth, having said all that, ReactOS sound support is currently at quite an early stage. Lower your expectations, it is one of the areas where ReactOS is still being developed. A good bit of advice for the moment is, regardless of whether you are running ReactOS in a VM or real hardware - turn off the sound...
  
 
=== Does ReactOS have a [[Psxss.exe|POSIX]] subsystem? ===
 
=== 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.
 
* 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...
+
* 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...
  
=== I inserted the Installation CD but the installation doesn't begin ===
+
=== I inserted the Installation CD but the installation doesn't even begin ===
Maybe your CD/DVD is a SATA device that UniATA doesn't support yet. (So neither does ReactOS).
+
It may well be that your CD/DVD is a SATA device that UniATA doesn't yet support (so neither does 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 (make backup files):
 
OPTIONAL STEP (make backup files):
1)Back up uniata.sys as uniataB_UP.sys.
+
* Back up uniata.sys as uniataB_UP.sys.
2)Back up atapi.sys as atapiB_UP.sys
+
* Back up atapi.sys as atapiB_UP.sys
  
 
REPLACING
 
REPLACING
3)Rename uniata.sys to atapi2.sys
+
* Rename uniata.sys to atapi2.sys
4)Rename atapi.sys to uniata.sys
+
* Rename atapi.sys to uniata.sys
5)Rename atapi2.sys to atapi.sys
+
* 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.
+
If you damage or lose the files when replacing them, you can restore the backup files from the optional step so make sure you do it.
 +
 
 +
If your HD controller is an NVMe disk controller device then ReactOS does not currently support this technology. For best results on real hardware use XP era systems that would typically support XP. The drivers for that o/s should or might work in ReactOS.
  
 
=== 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 will ReactOS be complete? ===
 +
The target for ReactOS is Windows Server 2003 but ReactOS will be capable of use before full compatibility is met as components and sub-systems are developed. The definition of usable is down to the use-case and only you yourself will be able to define whether ReactOS is usable for you. ReactOS is already of use now for teaching developers how to re-engineer and code a Windows-compatible o/s but it is not ready for real-life usage where o/s stability and data security is important. Since the definition of what ReactOS should be capable of when it is considered complete may vary greatly between end-users, this question cannot be completely or accurately answered. One thing is for sure: ReactOS will continue to be developed as there will always be a need for improvements, for example, although ReactOS is an NT5 based o/s, support is already being added for NT6 API compatibility to allow modern programs to operate. For more information, visit the [[Roadmap]] page (note it is impossible to provide a time-dependent roadmap at this stage of ReactOS development due to the 'community' nature of the project).
 +
 +
=== Why is ReactOS development so slow? ===
 +
First of all, developing a Windows-compatible o/s is an enormous task due to the sheer complexity of Windows and its undocumented nature. The team cannot work with Microsoft sourced code and all development has to be done via a process called clean-room engineering ensuring that no ReactOS source is contaminated by developer exposure to any copyrighted code from Microsoft. In addition, the slow development progress is primarily due to the 'enthusiast' approach of development ie. the developers are simply people like you and I. They work on whatever task that takes their interest, spending as much of their spare time as they can, working on the project. In comparison, Microsoft employed as many as 2,000 software engineers for four years to build their first proper o/s NT3, it took another 8 years of continuous improvement to attain NT5 Windows XP.
 +
 +
The complexity of writing an o/s from scratch also requires certain skill-sets that are not generally available within the enthusiast programming community, ie. competent Windows Kernel Developers available to contribute - are thin on the ground. The slow pace is also partly due to a lack of sponsors leading to the majority of code being contributed by unpaid effort. Despite this, recent testing shows how much ReactOS has progressed and it is remarkable how much the project has achieved ([https://reactos.org/forum/viewtopic.php?f=2&t=10972&start=1230 see ReactOS Epic Wins]) but it has a long way to go before approaching beta stage.
 +
 +
Despite all of this, developers have a firm target and the team is a dynamic one with solid supporters and contributors, meaning that the task is achievable, it'll just take a while. The ReactOS team likes to think of progress as being steady and continuous rather than slow.
 +
 +
If you want to view the activity that underlies the development of ReactOS then [https://chat.reactos.org/reactos/channels/activity-stream ReactOS activity stream on Mattermost].
  
 
=== When is 0.5 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 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.
+
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 the current stage.
  
 
We perform several Coordinated Testings via [https://chat.reactos.org/reactos/channels/town-square/ Mattermost discussion channels]. 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 [https://chat.reactos.org/reactos/channels/town-square/ Mattermost discussion channels]. 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 Solid [[Roadmap]]? ===
An OS covers a wide area of knowledge, it is not an App, it is a whole,-on-the-way-to-becoming-first-class OS.
+
An OS covers a wide area of knowledge, it is not a mere App. ReactOS is first-class OS but heavily under development.
So we need developers from all the areas. It's not easy to find skilled developers 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.
+
As a result, we need developers from all areas of expertise. It is not easy to find skilled kernel and o/s experienced developers, in addition, none of our regular contributors are paid. They have their real-life-work, families, and problems. They are just like you and me. You cannot press anyone to work in any particular area as their involvement is based upon voluntary contribution. We can just thank each contributor for dedicating some time to make this OS become a reality.
 +
 
 +
 
 +
=== Why not use UNIX instead? ===
 +
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 in order to hide system details but focus mainly on beginners, thus many advanced users are left out in the rain as most advanced features cannot be accessed from the graphical user interface. Almost all UNIX flavours retain some of the original design flaws but binary compatibility between various versions is usually non-existent.
 +
 
 +
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 standard user interface 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. However, it must be said that modern UNIX derivatives are trying hard to catch up with recent o/s 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.
  
= Developer FAQ =
+
Let me remind you that the ReactOS team are not in any manner, Microsoft haters. The opposite is true, we think that Windows is a superb operating system at its core, created by some genius minds. We simply believe that a FOSS re-implementation of Windows will provide an operating system that is free of some of the design constraints that have been imposed on more recent versions of Windows.
== General ==
+
 
=== What language do the developers use? ===
+
=== Why don't you help develop Linux instead? ===
C and assembly, with very little C++ for some included programs. In the OS itself, only C and assembly is allowed.
+
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. In addition, graphical compatibility with Windows requires kernel-level access which is something that Wine cannot provide but merely emulate.
 +
 
 +
=== Why don't you help the Wine project instead? ===
 +
All these projects are FOSS and working with deriving the same technologies. As such they cross pollinate. We work very closely with the Wine project 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 and keeping synchronisation between both projects.
 +
 
 +
Wine has a lot more in common with ReactOS than it does with Linux. The Wine project has the goal of implementing the entire Windows API on top of WineServer. We use these very same APIs in ReactOS and there are only a very few Wine DLLs that cannot be used within ReactOS. These are [[Ntdll.dll]], [[User32.dll]], [[Kernel32.dll]], [[Gdi32.dll]] and [[Advapi32.dll]]. It is our view that Linux + Wine can never be a full replacement for Microsoft Windows™ due to the separation that exists between the Linux kernel and Wine's graphic device calls. This separation means that Windows applications running in Wine can never operate as quickly as they would on a fully Windows compatible o/s. This is especially important for graphical applications that run within Windows' Kernel level to achieve much quicker access for graphical operations.
 +
 
 +
ReactOS has the potential for a much higher degree of compatibility – especially for Microsoft Windows drivers – which Wine does not address.
 +
 
 +
=== Why target x86 instead of today's fashionable CPU architecture? ===
 +
The ReactOS project has targeted the x86 architecture from the earliest days of the project. x86 hardware designed for Microsoft Windows is plentiful and drivers exist for the widest variety of peripherals. x86 may be the CPU architecture familiar to the largest number of skilled developers and programmers.
 +
 
 +
Please note that Apple Computer has changed architectures from 68000 to PowerPC, x86, x64, and now touts ARM for its future laptop and desktop computers. Will RISC-V be next?
 +
 
 +
=== Why use ReactOS? ===
 +
A lot of people in popular discussion forums quite rightly 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?”.
  
=== Why only C and assembly? ===
+
We can answer all these questions, but it's not in one simple magic word. Let's name a few key issues here that may help to answer that question:
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? ===
+
First and foremost, no-one should actually be attempting to use ReactOS as their daily driver as it is an Alpha grade operating system under heavy development now. This means that it is unstable and possibly even quite capable of damaging your data. However, as ReactOS approaches beta it will steadily become more usable. When it finally attains stability, the following are a few reasons why you might want to use ReactOS.
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.
+
*There are plenty of *nix operating systems out there - this is very good. However, they have different end-user targets (they perfectly fit the server market but the desktop still isn't fully conquered and several usability factors work against most Linux-based alternatives in the market today).
  
=== Is there any kind of coding style that is expected? ===
+
*There is currently no other operating system that implements the kernel architecture design of MS Windows NT™ so if you are unhappy with the direction or goal of Windows there is little real alternative. ReactOS was started as a “clone” of Windows NT to alleviate this situation. To demonstrate the concept of o/s cloning, GNU/Linux is the best for comparison here: Linux was started as a “clone” of Minix and Unix, eventually going on to be a Unix replacement.
''See [[Coding Style]]''
 
  
=== How will you avoid the inevitable "Microsoft" text throughout ReactOS? ===
+
*There are no plans for any of Microsoft's versions of Windows to be released under a GPL-compatible license (at least, the ReactOS team and the world are not aware of them).
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? ===
+
*Linux+Wine is never going to be a complete replacement for a full Windows system. It's not only because of Linux (despite some user-friendly Linux distributions out there) and not only because many users might find a transition to Linux/BSD difficult but it is largely due to design and implementation decisions of Linux and Wine architectures which prevent 100% compatibility.
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? ===
+
*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 the NDIS Wrapper for NT network card drivers, there are rumours about supporting NT video drivers and Captive NTFS for NT filesystem support) but ReactOS solves them from day one by its very design – being compatible with existing drivers and existing applications.
Refer to our [[Build Environment]] page for information on how to compile ReactOS from the source.
 
  
=== What about the so-called SEH-problem? ===
+
*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 that 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.
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 ==
+
*Backwards compatibility. This is something vital for many people and companies but the development philosophies 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 backward compatibility with existing applications designed for the whole Windows NT family whilst providing compatibility to later developments too.
  
=== Why is the graphics subsystem not in Ring 3 but in Ring 0? ===
+
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 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? ===
+
= Developer FAQ =
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.
+
There are several ways to contribute to the development of ReactOS. The most often encountered problem is not knowing where to begin or what to do. If you are able to program or understand the technical information that is pertinent to this project, helping the development can be easy.  
  
=== Does ReactOS have the same security problems as Microsoft Windows™? ===
+
Please visit the [https://reactos.org/wiki/Development_Introduction Developer Introduction page] for an overview for developers so that you know where to begin.
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 ==
+
The full developer Wiki page will be found here: [https://reactos.org/wiki/Welcome_to_the_ReactOS_Development_Wiki The Developer Wiki]
=== 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 =
 
= See Also =
Line 228: Line 268:
 
* [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]]
+
[[Category:FAQs]]

Latest revision as of 16:35, 31 January 2024

Contents

User FAQ

What is ReactOS?

ReactOS (short for React Operating System) is an open-source project to develop a quality operating system that is compatible with Microsoft Windows™ NT applications and drivers. In effect, ReactOS aims to replicate Windows NT. Please be aware that ReactOS is in ALPHA - what this means is that ReactOS is under heavy development and therefore NOT ready for every day use.

A short but important history lesson regarding NT: What the general public perceives as current 'Windows' - the user and application interface is actually just one part of the modern Windows NT™ operating system. This in turn is provided by the Win32 subsystem which is a layer that sits upon the NT kernel. The term "NT" refers to the whole Windows NT series from 2000 until today. This range comprises NT version 3 to NT5 (2000, XP & 2003), then from NT6 (Vista, 2008, 7, 8, 2012 & 8.1) to NT10 (10, 11, 2016 & 2019). The NT architecture was originally designed by a team led by David Cutler, a former lead developer of Digital Equipment's VMS operating system. It took the team more than 4 years to combine the best of UNIX, VMS, and OS/2 to create the NT architecture. ReactOS aims to replicate NT starting at NT5 (Server 2003) as NT5 was a stable and functional o/s whose fundamental components (APIs) still comprise the basis of later versions of Windows. An additional aim is compatibility with many of the more modern APIs from later NT6 versions of the Windows o/s.

Is ReactOS legal?

Yes. ReactOS is fully legal and adheres to the strongest standards of accountability, ie. it does not use any leaked version of Microsoft's code.

Windows source code is not publically available. ReactOS Developers (devs) do not and have not looked at any leaked Microsoft Windows™ source code. They can only use the publically available documentation that Microsoft publishes and that which exists is not comprehensive. As a result, ReactOS devs have to test Windows in detail to understand how every component of Microsoft Windows works. ReactOS inevitably intends to perform exactly the same as Windows but it WILL accomplish this differently due to having very different source code being programmed by a completely different team of developers. All code in ReactOS is released under the GNU GPL (General Public License) that allows external scrutiny.

Is ReactOS based on Microsoft Windows™ original source code?

No! ReactOS consists only of clean-room engineered 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 is not a variant of linux and uses no linux source code nor drivers. ReactOS has been written from scratch.

Why doesn't ReactOS have a modern UI?

There is no such thing as a modern UI. The UI of current Windows changes according to the whim of Microsoft. This is not the case for ReactOS.

The target for ReactOS is Windows 2003. ReactOS' default UI is based upon that which you will find in Windows 2003. At the moment there are four alternative theme choices and all are suited for desktop operation. Current Windows (10 & 11) uses a theme that is compatible with both desktop and tablet based versions of the o/s. That theme is tied to the corporate design that Microsoft is currently espousing. The themes that come with ReactOS are not tablet-based themes as ReactOS is a desktop based operating system.

There are some users, those that are perhaps a little naive, that believe the UI-look-and-feel is in some way tied to the real functionality of the core o/s but that is not really the case. If you are comparing ReactOS default UI with that of current Windows you may not fully appreciate that ReactOS' UI is configurable and being FOSS will be user-customisable in a way that current Windows simply is not. Eventually it will be possible to configure ReactOS to appear any way you desire with your own 3rd party tools and themes. Simply put, if you want ReactOS to look like Windows 10 or 11 then it is entirely possible. All you need to do is find and install a suitable theme and configure it - or even create one yourself!

Why ReactOS? Why clone Microsoft Windows™?

We do not consider ReactOS as being a mere clone of Windows. We prefer to think of ReactOS as an operating system that is compatible with Microsoft Windows applications and drivers, one that is free and open source. The developers of Linux (an open-source UNIX clone) was created for very similar reasons. Linux is a great operating system but it is not the answer for everybody and it is not compatible with Windows applications and drivers. There are a lot of people that like the Microsoft Windows environment but are very frustrated with Microsoft's policies on various issues.

The Microsoft Windows NT™ family of Windows has a solid design. Not everything is perfect but there is nothing we, the general public can do about it. Without access to the source code there is no way to fix anything - so in response to this we decided that a Windows-compatible operating system must be built from the ground up.

Think of ReactOS as a community-created o/s with honourable goals, ie. to create a free-to-use Windows-compatible o/s that will be quick to install, quick to run and easy to operate. Think of it in the same spirit as a "Linux for Windows users" or perhaps more accurately as a "Windows o/s for Linux users"? Both built in the same spirit with a similar aim in mind.

ReactOS is a desirable object given that it should free Windows development from the shackles of Microsoft's current business model. That is a great target in itself. When, if ever ReactOS achieves beta release, it will provide a home for the continued development of legacy applications (win32, MFC and the like), their future will be rosy well away from the UWP framework that Microsoft has been imposing upon both users and developers alike. Microsoft has in its current business aims the desire to dominate desktop, tablet and IoT devices. ReactOS does not have these aims but it can provide an alternative.

Where can I download ReactOS?

Please visit the download page.

In addition, official ReactOS nightly builds are available at Nightly Build page. Builds are generated for every commit and include full installation and live ISOs, both debug and release versions.

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 Mattermost discussion 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 for languages not yet translated.
  • We need coordinated C developers for core o/s development.
  • We need coordinated C++ developers for o/s utility development.
  • We need coordinated bloggers

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

I am an experienced coder... How can I help?

If you are a developer experienced in C and C++ then join Mattermost discussion channels. There you can ask questions regarding our code and find a component upon which to work. You can select any component that interests you but first contact us and tell us what you are planning to do. Other developers may already be working in that particular area. We're especially in need of people who know how to write NT drivers because our current drivers could use some improvement.

There are several ways to contribute to the development of ReactOS. The most often encountered problem is not knowing where to begin or what to do. If you are able to program or understand the technical information that is pertinent to this project, helping the development can be easy.

Please visit the Developer Introduction page for an overview for developers so that you know where to begin.

The full developer Wiki page will be found here: The Developer Wiki

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++ Mattermost discussion channels, they will solve your doubts much faster.

I'll never know how to code... How can I still help?

Developers always require testing of something. Just come to Mattermost discussion channels and ask for something to test. Developers will give you some ReactOS testing work suited to your skills. 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 the trunk can be reported in Jira, but try to avoid entering duplicate bugs.

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

First of all, don't raise loads of issues on Mattermost or on the forum. By all means, use this as a method of raising awareness on an issue but if you are really going to help raise a ticket! This means opening a bug report on our bug reporting system known as JIRA. You can log in using your ReactOS website credentials. If you have questions regarding filing bugs, please see the helpful WIKI entry here - Filing bugs on JIRA. In addition to this WIKI there also exists a layman's guide to filing bugs, written by one of our regular contributors.

What else can I do to help?

You can promote ReactOS around the web, correcting inaccurate opinions where you find them. You can look for useful FOSS code that can provide an element of Windows that ReactOS does not currently have. You can encourage other developers to contribute to ReactOS. You can send a donation to ReactOS or encourage others to do so.

If you find a wandering kernel developer with no current employment then please lasso him and bring him back to the ReactOS team, we need skilled kernel developers!

Please note that we are not currently looking for graphic designers to redesign the ReactOS UI. We receive a lot of offers in this regard. The offer of your skills is appreciated but we already have a few capable graphical designers in-house and we are not looking to change the current NT5 style UI. If you really do want to contribute in this area then we would suggest building a theme suitable for XP and testing it there. It will theoretically also be installable on ReactOS and you can offer it as a suitable replacement. Please note we will not be incorporating a lot of themes within the os so lower your expectations of having your own unique theme bundled with ReactOS.

Who should I talk to about helping ReactOS?

The best way to get in touch with a developer is to hop onto the Mattermost discussion channels.

A list of the developers showing their Mattermost nicknames and their respective areas of expertise is here: Developer Roles - Names of other developers will be added as time progresses and it becomes clear which are contributing and how.

Note: If you have a query, simply join a discussion group and ask your question. If someone knows the answer, they'll usually answer straight away. If you want the skills of a specific developer then ping that developer and ask them questions directly.

Another way is to join the ROS-dev mailing list: http://www.reactos.org/mailman/listinfo/ros-dev

How can ReactOS help me?

Being involved with developing ReactOS can help in the development of your own personal technical skills. ReactOS development is one of the few locations where potential Windows operating system developers can learn their craft. The majority of ReactOS devs gain their first o/s coding experience digging deep into ReactOS' internals. For others it may well be their very first experience of coding of any sort, ReactOS devs are happy to mentor, direct and teach enthusiastic but dedicated amateur coders. We even offer scholarships to student contributors for specific tasks. Apart from a career within Microsoft, there really is no better place to learn how Windows functions at the deepest technical level. You’ll find in ReactOS the possibility to move from theoretical analysis of how Windows operates to seeing how a Windows-like o/s really operates in real-life practical cases.

If you are a C or C++ coder then working with like-minded coders can improve your skills in relation to Windows APIs, tools, debugging an o/s and the intricacies of developing in a cleanroom environment.

Contributing toward open source projects is a positive act that demonstrates not only where your moral sentiments lie but also shows your ability to work as part of a team towards a common goal. ReactOS is an English-speaking, worldwide community that uses a wide variety of internet-based tools from social networking to online messaging platforms to achieve its aims. Experience of all these skills will be appreciated when you seek job interviews with software companies involved in operating system development. Even an organisation such as Microsoft has been known to absorb former ReactOS developers into its own ranks.

By being involved in ReactOS you have the chance to boost your technical skills to the highest level, to have fun with the sure knowledge that you are doing some good to the world, promoting the use of Free and Open Source Software.

Testing ReactOS on real hardware

Testing on real hardware is especially important as it allows us to receive feedback on ReactOS kernel and driver compatibility. However, it is VITAL that you take precautions to avoid data loss.

IF you choose to test ReactOS on real hardware then be aware that you should never do so using a computer that contains valuable data or even data that has not been backed-up elsewhere. ReactOS is an alpha-grade o/s and as such could easily damage any file system you already have loaded on that system, even if it is on another drive or on a separate partition. ReactOS file system code is as much alpha-grade as is the rest of the system. The simple rule is - just keep your valuable data away from ReactOS. Some suggest that they'd like to use ReactOS now but we strongly suggest you do NOT. By all means, test it but don't try to use it in a real-life situation other than to test it, you could do damage to your data and potentially even to the machine itself, the latter is very, very unlikely but you ought to consider it before you start testing and looking for someone to blame when things go wrong.

If you want your testing to go well then choose XP or Vista era hardware as the typical combinations of hardware from that time are more likely to work with ReactOS. Later, more modern technology is best put to use running ReactOS in a VM as it is unlikely that ReactOS will boot at the hardware level at all.

SUMMARY: Don't install ReactOS anywhere where it could adversely affect your precious belongings, data or otherwise.

How can I test ReactOS without risking my existing hardware/installations?

You can test ReactOS on virtual hardware in a comparatively safe manner. 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.

Why isn't this or that feature in ReactOS?

This question is asked a lot and the simple answer is almost always "because it hasn't been coded yet". If you read this FAQ from top to bottom it will become clear that ReactOS is a community effort. YOU are part of the community if you choose to donate, code or document. IF there is anything you specifically require in ReactOS then you can help make it happen, write specifications, create documentation, search for suitable FOSS code, code it yourself or engage the services of a developer to contribute actual code, you could even raise a bounty! If you want something specific done then the simple rule is - do it yourself! The alternative is to wait for the community to come up with that functionality by itself, it might be a long wait that does not suit your timescales but in the end, if it was part of Windows server 2003 then most likely it will come, just not yet.

Why isn't ReactOS 64-bit?

ReactOS' design intends to replicate that of Windows Server 2003/XP x64 Edition (NT 5.2 kernel). Although there were 64-bit versions of these series of operating systems, the majority of users would have typically encountered only the 32-bit version. Bear in mind that finishing 32-bit ReactOS has been the project's main focus up until fairly recently. The core of ReactOS still requires considerable development and attention. At the time of writing this FAQ, a 64-bit version of ReactOS is under development and progress is steady. Due to this, there is now a functioning 64-bit version of ReactOS under development for you to download but be warned, it is very experimental and as a result, quite unstable. This is expected to change in the near future as the 64-bit version of ReactOS is now receiving constant attention, please be patient in the knowledge that stability will come, in time.

With regard to the current 32-bit target, for most practical purposes 64-bit processes are generally not required to obtain XP/2003 compatibility and currently, 32-bit proves to be enough for the majority of applications that XP/2003 NT5 is ever likely to encounter. A 32-bit Windows program designed for XP/2003 should run and operate on ReactOS as quickly and as functional as you would expect. If you have a 64-bit Windows 2003 program that requires more than 3.25gig of RAM, is compiled to take advantage of 64-bit operation then clearly a 64-bit version of the program is what you require. The 64-bit development of ReactOS will help you in this regard - when it is available.

Many modern Windows 10 programs are now being compiled for 64-bit operation by default and for this reason (and others) will not run on ReactOS at the moment. Note that developers may also maintain a current 32-bit version of your desired program or perhaps an older 32-bit version may also exist for you to test. As long as they use no NT6+ APIs and they function on XP/2003 there is a good chance they will operate on ReactOS too.

Is ReactOS able to run Windows software and Windows drivers?

Yes. ReactOS is able to load Windows XP/2003 software 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 100%. You can visit our Software and Hardware Compatibility databases to know which Drivers and Apps are compatible with the latest ReactOS version.

If your chosen software has Windows XP or Server 2003 as its compatibility target then it ought to run on ReactOS without a problem. If it does not then it is more than likely a bug in ReactOS. Later versions of programs that do not offer XP nor server 2003 compatibility may not work currently but might function in the future as support for more recent NT6 APIs are added to ReactOS.

How about Windows Vista™/7/8 or 10 programs and drivers?

The original target for ReactOS with regard to driver and application compatibility was Microsoft Windows NT 4.0™. Since then, Microsoft Windows 2000, XP, Server 2003, Vista, Win 7, 8 and Win10 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. The ReactOS team currently targets Windows 2003 Server as the official compatibility target as 2003 Server has proven to be one of the most robust.

The present compatibility target for ReactOS is Microsoft Windows Server 2003™ (NT 5.2). Features present in later versions of Windows NT™ based operating systems may also be implemented in ReactOS but this is lower priority until basic NT 5.2 compatibility is completed. Work is continually being done to implement newer NT6 APIs or to provide for their future implementation.

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 fully or correctly because many API calls simply haven't been implemented nor are the existing ones fully operational. In any case, to put it bluntly, ReactOS is in alpha and there are lots of serious bugs. This may be the reason for your software not working.

In this case, raise a bug report but do avoid ticket duplication as it is quite likely that the issue is known already. Search the bug reporting system first for a similar bug as it is important to avoid duplications. Report a bug here: File Bugs.

In most cases it is simply a matter of waiting for the specific bugs to be fixed - then your software will magically start to operate - one day. If you want to speed this process up then donate!

I installed ReactOS but I don't see any applications, why not?

Note that ReactOS is an operating system and by default an o/s doesn't necessarily come with any software pre-installed, that job is up to you. Even though that pre-installed apps may be a trend with current tablet-based OSes, it isn't a trend that ReactOS will follow. So, no Candy Crush here. There is no 'app store' like Apple and Microsoft so you are expected to select and install any software yourself, doing it manually just as we have always done so in Windows. To assist you, ReactOS has an in-built package or application manager called RAPPS that you can utilise to download programs that are known to work on ReactOS. Some of the few 'basic' apps that came with Windows NT5 will eventually come bundled in ReactOS, these may be as simple as Notepad, Paint or perhaps even a simple media player but please note that not all these have been coded yet.

Can I install ReactOS on a pen drive/stick?

ReactOS's state of development is a process of continuous change and as such USB support is under development but improving. For more details See: LiveUSB

My Anti-Virus claims that ReactOS has a virus

Common sense should tell you that these must be false positives. Malware scanners that base their operation upon imperfect malware signatures can flag perfectly safe programs as being infected. In some cases, even Windows components signed by Microsoft have been flagged as malware. That is the case with ReactOS. Your scanner is flagging a ReactOS component as a false positive. We recommend that you use a tool such as VirusTotal but learn how to differentiate a malware report from a false positive. When you come across such an occurrence in ReactOS then take the correct action to report the false positive to your chosen anti-malware provider. Each tool provides such a utility, either through the tool itself or via a web page. That is your responsibility as a user of the tool.

Be assured that ReactOS is FOSS and as such the code can be checked by you and by experts for any hidden malware. Anyone who chooses to do so can review the code at any time. No malware has ever been detected in ReactOS and we aim to keep it that way.

How many cores does ReactOS support?

ReactOS currently only supports a single core as ReactOS does not yet have an SMP-enabled kernel. However, ReactOS does run very quickly on a single core system so the lack of this feature is not as desperately needed as you would imagine, at this stage in ReactOS development. SMP support will come in time but note that this important element IS currently receiving developer attention. Progress is being made. IF you know of any Windows kernel developers available to help work on this feature then do let us know.

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 list of Supported Hardware/Video cards to find a compatible one. Also, report yours as not compatible, it will help others. Share your findings!

My ReactOS installation doesn't produce any sounds, why is that?

It seems your sound card is not yet compatible with ReactOS, search our supported sound Hardware Compatibility list to find a compatible one. In addition, report yours as not compatible as it will help others. Share your findings! If you are running in a VM then there will be some configuration changes that are needed to support sound. You can find those links on that page.

In truth, having said all that, ReactOS sound support is currently at quite an early stage. Lower your expectations, it is one of the areas where ReactOS is still being developed. A good bit of advice for the moment is, regardless of whether you are running ReactOS in a VM or real hardware - turn off the sound...

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 even begin

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

OPTIONAL STEP (make backup files):

  • Back up uniata.sys as uniataB_UP.sys.
  • Back up atapi.sys as atapiB_UP.sys

REPLACING

  • Rename uniata.sys to atapi2.sys
  • Rename atapi.sys to uniata.sys
  • Rename atapi2.sys to atapi.sys

If you damage or lose the files when replacing them, you can restore the backup files from the optional step so make sure you do it.

If your HD controller is an NVMe disk controller device then ReactOS does not currently support this technology. For best results on real hardware use XP era systems that would typically support XP. The drivers for that o/s should or might work in ReactOS.

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 will ReactOS be complete?

The target for ReactOS is Windows Server 2003 but ReactOS will be capable of use before full compatibility is met as components and sub-systems are developed. The definition of usable is down to the use-case and only you yourself will be able to define whether ReactOS is usable for you. ReactOS is already of use now for teaching developers how to re-engineer and code a Windows-compatible o/s but it is not ready for real-life usage where o/s stability and data security is important. Since the definition of what ReactOS should be capable of when it is considered complete may vary greatly between end-users, this question cannot be completely or accurately answered. One thing is for sure: ReactOS will continue to be developed as there will always be a need for improvements, for example, although ReactOS is an NT5 based o/s, support is already being added for NT6 API compatibility to allow modern programs to operate. For more information, visit the Roadmap page (note it is impossible to provide a time-dependent roadmap at this stage of ReactOS development due to the 'community' nature of the project).

Why is ReactOS development so slow?

First of all, developing a Windows-compatible o/s is an enormous task due to the sheer complexity of Windows and its undocumented nature. The team cannot work with Microsoft sourced code and all development has to be done via a process called clean-room engineering ensuring that no ReactOS source is contaminated by developer exposure to any copyrighted code from Microsoft. In addition, the slow development progress is primarily due to the 'enthusiast' approach of development ie. the developers are simply people like you and I. They work on whatever task that takes their interest, spending as much of their spare time as they can, working on the project. In comparison, Microsoft employed as many as 2,000 software engineers for four years to build their first proper o/s NT3, it took another 8 years of continuous improvement to attain NT5 Windows XP.

The complexity of writing an o/s from scratch also requires certain skill-sets that are not generally available within the enthusiast programming community, ie. competent Windows Kernel Developers available to contribute - are thin on the ground. The slow pace is also partly due to a lack of sponsors leading to the majority of code being contributed by unpaid effort. Despite this, recent testing shows how much ReactOS has progressed and it is remarkable how much the project has achieved (see ReactOS Epic Wins) but it has a long way to go before approaching beta stage.

Despite all of this, developers have a firm target and the team is a dynamic one with solid supporters and contributors, meaning that the task is achievable, it'll just take a while. The ReactOS team likes to think of progress as being steady and continuous rather than slow.

If you want to view the activity that underlies the development of ReactOS then ReactOS activity stream on Mattermost.

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 the current stage.

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

Why there is no Solid Roadmap?

An OS covers a wide area of knowledge, it is not a mere App. ReactOS is first-class OS but heavily under development. As a result, we need developers from all areas of expertise. It is not easy to find skilled kernel and o/s experienced developers, in addition, none of our regular contributors are paid. They have their real-life-work, families, and problems. They are just like you and me. You cannot press anyone to work in any particular area as their involvement is based upon voluntary contribution. We can just thank each contributor for dedicating some time to make this OS become a reality.


Why not use UNIX instead?

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 in order to hide system details but focus mainly on beginners, thus many advanced users are left out in the rain as most advanced features cannot be accessed from the graphical user interface. Almost all UNIX flavours retain some of the original design flaws but 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 standard user interface 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. However, it must be said that modern UNIX derivatives are trying hard to catch up with recent o/s 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.

Let me remind you that the ReactOS team are not in any manner, Microsoft haters. The opposite is true, we think that Windows is a superb operating system at its core, created by some genius minds. We simply believe that a FOSS re-implementation of Windows will provide an operating system that is free of some of the design constraints that have been imposed on more recent versions of Windows.

Why don't you help develop Linux instead?

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. In addition, graphical compatibility with Windows requires kernel-level access which is something that Wine cannot provide but merely emulate.

Why don't you help the Wine project instead?

All these projects are FOSS and working with deriving the same technologies. As such they cross pollinate. We work very closely with the Wine project 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 and keeping synchronisation between both projects.

Wine has a lot more in common with ReactOS than it does with Linux. The Wine project has the goal of implementing the entire Windows API on top of WineServer. We use these very same APIs in ReactOS and there are only a very few Wine DLLs that cannot be used within ReactOS. These are Ntdll.dll, User32.dll, Kernel32.dll, Gdi32.dll and Advapi32.dll. It is our view that Linux + Wine can never be a full replacement for Microsoft Windows™ due to the separation that exists between the Linux kernel and Wine's graphic device calls. This separation means that Windows applications running in Wine can never operate as quickly as they would on a fully Windows compatible o/s. This is especially important for graphical applications that run within Windows' Kernel level to achieve much quicker access for graphical operations.

ReactOS has the potential for a much higher degree of compatibility – especially for Microsoft Windows drivers – which Wine does not address.

Why target x86 instead of today's fashionable CPU architecture?

The ReactOS project has targeted the x86 architecture from the earliest days of the project. x86 hardware designed for Microsoft Windows is plentiful and drivers exist for the widest variety of peripherals. x86 may be the CPU architecture familiar to the largest number of skilled developers and programmers.

Please note that Apple Computer has changed architectures from 68000 to PowerPC, x86, x64, and now touts ARM for its future laptop and desktop computers. Will RISC-V be next?

Why use ReactOS?

A lot of people in popular discussion forums quite rightly 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 can answer all these questions, but it's not in one simple magic word. Let's name a few key issues here that may help to answer that question:

First and foremost, no-one should actually be attempting to use ReactOS as their daily driver as it is an Alpha grade operating system under heavy development now. This means that it is unstable and possibly even quite capable of damaging your data. However, as ReactOS approaches beta it will steadily become more usable. When it finally attains stability, the following are a few reasons why you might want to use ReactOS.

  • There are plenty of *nix operating systems out there - this is very good. However, they have different end-user targets (they perfectly fit the server market but the desktop still isn't fully conquered and several usability factors work against most Linux-based alternatives in the market today).
  • There is currently no other operating system that implements the kernel architecture design of MS Windows NT™ so if you are unhappy with the direction or goal of Windows there is little real alternative. ReactOS was started as a “clone” of Windows NT to alleviate this situation. To demonstrate the concept of o/s cloning, GNU/Linux is the best for comparison here: Linux was started as a “clone” of Minix and Unix, eventually going on to be a Unix replacement.
  • There are no plans for any of Microsoft's versions of Windows to be released under a GPL-compatible license (at least, the ReactOS team and the world are not aware of them).
  • Linux+Wine is never going to be a complete replacement for a full Windows system. It's not only because of Linux (despite some user-friendly Linux distributions out there) and not only because many users might find a transition to Linux/BSD difficult but it is largely 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 the NDIS Wrapper for NT network card drivers, there are rumours about supporting NT video drivers and Captive NTFS for NT filesystem support) but ReactOS solves them from day one by its very design – being 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 that 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 philosophies 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 backward compatibility with existing applications designed for the whole Windows NT family whilst providing compatibility to later developments too.

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.

Developer FAQ

There are several ways to contribute to the development of ReactOS. The most often encountered problem is not knowing where to begin or what to do. If you are able to program or understand the technical information that is pertinent to this project, helping the development can be easy.

Please visit the Developer Introduction page for an overview for developers so that you know where to begin.

The full developer Wiki page will be found here: The Developer Wiki

See Also