Booting from BTRFS
The headline feature for 0.4.10 would have to be ReactOS’ ability to now boot from a BTRFS formatted drive. The work enabling this was part of this year’s Google Summer of Code with student developer Victor Perevertkin. While the actual filesystem driver itself is from the WinBtrfs project by Mark Harmstone, much of Victor’s work was in filling out the bits and pieces of ReactOS that the driver expected to interact with. The filesystem stack in ReactOS is arguably one of the less mature components by simple dint of there being so few open source NT filesystem drivers to test against. Those that the project uses internally have all gone through enough iterations that gaps in ReactOS are worked around. WinBtrfs on the other hand came with no such baggage to its history and instead made full use of the documented NT filesystem driver API.
Parallel to this effort was more basic work needed to expose the option to use BTRFS in the ReactOS installer and bootloader. It is all well and good for ReactOS to have a working driver, but the user ultimately needs to have a way to put it into use. The combined effort proved fruitful indeed, and users are invited to try out BTRFS support in 0.4.10. The newness of the feature will mean there will be the inevitable bug here and there, but it can only be with the community’s assistance in reporting them that the project can further improve.
When someone uses ReactOS, the interface through which they do so is the shell. And underpinning the shell’s functionality is the shell32 library, whose improvements are often directly exposed to the end user. For the past few months Katayama Hirofumi, a longtime contributor to the project, has fleshed out several new features while making improvements to other existing ones.
For those of us whom do any significant amount of work on the command prompt, a wide range of tricks and shortcuts exist to make our lives easier. One such trick is being able to drag and drop a file or directory from the file explorer onto the command line in order to get its full path. And to complement this trick, Katayama-san has also made improvements to those of us that are steeped in the graphical shell more than the command prompt. In the past ReactOS offered only extremely limited means of interacting with things in the shell. Folders in explorer were rendered only a certain way, you could not change whether to use a single versus double click to enter them, and interacting with multiple windowed applications was clunky and more limited than one might expect. All this and more have been improved, and the following screenshot sums up that improvement far more succinctly than mere words can.
The overall look and feel of ReactOS has also improved, or rather that of applications that run upon it. One special class of applications would be installers, of which the MSI family performs graphical rendering based on font heights. Users are likely to recall in the past a certain something just looking off when running MSI installers, just something slightly askew in how these installers appeared.
As seemingly small as these features may sound, many of them are expected by a user and their absence does not go unnoticed. Indeed the greatest success ReactOS could achieve is to have a user not even have to think when they navigate the system, everything working the way they expect. Katayama-san’s work takes us further down that path, the culmination of a multitude of small steps along the way.
Finally, the project would be remiss to not mention the contributions of other developers to the shell’s continuing improvement. While Hermès Bélusca-Maïto’s important backend work remains somewhat inscrutable to end users, fixes by Denis Malikov and Jared Smudde to deal with file copying and shortcut creation will likely be more easily appreciated as another sign that ReactOS works, as expected.
Stability is generally a hard thing to quantify, since it is often very subjective. Probably one thing that we can all agree on is that anything that prevents ReactOS, or applications running on it from crashing is a plus in the stability column. To that end while improvements to the memory management stack by Timo Kreuzer and Pierre Schweitzer might sound opaque and vague, they are nonetheless instrumental to ReactOS’ stability.
Simultaneously, each time a major widely used application achieves full functionality on ReactOS, also constitutes a victory. A contribution by Stanislav Motylkov to the C Runtime library used in ReactOS now allows Git, the version control software used by this very project, to finally work correctly. A nice follow-up to the self-hosting achievement from last time around, we think many would agree.
And of course no one is a fan of BSoDs, even if they evoke a slight sense of nostalgia. Fortunately for ReactOS’ sake, Mark Jansen was able to nail the cause of one such crash relating to the FreeType font library. Better that blue screens are consigned to our memories than be a perennial part of our daily computing experience.
The surest metric of stability is however arguably how much of ReactOS and the desired collection of applications one wants to run actually work. For this, there as yet remains no substitute for human testing. To that end Joachim Henze has invested a tremendous amount of time, performing what amounts to continuous regression testing even before the formal process of preparing the release began. The fruit of his labors sits before you today, and while you may not see the countless number of fixes, reversions, and tweaks that were selectively filtered to produce version 0.4.10, rest assured that together they combine to provide a worthy testament to the effort that is the ReactOS Project. We hope you enjoy.
Stanislav Motylkov did some work on correctly retrieving BIOS information. Now the blank entries in dxdiag are filled with actual values. The community helped him to gather over 1000 unique BIOS dumps to help him test the implementation.
Third Party Attributions
As always, it would be remiss for the project to not provide acknowledgement of the third party bits we make use of. For this release, Amine Khaldi has synchronized the user-mode DLLs to WINE-Staging version 3.9. Furthermore as mentioned above, ReactOS’ support for BTRFS owes a debt of gratitude to the WinBTRFS project, of which Pierre has synchronized to the latest version, 1.0.2.
JIRA Issues fixed (this includes both bugs and improvements) - 148
Number of commits - 660
The oldest bug fixed for 0.4.10 - CORE-1246
0.4.10-release branch was forked from master on 2018-08-23 after
- Press Release: https://reactos.org/project-news/reactos-0410-released
- General Notes: https://reactos.org/wiki/0.4.10
- Tests: https://reactos.org/wiki/Tests_for_0.4.10
- Changelog: https://reactos.org/wiki/ChangeLog-0.4.10
- Community Changelog: https://reactos.org/wiki/Community_Changelog-0.4.10
- Community video showcasing some 0.4.10 features:
- Download page: https://reactos.org/download