== Contemplated Features == This is catch-all list of interesting, cool and weird features we would like to have in HelenOS. Note that this is more like a brainstorming area than a road map, many of the features listed here might be not well thought through. If you consider to tackle some of the feature more seriously, remove it from the list here and create an enhancement ticket for it. More ideas can be found within [report:2 enhancement tickets]. === Green HelenOS === Implement frequency scaling, tickless kernel support and other power-saving and environment-aware features. When working on this project, you will get involved with the clock interrupt handling, various timer mechanisms, data structures, timeouts and scheduling. You will be also exposed to low-level platform code. Knowledge of C is required. Knowledge of assembly and/or a disposition to learn another platform's assembly is required. === Real-time HelenOS === Analyze and exploit the possibility to implement real-time features in HelenOS. Students working on this topic need to be strong in operating systems as they will need to deal with synchronization primitives and scheduling, as well as other parts of the kernel. Knowledge of C is required. Knowledge of some assembly is required. With (soft) real-time features, HelenOS could be deployed as an embedded platform (storage, networking, security). === Port ZFS to HelenOS === Investigate the feasibility of porting (and port) Sun Microsystem's ZFS filesystem to HelenOS. This project requires understanding of HelenOS IPC and the file system layer and, inevitably, the internals of the ZFS file system. Knowledge of C is required. === HelenOS as a development platform === Introduce run-time support for modern programming languages (C++, Go, Python, Java, etc.) into the HelenOS ecosystem. Add high-level object-oriented API for the IPC and concurrency functionality of HelenOS (features, promises, actors, continuations, agents). Possibly push HelenOS beyond the self-hosting milestone (being able to build and install itself from within). === Other particular topics === * full-fledged shell (control structures, loops, variables, pipes) * interactive partition editor * interfaces and ports * IPC code generation (Dice, DynRPC) * installer wizard * API versioning, packaging, deployment, provisioning * root file system hand-off * environmental features (variables, containers) * packet filter * [ticket:481 wireless networking support] * !BlueTooth support * !FireWire support * EHCI, xHCI support * more USB devices * CDC ACM ('USB modem') for connecting to FreeRunner serial console * CDC ECM or EEM (USB Ethernet adapter) * some USB RS-232 adapter * graphics stack improvements * support for direct rendering in graphic driver infrastructure * more drawing operations in drawing library (lines, curves, polygons, circles, etc.) * retained scene description in drawing library * hardware acceleration of drawing library * better quality of drawing library output (advanced filtering, antialiasing) * better precision of drawing library output (floating point coordinates and pixels) * addition of trigonometric operations into HelenOS C library * drawing library and graphics server support for arbitrary-angle rotation of windows * support for more image and font formats in drawing library * more widgets in widget toolkit (menu bars, scrolls bars, edit boxes, list boxes, etc.) * support to minimize and maximize windows * desktop environment (task bar, icons) * improvements of terminal emulator (resizing, scrolling, history) * console applications awareness of resizing and termination of their terminal emulator * device-side USB * DTrace-like instrumentation and observability * software packages * multi-instance VFS, file system namespaces * copy-on-write * memory-mapped files * user session interruption (Ctrl+C, Ctrl+D, etc.) * out-of-band signaling * resource accounting * user space scheduling * user space paging * user space driven SMP initialization * advanced concurrency models (coroutines, actors, agents) * mbebbr * distributed caching * IRQ pseudocode compilation * crash dumps (kexec/kdump) * reserved memory for core dumps in out-of-memory situations * CPU and memory hotplugging * tickless operation * related: qemu-system-ia64