This part contains all release plans, the projects organization and the development process in general.
Development in the JNode project is done in development teams.
These teams have been introduced to:
Overall coordination of the JNode project remains in the hands of the
projects founder: Ewout Prangsma.
This team will develop the virtual machine itself and the basic structure of the JNode kernel.
Team members
Topics:
The plugin framework, The device framework, The VM, classloaders, native code compilers, memory management, The build & boot process, PCI drivers.
All development issues are discusses in our forum.
Targets for the near future:
Targets for the longer term:
This team will develop the filesystem layer of JNode.
Team leader: Guillaume BINET.
Topics:
The filesystem framework, The various filesystems, The integration with java.io, java.nio, Block device drivers (IDE, Floppy, SCSI, Ramdisk)
All development issues are discusses in our forum.
This team will develop the graphics layer of JNode.
Team leader: Valentin Chira.
Topics:
The AWT implementation, The window manager, The input handlers (keyboard/mouse) & drivers, Video drivers
All development issues are discusses in our forum.
This team will develop the network layer of JNode.
Team leader: Martin Husted Hartvig.
Topics:
The networking framework, The various network protocols, The integration with java.net, Network drivers
Team members:
Lesire Fabien
Mark Hale
Pavlos Georgiadis
Christopher Cole
Eduardo Millan
All development issues are discusses in our forum.
This team will develop the command line shell and the basic commands.
Team leader: Bengt Baverman.
Topics:
The command line shell, including the help system, The basic commands, Help the development of other parts of JNode to support the Shell
All development issues are discusses in our forum.
We always welcome new dedicated developers.
Following content is outdated since we have moved to GitHub.
If you want to join the development team, contact one of the developers who is working on an issue you want to contribute to, or contact the project admin for more information.
You will be asked to submit your first patches via email, before you'll be granted access to the SVN repository.
The document lays out the feature set for the next major release of JNode designated release 0.2.
This plan is intended to guide the development towards our first major release. It is not a fixed plan that cannot be deviated from. Suggestions & remarks are always welcome and will be considered.
Release target
We want this release to be the first usable version of JNode where we can run real world Java programs on.
This means that we need a working filesystem, a stable virtual machine, a class library mostly compatible with JDK 1.1, a working TCP/IP implementation and way to install it on a PC. It is not expected to have a fully working GUI yet.
Additional features
To achieve the target outlined above, each team will have to add/complement a number of features. These features are listed below. The percentages specify finised work, so 100% means completed.
JNode-Core
JNode-FS
JNode-GUI
JNode-Net
JNode-Shell
Release milestones
Right now no date is set for this release. There will be intermediate releases reflecting the state of development on the 0.1.x series until the target is reached.
Looking towards the future; 0.3
The next major release after 0.2 should bring a graphical user interface, we should really consider using J2SDK 1.5 features like generic types and add numerous drivers for CDROMs, USB, Video cards.
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:
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:
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]
Installer [martin]
Persistent storage for plugin preferences
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.
Enhancements:
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.
Enhancements:
Change file system api's to use ByteBuffers [fabien]
Update java.io to latest classpath version based on NIO classes [fabien]
USB storage driver [galatnm]
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.
Enhancements:
Improve Swing awt peers [levente]The shell will be extended with a graphical console, in order to display not ASCII characters.
Enhancements:
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:
The document states some of the TODOs with regard to future releases of JNode. There is no particular date when the targets should be finished, but it should give you some hints, what you could look at :


In order to imply students in JNode, I will expose here some projects.
Git repository
The gitorious project is located here : http://gitorious.org/jnode.
It's compound of:
Contact
If you are interested, you can contact me (Fabien DUMINY) :
Remarks
Here is a list of classical projects.
Legend :
(A) : project assigned
Level :
(*) : easy
(**) : average
(***) : difficult
(****) : very hard
: unknow
Good information with much stuff about memory management and garbage collection can also be found on this site. You can find another explanation of the naive mark&sweep, with a graph on this siteHere is a list of generic projects
Legend :
(A) : project assigned
Level :
(*) : easy
(**) : average
(***) : difficult
(****) : very hard
: unknow
Here is a list of experimental projects
Legend :
(A) : project assigned
Level :
(*) : easy
(**) : average
(***) : difficult
(****) : very hard
: unknow
JNode is discussed in several forums. These forums are now prefered above the Sourceforge mailinglists.
You can also use the #JNode.org at irc.oftc.net IRC channel.
Follow us on GitHub to track all code changes.
Use #JNode to talk about JNode on twitter.
For all other questions, suggestion and remarks, please contact the project admins: Ewout Prangsma (aka epr), Levente Santha (aka lsantha).
This document describes what is needed to make and publish a new release of JNode.
Preparation
$ cp all/build/descriptors/jnode-configure.jar \
builder/lib/jnode-configure-dist.jar
$ svn commit builder/lib/jnode-configure-dist.jar
Uploading
Website adjustments
SVN actions