GoogleCodeInProjects

From RTEMSWiki

Jump to: navigation, search

Contents

Google Code-in

If RTEMS is to participate in Google Code-In, then we have to have a nice list of small tasks divided into the following categories and rated by difficulty (e.g. Easy, Medium, Hard). This is the list that participants will view.

In order to get an idea of the scope of projects, please visit Google Highly Open Participation Contest Projects which lists links to the project issues tackled during the GHOP.





Code

Tasks related to writing or refactoring code

Merged RSS Feed

Difficulty: Hard

RTEMS is used by multiple applications that have their own RSS feeds. We would like to provide a single RSS feed for the set of applications using RTEMS.

Identify a tool that merges RSS feeds and use that to merge a few RSS feeds for us. We will want to make this available via our website.

Add a POSIX Timing Test

Difficulty: Hard

This task consists of adding a benchmark test to the RTEMS POSIX Timing Test Suite. There are templates for each benchmark pattern we have identified. The task consists of identifying the correct pattern, instantiating it using the "mktest" script, and then filling that in with the appropriate calls.

This task can be instantiated for multiple areas in POSIX but the following is a typical set for communications and synchronization objects. A GSOC 2011 project implemented many tests for semaphores, message queues, etc., but there are still many left to implement. Example areas include thread cancellation services and spinlocks.

  • pthread_cancel - single case
  • pthread_setcancelstate - no cancellation case
  • pthread_setcancelstate - cancellation occurs
  • pthread_setcanceltype - single case
  • pthread_testcancel - no cancellation case
  • pthread_testcancel - cancellation occurs
  • pthread_cleanup_push - single case
  • pthread_cleanup_pop - single case
  • pthread_spin_init - single case
  • pthread_spin_destroy - single case
  • pthread_spin_lock - available
  • pthread_spin_trylock - available
  • pthread_spin_trylock - not available
  • pthread_spin_unlock - single case

There are likely 50-100 instances of this task possible.

Classic API Manual Examples

Difficulty: Hard

Our manual is pretty good but we do not have easy to read and understand example implementations of the typical usage patterns as presented in textbooks. This task consists of taking an existing example from another source and modifying it to use the RTEMS Classic API or POSIX API. The code must be presentable enough where it could be included in a user manual.

TBD: RTEMS folks look in other places for specific examples. For example, write bounded buffer in terms of RTEMS Classic API or POSIX services.

This task can be instantiated at least 20 times.

Documentation

Tasks related to creating/editing documents

POSIX Compliance Spreadsheet

Difficulty: Hard

If you are a spreadsheet wizard, this is a task for you. RTEMS has a Google Docs spreadsheet to track compliance with the Open Group's Single UNIX Specification. This spreadsheet has most of the raw compliance information already entered but is missing the formulas that would check which features RTEMS has and see how compliant we are with the four POSIX profiles. A profile is simply a subset of the calls defined in the full standard.

Finish a POSIX API Chapter

Difficulty: Medium

RTEMS has permission to use information from the Open Group's Single UNIX Specification in our RTEMS POSIX API User's Guide. Each of the chapters in this manual is incomplete to a greater or lesser extent. The document is written in texinfo. This task consists of completing a chapter.

This task can be instantiated for the following chapters:

  • Process Creation and Execution Manager
  • Process Environment Manager
  • Files and Directories Manager
  • Input and Output Primitives Manager
  • Device- and Class- Specific Functions Manager
  • Language-Specific Services for the C Programming Language Manager
  • System Databases Manager
  • Semaphore Manager
  • Mutex Manager
  • Condition Variable Manager
  • Memory Management Manager
  • Scheduler Manager
  • Clock Manager
  • Timer Manager
  • Message Passing Manager
  • Key Manager
  • Thread Cancellation Manager

BSP Wiki Pages Info Boxes

Difficulty: Easy

RTEMS uses a Mediawiki installation for its wiki. Each embedded board supported by RTEMS is supposed to have its own wiki page. There is an Infobox on the upper right hand side of each BSP wiki page. Some BSPs do not have BSPs and even those that do have pages created do not always have a completed Infobox. This is necause we learned how to implement the Infoboxes after the pages were added, most of them are just stubs. The Infobox template is here and is the complete view of the fields available. A reasonably good example of a filled in Infobox is the Blackfin BF537 Stamp BSP page.

