ReactOS 30周年
30 Years of ReactOS

原始链接: https://reactos.org/blogs/30yrs-of-ros/

## ReactOS 庆祝 30 周年 ReactOS 是一个开源项目,旨在与 Windows 实现二进制兼容,它正庆祝自首次代码提交以来的 30 周年。ReactOS 起源于 FreeWin95 项目,是对微软主导地位的一种回应,最初专注于复制 Windows NT。早期开发(1996-2003 年)进展缓慢,需要创建基础内核和驱动程序,其中关键贡献包括最初的存储驱动程序堆栈。 该项目在 ReactOS 0.2.x(2003-2006 年)时期获得进展,增加了一个基本的桌面和更高的稳定性。然而,对可能使用泄露的 Windows 源代码的担忧导致了一次重大的审计和贡献冻结。开发工作在 ReactOS 0.3.x(2006-2016 年)时期继续,引入了网络功能和软件包管理器(RAPPS 的前身),以及 x86_64 端口的启动。 ReactOS 0.4.x(2016 年至今)带来了新的图形 shell,类似于 Windows 资源管理器,以及内核调试支持。今天,该项目拥有来自 301 位贡献者的超过 88,000 次提交和近 1500 万行代码。未来的开发重点是改进,例如新的构建环境、NTFS 和 ATA 驱动程序、SMP 支持、UEFI 兼容性和现代 GPU 驱动程序。ReactOS 依赖于社区贡献——财务支持、代码和测试——来实现其提供可信赖的开源 Windows 替代方案的使命。

这个Hacker News讨论庆祝ReactOS成立30周年,ReactOS是一个开源操作系统,旨在与Windows二进制兼容。用户表达了对该项目的钦佩,并希望它能获得充分的资金支持,一位评论员甚至梦想着资助其完成,以造福世界。 对话涉及了Windows应用程序兼容性的替代方案,例如Wine,以及更广泛的范围——包括设备驱动程序支持——是否能证明ReactOS继续开发的合理性。一些人建议企业赞助可能是一种可行的资金来源,并指出该项目的GitHub页面上缺乏明确的赞助途径。一段轻松的交流以共同资助ReactOS和另一个开源项目Hiaku的提议作为结尾。
相关文章

原文

Happy Birthday ReactOS! Today marks 30 years since the first commit to the ReactOS source tree. It’s been such a long journey that many of our contributors today, including myself, were not alive during this event. Yet our mission to deliver “your favorite Windows apps and drivers in an open-source environment you can trust” continues to bring people together. Let’s take a brief look at some of the high and low points throughout our history.

1996-2003: The Painful Road to ReactOS 0.1.0

ReactOS started from the ashes of the FreeWin95 project, which aimed to provide a free and open-source clone of Windows 95. FreeWin95 suffered from analysis paralysis, attempting to plan the whole system before writing any code. Tired of the lack of progress on the project, Jason Filby took the reins as project coordinator and led a new effort targeting Windows NT. The project was renamed to “ReactOS” as it was a reaction to Microsoft’s monopolistic position in home computer operating systems.

Progress on ReactOS was very slow at first. Contributors had to first build a very basic NT-like kernel before they could develop drivers for it, then continue developing the kernel; not too dissimilar to the process of bootstrapping a new programming language. Once a few basic drivers were written, other contributors were able to learn from these examples and develop other drivers.

While writing this article, I reached out to Eric Kohl. He developed the original storage driver stack for ReactOS (atapi, scsiport, class2, disk, cdrom, cdfs) and has been with the project since 1998. I asked him about his experiences with ReactOS during this time, how he found the project, and what contributing to ReactOS was like during those early days. He wrote:

I think I found ReactOS while searching for example code for my contributions to the WINE project. I subscribed to the mailing list and followed the discussions for a few days. The developers were discussing the future of shell.exe, a little command line interpreter that could only change drives and directories and execute programs. A few days [later] I had started to convert the FreeDOS command.com into a Win32 console application, because I wanted to extend it to make it 4DOS compatible. 4DOS was a very powerful command line interpreter. On December 4th, 1998 I introduced myself and suggested to use my converted FreeDOS command.com as the future ReactOS cmd.exe. I had a little conversation with Jason Filby and Rex Joliff, the CVS repository maintainer. I sent my cmd.exe code to Rex and he applied it to the repository. After applying a few more cmd-related patches over the next weeks, Rex asked me whether I would like to have write-access to the repository. I accepted the offer…

