Draft 0.3 plan

The document lays out the feature set for the next major release of JNode designated release 0.3.

This plan is intended to guide the development towards our second major release. It is not a fixed plan (as we have seen with the 0.2 release). Suggestions & remarks are always welcome and will be considered.

Release target

This release will improve the stability of the JNode operating system and enhance the usability.

Global enhancements

A major goal of this release is to reduce the memory footprint required by JNode. The VM will be enhanced to support this, and all parts of JNode will have to be more concerned about their memory usage.

JNode will become localizable and translations for some locales will be added.
Every new part of JNode will have to be localizable according to a set of rules that will be determined.
The one and only language for the source code of JNode is and will remain to be English.

The remainder of this page will describe the targets and enhancements of the various subprojects of JNode. The names between brackets in the enhancements sections are the names of the lead developer for that enhancement.

The enhancements are given a priority:

  • Highest priority
  • Second priority
  • Lowest priority

Core: Virtual Machine & Operating system

The virtual machine will become more stable, reduce memory usage and will add support for Isolates (JSR 121). Furthermore it will enhance the J2SDK compatibility level.
The operating system will add support for power management and make enhancements for that in the driver framework.

An installer will be developed that is used to install JNode onto a PC system. This installer will put the essential structures/files on the harddisk of the PC.

A persistent storage mechanism for plugin preferences will be added.

Enhancements:

  • Info Icon Isolate support [ewout]
  • Ok Icon Annotation support [ewout]
  • Info Icon Multi CPU support [ewout]
  • Info Icon Integrate MMTK garbage collector [ewout]
  • Ok Icon Smart field alignment, to reduce the size of objects [ewout]
  • Info Icon Overall memory reduction [ewout]
  • Power management support [ewout]
  • API for halt, sleep & reboot of JNode [ewout]
  • Info Icon Installer [martin]
  • Info Icon Persistent storage for plugin preferences
  • Access to detailed information about system information such as classes & their usage
  • Ok Icon Fragmented plugin support [ewout]

Networking

The network layer will be enhanced to fully support wireless networks. Furthermore, the existing TCP/IP stack will be improved in terms of reliability, safety and speed.

Enhancements:

File system

The filesystem layer will become more stable and will be refactored to make use to the NIO classes.
Support will be added for a virtual filesystem that allows links between filesystems.

A new "system" filesystem will be added that gives access to a distributed filesystem that contains the JNode system information. This system information is about plugins, kernels & preferences.

Enhancements:

  • Info Icon Change file system api's to use ByteBuffers [fabien]
  • Ok Icon Update java.io to latest classpath version based on NIO classes [fabien]
  • System filesystem [ewout]
  • Info Icon USB storage driver [galatnm]
  • Extend support for EXT2 to EXT3
  • Add write & format support to NTFS
  • Info Icon Generic block cache for block devices [fabien]

GUI

The existing GUI will be improved in terms of stability, Java2D support and speed.
The video driver interface may be adjusted to make better use of hardware acceleration.

A user friendly desktop environment will be developed or integrated.

Enhancements:

  • Enhance java2D support
  • Improve use of hardware acceleration
  • Improve font rendering
  • Info Icon Improve Swing awt peers [levente]
  • User friendly desktop environment [levente]

Shell

The shell will be extended with a graphical console, in order to display not ASCII characters.

Enhancements:

  • Graphical console
  • Add Isolate command invoker

Developer support

We want to make life of the JNode developer much easier. This will mean adding good documentation and also provide ways to develop JNode in JNode.

Enhancements:

  • VM support for debugging
  • Implement JDWP debugging protocol [levente]
  • Ok Icon Info Icon Support for a java compiler in JNode [levente]