This task consists of finding the vendor specification on a particular board (which should be publicly available) and filling in the Infobox. The master list of Board Support Package pages is on the Board Support Package Information page. There are approximately 100 pages in this group.

This task can be instantiated for each of the BSP wiki pages. Tasks are possible for the BSPs below:

Check the list left against was done in GCI 2010 before publishing a task.

Outreach

Tasks related to community management and outreach/marketing

Presentation to peers on RTEMS

Difficulty: Medium

This task consists of creating a presentation in either PowerPoint of OpenOffice Impress on RTEMS which is targeted at persons who would be of the appropriate age for Google Code-In (13-18). The presentation should include speaker notes and be at least 10 minutes in length.

New Logos for RTEMS

Difficulty: Medium

This task consists of creating a designing a new logo for RTEMS. We would like the result to be modifiable in in an open source tool and either a vector graphic or a high resolution bitmapped image. If the RTEMS developers like it, we can follow this up with another task to produce the graphics in various sizes and with transparency layers. We will want to be able to use it on web sites, print, t-shirts, stickers, etc.

Design an RTEMS T-Shirt

Difficulty: Medium

This task consists of creating a designing a t-shirt design for RTEMS. We would like the result to be modifiable in in an open source tool and either a vector graphic or a high resolution bitmapped image. If the RTEMS developers like it, we can follow this up with another task to produce the graphics in various sizes and with transparency layers. We will want to be able to use it on web sites, print, t-shirts, etc.

Getting Started for your Peers

Difficulty: Medium

As a project, we try to make RTEMS approachable for new comers. Help us by making our existing getting started howto's even easier. There is a Getting Started manual (HTML) and a number of wiki pages. But they are written by people who are familiar with RTEMS and how to install it. Review one of the Getting Started documents and give us guidance.

Info for flyers for various projects using RTEMS

Difficulty: Easy

The RTEMS Project has a number of flyers on various projects which have used RTEMS. Each of these flyers is based upon a Wiki page about that project with the same text and pictures. This task consists of preparing a wiki page on a an RTEMS application which consists of approximately one page of text, 2 or more nice pictures or figures about the project, and a few URLs of reference for more details. The information on the flyers is presented in a very uniform manner.

When you take one of these tasks, you may be given an email address of a contact for that project to obtain information from.

This task can be instantiated for at least the following projects:

  • Stanford Linear Accelerator Center (SLAC)
  • Canadian Light Source
  • Brookhaven National Laboratories
  • Mitre Centaur Robot
  • NASA Express Logistics Carrier (ELC)
  • BMW Superbike

There should be more applications we can identify if this is a popular task.

Quality Assurance

Tasks related to testing and ensuring code is of high quality

Test Documentation Files update

Difficulty: Medium

This task consists of reading an existing test and its associated Test Description File (TDF) and verifying that the TDF accurately represents the contents of the test and is in the correct format.

Each task will do this for a single test program. There are approximately 280 TDFs in RTEMS so this task can be instantiated a significant number of times.

Test Coverage HTML Improvements

Difficulty: Easy

This task consists of modifying the existing Bourne shell script that generates the primary table of results per target. There are columns in the table which are not necessary since it is constant in each table instance. The heading for each table should then be modified to reflect the information. An example of this can be found in the erc32 coverage results. Columns 2 through 4 are constant and should be represented in the header.

This is a single task with no instantiation option.

Research

Tasks related to studying a problem and recommending solutions

Identify new microprocessor architectures appropriate for RTEMS

Difficulty: Easy to Medium

Although most computer users are only familiar with the x86, PowerPC (Mac), and ARM (phones, etc.), there are at least a dozen other microprocessor architectures used in embedded systems. Identify one which RTEMS is not available for and determine if it is feasible to port RTEMS to it. If it is not feasible, identify why. If it is feasible, look at the features of the architecture that would be important to the person porting RTEMS to this architecture. The expected result is a short paper.

