wiki:Developer/OpenProjects

Open Projects

Welcome! Whether you're here because of 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 RTEMS mailing list or Discord?. If you plan to submit a proposal to do something for the RTEMS Project as part of a SOC, see Getting Started for GSoC. RTEMS projects span kernel hacking, adding support for a new board (BSP), improving the development environment, developing tests, and more. You should look through the projects and see if any look promising to you, and then ask questions preferably on the devel mailing list about the ones that interest you. The current open projects list may need to update slightly for work that has been done, or that is not desired any more. If you're interested in a category of projects but no specific ones, you may also inquire about other ideas from the community within that category.

If you want to get your feet wet with RTEMS then check out our 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 contributors, so we try to define incremental projects or subtasks that can be completed and committed individually. Most of the projects are feasible as a Summer of Code project. Since some projects have multiple steps, contributors 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. We generally underspecify our project descriptions for students and new contributors on purpose. The scope that can be accomplished in the timeframe varies depending on individual contributor's experience and skills. So, we like to let new contributors explore the projects and discuss with potential mentors in order to shape the proposal in a way that suits the contributor's and mentors' interests with a scope that is appropriate.

Overview

The order of projects in the ticket 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 mailing list or Discord channel?; many developers sit in Discord 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 Discord.

Adding Projects as Tickets

Open projects are managed as Trac Tickets. To create a new project:

  • Create a new ticket by clicking on New Ticket.
  • The Summary field of the ticket is the title of the open project.
  • The Description field of the ticket is the project detail. Please use the WikiFormatting to enhance the readability of the project's details. If you are not sure please review existing open projects as an example.
  • Set the Type field of the ticket as "project". This would have already been filled if you clicked on the New Ticket link above.
  • Set the Milestone field to be "Indefinite". This would have already been filled if you clicked on the New Ticket link above.
  • If this is a SoC Project one of the mentors of the project should be mentioned in the Owner field and you should CC the rest of the mentors. If no mentors are mentioned, keep the fields blank.
  • The Keywords field should be set to "SoC" denoting any projects that can participate in the Summer of Code. The keyword is case sensitive.
  • You also need to set one of the following as a Keyword (comma-delimited) to define the project type, one of: testing, ecosystem, kernel, statistics, BSP, API, libbsd, languages, libraries. Please ask on the mailing before adding new keywords, as they are used to create the tables below.
  • Then you need to add another keyword, either "large" or "small" to denote whether project scope is anticipated in the 350 hour or 175 hour range.
  • Select an appropriate component for the Component field.

If you are unsure about anything, please ask on the RTEMS Users mailing list.

Project Ideas List

Open projects are held in Trac as Trac tickets. The list can be viewed using the SoC Project Report.

If one of the projects sounds interesting, but lacks detail, ask on the RTEMS Users mailing list for details and we can all help scope the project.

The owner field indicates a possible primary mentor for the project.

The list in no specific order is:

Board Support Package (BSP) Projects

Large (~350 hour) Scope

Ticket Summary Owner
#2891 Beagleboard BSP projects Ben Gras
#2898 x86_64 BSP Chris Johns
#2899 Improve the Raspberry Pi BSP
#2900 Improve PC386 BSP Joel Sherrill
#2901 Emulate i386 (x86) BIOS for VESA Support Pavel Pisa
#3854 MIPS Malta BSP Qemu Support Joel Sherrill
#4161 mpc8544ds Qemu BSP (likely variant of mvme3100)
#4162 SiFive RISC-V HiFive Unleashed BSP (Qemu) Needs Funding
#4593 Add support for renode.io Simulator
#4626 Add BSP for Polarfire based Beagle
#4770 Intel Specific x86-64 BSP Suport

Medium (~175 hour) Scope

Ticket Summary Owner
#2899 Improve the Raspberry Pi BSP
#2900 Improve PC386 BSP Joel Sherrill
#3784 Beagle BSP: Add a flattened device tree based initialization Christian Mauderer
#4272 BSP Executable Conversion Chris Johns
#4593 Add support for renode.io Simulator

Testing Projects

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.

Large (~350 hour) Scope

Ticket Summary Owner
#2927 RTEMS Testing Tool Project Chris Johns
#3690 Add support for Eclipse Target Communications Framework (TCF)
#4182 Port Rust to RTEMS
#4593 Add support for renode.io Simulator

Medium (~175 hour) Scope

Ticket Summary Owner
#3429 Add Filesystem Benchmarking tools to RTEMS udit agarwal
#3710 Improve Coverity Scan Integration Gedare Bloom
#3855 BSP Buildset for EPICS Gedare Bloom
#4593 Add support for renode.io Simulator

Development Ecosystem Projects

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.

Large (~350 hour) Scope

