wiki:Developer/OpenProjects

Version 280 (modified by Sh, on 03/26/12 at 11:04:54) (diff)

/* Run-Time Projects Not Initiated */

Open Projects

Welcome Summer of Code (SOC) Students and fellow hackers. Peruse our projects and see what interests you. If you have questions ask them on the Wiki talk page or the RTEMS mailing list. If you plan to submit a proposal to do something for the RTEMS Project as part of a SOC we require that you demonstrate that you have a basic RTEMS development environment installed as part of the application process; ask questions if you need help getting there. See Getting Started for SoC Students for details on what we want you to have done. Most of all we want you to succeed and have fun on an RTEMS related project.

RTEMS projects span kernel hacking, improving the development environment, developing test cases and test suites, and more. If you like one of the ideas, you can pitch in and tackle it. 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!

If you are looking 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.

Overview

We do not provide time estimates on these because the time depends on the experience and skill of the developer. Most of these projects will fall 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. Some of these projects may consist of multiple steps. In this case, each step is defined to fall into short discrete steps.

Many RTEMS projects are done as student or volunteer efforts in a person's spare time or as a hobby. This means it is imperative that projects be either relatively small or divided into steps that can be completed and committed to the main RTEMS code repository. Thus we have lots of experience in defining useful projects that are sized to be doable and useful to the community in relatively small work packages, or we try to identify projects that we think are beyond the scope of an SOC.

Most of the projects are feasible as a Summer of Code project. Since some projects have multiple steps, students should work with prospective mentors to size up how many of those steps to undertake. Similarly, some projects might be a starting point for a thesis or dissertation.

The projects on this page are lumped into broad categories but there is no prioritization applied to the order; we have identified some high priority projects (or project areas) that can help guide you if you are at a loss of what might be interesting to work on. The order of projects in the list does not reflect their importance, difficulty, or feasibility. It is just an organized dump of ideas with enough details to give an outline of the effort required. If you are interested in doing one, a core developer will be happy to augment the description or development plan.

Our project list is not exclusive: if you have an idea that is not listed don't hesitate to ask people in the RTEMS community if they think your idea is good and propose it if so. If developers are working on something similar to what you propose they may be less likely to accept your proposal. Ask on the project's mailing list or IRC channel; many developers sit in IRC and check it (and their email) infrequently throughout the day so if it takes awhile for your question to be answered don't give up!

If you have a new project add it to the appropriate list below, link to a wiki page that follows the recommended Open Project Template?, and briefly (1-2 sentences) summarize the project and how it will improve RTEMS.

High Priority Projects

These projects have generated a lot of interest from users and are greatly desired. Most of these are large or ongoing projects that should be broken into manageable subtasks that may constitute reasonable sized projects themselves. Definitely ask before proposing to do any of these projects.

  • Improvements to SMP support? - Multiprocessing is of increasing importance in modern systems and we want RTEMS to remain competitive and useful. This is a large project and subtasks should be identified before writing any proposal.
    • Implement or integrate Atomic Operations. SMP code requires additional synchronization primitives that are not available currently in RTEMS.
  • Test Coverage Analysis? - Improve coverage by adding more test cases. Eliminating dead code and reaching 100% coverage helps reduce the likelihood of new and recurrent bugs.
  • Update the RTEMS TCP/IP stack? - The networking stack is old and showing it. This project actively underway. At a high level, this effort requires porting the TCP/IP stack and providing support functional equivalents of multiple BSD kernel constructs. This project has many subprojects many of which are appropriate for SOC. It would be of great usefulness to the community to get as many of these does as an SOC project as possible.
  • RTEMS Toolkits - We are defining collections of libraries and support programs which make it easier to get started for certain types of applications. We haven't identified all potential toolkits or components. Each potential component must be evaluated for license and appropriateness for use in an embedded environment like RTEMS. We also should define some guidelines about creating and maintaining these kits. Here are the toolkits areas identified so far:

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:

Development Environment Oriented

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:

RTEMS Run-Time Oriented

The projects in this category are more focused on the development of software that runs on RTEMS on target hardware.

Run-Time Projects Not Initiated

The following projects have no work on them.

Run-Time Projects With Some Work

The following projects have had some work on them but are not complete. Ask about the current progress on the mailing list. The remaining activities could be large or small:

  • Paravirtualization? of RTEMS to make it suitable to be run as a guest OS in a hypervisor.
  • MMU Support? for RTEMS.
  • TinyRTEMS is an umbrella term that corresponds to any activities or ideas that could shrink the code and data space requirements for RTEMS. The goal is to progressively lower the minimum CPU requirements.
  • Improve the RTEMS SuperCore Scheduler? - near complete
  • more NIC device drivers?

Third Party Packages

This is a list of projects related to third party free and open source software and its support for RTEMS. The following project areas have been identified:

  • Compiling RTEMS with CLANG.
  • Integrate CEXP? into main RTEMS distribution.
  • Mono On RTEMS?
  • Turn the current port of LWIP into a first class citizen. Submit port, make target independent, etc.
  • IDL/COM? Support for RTEMS.

Projects Whose Page Need Updating

The following projects have been worked on and the pages require updating. There may or may not be enough work remaining to constitute an SOC project; many of these are past SOC projects. If you are interested in one of these, please ask on the mailing list or IRC.

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.