ROSE

From ReactOS Wiki
Jump to: navigation, search
This page is probably outdated

The information on this page might not be valid for the current state of ReactOS.
A Wiki Administrator should look at this page and decide or discuss what to do with it.


ROSE is the central project which incorporates the upcoming installation and maintenance tool for ReactOS. It adds a range of new features to the installation process, allowing one to install from USB and network among others. A visual interface is provided for every part of the process.


Overview

The ROSE application runs at this point on a NetBSD-based Supporting Environment (SE). NetBSD was chosen because it's a reliable foundation for small (embedded) applications and has extensive hardware support.

The installer component of ROSE, RI2 (ReactOS Installer 2) will feature the following:

  • install from:
    • CD/DVD (IDE/SATA)
    • USB (e.g. Flash stick, USB HDD)
    • HDD (IDE/SATA/SCSI/SAS)
    • Network:
      • HTTP
      • FTP
      • NFS
      • others
  • install to (limited by ReactOS):
    • IDE HDDs
    • FAT(16/32) partitions.
  • create, modify, erase and resize partitions. Detects all mainstream filesystems.
  • bootable from a FD, CD, USB stick or compatible method.
  • unattended setup option.

For the user interface nCurses is being used, filesystem handling is provided by libparted (GParted). Most parts are written in C++.

Status

2009/04/28 - SE tests on real hardware started.

2009/02/08 - We're not dead. SE is nearly done, paving the way for early Alpha tests.

2008/12/19 - Installation wizard is making nice progress, partitioning on the brink of working.

2008/12/04 - Two new programmers have joined up, plus we got a mascot now :) Added a code convention.

2008/12/03 - Initial specification draft has been written plus multiple updates, most installation screens have been created and the SE is being configured.

People

Project Leader: Maya Posch


Project Mascot:

  • Myrjala

Programmers:

  • vicmarcal
  • elhoir
  • anakha
  • d0g

Code Convention

Apparently a list of rules regarding code formatting and such is desirable to avoid confusion (and to make things look pwetty in trunk):

  • A tab should be 4 spaces wide.
  • curly braces ( { and } ) should be used as follows:
void function foo () {
		// fill stuff in here...
	}

	if (bar) {
		// stuff
	}

Also note the space between 'foo'/'if' and '()'.

  • After a control statement like while, if and for, use an empty line.
  • functions and structures/objects are documented both in source and in an external file (which is integrated into the documentation).

The external file lists the entire API declared in the file in question:

<type> <function> ( <argument list> );

	Per function is defined:
	- a summary of its function
	- all arguments with remarks and tips where deemed useful.
	- all output (return) values and errors.

The comments preceding a function are more brief. If a function is declared first in a header, the comment is placed there, with the function implementation preceeded by:

	///////////////////////// 	<<-- 25x
	// FOO				<<-- name of function, all-caps.
	// ---
	// 				<<-- separator and spacer
	// 				<<-- any comments, TODOs/FIXMEs

The comment block accompanying the initial declaration or definition (for short functions) can look as follows:

	/*
		<function name>

		<summary of its purpose>

		Arguments:
			- <argument 1>: <purpose>
			- <argument 2>: <purpose>

		Return values:
			- <return value 1>: <comment>
			- <return value 2>: <comment>
	*/

If the function is obvious enough, the first commenting style is fine too.

  • comments in code is to be used wherever it can illustrate intent. Only comment unusual implementation details. Avoid the obvious.
  • if it's not obvious in which file a function/object is defined, add the filename to the declaration, also group those declarations together if they're in the same file.
  • not commenting the things which should be commented are punishable by either a day-long tickle session with multiple feathers, or by having to modify a pile of old, crufty and generally icky uncommented COBOL code.


Caution

There are two libraries(the most important ones) called menu.h and forms.h(which helps to make forms and menus...if u didnt guess it ;))which seems doesnt work in NetBSD. This is an unconfirmed point(since update is from 2005).

Confirming this must be one of the first priorities.

All the menus(as you can see)are now making from the scratch just using normal libraries. Using those two libraries would make the code(and coding) much easier to understand (make).

References

http://svn.reactos.org/svn/reactos/trunk/reactos/base/setup/setup/?view=log

http://svn.reactos.org/svn/reactos/trunk/reactos/base/setup/usetup/?view=log

ReactOS_Welcome_Wizard

http://tldp.org/HOWTO/NCURSES-Programming-HOWTO/
http://mrbook.org/blog/tutorials/make/