I was an active developer of ReactOS for about the time period of 2003-2007, including acting as the release engineer for the project for 2 years.
I feel like I can speak from unique stand point as I saw everything from the inside.
ROS is a lot of things, but one thing it is NOT is production ready.
From what I can tell, not a lot in the process has changed since I left. I am sure a lot of things code wise have changed but not enough to make a marginal difference.
One of the biggest issues ROS faces is the lack of testers. Since it can't be used a production OS very few people will actually test it. When I was there, we had 2 dedicated testers. For a whole operating system, that will not cut it.
Another issue is with driver compatibility. While it is true that it runs good on emulated hardware, it has a long long way to go before actual Windows drivers let it run on actual hardware. One small thing in the driver can cause everything to stop working. And with only ~20 active developers at the time, there is a finite set of hardware that can be debugged on. Not to mention only 3-4 of the 20 developers were skilled enough to fix issues with device drivers.
ROS is also fighting uphill battle by chasing Windows when Windows has 100s of developers working on it. I left ROS and worked for Microsoft for two years so I also know how much faster MSFT is going then ROS. Though, even if they got to full XP compatibility it would be one of the most impressive feats I have ever seen of open source, I just don't see it happening anytime soon.
And finally, the last main issue with ROS is the developers itself. There was so few dedicated, we only had ~30 people with write permissions. Of those, only 15 were active. And those 15 were all working in their own area. I worked in shallow (read: non complex) Win32 API and user applications (cmd.exe, control panel, etc...). But everyone had their own section they were interested in and they worked at their own pace with little to no oversight. You either need focus/vision or resources to make real technical progress on a project this large. Without one of those you have no chance. And ROS didn't have either.
All that said, I loved working on ROS. It taught me how to write real code and I learned way more from working on ROS then I did getting my degree. The people on a personal level were great, and some of them were the most technically sound developers I have ever met. Sadly, a whole OS is being carried on their back.
Working on drivers should be put to one side (if indeed they are spending time on that) and they should work on the emulated hardware only until they reach XP-level. This would be a massive achievement that millions of Linux users etc. could benefit from in terms of running their Windows-only apps inside VirtualBox or the like, allowing them to dump their dual-boot setups just to run Quicken or what have you.
Your point about how Microsoft is accelerating faster than ReactOS is exactly why I don't pay much attention to ReactOS anymore. For a while, MS was sort of stagnating and the idea of catching up (reasonably well) was within reason, but now that they've kicked into gear, I just don't see it happening, especially with more focus on WPF, Silverlight, and Windows 8.
If you read the linked article, it quotes the main ReactOS engineer as saying it was "ready for 80% of real world use". This is what Brandon is addressing.
This has always seemed like a solution looking for a problem, to me. There are better Open Source operating systems for (more than) 80% of real world problems, and have been since before ReactOS began. If you're choosing an OS that can't run most of the big apps on Windows, anyway, why not simply choose a better OS to start with. It's obvious that Linux and UNIX systems are pretty vastly superior to Windows in all but application support...and there are several very good free and Open Source Linux and UNIX systems. And, as far as I can tell, WINE can run as much or more Windows software as ReactOS.
It's a tremendous amount of work to make a bug-compatible version of Windows. Of course, I can't argue with people and what they want to spend their time on, but I sure as heck wouldn't volunteer to work on a Windows clone. It seems a big waste of some really talented people's (and I'm certain they're quite talented; getting this far is a monumental feat) time.
Well from an outsider look I'd say the problem is the majority of businesses are running Windows and have reasons not to move off Windows. Even basic reasons such as staff training. This from what I can tell is addressing that issue.
As for your statement about Linux and Unix being better thats far from true. There are many areas where Windows doesn't compete at all with those systems, but its also completely true that Linux and Unix is completely rubbish at certain things Windows excels at.
Like most things you should choose the OS that meets your needs, and for most people using a Microsoft stack, with Microsoft trained users, using software aimed at Microsoft platforms then this could be the answer.
Proof will be in the pudding of course, these guys are far from ready at this point, and are approaching the hard part of a project.
> Well from an outsider look I'd say the problem is the majority of businesses are running Windows and have reasons not to move off Windows. Even basic reasons such as staff training. This from what I can tell is addressing that issue.
I don't know how things are in other countries, but here in Russia if you are not using windows programs for accounting (namely 1C:Enterprise), you're going to have troubles converting them for the federal tax service. This is effectively a microsoft/1C monopoly since 1C:Enterprise only runs on windows stack (there has been some success with WINE, but it is not supported, of course). That is why lots of small businesses use pirated windows and could benefit from development of alternate windows compatible OS like ReactOS.
"Proof will be in the pudding of course, these guys are far from ready at this point, and are approaching the hard part of a project."
They may be approaching the hard part of the project, just as the desktop is becoming irrelevant. It's already too late. It was too late when they started, but it's really too late now.
"Like most things you should choose the OS that meets your needs, and for most people using a Microsoft stack, with Microsoft trained users, using software aimed at Microsoft platforms then this could be the answer."
I don't see how it could be. It is a clone of Windows XP (a ten year old operating system, no longer supported by Microsoft). It runs on less hardware, works with fewer Windows applications, and works less reliably, than a Linux system with WINE (which I also don't consider a useful substitute for Windows in the context you're speaking of, but it's better than ReactOS currently, and probably well into the future, since it has more active developers, more commercial support, and smaller more obtainable goals).
Again, I think ReactOS is a solution looking for a problem.
[Note: I run Debian on my laptop and servers. And I use Gnome 3! <ducks>]
>Well from an outsider look I'd say the problem is the
>majority of businesses are running Windows and have reasons
>not to move off Windows.
[I understand that you soften this later, but...]
This is not a Bad Thing. I certainly would say that MS has used some nasty tactics to gain dominance, but more power to them if they provide value to customers.
Personally, I don't see the value in the ROS project. MS provides a product that people use on servers and that's fine. The ROS team's calories would be much better expended helping Linux improve.
> its also completely true that Linux and Unix is completely rubbish
> at certain things Windows excels at.
I'd love an example here. AFAIK, ROS is basically a server OS and I'm not aware of any places that Windows demolishes Linux/Unix in the server arena (except in the I've-got-an-army-of-Windows-IT-folks department).
As for your statement about Linux and Unix being better thats far from true. There are many areas where Windows doesn't compete at all with those systems, but its also completely true that Linux and Unix is completely rubbish at certain things Windows excels at.
- Better GUI integration
- Standardized and complete API going beyond simple libc and POSIX (which are quite long in the tooth now)
- Access control lists
- Nicer driver system and better driver support
Exactly which things have better GUI integration on Windows, which are not related to application support? In fact, what does "GUI integration" even mean?
The Windows API is standardized? I suppose, but only because Microsoft is the only one who ships anything even close to a complete implementation of it. So it's standard on the one thing that ships it.
I won't speak to if libc or POSIX is better or worse, but if they're going to be called "simple", the argument can be made that that's the UNIX philosophy, and a more valid critique would be if they were not simple and didn't adhere to the UNIX philosophy. Both Windows and Linux's libc/POSIX are solid APIs and are standardized, and the latter is largely documented where they diverge.
Linux supports POSIX access control lists. I actually find the Windows ACL support to be extremely subpar: the command line utilities are tough to use from cmd.exe, and the GUI for handling ACLs is brutal, albeit functional. The getfacl and setfacl Linux utilities are not super fantastic either, but they are there.
What's the qualification for a "nicer" driver system, that isn't better driver support?
> What's the qualification for a "nicer" driver system, that isn't better driver support?
Windows effectively has user-installable drivers and Linux, for intents and purposes, does not. In fact, Windows has the equivalent of apt-get for drivers -- a central auto-updating repository. Comparably, Linux is a backwards wasteland when it comes to drivers and driver management.
I can't remember the last time I had to install a driver using anything other than apt-get or yum on my Linux desktop or laptop -- although I do have a hand configured xorg.conf that I've been using for years. The majority of drivers are available with the kernel, and those that are not and are popular are packaged up by the distribution maintainers.
Windows only has "user-installable drivers" if you don't pay attention to the fact that you're effectively sudo-ing when installing them. Driver installation is an Administrator level task, as it should be. On a Linux system, when you're in Gnome and use a GUI package manager to install a driver or any other package, you will be asked for a password to either su to root (on Fedora/RHEL/CentOS) or sudo (Ubuntu). This is the same as being asked to confirm on Windows when running as a user with administrative privileges.
And, I'm not sure I buy that Linux is a backwards wasteland on this front. It has more drivers than current Windows versions, and more of my hardware, particularly stuff that's more than two or three years old, Just Works in Linux. I usually have to go digging on the web to find drivers for at least a few devices on any particularly laptop or desktop machine when I install Windows. That's usually only the case for more advanced 3D drivers on Linux.
Windows does have a more stable ABI (the last change, I think was from XP to Vista), while Linux does not. This could be argued to be a point in Windows favor. When the ABI changes, a driver on Linux has to be recompiled. This was historically defended by Linus based on the fact that the majority of Windows crashes are caused by 3rd party drivers...and Linus wanted Linux to be as immune to those poorly made 3rd party drivers as possible by making it hard for them to exist. Drivers in Linux, generally speaking, would go across Linus' screen (or at least one of his lieutenants) at some point, making it possible to insure a high level of quality and consistency in anything that ended up in a position of being able to bring a Linux system down. Linux historically has extremely admirable reliability because of this (and other factors).
The trade-off is that 3rd parties, like hardware companies, cannot release a driver and forget about it. A driver for Linux released in binary-only form today will not be useful in a year or sometimes even a few months. But, that's also proven to be true for Windows now that Microsoft has changed the driver ABI and raised the barriers to building drivers for Windows. A Windows XP driver is useless on Windows 7, so vast swaths of previously Windows-compatible hardware is no longer usable with Windows.
Linux also has apt-get (or yum) for drivers. When you update your kernel, you update all of your drivers to the latest version. Since drivers are tiny and disks are big, there's little reason to have them all packaged up separately. And, Debian/Ubuntu and RHEL have methods of distributing drivers separately from the kernel in package form. It's just rarely used, since so many drivers are included in the kernel.
So, I have historically found Windows to have better driver support, and it is occasionally more convenient to get hardware running under Windows than Linux. But, the gap has shrunk remarkably in recent years (nVidia and ATI both provide pretty good drivers for Linux now, and Intel has for a very long time), and lately I'm more often frustrated by Windows than Linux, since I have some older hardware that was quite expensive that I'd rather not replace (multi-channel 24 bit Firewire audio interface, for instance) that no longer gets driver updates from the vendor. It goes both ways, and I don't believe it is as cut and dried as it was even a few years ago.
I don't know what this means. GUI integration with what?
"- Standardized and complete API going beyond simple libc and POSIX (which are quite long in the tooth now)"
Gnome provides a quite impressive and modern GUI API, and so does KDE. SQLite has a great database API. MySQL has a great database API. OpenGL is a great 3D API (admittedly lagging behind DirectX, since few games target OpenGL to push it forward). SDL is a solid media API. There are great APIs for big math, low-level system constructs (Boost, for instance), disk and data, media of many types, etc. There's a library for everything in a Linux system, probably three or four of them. Just because they are not from one vendor does not mean they don't exist, or that they aren't good.
To insist that Linux and Open Source operating systems play by the same rules as Microsoft is to stack the deck in favor of Microsoft and Windows. Luckily, Open Source can opt out of that system, and build awesome things without needing a central commander to determine what is and isn't available. Saying that libc and POSIX are the only standardized APIs on Linux is like limiting yourself to only using applications from Microsoft; thus removing nearly all of the reasons to choose Windows. I have conceded that Windows has vastly superior application support...unless you're willing to say that Windows only has a couple dozen applications, because no others come from Microsoft, you can't ask me to give Windows the nod on libraries because they don't all have a POSIX or standards body approval on them (Microsoft doesn't get outside standards approval for most of their APIs either, while we're on the subject). A modern Linux system has vastly broader and deeper API and library support in almost every area. You may prefer Windows APIs, which is fine, but a lot of folks prefer the Linux options, and there's definitely a lot more variety in the Linux world.
Linux also has way more awesome and plentiful mobile APIs than Windows. Windows isn't even a contender in this space.
"- Access control lists"
Nope.
"- Nicer driver system and better driver support"
I disagree with the "nicer driver system" assertion, but even when we just take it to mean "better support for the most modern hardware", ReactOS doesn't replicate it, anyway. Driver support in ReactOS is vastly worse than driver support in any modern Linux distribution, which is mentioned in the article, where it discusses running ReactOS on virtual hardware, and the problems that come when running it on real hardware. ReactOS is also currently trying to replicate Windows XP. Drivers are no longer coming out for XP for the most modern gear, and new drivers don't work with XP, so even when they reach perfection in ReactOS and it can load all XP drivers flawlessly, they will still have much worse driver support than Linux.
I'll also mention that I lately have more problems with drivers on Windows than I do on Linux. I have a handful of older USB and Firewire devices that simply won't work with the latest version of Windows because the manufacturer isn't making new drivers, but continue to work fine on modern Linux versions. From my current perspective, Linux has much better hardware driver support...though if I were buying new hardware, I might have to check the web to be sure there's a decent driver for the hardware I want to buy.
But, this is all just a bunch of random Windows/Linux fanboy ranting about random ancillary stuff.
UNIX is a superior design at its core. The simple beauty of it is a thing of wonder. Windows, and its creaking DOS underpinnings (C:\, really? we still have C:\?), is a horrorshow by contrast. I made my assertion above based on the belief that anyone who understands both systems couldn't possibly come to the conclusion that Windows is the better OS. It may have more and better applications (it definitely does). It may have more and better drivers (debatable at this point). It may even have a few features that are better than the Linux equivalent (definitely, and the reverse is also true).
But, the Windows OS...the soul of the thing, particularly from the perspective of a software developer, is so obviously inferior to Linux or UNIX that I have a hard time even comprehending an argument to the contrary. This is a limitation on my part, I guess. I just can't comprehend a mind that thinks so differently from my own.
You mean aside from lousy driver support, even in Ubuntu? Try playing a modern game in a Linux distro. You probably can't get Wine to run it properly and if you can there's still your issue with good drivers for nVidia (and possibly ATI) cards.
Do you realize how ridiculous this argument is? Package management is laughably bad on Windows (not as bad as Mac OS X, but still at least a decade behind yum or apt-get on Linux). It's perhaps my least favorite thing about managing Windows systems, in fact, and the thing I hold up as an example of what's horribly wrong with Windows.
I've built and maintained a Python distribution for Windows (Python Enthought Edition, which is used pretty widely in scientific computing environments) that had to work alongside other versions, and I also maintained a Linux version for RHEL/CentOS/Fedora. I would choose a Linux deployment every time. Not because I didn't know how to make it work on Windows; I did, and it did work quite well. But, because of how awful the whole process was.
There isn't even a standard mechanism for third party package updates on a Windows system. How stupid is that? Everybody has to roll their own updater if they want to provide automatic updates on Windows. It's like living in the stone age. Might as well hand out floppy disks.
You're attributing more to my tentative venture than I intended. I'm not saying updating or wide-scale deployment is better on Windows than Linux. I'm saying that, for example, installing Python 2.5 alongside several other versions of Python is easier on Windows.
No, it's better than on Ubuntu. On Debian, installing 2.5, 2.6 and 3.0 at the same time is a matter of doing "aptitude install python2.5 python2.6 python3.0"
To be honest, when installing on Linux is hard, to me it feels worthwhile -- I'm gaining experience and knowledge.
And in contrast, the slightest annoyance on Windows confirms my worst feelings about Windows, and I give up quickly in disguest. For whatever (illusory) reason, Linux comes across as logical and an interesting puzzle that is worth the time invested, whereas Windows comes across as arbitrary and makes me feel like I've wasted my time.
Yes, it's a double standard but what can I say. At least with Linux, you can drill down as far as you want (and with Windows, I feel that I can't but it's partially a case of "Why should I bother, I can't see the source.")
Obviously, you haven't played with anything that uses autotools, have you? :)
> it's partially a case of "Why should I bother, I can't see the source."
I used to think this too.
Then I noticed that my Ubuntu 10.04 machine exhibits hard-lock like symptoms anytime I make -j. I know approximately what the problem is: the kernel scheduler isn't giving enough time to the UI while it does this, but, even with source, it isn't something I can fix trivially. Just reading the source and seeing where it happens doesn't do anything to make me feel better. It shouldn't ever happen. Period.
Then I noticed that my Ubuntu 10.04 machine exhibits hard-lock like symptoms anytime I make -j. I know approximately what the problem is: the kernel scheduler isn't giving enough time to the UI while it does this, but, even with source, it isn't something I can fix trivially. Just reading the source and seeing where it happens doesn't do anything to make me feel better. It shouldn't ever happen. Period.
Try upgrading to the latest version of Linux (or just upgrade your entire Ubuntu distribution). This problem was fixed by a tweak to the scheduler that creates a scheduling group for each pseudoterminal. For that matter, you probably shouldn't use make -j anyway, since AIUI it just forks until it can't anymore, and doesn't pay any attention to how much RAM gcc/g++ is using. I use make -j [ncpus] instead, which is very nearly optimal (and is optimal with the BFS scheduler).
The last time I used ReactOS it would crash and burn after using it for about 2-5 minutes with their supplied VMware image. This is with only using the applications that were included with it, as well.
This isn't a slam against ReactOS, but it's ready for 80% of real world use if you're using late 90s/early 2000s applications. Seems like Marat might've been stretching the truth to the president.
Ah, interesting, do you have a source on this? I'm very interested to see how much emphasis they are going to place on the new HTML5 / app style of development.
I expect Win32 MFC, ATL etc., will live on forever in some form, but Windows 8 sounds like it will be a break hard towards the future, in an even stronger way than the move from Win32 / MFC to .NET was.
I feel like I can speak from unique stand point as I saw everything from the inside.
ROS is a lot of things, but one thing it is NOT is production ready.
From what I can tell, not a lot in the process has changed since I left. I am sure a lot of things code wise have changed but not enough to make a marginal difference.
One of the biggest issues ROS faces is the lack of testers. Since it can't be used a production OS very few people will actually test it. When I was there, we had 2 dedicated testers. For a whole operating system, that will not cut it.
Another issue is with driver compatibility. While it is true that it runs good on emulated hardware, it has a long long way to go before actual Windows drivers let it run on actual hardware. One small thing in the driver can cause everything to stop working. And with only ~20 active developers at the time, there is a finite set of hardware that can be debugged on. Not to mention only 3-4 of the 20 developers were skilled enough to fix issues with device drivers.
ROS is also fighting uphill battle by chasing Windows when Windows has 100s of developers working on it. I left ROS and worked for Microsoft for two years so I also know how much faster MSFT is going then ROS. Though, even if they got to full XP compatibility it would be one of the most impressive feats I have ever seen of open source, I just don't see it happening anytime soon.
And finally, the last main issue with ROS is the developers itself. There was so few dedicated, we only had ~30 people with write permissions. Of those, only 15 were active. And those 15 were all working in their own area. I worked in shallow (read: non complex) Win32 API and user applications (cmd.exe, control panel, etc...). But everyone had their own section they were interested in and they worked at their own pace with little to no oversight. You either need focus/vision or resources to make real technical progress on a project this large. Without one of those you have no chance. And ROS didn't have either.
All that said, I loved working on ROS. It taught me how to write real code and I learned way more from working on ROS then I did getting my degree. The people on a personal level were great, and some of them were the most technically sound developers I have ever met. Sadly, a whole OS is being carried on their back.