:=== RFSD: ReiserDriver ===: * Problem: Dual-boot Linux/Windows users cannot access ReiserFS partitions transparently, from any application, and efficiently, without needless file copying. * Solution: The ReiserDriver will provide an Installable File System kernel driver allowing the Windows operating system to natively access ReiserFS partitions. * Benefit: Users will have seamless access to Linux data when using Windows, easing the migration path to Linux, and increasing the adoption of ReiserFS. ReiserDriver will be an Installable File System Driver (IFSD), used to natively read ReiserFS disk partitions under Microsoft Windows 2K/XP/2003. ReiserFS partitions will appear as additional disks to the Windows operating system, allowing files on ReiserFS partitions to be transparently accessed from *any* Windows application. :=== Benefits to the ReiserFS and Linux Communities ===: Benefits to the Linux user community: * No operating system is an island. Providing access to ReiserFS data will make the lives of many open-source enthusiasts, who must also occasionally use Windows, much easier. * Allowing data to be used seamlessly between the two operating systems will ease transitioning to an open source OS, and may increase the adoption of Linux and other free operating systems. Benefits to the ReiserFS community: * Facilitating greater data interoperability will draw an increasing number of users to ReiserFS. Benefits to the Linux development community: * Identifying and documenting technical knowledge on porting VFS-based file systems to IFS-based file drivers will bring the above benefits to file systems other than ReiserFS. :=== Deliverables ===: Guaranteed Deliverables: * Fully functional read-only ReiserFS v3 IFSD, including a Windows installer. * Article describing architectural tactics for porting Linux VFS code to the Windows IFS interface. * Documentation describing the Reiser file system structure. Possible Extensions: * ReiserFS v3 read-write support. * ReiserFS v4 support. * An architecture re-usable for porting other VFS-based file systems. :=== Project Details ===: ** Executive Summary of Effort ** Today, ReiserFS Version 3 is perhaps the most widely used file system on Linux platforms. Unfortunately, the data on ReiserFS disk partitions cannot be natively read on Microsoft Windows. Many open-source enthusiasts, however, need to use both operating systems. While it is possible to use a dual-boot setup where both operating systems are installed on a single computer, a major difficulty remains: when booted into Windows, a user cannot easily access his data stored on ReiserFS partitions. I propose creating an Installable File System Driver (IFSD) that allows ReiserFS data to be accessed natively from Windows. Using this driver would allow a ReiserFS partition to appear as another disk drive on the user's computer, from which users can transparently access files from any existing application. It is expected that this software will be widely used by Linux enthusiasts. (Similar software for reading older ext2-formatted Linux partitions has been accessed at least 426,000 times.) In the spirit of open-source development, the clients will be the end users. (A representative client, Bedros Hanounik, will serve as the primary client.) Experts on the IFSD and ReiserFS mailing lists will serve as technical advisors. Tony Lattanze will serve as the software development process mentor from Carnegie Mellon. Either Google or WinLibre are candidates to serve as the Summer of Code mentoring organization. The largest challenge to this project will be to port ReiserFS's interface from Linux's Virtual File System (VFS) interface to Windows' proprietary IFSD interface. The architecture created for this system will have the goal of avoiding changes to the existing ReiserFS code while isolating Windows infrastructure. As challenges with this approach surface, the architectural design will appropriately be modified. Resolving the technical challenges of this architecture therefore present the project's first phase. Linux's interface to ReiserFS will be studied and documented in contrast to the IFSD interface required by Windows. This study will be guided by analyzing the ext2fsd tool, which ports the older ext2 Linux file system to Windows. Reflexion Models will be used to produce architectural reconstructions of the studied code. Next, a series of architectural experiments will be performed in order to assess the most appropriate method for performing porting. Requirements will match those of the widely-used ext2fsd tool; the software must be capable of providing read-only access to ReiserFS 3 partitions via the native Windows file system driver API. Two areas that will require further research are installation and configuration. Configuring access to non-standard partition types and installing file system drivers are non-trivial tasks. For broad user acceptance, these two problems will need to be dealt with effectively, and they will be scoped in phase two. Phase 3 will consist of iterative development cycles. Development will be coordinated through SourceForge, allowing interested end-users and clients to browse the source code, obtain development snapshots, and provide feedback. Throughout development, documentation on architectural techniques for porting from the VFS interface to the IFSD interface will be updated. As a deliverable, a formal version of this document may be particularly valuable--this knowledge is currently only embodied in obscure snippets of source code. Where possible, testing will be performed by porting the existing ReiserFS test suite to run on Windows via the IFSD driver. Additional automated unit tests will be constructed to exercise the IFSD infrastructure itself. After the system has been completed, an installable binary will be released on SourceForge, along with the complete source code, and a document describing VFS to IFSD porting. A postmortem will be created describing the successes and failures of the development process used. ( For further information, please see http://rfsd.sourceforge.net/ ) ** Brief Summary of Development Approach ** The project's technical approach will make use of several existing open-source efforts. The ReiserFS source code itself will be carefully studied, and documented at an architectural level. The ext2fsd project will provide an example of how an existing Linux file system using the VFS interface can be ported to a Windows IFS-based interface. The ReiserFS code from GRUB will be studied as a light-weight C implementation of read-only ReiserFS functionality, which may be important in porting ReiserFS to Windows. Lastly, Gerzon Kurz's rfstool (a C++ user-space application used to copy files from ReiserFS partitions) will be studied -- however, since this code is not a C-language file system driver, it will be used only to learn about ReiserFS data structures and to verify the correctness of the rfsd kernel driver. :=== Project Schedule ===: The project estimated at 375 developer hours scheduled over 12 weeks, and will be developed using a tailored version of Alistair Cockburn's Crystal Clear agile development methodology. The goal is to complete the project by mid-August 2005. Work can begin immediately. Further scheduling information, progress and time tracking information, will be available and updated continously on the project website (http://rfsd.sourceforge.net). The following identifies the current high-level milestones: * 6/04: Creation of development and testing environment, and a working debug build of Bo Branten's romfs IFSD. * 6/08: Examination of rfstool source code to determine its architectural approach, ensure a minimal level of correctness (such that it can later be used for testing). An initial test harness will be planned. * 6/21: Architectural reconstruction of the ext2fsd source code to determine the feasibility and reusability of its IFSD interface. * 6/28: Report on the architectural tactics used to port from the VFS to the IFS interface, based upon a series of architectural prototypes. These prototypes should culminate with a fully functional prototype of Linux's 255 LOC ramfs, the minimal VFS-compliant file system. * 6/30: Detailed final development schedule. * 8/09: Final deliverable and postmortem. :=== Developer Bio ===: I am a 23-year-old graduate student, completing my Master's in Software Engineering from Carnegie Mellon. A magna cum laude graduate of Tufts University, I have three years of industrial programming experience in fields involving embedded devices, real-time networks, and scientific computing. This project, however, combines two of my greatest interests: file system development, and open-source development. While I have been a long-time Linux user, and have been involved in small-scale open-source development efforts (including Doxygen and Slicker), I have not yet been able to commit my time to a major open-source project. This summer presents exactly that opportunity. In the past, my interest in file systems has led me to create a prototype Linux VFS-based project, allowing ZIP archives to be mounted as file systems, with transparent on-the-fly compression /decompression of files. As part of a Linux Kernel Internals class, I carefully studied the ext2 file system. The rfsd project will allow me to gain further knowledge, studying not only ReiserFS, one of the most outstanding file systems in existence, but also the design and implementation of file system drivers on both Windows and Linux. Perhaps most importantly, I will be immersed in the open source development experience.