[[TOC(Developer/OpenProjects, depth=3)]] = 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 [https://www.rtems.org/node/138 Discord]. 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 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 [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 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 [wiki:GSoC 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 [wiki:TBR/Website/RTEMSMailingLists mailing list] or [wiki:Developer/discord 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 [/newticket?type=project&milestone=Indefinite 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 [https://devel.rtems.org/wiki/WikiFormatting 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 [mailto:users@rtems.org RTEMS Users mailing list]. == Project Ideas List == Open projects are held in Trac as Trac tickets. The list can be viewed using the [report:10 SoC Project Report]. If one of the projects sounds interesting, but lacks detail, ask on the [mailto:users@rtems.org RTEMS Users mailing list] or hop on [wiki:Developer/discord #gsoc in our Discord] for details and we can all help scope the project. The owner field indicates a possible primary mentor for the project. The list of project ideas, in no particular order: === Board Support Package (BSP) Projects === ==== Large (~350 hour) Scope ==== [[TicketQuery(status!=closed, keywords~=SoC BSP large -retired, format=table, col=summary|owner, order=priority|id)]] ==== Medium (~175 hour) Scope ==== [[TicketQuery(status!=closed, keywords~=SoC BSP -retired medium, format=table, col=summary|owner, order=priority|id)]] ==== Small (~90 hour) Scope ==== [[TicketQuery(status!=closed, keywords~=SoC BSP -retired small, format=table, col=summary|owner, order=priority|id)]] === 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 ==== [[TicketQuery(status!=closed, keywords~=SoC testing large -retired, format=table, col=summary|owner, order=priority|id)]] ==== Medium (~175 hour) Scope ==== [[TicketQuery(status!=closed, keywords~=SoC testing -retired medium, format=table, col=summary|owner, order=priority|id)]] ==== Small (~90 hour) Scope ==== [[TicketQuery(status!=closed, keywords~=SoC testing -retired small, format=table, col=summary|owner, order=priority|id)]] === 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 ==== [[TicketQuery(status!=closed, keywords~=SoC ecosystem large -retired, format=table, col=summary|owner, order=priority|id)]] ==== Medium (~175 hour) Scope ==== [[TicketQuery(status!=closed, keywords~=SoC ecosystem -retired medium, format=table, col=summary|owner, order=priority|id)]] ==== Small (~90 hour) Scope ==== [[TicketQuery(status!=closed, keywords~=SoC ecosystem -retired small, format=table, col=summary|owner, order=priority|id)]] === API Layers Projects === ==== Large (~350 hour) Scope ==== [[TicketQuery(status!=closed, keywords~=SoC API large -retired, format=table, col=summary|owner, order=priority|id)]] ==== Medium (~175 hour) Scope ==== [[TicketQuery(status!=closed, keywords~=SoC API -retired medium, format=table, col=summary|owner, order=priority|id)]] ==== Small (~90 hour) Scope ==== [[TicketQuery(status!=closed, keywords~=SoC API -retired small, format=table, col=summary|owner, order=priority|id)]] === Executive (!SuperCore, SuperCoreCPU, libcpu) a.k.a. kernel === ==== Large (~350 hour) Scope ==== [[TicketQuery(status!=closed, keywords~=SoC kernel large -retired, format=table, col=summary|owner, order=priority|id)]] ==== Medium (~175 hour) Scope ==== [[TicketQuery(status!=closed, keywords~=SoC kernel -retired medium, format=table, col=summary|owner, order=priority|id)]] ==== Small (~90 hour) Scope ==== [[TicketQuery(status!=closed, keywords~=SoC kernel -retired small, format=table, col=summary|owner, order=priority|id)]] === Runtime Statistics Projects === ==== Large (~350 hour) Scope ==== [[TicketQuery(status!=closed, keywords~=SoC statistics large -retired, format=table, col=summary|owner, order=priority|id)]] ==== Medium (~175 hour) Scope ==== [[TicketQuery(status!=closed, keywords~=SoC statistics -retired medium, format=table, col=summary|owner, order=priority|id)]] ==== Small (~90 hour) Scope ==== [[TicketQuery(status!=closed, keywords~=SoC statistics -retired small, format=table, col=summary|owner, order=priority|id)]] === rtems-libbsd === ==== Large (~350 hour) Scope ==== [[TicketQuery(status!=closed, keywords~=SoC libbsd large -retired, format=table, col=summary|owner, order=priority|id)]] ==== Medium (~175 hour) Scope ==== [[TicketQuery(status!=closed, keywords~=SoC libbsd -retired medium, format=table, col=summary|owner, order=priority|id)]] ==== Small (~90 hour) Scope ==== [[TicketQuery(status!=closed, keywords~=SoC libbsd -retired small, format=table, col=summary|owner, order=priority|id)]] = Older Projects = There is a [wiki:Developer/OpenProjects/OlderProjects Older Projects] page containing a list of all the SoC project ideas, and some older ideas that have lost interest over time.