= Open Projects = [[TOC(Developer/OpenProjects, depth=2)]] Welcome [wiki:GSoC Summer of Code] 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 [wiki:TBR/Website/RTEMSMailingLists RTEMS mailing list]. If you plan to submit an SOCIS proposal to do something for the RTEMS Project, we now require that you demonstrate that you have a basic RTEMS development environment installed. See [wiki:GSoC/GettingStarted Getting Started for SoC Students] for details on what we want you to have done. We want you to succeed and have fun on an RTEMS related effort. This page captures ideas for RTEMS projects. They range from OS projects to development environment to testing to just about anything else. If you like one of the ideas, you can pitch in and tackle it. If you aren't able to code and test it yourself, consider sponsoring one of the core RTEMS developers to do it for you. This is really the only way things get done -- USERS LIKE YOU KEEP RTEMS DEVELOPMENT ALIVE!!! = ESA Summer of Code in Space = Those interested in the [http://sophia.estec.esa.int/socis2011/ ESA Summer of Code In Space] are encouraged to select one from the [wiki:#High_Priority_Projects High Priority Projects] list. If you are interested in another project listed here, ask about it. We need to ensure that the project's status is well documented and that it is still desirable and feasible as an [http://sophia.estec.esa.int/socis2011/ ESA SOCIS] project. '''Please include basic information in the SOCIS project information section. But start the section with a link to your proposal as a Google Doc following this format: [https://docs.google.com/Doc?docid=0AXgKwYy0qUGZZGhyOHpmdmRfNTFkeGdmamtmaw&hl=en_US&authkey=COi90NwI RTEMS Proposal Template]. Share that document with mentors from the RTEMS Project so they can make inline comments.''' = 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 not completely unfamiliar 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 considered complete and committed to the main RTEMS source base. 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. Most of the projects are feasible as a [wiki:GSoC Summer of Code] project. Since some projects have multiple steps, a [wiki:GSoC Summer of Code] participant should work with us 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. 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.''' '''If you add a new project, add it to the appropriate list below and link to a wiki page which generally follows the recommended [wiki:TBR/Review/OpenProjectTemplate Open Project Template].''' = 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 chunks. * [wiki:SMP_ Improvements to SMP support] * [wiki:RTEMS_Test_Coverage Test Coverage Analysis] * Add [wiki:RTEMSgcov_ support for gcov output] to covoar so tools like gcov and lcov can be used with RTEM. * Improve coverage by adding more test cases. * Add [wiki:RTEMSgprof_ support for gprof output] to covoar so profiling is supported. * [wiki:Projects/TCP/IP_update Update the RTEMS TCP/IP stack] - This project has some volunteer activity. The effort requires providing support functional equivalents of multiple BSD kernel constructs. The following is a very short list of them. * [wiki:BusSpaceAPI_ Bus Space API]. Supercore namespace RTEMS-specific API in the spirit of the [http://www.freebsd.org/cgi/man.cgi?query=bus_space&sektion=9&apropos=0&manpath=FreeBSD+8.2-RELEASE BSD bus_space API]. * RTEMS Toolkits - We are defining collections of libraries and support programs which make it easier to get started for certain types of applications. The first of these if the RTEMS Graphics Toolkit. We haven't identified all potential toolkits or identified candidate components. Each potential component must be evaluated for license and appropriateness for use in an embedded environment like RTEMS. Here are the toolkits areas identified so far: * RTEMS Database Toolkit - This toolkit would include ports of packages like BSD dbm, [www.sqlite.org/ SQLite], [http://cr.yp.to/cdb.html Constant Database (CDB)], and [http://www.corpit.ru/mjt/tinycdb.html TinyCDB - a Constant DataBase] to RTEMS * RTEMS Configuration Toolkit - porting configuration file parsing libraries like [http://www.nongnu.org/confuse/ libConfuse] * RTEMS Science Toolkit - we anticipate there must be libraries of generate use. The GNU Scientific Library (GSL) has been ported but does not meet RTEMS Project licensing requirements. = Small or Class Appropriate Projects = These are small projects that could be tackled by anyone. They are mostly projects which can easily be nibbled on in small work units. They may require no coding or modest coding skill. Some of these will require the ability to read code and analyse it. Some of these will be good projects to tackle in an "Introduction to FOSS" class or as a class project by a student. Individual tasks may also be useful for those new to RTEMS and looking to try a simple project to learn the ropes. See [wiki:Developer/SmallProjects Small Projects] for details. = Active Projects = This section lists open projects that are actively being worked on, for example by summer of code students. * [wiki:Testing/Filesystem File System Test Suite] * [wiki:TBR/Delete/POSIXTimingTests POSIX Timing Tests] * [wiki:GSoC/2011/ISO9660_Filesystem ISO9660 file system] * RTEMS port of the [wiki:Projects/GNUJavaCompiler GNU Java Compiler (gjc)] = RTEMS Testing = * [wiki:Projects/POSIXComplianceTestSuite POSIX Compliance Test Suite] = Development Environment Oriented = N/A = RTEMS Run-Time Oriented = * Various ideas have been proposed related to hypervisors and virtualization. They are captured [wiki:Projects/Hypervisor here] -----GSOC2011 project. * [wiki:MMU_Support_ MMU Support] for RTEMS. This has had some work. See that page for status. = Third Party Packages = * Compiling RTEMS with [wiki:Projects/CLANG CLANG]. = RTEMS 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/SixtyFourBitTimestamps Sixty-Four Bit Timestamps] * Test the [wiki:Projects/POSIXFIFOs POSIX FIFO Implementation]. = Development Environment Oriented = Remember that RTEMS is a real-time operating system targeting embedded applications. 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 are more focused on the host side of that equation. This means they will run on GNU/Linux or MS-Windows and possibly communicate with embedded hardware. RTEMS is a free real-time operating system that must compete against commercial closed source offerings that have very impressive looking GUI oriented Development Environments. The RTEMS Project has spent years honing RTEMS and tuning it to be a competitive run-time and it certainly the technical capabilities to compete. But often RTEMS gets dinged for not having a "pretty face". Some of the projects in this category address that deficiency. The following areas have been identified for projects related to GUI development environments: * Improvements in the [wiki:Developer/Eclipse/Information RTEMS Eclipse Integration] * Implement a cross-platform [wiki:Projects/GSoC/ApplicationConfigurationGUI Application Configuration GUI]. * Integration of RTEMS cross development environment into [wiki:Projects/EVisualStudio eVisual Studio] * [wiki:Projects/ArgoUML ArgoUML RTEMS Support] = 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. * Unified Interrupt and PCI APIs -- [wiki:UnifiedAPIs UnifiedAPIs] * Use [wiki:UseHashOrMapInNotepadsAndKeys_ Maps or Hashes] in the implementation of Classic API Notepads and POSIX API Keys. * RTEMS can always use [wiki:TBR/Delete/MoreBSPsForSimulators more BSPs for Simulators]. Being able to test, debug, and perform coverage analysis on simulators is critical to the ongoing success of the project. * Identify and implement the functionality currently missing in ''dup()'' * Implement a [wiki:Projects/Open/LineEditor Simple Line Editor]. Existing code can be refactored for starting point. * [wiki:Projects/SystemEvents RTEMS System Events] is a project to add a first class object for events. Currently all event sets are tied to a specific thread. * Implement OSEK Support [http://portal.osek-vdx.org/] * Port Transparent IPC (http://tipc.sourceforge.net/index.html) to RTEMS * Support for new Processor Families - Xtensa, Cortex/Thumb-2, Microblaze * Add cache manager support for architectures not having it. * Investigate the feasibility of implementing applicable sections of the [http://en.wikipedia.org/wiki/IEC_61131 IEC 61131] standard to enable RTEMS-enabled hardware to act as a [http://en.wikipedia.org/wiki/Programmable_logic_controller Programmable Logic Controller]. More information on the IEC 61131 standard can be found at http://www.plcopen.org/ . [http://www.beremiz.org/] is an open source framework for automation that may be a useful starting point. * [wiki:Projects/Refactor_the_filesystem_infrastructure Refactor the filesystem infrastructure] = Run-Time Projects With Some Work = The following projects have had some work on them but are not complete. The remaining activities could be large or small: * [wiki:Projects/TinyRTEMS 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 [wiki:SuperCore_Scheduler_ SuperCore Scheduler] - near complete * more [wiki:TBR/Delete/Libbsd-port NIC device drivers] = 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 a Summer of Code project. If you are interested in one of these, please ask on the mailing list or IRC. * Implement [wiki:POSIX_Asynchronous_IO_ POSIX Asynchronous and List IO] * [wiki:RTEMS_Trace_Tool_ Run-Time Tracing] - includes gathering, capturing, and displaying information to the user. * [wiki:Projects/SequencedInitialization RTEMS Sequenced Initialization] is a project to allow RTEMS initialization to be dynamically constructed based upon user requirements. It would be like C++ global constructors conceptually. * [wiki:Projects/libdl Dynamic Object File Loading] is an important feature for many types of embedded applications. It lets you have a base application with RTEMS which dynamically loads the rest of the application. The dynamic parts can be optional features and never loaded. Plus they are more easily upgraded than an entire application image. * [wiki:TBR/UserManual/USBStack port BSD USB stack] * [wiki:Projects/Parrot Parrot On RTEMS] * RTEMS port of [wiki:Projects/GCCGoRTEMS GNU GCC Go] = 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: * See the [wiki:Projects/GraphicsToolkit RTEMS Graphics Toolkit] for current status of the kit and ideas for future work. * Integrate [wiki:Projects/CEXP CEXP] into main RTEMS distribution. * [wiki:Projects/Mono Mono On RTEMS] * Turn the current port of [wiki:Packages/LWIP LWIP] into a first class citizen. Submit port, make target independent, etc. * [wiki:TBR/Delete/IDL_COM IDL/COM] Support for RTEMS. * [wiki:Projects/OpenLDAP OpenLDAP] slapd server The following projects are about general improvements to the development environment. * Improve [wiki:Projects/GNUToolsTesting Testing of the GNU Tools] on RTEMS targets * [wiki:Projects/GDB_Python GDB Python] Script support for RTEMS There are host operating systems which do not have prebuilt RTEMS tools available. These projects are about addressing that need: * Complete implementation of [wiki:Building/DebianHostedTools Debian Packages]. * Prebuilt [wiki:TBR/Delete/MacOSHostedTools MacOS tools] = 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. * Merge [[SimpleScalar | BSP for Simplescalar simulator]] * [http://code.google.com/p/rosetta-os Rosetta OS] [[RosettaOSDeviceDriverAPI| OS Independent Device Driver API]] * Implement current version of µITRON Interface [http://www.www.tron.org/index-e.html]