Classical projects

Here is a list of classical projects.

Legend :
(A) : project assigned

Level :
     (*) : easy
    (**) : average
   (***) : difficult
  (****) : very hard
          : unknow

Complete AMD 64 support

  • Description : The 64bit port has some bugs but it's not exactly known where and how many. This task is especially difficult as the bugs have to be spotted first. Is this enough work for a student project ?
  • Level : Timeconsuming (Depends on finding the bugs)
  • Assigned to :

Complete multi CPU support

  • Description: Multi-CPU support is broken. There are bugs in JNode's Apic implementation and the scheduler is suboptimal in regard to SMP. This project involves fixing the (L)Apic handling and if time permits replacing the scheduler with an SMP efficient one.
  • Level : average/hard (many informations are needed to complete the task)
  • Assigned to :

Complete the vesa driver

  • Description : The current vesa driver need grub support to detect and set the video mode at boot time. The driver should be extended to become independant of grub (and be able to switch to any supported graphic mode).
  • Level : hard (many informations are needed to complete the task)
  • References : implements the vbe3 specifications and other references gathered on jnode site
  • Assigned to :

Implement full ddx support without 2d and 3d

  • Description : With ddx, which stands for full modesetting, you can detect the monitor, you can set any resolution, (sometimes you can rotate the screen) and you have multihead support. From the performance point of view, it will faster than a vesa driver but slower than a chipset specific driver
  • Level : moderate/hard
  • Assigned to :

Implement javax.comm API (A)

  • Description : The javax.comm API allows to access serial and parallel ports in java. I have been told that the javax.comm package can't be used to avoid legal issues : the rxtx project has choosen the gnu.io package instead.
  • References : specifications of the API, its javadoc
  • Tips : use the RXTX library
  • Level : easy
  • Assigned to : Mihail Argranat (blog)

    The git repository is located here

Implement new GC algorithms for better performances (A)

  • Advice : contact Peter since he has ideas about the subject and could give good practices to avoid breaking jnode for such a task
  • You should have read this and understood at least the Basic Algorithm. In the terms of that page, JNode's gc is a conservative, non-moving, non-generational, stop-the-world mark&sweep algorithm. Improvements can be many-fold, basicaly removing one of the "non"s Smiling 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 site
  • Level : This can be anything from easy to extremly hard. Depends on actual task.
  • Assigned to : Loïc Rouchon, Benoit Sautel and Ismael Merzaq

    The git repository is located here

Implement realtime specification for Java

  • Description : It's also know as RTSJ and JSR-282
  • Level : extremely hard
  • Assigned to :

Implement virtio drivers for jnode (A) (*/**)

    The git repository is located here

Implement write support for the iso 9660 file system

  • Description : iso 9660 is a norm that defines how data are stored in compact discs (cdrom, dvdrom ...). For now, we have only a limited read support for cdroms.
  • Level : Hard ?
  • Assigned to :

Integrate JDistro

  • Description : It would be great to have that advanced desktop in JNode. I am not sure if there is really a licensing issue or not (JDistro is GPL and JNode is LGPL)
  • Level : Hard
  • Assigned to :

Port jnode to another CPU

  • Description : For now, we only support x86 CPUs but it would be great to have support for other CPUs. Examples : ARM (used in small devices like mobiles), PowerPC, ...
  • Level : hard
  • Assigned to :

Port jnode to grub 2

  • Description : Currently, JNode uses the grub bootloader. Using grub 2 would allow to openup to more plateforms like, for example, non BIOS-based architectures (aka EFI ones).
  • Level : average/hard (many informations are needed to complete the task)
  • Assigned to :

Write a driver for a sound card

  • Tips : implement a driver for intelhda since all sound chips nowadays comply with it.
  • Level :
  • Assigned to :

Write a driver for Serial ATA (sata)

  • Reference : Wikipedia page about Serial ATA (sata)
  • Tips : implement compliance with ahci.
  • Level :
  • Assigned to :

Write a file system checker (**/***)

  • Description : Writing a file system checker would not only help ensure that a file system is clean at boot time (like linux distro are doing). It will also allow to help fixing bugs in the current implementations of the file systems. For each of these file systems, a checker could be a student project by itself : ext2, fat32, fat12/16, ntfs (I am not sure about that one since it's hard to get ntfs specifications). The first student to work on a file system checker will have to define an API because we don't have yet one.
  • Level : Average (depends on the file system complexity)
  • Assigned to :

write a virtual keyboard

  • Description : look at that topic for more informations
  • Tips : JDistro has virtual keyboard which should be made standalone for reuse in JNode but I am not sure if there is really a licensing issue or not (JDistro is GPL and JNode is LGPL) ...
  • Level : easy
  • Assigned to :

write an open GL driver

Write another desktop for JNode

  • Description : To be specified with the student.
  • Level :
  • Assigned to :

Write SWT peers

  • Description : SWT is the widget toolkit used by eclipse. It has a java API and rely on native peers for the actual display of widgets. To be able to use SWT, one should implement SWT peers for JNode.
  • Level : average/hard
  • Assigned to :