Ticket Summary Owner
#2927 RTEMS Testing Tool Project Chris Johns
#3302 Build System conversion of BSP Config (.cfg) files to pkg-config (.pc) files Chris Johns
#3314 RTEMS Release Notes Generator Chris Johns
#3333 Automate Conversion of Newlib Markup to Sphinx Joel Sherrill
#3690 Add support for Eclipse Target Communications Framework (TCF)
#3712 TLS support for libdl Chris Johns
#4182 Port Rust to RTEMS
#4597 Cobra Static Analyzer and RTEMS
#4620 Codeql Static Analyzer and RTEMS
#4623 Add RSB for LLVM targeting RTEMS
#4624 Integrate Software License Bill of Materials (BOM) using SPDX Tooling
#4630 Use Address Sanitizer (ASAN) with RTEMS

Medium (~175 hour) Scope

Ticket Summary Owner
#3710 Improve Coverity Scan Integration Gedare Bloom
#3855 BSP Buildset for EPICS Gedare Bloom
#4547 dtc build failure on msys2 - all rtems6 target tools fail to build on Windows 10
#4597 Cobra Static Analyzer and RTEMS
#4620 Codeql Static Analyzer and RTEMS
#4622 Add Python initializer for gdb RTEMS specific support
#4624 Integrate Software License Bill of Materials (BOM) using SPDX Tooling
#4630 Use Address Sanitizer (ASAN) with RTEMS
#4633 Support gnocchi in RTEMS Ecosystem

API Layers Projects

Large (~350 hour) Scope

Ticket Summary Owner
#2832 Google Go run-time library support needs an update Needs Funding
#2966 POSIX Compliance Joel Sherrill
#3338 Port CHFS to RTEMS
#4563 Add long double math methods to newlib

Medium (~175 hour) Scope

Ticket Summary Owner
#2966 POSIX Compliance Joel Sherrill
#3476 IMFS - Improve Bytes Per Block Handling
#3477 IMFS - Add configurable allocator support
#4004 Add support for sigaction SA_RESETHAND
#4328 New APIs Added to POSIX Standard (2021) Joel Sherrill
#4349 Package Micro Python Chris Johns
#4563 Add long double math methods to newlib

Executive (SuperCore, SuperCoreCPU, libcpu) a.k.a. kernel

Large (~350 hour) Scope

Ticket Summary Owner
#2966 POSIX Compliance Joel Sherrill
#3850 Modular Network Stacks Vijay Kumar Banerjee
#4640 Add RSB Support for CivitWeb
#3750 Add Classic API Barrier "get number waiting" Service

Medium (~175 hour) Scope

Ticket Summary Owner
#2966 POSIX Compliance Joel Sherrill
#4328 New APIs Added to POSIX Standard (2021) Joel Sherrill
#4590 Make Stack Checker Error Handler Configurable Joel Sherrill
#3750 Add Classic API Barrier "get number waiting" Service

Runtime Statistics Projects

Large (~350 hour) Scope

Ticket Summary Owner
No tickets found

Medium (~175 hour) Scope

Ticket Summary Owner
No tickets found

rtems-libbsd

Large (~350 hour) Scope

Ticket Summary Owner
#3222 libbsd: WiFi Support needs rc.conf integration Christian Mauderer
#3223 libbsd: wpa_supplicant has to be started dynamically Christian Mauderer
#3854 MIPS Malta BSP Qemu Support Joel Sherrill
#4161 mpc8544ds Qemu BSP (likely variant of mvme3100)
#4162 SiFive RISC-V HiFive Unleashed BSP (Qemu) Needs Funding
#4334 Replace Mongoose with Civetweb
#4628 Add SATA support in libbsd

Medium (~175 hour) Scope

Ticket Summary Owner
#4213 libbsd: Reduce footprint of minimal buildset Christian Mauderer

Full List of Projects

