The intention of this page is to host a list of possible software development "work packages" which we and others believe might possibly be performed in order to move RISC OS significantly forward from where it is today. We have made no attempt below to set priorities, define interdependencies, scope out the work for each task, determine the skill set required, etc. They are merely listed alphabetically for future consideration as part of a "bounty":/bounty/ for example. h4. Proposed * Debugger ** Add support for hardware watchpoints and breakpoints ** Allow setting breakpoints in ROM where the 'ROM' is actually soft ROM * Filing system overhaul ** [[Filing System Update|New FileCore format for huge modern discs]] ** 64-bit disc addressing ** [[Filing System Update|64-bit file pointers]] ** [[Filing System Update|Remove FileCore 4 floppy+4 HD limit]] ** [[Filing System Update|Support for asynchronous/background/threaded file transfers]] ** "Device-drive mapping":/forum/forums/5/topics/932?page=1#posts-10821 ** Adding "background transfer":/forum/forums/2/topics/347 support to SCSIFS ** UDF format DVD-ROM reading in CDFS ** Write PATA backend for ADFS4 for Iyonix and IOMD platforms ** Add BZip2, LZMA, 7zip archive formats to SparkFS * Full ARMv7, Thumb and UAL support everywhere * Improved task/process management (e.g. making more state per-process instead of global. An important stepping stone to full preemptive multitasking, and will benefit us now by making taskwindows more reliable/versatile. External project "ROX Desktop":https://rox.sourceforge.net/desktop/.) * Internet stack ** Update from FreeBSD for "IPv6":/forum/forums/2/topics/2616 etc * [[Kernel todo list]] - A collection of large and small items which vary greatly in terms of how much they will/may benefit the OS. * Multimedia stack ** Common video codecs ** Common audio codecs * Preemptive multitasking (a simple job, clearly) * Printing system improvements ** Higher than "2000dpi output":/tracker/tickets/197 via bit image printers ** Integrate RemotePrinterFS into the Printer Manager connections dialogue * Platform specific additions ** NAND flash FS / driver ** SoC DSP co-processor support ** A9Home port * Standardise audio capture ** Externally accessible audio inputs on Tungsten, OMAP3, OMAP4, Wandboard, Titanium ** API should also take into account capture from USB audio devices * "Toolbox API":/bounty/polls/31 brought up to par with ROL version ("summary of changes":/forum/forums/5/topics/3389?page=2#posts-44157) * Touchscreen drivers for multi-touch / gesture support ("some USB HID devices now supported":/forum/forums/5/topics/3186) * [[Unicode support]] more complete * Vectorise code for graphics rendering and sound mixing ("thread 1":/forum/forums/5/topics/715, "thread 2":/forum/forums/5/topics/596#posts-6604) * VFP support ** Maybe update FPEmulator so that FPA code maps to VFP hardware ** Write VFP emulator for those with no VFP * Window manager (the WIMP) ** Animated window and menu transitions ** API to read window contents as bitmap (even if not at front) - from transparent window work ** Non-rectangular and transparent windows ** Adapting the WIMP for [[Proposed Multiple Display implementation|multiple displays]] h4. In "progress":/content/documents/bounties via the bounty scheme * Filing system overhaul ** "Add partition table support to the filing system stack":/bounty/polls/10 ** Rewrite FileCore in 'C' language - currently in Arm assembly * "Internet stack":/bounty/polls/29 ** Update from FreeBSD ** Zero copy option in the DCI4 spec so drivers can deliver data direct into mbufs without the data having to be copied twice, similar to the 'driver-does-IP-checksum' flag ** "WiFi support":/bounty/polls/32 (from BSD?) *** Support for built-in WiFi chipsets present on some hardware targets * "Update USB stack from NetBSD":/bounty/polls/27 ** CDC class WiFi dongle support ** Perhaps to include USB3 support ** USB WiFi dongle support h4. In progress via self initiative * Cross compilation * Improved memory management: ** More powerful dynamic areas, free up lots of logical address space ("thread":/forum/forums/3/topics/2728) ** "Fix the OS's approach to cache maintenance":/forum/forums/9/topics/3979, and avoid performing unnecessary maintenance when mapping/unmapping pages * OpenGL support - "Raspberry Pi GL drivers are being ported":/forum/forums/5/topics/6435 * 64 bit, nanosecond resolution monotonic timer & scheduled events ("thread":/forum/forums/3/topics/11109) h4. Recently completed * Clipboard Support ("Clipboard Bounty":/bounty/polls/25) ** Add clipboard support to Draw *** Import (pasting) of sprites, JPEGs, text, DXF, and of course Draw objects *** Export (copying) of sprites, JPEGs, text, PostScript, Draw ** Finish clipboard support in the Window Manager *** Drag and drop in writable icons *** Copy and paste in writable icons * "Improve scroll wheel support":/bounty/polls/4 * Increased memory protection ** "Move zero page":/forum/forums/2/topics/226 ** "Add support for non-executable pages":/forum/forums/3/topics/2529 * VFP support ** Get VFP/NEON working with GCC and iron out all the issues with using VFPSupport in the real world - "GCC 4.7.4 release 2":https://www.riscos.info/index.php?title=Special:AWCforum&action=st/id310/Announcement_of_GCC_4.7.4_release_2 is the first official release to include VFP/NEON support on RISC OS ** Implement VFP support code to allow VFP1/VFP2 (e.g. Raspberry Pi) to run in IEEE-conformant mode ** Use of VFP for floating point in BASIC64 ("thread":/forum/forums/3/topics/9081) ** Transcendental functions (shared between BASICVFP and SharedCLibrary) h2. Significant mid/long term roadmap items These six topics, originally from the above roadmap list, have been identified as significant activities over the coming years because they either lay foundations to enable other roadmap items or are key to the future direction of the OS. While not currently part of the "bounty list":/bounty/, as designs progress it may become clear that a bounty would be a sensible way of accelerating the activity. # Addressing the "end-of-life of AArch32":/wiki/documentation/show/Addressing%20the%20end-of-life%20of%20AArch32 # Extensions to the "BBC BASIC language":/wiki/documentation/show/Extended%20BBC%20BASIC # Large Physical Address Extension "memory model":/wiki/documentation/show/LPAE%20support # Improve GraphicsV to support "multiple monitors":/wiki/documentation/show/Proposed%20Multiple%20Display%20implementation # "Multiple Arm core CPU":/wiki/documentation/show/Multi-core%20RISC%20OS support # Utilising "hardware VFP":/wiki/documentation/show/VFP%20Execution%20Environment rather than FPA