= Open Projects = Welcome! Whether you're here because of [wiki:GSoC Summer of Code (SOC)] or just want to scratch an itch to hack, we invite you to peruse our projects and ask about them on the [wiki:TBR/Website/RTEMSMailingLists RTEMS mailing list] or [wiki:Developer/IRC IRC]. If you plan to submit a proposal to do something for the RTEMS Project as part of a SOC, see [wiki:GSoC/GettingStarted Getting Started for SoC Students]. RTEMS projects span kernel hacking, adding support for a new board (BSP), improving the development environment, developing tests, and more. If you want to get your feet wet with RTEMS then check out our [wiki:Developer/SmallProjects small projects page] where you can find projects that require little coding skill and are appropriate for those new to RTEMS or open source software projects. If you are interested in one of these projects but are not able to code and test it yourself, consider sponsoring one of the core RTEMS developers to do it for you. Volunteering or sponsoring is how things get done -- users keep RTEMS development alive! Most of these projects will take between a few weeks and a few months of effort by a person who is familiar with the general use of GNU/Linux and GNU tools. Many RTEMS projects are done by student or volunteer coders, so we try to define small projects or subtasks that can be completed and committed individually. Most of the projects are feasible as a [wiki:GSoC Summer of Code] project. Since some projects have multiple steps, students should work with prospective mentors to define the scope of work in their proposal. Similarly, some projects might be a starting point for a class project or graduate thesis. [[TOC(Developer/OpenProjects, depth=2)]] = Overview = The order of projects in the list does not reflect their importance, difficulty, or feasibility. Our project list is not exclusive: if you have an idea, solicit feedback from the project's [wiki:TBR/Website/RTEMSMailingLists mailing list] or [wiki:Developer/IRC IRC channel]; many developers sit in IRC and check it (and their email) infrequently throughout the day, so be patient! There may or may not be enough work on a project to constitute an SOC project, and some of these are past SOC projects. If you are interested in one of these, please ask on the mailing list or IRC. Projects in '''Bold text''' are '''higher priority''' simply meaning that users or developers have expressed a lot of interest in such projects. Projects in ''Italic text'' are space-oriented and therefore suitable for [http://sophia.estec.esa.int/socis/ SOCIS]. If you have a new project add it to the appropriate list below, link to a wiki page below !Projects/Open/ and use the [wiki:PageTemplates/ProjectDescriptionTemplate Open Project Template]. Briefly (1 sentence) summarize the project. If one of the projects sounds interesting, but lacks detail, ask on an RTEMS mailing list for details and we can all help scope the project. = Testing = Testing a large body of software like RTEMS is in a continual state of improvement. There is always a need for more test cases and easier ways to run them all and decode the results. In addition, we want to be able to run all tests on as many hardware and simulator configurations as possible. Testing doesn't sound exciting to most people but when you combine the breadth of what we need to test with our desire for 100% instruction and branch path coverage, you get some very interesting and challenging work. Some of the identified activities which would augment our testing capabilities are listed here: * [wiki:Projects/Open/TestingImprovements RTEMS Testing] - General testing framework for RTEMS. * ''[wiki:Projects/Open/TestSpecification RTEMS Test Specification]'' - Develop a formal test specification. * [wiki:Projects/Open/TestScreenValidation RTEMS Test Screen Validation] - Create a tool to validate test output. * '' '''[wiki:Projects/Open/CoverageAnalysis Improve Coverage Analysis]''' '' - Strive for 100% coverage. * [wiki:Projects/Open/SimulatorUpdates Simulator Updates] - Find and fix problems in BSPs that target simulators. * [wiki:Projects/Open/GNUToolsTesting Testing of the GNU Tools] - Improve Tools Testing on RTEMS targets * [wiki:Projects/Open/POSIXComplianceTestSuite POSIX Compliance Test Suite] Develop cross-platform POSIX API Compliance tests (Ticket #2262). * [wiki:Projects/Open/TestTemplate RTEMS Test Template] - Improve automatic generation of tests. * ''[wiki:Projects/Open/Fault_injection Fault tolerance]'' - get a fault injection tool to work with RTEMS and create tutorials and examples. = Tools and Development Environment = RTEMS applications are cross-compiled on a development host to produce executables that are transferred to and executed on target systems. The projects in this section focus on the host side of that equation. This means they will run on a developer's computer and possibly communicate with embedded hardware. The following areas have been identified for projects related to improving RTEMS development: * ''[wiki:Projects/Open/StackAnalysis Static Analysis of Stack Usage]'' - Develop a tool for static analysis of stack usage. * ''[wiki:Projects/Open/PythonCoverageReporting Python Coverage Reporting]'' - Convert coverage reporting to Python and integrate into RTEMS Tools. * '' '''[wiki:Projects/Open/TesterImprovements RTEMS Test Improvements]''' '' - Improve RTEMS Tester (rtems-test) by adding simulator recipes for more simulators. * [wiki:Projects/Open/GCovReports GCov Reports] - Use gcov output as generated by covoar to generate useful reports. * [wiki:Projects/Open/GProfReports GProf Reports] - Use gprof output as generated by covoar to generate useful reports. * [wiki:Projects/Open/ImproveRSB Improve RSB] - General improvements to the [wiki:TBR/UserManual/RTEMS_Source_Builder RTEMS Source Builder]. * [wiki:Projects/Open/AddCoverageToGDBSimulators GDB Coverage] - Add execution coverage logging to the GDB simulators used by RTEMS. * [wiki:Projects/Open/ImproveEclipsePlugin Improve Eclipse Plugin] - Improvements in the [wiki:Developer/Eclipse/Information RTEMS Eclipse Integration]. * [wiki:Projects/Open/PyGDB Python GDB Support] - Add Python Script support for debugging RTEMS with GDB. * [wiki:Projects/Open/UsingClang Using clang] - Compiling RTEMS with [wiki:Projects/CLANG CLANG]. * [wiki:Projects/Open/EVisualStudio eVisual Studio] - Integration of RTEMS cross development environment into eVisual Studio. * [wiki:Projects/Open/ArgoUML ArgoUML] - UML for RTEMS. = RTEMS Run-Time Oriented = The projects in this category are more focused on the development of software that runs on RTEMS on target hardware. = Executive (!SuperCore, SuperCoreCPU, libcpu): a.k.a. kernel = * ''[wiki:Projects/Open/ImproveSMP Improvements to SMP support]'' - Propose an improvement to the existing [wiki:Developer/SMP SMP capabilities]. * '''[wiki:Projects/Open/Condition_Variables Condition Variables (CV)]''' - Implement Classic API and supercore condition variables. * [wiki:Projects/Open/UnifiedInterrupts Unified Interrupts] - Unify the interrupt and PCI interfaces. * '''[wiki:Projects/Open/RumpKernels Rump Kernels]''' - Provide the hypercall interface for [http://rumpkernel.org/ Rump Kernels] in RTEMS. * [wiki:Projects/Open/StrictOrderMutex Nested Mutexes]: See Ticket #2124 for a problem description. * ''[wiki:Projects/Open/TinyRTEMS TinyRTEMS]'' - Improve some aspect of [wiki:Projects/TinyRTEMS TinyRTEMS]. * ''[wiki:Projects/Open/Paravirtualization Paravirtualization]''- Make RTEMS suitable to run as a guest in a hypervisor. * [wiki:Projects/Open/SequencedInitialization RTEMS Sequenced Initialization] - Initialize RTEMS dynamically, conceptually like C++ global constructors. = Runtime Statistics = * '' '''[wiki:Projects/Open/TraceTool Run-Time Tracing]''' '' - Trace improvements and visualization. * ''[wiki:Projects/Open/CPU_Statistics CPU Statistics]'' - Improvements to CPU Usage Statistics. * ''[wiki:Projects/Open/StackChecker Stack Checker]'' - Improvements to Stack Bounds Checker. = Board Support Package (BSP) = * '''[wiki:Projects/Open/ImproveBeagleBSP Beagle BSP improvements]''' - More peripherals and other improvements for the Beagleboard family. * '''[wiki:Projects/Open/ImproveRaspberryPiBSP Raspberry Pi improvements]''' - More peripherals and other improvements for Raspberry Pi. * [wiki:Projects/Open/Emulatei386BIOS x86 BIOS emulation for VESA] - This is Pavel Pisa's idea. * [wiki:Projects/Open/MicroblazePort Port RTEMS to Microblaze architecture] - New architecture port. * [wiki:Projects/Open/SimulatorBSPs More BSPs for Simulators] - RTEMS can always use more BSPs for simulators (and readily available boards or open cores). * [wiki:Projects/Open/MemoryProtection Memory Protection] - Implement MMU low-level support code for more BSPs. * ''[wiki:Projects/Open/MergeLEON Merge Leon]'' - Merging Gaisler LEON support code into mainstream RTEMS. * [wiki:Projects/Open/RaspberryPi2BSP Raspberry Pi2] - on hold due to unavailability of open information * [wiki:Projects/Open/EdisonBSP x86 Edison] - on hold due to unavailability of open information = API Layers (POSIX, Classic, SAPI) = * [wiki:Projects/Open/POSIXCompliance POSIX Compliance] - Improve POSIX compliance for RTEMS. * [wiki:Projects/Open/OSEK OSEK] - Implement [http://portal.osek-vdx.org/ OSEK] automotive APIs. * [wiki:Projects/Open/ProgammableLogicController Programmable Logic Controller] - Enable RTEMS as a [http://en.wikipedia.org/wiki/Programmable_logic_controller Programmable Logic Controller (PLC)]. * ''[wiki:Projects/Open/ARINC653API ARINC653 in RTEMS]'' - Implement ARINC-653 avionics APIs. = Python Projects = * [wiki:Projects/ConfigGUI Config GUI] - GUI for configuring RTEMS build. * [wiki:Projects/BuildVariables Build Variables] - Add bounds checking for all build options as well as cleanup. = rtems-libbsd = * [wiki:Projects/TCP/IP_update Update the RTEMS TCP/IP stack] - Ask about possibilities about Ethernet over USB and Wifi support. * [wiki:TBR/UserManual/USBStack USB stack] - Ask about possible addition of other device types. = Languages = * [wiki:Projects/Open/Mono Mono On RTEMS] - Add support for [http://http://www.mono-project.com/Main_Page Mono]. * [wiki:Projects/Open/V8 Port V8 JavaScript Engine to RTEMS] - Add support for the [http://code.google.com/p/v8/ V8 Engine]. * [wiki:Projects/Open/SWIGforRTEMS SWIG on RTEMS] - Add support for SWIG. = Libraries and Applications = * [wiki:Projects/Open/PortMonkey Port Monkey HTTP Server] - Port the [http://monkey-project.com/ Monkey HTTP Server]. * [wiki:Projects/Open/TIPC Port Transparent IPC] - Port [http://tipc.sourceforge.net/index.html Transparent IPC (TIPC)]. * [wiki:Projects/Open/LineEditor Line Editor]. Implement a simple line editor. Existing code can be refactored for a starting point. * ''[wiki:Projects/Open/RTL Runtime Loader (RTL)]'' - Dynamic object code loading. * '' '''[wiki:Projects/Open/Toolkits RTEMS Toolkits]''' '' - Define a generic (RTEMS Source Builder based) infrastructure for building and maintaining toolkits. * Turn the current port of [wiki:Packages/LWIP LWIP] into a first class citizen that RSB can build. Submit port, make target independent, create maintenance plan. * [wiki:Projects/Open/RockOnRTEMS Rock on RTEMS] - Improve the existing port of Rock on RTEMS. = Retired Projects = The following projects are complete or pending. * Testing * [wiki:Testing/Filesystem File System Test Suite] * Tools * [wiki:Projects/GSoC/ApplicationConfigurationGUI Application Configuration GUI]. * Runtime * [wiki:Projects/SixtyFourBitTimestamps Sixty-Four Bit Timestamps] * [wiki:Projects/Refactor_the_filesystem_infrastructure Refactor the filesystem infrastructure] * Use [wiki:TBR/Delete/UseHashOrMapInNotepadsAndKeys Maps or Hashes] in the implementation of Classic API Notepads and POSIX API Keys. * [wiki:Projects/GSoC/Bdbuf_improvements Bdbuf improvements]. The current block device buffer implementation can benefit from a number of improvements. * Improve the RTEMS [wiki:Projects/Scheduler SuperCore Scheduler] * [wiki:Projects/SystemEvents kqueue(2) or taskqueue(9)] is a project to port the kqueue(2) or taskqueue(9) API from FreeBSD. * [wiki:GSoC/2011/ISO9660_Filesystem ISO9660 file system] * [wiki:Projects/POSIX_Asynchronous_IO POSIX Asynchronous IO]. POSIX Asynchronous IO should be nearly done, with perhaps a little more work to do. POSIX List IO is not currently implemented. This would involve implementing and fully list IO per the [http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/aio.h.html POSIX specification] as well as completing the Asynchronous IO. First step work is to save the state of the project as a report under the appropriate GSOC/YYYY year topic. * Languages * [wiki:Projects/Parrot Parrot On RTEMS] * [wiki:Projects/GCCGoRTEMS GNU GCC Go] * RTEMS port of the [wiki:Projects/GNUJavaCompiler GNU Java Compiler (gjc)] * Lua in RTEMS * [wiki:Projects/GSoC/OpenRISC Porting RTEMS to OpenRISC]. = Obsolete Projects = Some projects have been proposed that are viewed as being of minor use. This list is meant to provide a way to avoid wasted effort on projects that are not widely desired. However, projects on this list might still be useful to someone, given a motivated individual to work on them. * Various ideas have been proposed related to using RTEMS as a [wiki:Projects/Hypervisor hypervisor]. The lack of protected (kernel mode) execution precludes any feasible implementations. * Merge [wiki:Developer/Simulators/SimpleScalar BSP for Simplescalar simulator]. The BSP is heavily bit-rotted and the simulator is a dead project. * [http://code.google.com/p/rosetta-os Rosetta OS] [wiki:Projects/RosettaOSDeviceDriverAPI OS Independent Device Driver API]. * Implement current version of µITRON Interface [http://www.www.tron.org/index-e.html]. itron support was removed from RTEMS due to lack of interest. * More [[TBR/Delete/Libbsd-port| NIC device drivers]]. See instead [wiki:Projects/TCP/IP_update TCP/IP update]. * Integrate [wiki:Projects/CEXP CEXP] into main RTEMS distribution. Possible licensing issues, please apply to the RTL project instead. * Scripts and documentation for creating and installing prebuilt tool packages [wiki:Building/RPM_Packages Building Tool RPM Packages], [[Building/DebianHostedTools| Debian Packages]], [[TBR/Delete/MacOSHostedTools|MacOS tools]], [wiki:TBR/UserManual/MinGW_Tools_for_Windows MinGW Tools for Windows], [wiki:TBR/Delete/Canadian_Cross_Compiler Canadian Cross Compiler]. Please apply to the [wiki:Projects/Open/ImproveRSB RSB] project instead.