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.
This release will improve the stability of the JNode operating system and enhance the usability.
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.
- Isolate support [ewout]
- Annotation support [ewout]
- Multi CPU support [ewout]
- Integrate MMTK garbage collector [ewout]
- Smart field alignment, to reduce the size of objects [ewout]
- Overall memory reduction [ewout]
- Power management support [ewout]
- API for halt, sleep & reboot of JNode [ewout]
- Installer [martin]
- Persistent storage for plugin preferences
- Access to detailed information about system information such as classes & their usage
- Fragmented plugin support [ewout]
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.
- Wireless network support [martin]
- Wireless netcard drivers [martin]
- TCP server side fixes [galatnm]
- EEPRO100 driver [galatnm]
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.
- Change file system api's to use ByteBuffers [fabien]
- Update java.io to latest classpath version based on NIO classes [fabien]
- System filesystem [ewout]
- USB storage driver [galatnm]
- Extend support for EXT2 to EXT3
- Add write & format support to NTFS
- Generic block cache for block devices [fabien]
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.
- Enhance java2D support
- Improve use of hardware acceleration
- Improve font rendering
- Improve Swing awt peers [levente]
- User friendly desktop environment [levente]
The shell will be extended with a graphical console, in order to display not ASCII characters.
- Graphical console
- Add Isolate command invoker
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.