Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

...

ProjectMentorPrerequisitesDeliverables
illumos performance tools C, performanceport some popular Linux performance tools to illumos, eg htop, dstat, free, netstat (who has this socket open)
userland post-mortem DTrace, C, debuggers, systems programmingWhen you have a target process, ring buffer added to the core dump so you can run DTrace on it. Related to lastwords.d
IDT DTrace provider DTrace, C, systems programmingA DTrace provider that operates by interposing on the interrupt descriptor table (IDT), not dissimilar to the mechanism used by the SPARC-based trapstat.
Node.js memory profiling Node.js, MDB, performance analysisNew MDB dcmds for understanding memory usage in Node.js apps based on a core dump.
MDB support for new kernel lock manager + NFS@gwrC, MDB, filesystem internals, kernel development

Replace closed-source MDB dcmds for NFS+KLM with a re-write for the the new open-source lock manager.
This project is partially completed. See mdb: Open source implementation of nfs module 

Embedding mdb modules in binaries

rmustaccC, MDB, ELF/executable formats, user-level core dump mechanicsOne of the current challenges that we have is that it is hard to ensure that you have the right version of a dmod for a language runtime for example, see node.js. This project will involve developing a way to glom a dmod into a binary. Make sure that it is included inside of a dump, and that mdb can find it when it runs on said core after the fact.
upanic(2) syscallJosef "Jeff" Sipek C, syscall interfaceSometimes we want a process to die (dump core) without any hope for the rest of the process messing things up (e.g., by handling SIGABRT).  Creating a new syscall to simply dump core with a debug message (much like the kernel-level equivalent panic()) will allow a number of userspace programs and libraries to get simplified. (E.g., libumem does a abort() loop to make sure it truly kills the process.)
x86 xregs support C, proc fs, debugging supportOn x86, /proc/$PID/lwp/1/xregs exists but is empty.  As a result, debuggers do not have access to newer sets of SSE regs provided by x86.  Given the amount of change that x86 undergoes, the interface used here must be compatible with future additions to the floating point register file.

...