Test Coverage Status Reporting Improvements

Difficulty: Medium

The RTEMS developers are not web experts and we are sure there are ways in which the information presented in the test coverage reports can be improved. Your task is to identify how we can improve the presentation. Possible areas are using some JavaScript to make the reported data more dynamically accessible, reformatting to improve readability, etc..

The only idea we currently have is to use JavaScript to make the main tables dynamic.

This is probably one task which could be repeated if the first person leaves room.

Identify a Timeline Visualization Tool

Difficulty: Medium

RTEMS systems have the option to capture timestamped data about what is happening in the system. But reading long files with timestamped messages is not a good way to get insight into the run-time behavior of a system. Find us a free, open source timeline visualization tool which can be taught to read the RTEMS captured information.

Ideal solution would be one which dynamically updates as input arrives and is flexible on input sources (e.g. files, sockets, etc).

This could be multiple tasks if there are multiple visualization tools.

eBook Formats for RTEMS Documentation

Difficulty: Medium

It would be nice to offer the RTEMS Document Set in an ebook format so it is available in a suitable format for cell phones, eReaders, PDAs, etc. This project is to evaluate the formats, their openness, availability of readers on a wide variety of platforms, etc.. We want to know which format is best for a FOSS project to produce and how that format can be produced using our Texinfo documentation source.

Reference: http://en.wikipedia.org/wiki/Comparison_of_e-book_formats

This is one task. A follow up may be to actually produce the eBook.

Switch to texi2html

Difficulty: Hard

RTEMS is using an old and non-standard tool called texi2www. Switch us over to the standard texi2html.

Training

Tasks related to helping others learn more

Create Moodle Questions

Task: Easy

This task consists of reading a chapter in the RTEMS Application C User's Guide and writing at least twenty (20) questions in a format appropriate for the RTEMS installation of Moodle.

The questions should be written in the GIFT format.

This task can be be instantiated for each of the following chapters:

  • Key Concepts
  • RTEMS Data Types
  • Initialization Manager
  • Task Manager
  • Interrupt Manager
  • Clock Manager
  • Timer Manager
  • Semaphore Manager
  • Message Manager
  • Event Manager
  • Signal Manager
  • Partition Manager
  • Region Manager
  • Dual-Ported Memory Manager
  • I/O Manager
  • Fatal Error Manager
  • Scheduling Concepts
  • Rate Monotonic Manager
  • Barrier Manager
  • Board Support Packages
  • User Extensions Manager
  • Configuring a System
  • Multiprocessing Manager
  • Stack Bounds Checker
  • CPU Usage Statistics
  • Object Services
  • Chains

Check the list left against was done in GCI 2010 before publishing a task.

Translation

Tasks related to localization

Translate Project Flyers to Another Language

Difficulty: Easy

The RTEMS community is unusual in that most engineers in the world can read and write English even if they cannot speak it very well. So we are not in need of having our entire documentation set translated into other languages. However, getting translations of the marketing literature we have to other languages would be nice.

This task can be instantiated for each of the following:

  • RTEMS Trifold Flyer
  • RTEMS Users Flyer
  • Introduction to RTEMS Presentation
  • Translate existing project flyers into other languages

User Interface

Tasks related to user experience research or user interface design and interaction

Adapt Linux Trace Toolkit (LTT) Visualization Took

Difficulty: Hard

Investigate the use of the LTT Visualization Tool and its input file format(s). The goal is to use it to display traces from the RTEMS Capture Engine. Your goal is to get it to display an arbitrary timeline.

This will provide us with the definition of the input files so the RTEMS Capture Engine's output can be visualized using the LTT Visualization Tool.

Adapt an Eclipse Plug-In Module For Use In RTEMS Development

Difficulty: Hard

RTEMS is not a GUI application. Most RTEMS users only see a GUI when they are doing development. The most frequently used GUI development environment used by RTEMS developers is Eclipse. Take one of the Eclipse plugin modules identified as a research focused project and adapt it for use by the RTEMS community.

Personal tools