The first version I downloaded and used was 0.0.8. It was not much more than a DOS-based bootloader, some drivers, and a basic kernel that ran a few test routines after initialization.

Version 0.0.8 didn’t use PE files, but flat (position independent) binaries. There was no PE loader, no smss, no csrss, no winlogon, no process heaps, no process environments, no threads, etc. Each and every little feature was a milestone.

Initially there was not a review process at all. You write some code, test it and fix it until it works. Then you commit it. If something failed on another machine, you got a reply on the mailing list and discussed a solution. You fixed the issue and committed a fix. That’s how it worked.

There was always an open and friendly atmosphere. It was and still is always nice to talk to other developers. No fights, no wars, like in some other projects.

Editors note: minor errors were corrected.

ReactOS 0.1.0 was released on February 1st, 2003 and received minor updates up until November 2003. ReactOS 0.1.0 was the first version of ReactOS that could boot from a CD. It had a command line interface and no desktop. Watch a demo of it below, provided courtesy of archeYR.

See ReactOS 0.1.0 by archeYR

2003-2006: ReactOS 0.2.x

During this period ReactOS saw rapid development. New drivers were being built all the time, a basic desktop was built, and ReactOS became increasingly stable and usable. Public interest grew as ReactOS matured. In October 2005, Jason Filby stepped down as project coordinator, and Steven Edwards was voted to be the next project coordinator.

It wasn’t all sunshine and rainbows though. In January 2006, concerns grew about contributors having access to leaked Windows source code and possibly using this leaked source code in their contributions. In response, Steven Edwards strengthened the project’s intellectual property policy and the project made the difficult decision to audit the existing source code and temporarily freeze contributions.

2006-2016: ReactOS 0.3.x

The ongoing audit and contribution freeze from the end of the ReactOS 0.2.x era slowed development and momentum considerably for ReactOS 0.3.x. Following challenges with the audit, Steven Edwards stepped down as project coordinator and Aleksey Bragin assumed the role by August 2006.

Despite the challenges during this time, ReactOS 0.3.x continued to build upon ReactOS’s legacy. ReactOS 0.3.0 was released on August 28th, 2006. It introduced networking support and a package manager called “Download!”. This package manager would become the basis for RAPPS, the package manager built into modern versions of ReactOS. In July 2008, the x86_64 port of ReactOS was started. One year later, ReactOS 0.3.10 imported the UniATA driver, written by Alexandr Telyatnikov (Alter). While we run into limitations with the UniATA driver today, UniATA enabled ReactOS to support SATA storage devices and to support partitions greater than 8GB in size. On February 8th, 2012, ReactOS 0.3.14 supported being built using the MSVC compiler and added visual style support.

2016-Today: ReactOS 0.4.x

ReactOS 0.4.0 was released on February 16th, 2016. It introduced a new graphical shell that utilized more Windows features and was more similar architecturally to Windows Explorer. ReactOS 0.4.0 also introduced support for kernel debugging using WinDbg when compiled with MSVC. Being able to use standard Windows tools for kernel debugging has helped us progress considerably. ReactOS 0.4.0 continued to receive incremental updates every few months up until versions 0.4.14 and 0.4.15 which had years of development updates each. Today, the x86_64 port of ReactOS is similarly functional to its x86 counterpart, but with no WoW64 subsystem to run x86 apps its usability is limited.

The Future of ReactOS

We’re continuing to move ReactOS forward. Behind the scenes there are several out-of-tree projects in development. Some of these exciting projects include a new build environment for developers (RosBE), a new NTFS driver, a new ATA driver, multi-processor (SMP) support, support for class 3 UEFI systems, kernel and usermode address space layout randomization (ASLR), and support for modern GPU drivers built on WDDM.

The future of ReactOS will be written by the people who believe in the mission and are willing to help carry it forward.

If you believe in running “your favorite Windows apps and drivers in an open-source environment you can trust”, you can help make that a reality by making a financial contribution, opening a pull request on GitHub, or testing and filing bug reports. Even small contributions can help a lot!

Statistics

Note: Statistics were calculated at commit f60b1c9

  • Total commits: 88,198
  • Total unique contributors: 301
  • Total files: 31,025
  • Total lines of code: 14,929,578
联系我们 contact @ memedata.com