Ticket Summary Keywords Owner
#2832 Google Go run-time library support needs an update SoC, API, large Needs Funding
#2891 Beagleboard BSP projects SoC, BSP, large Ben Gras
#2898 x86_64 BSP SoC, BSP, large Chris Johns
#2899 Improve the Raspberry Pi BSP SoC, BSP, large, small
#2900 Improve PC386 BSP SoC, BSP, large, small Joel Sherrill
#2901 Emulate i386 (x86) BIOS for VESA Support SoC, BSP, large Pavel Pisa
#2904 Memory Protection SoC, BSP Gedare Bloom
#2927 RTEMS Testing Tool Project SoC, testing, ecosystem, python, large Chris Johns
#2966 POSIX Compliance SoC,API,kernel,small,large Joel Sherrill
#3222 libbsd: WiFi Support needs rc.conf integration SoC, libbsd, WiFi, WLAN, large Christian Mauderer
#3223 libbsd: wpa_supplicant has to be started dynamically SoC, libbsd, WiFi, WLAN, large Christian Mauderer
#3302 Build System conversion of BSP Config (.cfg) files to pkg-config (.pc) files SoC, ecosystem, large Chris Johns
#3314 RTEMS Release Notes Generator SoC, ecosystem, large Chris Johns
#3333 Automate Conversion of Newlib Markup to Sphinx SoC, ecosystem, Sphinx, python, large Joel Sherrill
#3338 Port CHFS to RTEMS SoC, filesystems, API, large
#3429 Add Filesystem Benchmarking tools to RTEMS SOC, testing, small udit agarwal
#3476 IMFS - Improve Bytes Per Block Handling SoC, API, small, filesystem
#3477 IMFS - Add configurable allocator support soc, api, small
#3690 Add support for Eclipse Target Communications Framework (TCF) Eclipse, libdebugger, gdb, SoC, ecosystem, testing, large
#3710 Improve Coverity Scan Integration SoC,ecosystem, testing, small Gedare Bloom
#3712 TLS support for libdl SoC,ecosystem,libdl, large Chris Johns
#3737 Improve Accessibility of User Manual SoC docs Chris Johns
#3739 Write a Tutorial for EPICS/RTEMS SoC docs EPICS Gedare Bloom
#3784 Beagle BSP: Add a flattened device tree based initialization SoC, BSP, small Christian Mauderer
#3850 Modular Network Stacks SoC,kernel,large Vijay Kumar Banerjee
#3854 MIPS Malta BSP Qemu Support SoC, BSP, libbsd, large Joel Sherrill
#3855 BSP Buildset for EPICS SoC,testing,ecosystem, small Gedare Bloom
#3934 RISC-V libbsd support SoC, large, small, networking Hesham Almatary
#4004 Add support for sigaction SA_RESETHAND POSIX-compliance, SoC, API, small
#4161 mpc8544ds Qemu BSP (likely variant of mvme3100) SoC, BSP, libbsd, large
#4162 SiFive RISC-V HiFive Unleashed BSP (Qemu) SoC, BSP, libbsd, large Needs Funding
#4182 Port Rust to RTEMS SoC, testing, ecosystem, Rust, large
#4213 libbsd: Reduce footprint of minimal buildset SoC, libbsd, small Christian Mauderer
#4272 BSP Executable Conversion SoC, BSP, small Chris Johns
#4328 New APIs Added to POSIX Standard (2021) SoC, POSIX, compliance, API, kernel, small Joel Sherrill
#4334 Replace Mongoose with Civetweb SoC, networking, libbsd, large
#4349 Package Micro Python SoC, API, small Chris Johns
#4547 dtc build failure on msys2 - all rtems6 target tools fail to build on Windows 10 SoC, ecosystem, small, msys2
#4563 Add long double math methods to newlib SoC, POSIX-Compliance, API, small, large
#4590 Make Stack Checker Error Handler Configurable SoC, small, kernel Joel Sherrill
#4593 Add support for renode.io Simulator SoC, testing, BSP, simulator, small, large
#4595 Provide SPARC greth Network Drivers for lwip SoC, networking, small, large
#4596 Provide SPARC greth Network Drivers for libbsd SoC, networking, small, large
#4597 Cobra Static Analyzer and RTEMS SoC, ecosystem, tools, small, large
#4616 Port an OpenGL Implementation to RTEMS SoC, large, graphics, port
#4620 Codeql Static Analyzer and RTEMS SoC, ecosystem, tools, small, large
#4622 Add Python initializer for gdb RTEMS specific support gdb, tools, ecosystem, SoC, small
#4623 Add RSB for LLVM targeting RTEMS llvm, tools, gcc, llvm, ecosystem, SoC, large
#4624 Integrate Software License Bill of Materials (BOM) using SPDX Tooling SoC, ecosystem, small, large
#4626 Add BSP for Polarfire based Beagle SoC, BSPs, large
#4628 Add SATA support in libbsd SoC, large, libbsd
#4630 Use Address Sanitizer (ASAN) with RTEMS SoC, GCC, tools, small, large, ecosystem
#4633 Support gnocchi in RTEMS Ecosystem SoC, ecosystem, small
#4640 Add RSB Support for CivitWeb SoC, network, large, kernel, RSB
#4770 Intel Specific x86-64 BSP Suport BSP, SoC, large, TSN, TCC
#3750 Add Classic API Barrier "get number waiting" Service barrier, SoC, GCI, small, executive

Project Descriptions Not Converted to Tickets

We used to describe open projects using a link to the project page and a short text description, but now we use tickets to describe open project ideas. Many of the projects that have interest from a mentor or the community have been converted. The remaining project descriptions in this section have not been converted yet, but may still be of interest. Please ask on the devel@… mailing list if you have interest in any of these projects. Project descriptions that are determined interesting should be converted to a Trac Ticket, while the descriptions deemed uninteresting should be moved to the Obsolete Projects section at the bottom of this page.

Projects in Italic text are space-oriented and therefore suitable for SOCIS.

  • Board Support Package (BSP)
    • x86 Edison? - on hold due to unavailability of open information
  • rtems-libbsd
    • This is a very active area in the RTEMS Ecosystem with features and drivers added regularly. Ask about possibilities which as or November 2020 include Ethernet over USB and improving Wifi support.
    • USB stack - Ask about possible addition of other device types.

Retired Projects

The following projects are complete or pending.

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.

Last modified on 02/16/22 at 16:21:36 Last modified on 02/16/22 16:21:36