Hi, I had a chat with Olaf a few days ago, regarding a few issues, and we thought it would be beneficial to bring them up for collective brainstorming.
Background information: In the past and nowadays work in ReactOS is getting done "as it flows". E.g. if we get developers, who wanted to implement sound support, would do it, and we advertise this in a release. Or, like Evgeniy Boltik who shows a nice cooperation with Timo, Jim and Ged on fixing various nasty palette and drawing issues which were not touched for a few years, often fixing errors introduced in revisions like 1000 or 4000. There is no central plan, just a very rough roadmap, mainly relatively short-term.
Same applies to testing team: we usually perform testing when an obvious problem occurs, in our very well known apps list, which someone remembers to work in a certain revision. If that's known to regress, Olaf usually organizes a regression-testing, a guilty revision is found, and problem hopefully gets fixed.
All of this is very good, for an operating system which is developed just for the sake of development: noone sets any milestones, noone demands to meet them. And noone pays for achieving them either.
But when Linux got a real spin-off? An answer is: when it aimed to become useful for the most needed application - as a platform to run a web server and a mail server. http://en.wikipedia.org/wiki/ Linux_adoption says that in 2001 Linux servers experienced 15% annual growth rate, and by 2004 50% of the worldwide blade servers are shipped with Linux-based OS.
This was preceded by hard work of a number of people, like Andrew Morton. Who aimed not just at gettign more and more features, but more at getting existing code as stable as it's possible. That included going through all the issues people reported, asking them to provide more info if needed, finding the actual bug, fixing it, asking them to retest... At some point all most frequently encountered bugs were fixed, and potential Linux usage base extended substantially.
For ReactOS, we have different aims, but we could use this strategy now, when core parts of our operating system are becoming feature- complete and mostly need debugging, and when we finally are getting very close to going Beta.
This involves, first of all, getting hardware support at a decent level. From a billion of personal computers in the world, we could easily support the most common hardware without need to develop complex drivers or different HALs. Even SATA would not really be a strong requirement, since most of PCs have IDE compatibility mode, which many non-technical people even forget to switch to "SATA" mode in the BIOS when installing their Windows OS! Again Linux's philisophy could help us: they are proud that their hardware is Linux- compatible, while we are embarrased that "our OS doesn't support specific hardware". Feel the difference.
Some good step in this direction is this wikipage: http:// www.reactos.org/wiki/index.php/Supported_Hardware/Network_cards
Next, software. We have a unique situation when our OS targets a vast amount of WinAPI compatible software. There is a lot of bugs in our Win32 subsystem, however if we can find a set of apps we support right now, or find common software which we could easily support - it should be our "road ahead".
Now back to what I started writing this email about. I was speaking with Olaf and Klemens about the software compatibility database. Existing "Support Database" is not used by people, and not liked by most of our developers and testers because it takes more time to file an entry into that database than to actually install ReactOS and test the app. Another problem is that community-driven database won't work since we can't confirm people's data. What we thought would work good so far is a list of working apps. As Olaf said: "it'll be ugly, not scientifically statistically fine, crude comparing to wine appdb and limited. Bit it can be done". The amount of text to enter for an app entry must be as minimal as possible: app name, platform (real hardware, emulator), bug number in bugzilla for possible issues (max. 2 bugs for one entry). Also, no division for "installs, but doesn't start" or "works only via manual installation". Either it works, or it doesn't, no intermediate stages. As we thought later, it may even be just three columns: appname, ROS revision, Comments.
A wikipage could suit this need, but if necessary, we could think further of some web-app.
I think that's enough for one email, I'll be glad to listen to comments and more ideas. Everyone is welcome to take part in the discussion.
With the best regards, Aleksey Bragin.