ProjectMentorPrerequisitesDeliverables
Via Nano/Eden Support C, system architecture, x86Adapt our x86 support to support the latest Via processors, useful for very low power systems. For a bonus, 
provide enhanced support for Via features like PadLock (Via's security technology).
ARM supportJosef 'Jeff' Sipek C, system architecture, ARMHelp with porting illumos to the ARM processor family. There is some progress on this project. ARM port
Remove pre-Pentium codeJosef "Jeff" Sipek C, system architecture, x86The 32-bit x86 kernel support depends on the cmpxchg8b instruction.  This instruction first appeared in the Pentium processor.  Therefore, we can safely nuke any code for supporting pre-Pentium CPUs.

...

ProjectMentorPrerequisitesDeliverables
Limited per-zone drivers supportgdamoreC, OS internals, device driversThere are some classes of kernel mode components like certain drivers that interact with the rest of the kernel only through well defined interfaces and do not modify global kernel state on their own. It is possible for this class of drivers to service only a subset of processes (e.g. from a zone). Kernel would be read-only to this drivers so they won't affect global stability and they would be mapped only in the processes from a zone, so a panic() would only crash a zone. This would allow us to have support for branded zones (even 3rd party) that don't have system-wide effects and would also simplify writing drivers.
Audio subsystems enhancementsgdamore, TriskeliosC, basic OS internals and/or device driversLots of ideas here... moving audio streams from one device to another, more flexible mixing options, etc. Boomer 2 deliverables that were never worked on. (Ask gdamore.)
Open Source version(s) of certain drivers (cadp)gdamoreC, device driversNew device drivers (possibly ported from a licence-compatible implementation), tested and integrated into illumos.
Device driver porting guidegdamoreC, kernel API(both illumos & foreign), technical writingWrite a porting guide to assist developers porting one or more types of device driver from Linux, BSD, or Windows to illumos.
Broadcom WiFi drivergdamoreC, device driversThere is a reverse engineered bcm wifi driver on Linux, and perhaps BSD. This would open illumos up to a wider range of laptops without relying on the NDIS shim.
DRI with KMS support for Intel graphicsgdamore
@alp 
C, device driversA new kernel Direct Rendering Manager driver with support for mode-setting (KMS) on Intel graphics. Newer X drivers require KMS. It already exists on Linux, and some work is in progress for BSDs. Ongoing work for illumos can be found on github https://github.com/raichoo/illumos-gate/tree/kms
Port OpenBSD's backported Intel graphics support to the older DRI C, device driversOpenBSD has a backport of functionality from newer Intel X server drivers on top on a pre-KMS DRM. This can be leveraged to support newer chipsets without porting a completely new DRM with KMS.
Bluetooth support C, device drivers, reading standardsAdd Bluetooth stack and support for mouse profile, possibly based on prototype port from NetBSD. See https://www.illumos.org/issues/2267 for more info.
Hardware Watchdog Drivers 

C, device drivers, reading standards, porting

Add support for hardware watchdog drivers, for advanced motherboards to be able to employ hardware reboot of hung systems. Possibly, port (or learn from) the Linux watchdog collection, and tie this in with bmc-watchdog and related FreeIPMI utilities in illumos.
Hardware Sensor Drivers 

C, device drivers, reading standards, porting

Add support for monitoring of system temperatures, fan speeds and other data provided by hardware sensors on most of the motherboards sold in the past decade or more. LM-Sensors project for Linux is a good start, and a worthy upstream (to allow future resyncs in order to get new drivers).
Extend "radeon" video driver support to APU processors C, device drivers, reading standardsillumos includes some support for AMD/ATI Radeon video cards as part of its driver subsystem as well as an X11 rendering driver. Some time ago new devices of this brand were released, AMD APUs, which combine a CPU and several graphics cores in one chip. These are now popular in notebooks, but are not recognized by the drivers which exist in illumos today (so the video works as generic VESA). Goal of this quest is to add at least basic support for this video hardware, including the ability to suspend it (so the notebook can go to sleep and resume – today attempts to suspend hang such system). Bonus points for 3D acceleration and other pretty video features.
Update net80211 stack C, device drivers, 802.11 standards, BSD net80211 stackUpdate the WiFi stack to make it easier to port drivers from BSDs. Align the basic stack with BSDs so that work is limited to lower-level interfaces. This requires a degree
sd & ssd cleanupJosef "Jeff" Sipek C, device driverssd.c is one of the messiest pieces of code we have.  It gets compiled into two drivers for historical reasons (sd and ssd).  There is really no reason to have this split.  Either move the ssd bits into sd (if the devices it supports are still useful) or just nuke ssd support and clean up sd.c accordingly.

...

ProjectMentorPrerequisitesDeliverables
FUSE@gwrC, filesystem internals

Integrate either of (or both?) FUSE implementations. There's one from the old OpenSolaris project:
https://bitbucket.org/gwr/illumos-fuse1/commits/all that uses a traditional message passing model
and supports "low level" back-ends. (Those operate at the VFS level.)

There's a second by @gwr that gains some efficiency using door calls to reach the
user space program providing "back-end" functions, though this implementation only supports
"high level" FUSE back-ends. (Those operate at the open/read/write/close level.) See:
https://bitbucket.org/gwr/illumos-fuse2/commits/all 

If someone managed to combine the best features of both, that would be great!

NTFS and/or exFAT support C, filesystem internalsReliable kernel-mode drivers for NTFS (v3.1) and/or exFAT filesystems, under a compatible licence.
pcfse^ipi, Josef "Jeff" SipekC, filesystem internalsReplacement pcfs module for reading FAT32/vfat filesystems. Port from OSX or xBSD (or any other license compatible OS). Start with the existing implementation at:https://www.illumos.org/projects/illumos-gate/repository/show/usr/src/uts/common/fs/pcfs
GVFS module for smbfs C, Gnome app. dev.Implement a new GVFS module using smbfs. Can study the current SMB/Samba module for ideas.
Port ext4 C, filesystemsWrite a kernel implementation (without copying GPL code!) that can be used to mount Linux ext4 filesystems in illumos, possibly based on the existing ext3 driver.
ZFS ARC scalability C, filesystems (ZFS), perf. analysisThe ZFS ARC code needs some analysis and improvements, in particular the code has scalability issues when used with a great number of small files, or small block sizes. This will require more creative problem solving skills.
ZFS ARC working set size C, filesystems (ZFS), performance analysisProvide tools for analyzing memory consumed by ZFS ARC.
ZFS L2ARC persistence C, filesystems (ZFS), performance analysisAllow the ZFS L2ARC to persist across reboot.
ZFS ARC multi-tenancy C, filesystems (ZFS), performance analysis, zones, virtualizationImprove ARC performance and analysis tools for contention in virtualized environments such as cloud hosting.
ZFS encryption C, filesystems (ZFS), cryptographyImport and update the work started by Darren Moffat to provide cryptographic support for ZFS.
Paravirtualized file system for virtualized guests C, OS internals, basic filesystem internalsImplement (maybe port ZPL from ZFS) a thin filesystem that uses the hypercall interface to interact directly with the Transactional Object Layer and ARC of the host ZFS filesystem. Do the host-side work so that writing the guest-level filesystem on other OSes like Linux and Windows is simple. Also implement a guest-side /dev/zfs that talks to host-side /dev/zfs and hides the non-local state so that management of this file system happens exactly like ZFS.
UFS modernizationJosef "Jeff" Sipek C, filesystems internalsOur UFS code suffers from several issues that should be addressed.  To name a few: (1) it is not endian agnostic (x86 can't read sparc disks, and vice versa), (2) certain functionality is bolted on awkwardly due to historical reasons (e.g., logging), (3) there are a number of tendrils into the rest of the kernel that shouldn't exist (e.g., the bio_*_strategy hooks in the bio code).

...