DPI908/SBR600 Potential Projects

From CDOT Wiki
Jump to: navigation, search

This page will contain the Potential Project List for the DPI908 and SBR600 courses in Fall 2012.


This is a list of potential projects related to the SBR600 course that need people.

Students: Please select a project that you're interested in and add an entry to the project table/participants page.

Open Source Community Members: We welcome your recommendations for potential projects. Please create an account on this Wiki and create a description for your proposed project below. Please list your contact info (just an IRC or FAS2 name is OK) as well as links to any related web pages as Resources for the proposed project. (Questions? Ask Chris Tyler or Raymond Chan).


Each project listing contains a general description, plus this information:

  • Maximum number of students - Do not exceed this number without approval from your professors (Chris Tyler and Raymond Chan).
  • Skills required - This is a rough list of some of the skills required for this project. This list may be incomplete or inaccurate, but it will give you a starting point in evaluating whether this project is a good fit for you. It is not assumed that you will have all of these skills at the outset of the project -- some of them will be picked up as you do the project.
  • Resources - An initial list of computer and information resources to get started on the project.
  • Expected result - A rough indication of what is expected at the conclusion of the project.
  • Initial contacts - Who to initially talk to about this project. These contacts may refer you on to other people with the respective open source communities.

You will have an opportunity to investigate, expand upon, and fine-tune this information as you prepare your initial project plan. For example, you may come up with a more detail list of expected results (deliverables), resources, and contacts during your planning.

Individual Deliverables
Note that when multiple people are working on the same project, they will have independent deliverables -- it's not really group work, but rather separate, closely related projects. Please identify which aspect(s) of the project you will be delivering on the project page.

Sample Project

This is a sample project stub. You can use the template for Sample Project in order to create a project page for one of the projects listed below. This is how you 'sign-up' for a project.

NOTE: if someone has already created the project page, speak to this person and see if you can join them. If so, simply add your name to the Project Leader(s) section on the project page. Otherwise, you can become a contributor later.

Hardware Support Projects

The Panda media centre

The PandaBoard is a popular ARM development board. It has good multimedia capabilities but these are not supported in Fedora ARM at the present time.

This project involves packaging the requisite pieces for the PandaBoard for use as a media centre.

Web reference: http://rsalveti.wordpress.com/2012/07/29/pre-built-images-for-xbmc-ubuntu-12-04-based-with-hw-acceleration-finally-available-at-linaro/

From Peter Robinson:

This would be quite a large project and covers a lot of things both HW

and software. It would also likely partially cover Fedora legal as well. dgilmore and i spoke with spot about the codecs and he gave a general "should be OK but will need review" as it should be like the libcrystalhd package which ships firmware for HW h264/mpeg etc.

It would cover RMSG support in the kernel, gstreamer, both sound

(pulseaudio, HDMI surround sound etc) and video, packaging etc.

Expected outcome: The PanadaBoard features -- sound, video, video decoding, and wifi -- would be fully supported in Fedora.

Skills required: packaging, kernel/module building, testing, negotiation

Web reference: http://rsalveti.wordpress.com/2012/07/29/pre-built-images-for-xbmc-ubuntu-12-04-based-with-hw-acceleration-finally-available-at-linaro/

Maximum number of participants: 4 (different device features, documentation)

Resources: Peter Robinson (pbrobinson)

Packaging and support for OpenMAX

OpenMax is a means of supporting media well on a lot of ARM platforms. It should be packaged and present in Fedora.

Expected outcome: The OpenMAX software is packaged and present in Fedora.

Skills required: packaging, kernel/module building, testing

Web reference: http://www.arm.com/community/multimedia/standards-apis.php

Maximum number of participants: 2 (suggested breakdown: packaging, testing)

Resources: Peter Robinson (pbrobinson)

Lima X driver

This is a driver for the Mali GPU hardware. It should be able to work with a number of devices including the Oriegin and Snowball boards.

Expected outcome: The Limo X driver is packaged and present in Fedora.

Skills required: packaging, kernel/module building, testing

Web reference: http://limadriver.org/

Maximum number of participants: 1

Resources: Peter Robinson (pbrobinson)

Programming GPIO on Fedora

A guide and some simple projects that run on different boards on Fedora.

Package appropriate libraries and provide instructions on interfacing devices to the BeagleBoard/BeagleBone and PandaBoard devices using the GPIO/SPI/I2C interfaces.

Expected outcome: appropriate libraries for GPIO/SPI/I2C support will be present in Fedora, and documentation page will be available outlining how to use these features.

Skills required: packaging, testing, writing

Maximum number of participants: 2 (one per board)

Resources: Chris Tyler (ctyler), Peter Robinson (pbrobinson)

General HW enablement

A number of ARM boards have features that are not fully supported in Fedora.

Note: Before starting this project, you must identify the features and boards you are targeting.

From Peter Robinson:

Most of the devices we support actually only use a small amount of the

HW that is actually on the device. Whether it be simple like graphics or sound or more interesting like gyro, gps, FM radio. There's also some other devices that would be interesting to support like the snowball, origen, or even the Vivaldi Tablet. Some definitely need FW and hence probably packaging if it's not in the linux-firmware dumping


Expected outcome: The identified features will be supported on the identified board(s) within Fedora.

Skills required: packaging, kernel/module building, testing

Maximum number of students: One per hardware feature to be supported

Resources: Chris Tyler (ctyler), Peter Robinson (pbrobinson)

Ne10 (The knights that say Ne)

Ne10 is a new upstream ARM project to for optimising libraries on NEON. This project involves getting this library into Fedora.

Expected outcome: The Ne10 library will be packaged in a useful way in Fedora. Optionally, use Ne10 to optimize some Fedora packages.

Maximum number of students: 1 (possibly more if other packages can be modified to use Ne10)

Web references:

Resources: Peter Robinson (pbrobinson)

Raspberry Pi Video Decoding

The Raspberry Pi has GPU video decoding capabilities. This project involves exposing those capabilities to Fedora video applications, by packaging new components or modifying existing packages, and getting those changes incorporated into either Fedora or the Raspberry Pi Fedora Remix repositories.

Expected outcome: It will be possible to play video on the Raspberry Pi using GPU acceleration.

Maximum number of students: 1 (possibly more if multiple packages are affected).

Resources: Chris Tyler (ctyler)

Performance Tuning Projects

Benchmarking and Tuning on ARM Devices

From Peter Robinson:

A lot of libraries, especially graphics libraries, offer ARM

optimisations. Some are auto HW detect like cairo/pixman but there are a lot that might not be. Ultimately I'm sure we could run faster on ARM HW. There's also various benchmarking toolkits out there. A documented means of doing this on ARM platforms would be great. It could be used to see what improvements changed on the platform has on various chipsets/boards. Some libraries that do arm optimisation are things like cairo/pixman/pango and graphics like opus/libvpx/theora/vorbis/libpng/libjpeg-turbo/libtiff so it would be interesting to see that they are as optimised as they could be on ARM

or could we improve it with some %{arm} directives to help out.

Note: Before beginning this project, you must identify an existing Fedora software package with available but unused ARM optimizations.

Expected outcome: The selected package will be conditionally optimized for ARM and will perform better than the original package.

Maximum number of students: One per package to be optimized.

Skills required: packaging, benchmarking, testing

Resources: Chris Tyler (ctyler), Peter Robinson (pbrobinson)

Security-Related Projects

Mock chroot-break/Privilege Escalation Risk Assessment

Mock uses chroot environments for building. It is possible to break out of a chroot environment. An intentionally-malicious package could potentially break out of a chroot and wreak havoc on the build system. Alternately, a privilege escalation exploit could be used to cause similar issues (without necessarily breaking out of the chroot).

This project involves investigating this risk, developing a proof-of-concept, and recommending changes to the mock/koji system to mitigate this risk.

Expected outcome: A proof-of-concept of this issue and recommended changes to mitigate the risk.

Maximum number of students: 2 (one on chroot breaking, and one on privilege escalation)

Skills required: security auditing, scripting/programming, testing, writing

Resources: Chris Tyler (ctyler), Raymond Chan (rchan)

SELinux Policy Analysis

The SELinux policy has never been reviewed to determine (a) best practices for policy in a general-distribution context such as Fedora, and (b) whether there are architecture-specific policy extensions or changes that should be present in an ARM system. This project provides such a policy review.

Expected outcome: A review of the SELinux policy with recommendations (and ideally patches) for policy changes.

Maximum number of students: 2 (one on best practices, one on ARM policy optimizations)

Skills required: SELinux policy writing, risk assessment, testing, writing

Resources: Raymond Chan (rchan)

GuruPlug Security Servers

We have a group of GuruPlug micro-servers that are no longer needed in the FedoraARM buid farm. It would be interesting to create a Fedora Remix for these devices for the following use cases:

  1. Penetration testing (perhaps similar to the PwnieExpress products?)
  2. Intrusion Detection System
  3. High-performance firewall

Expected outcome: A Fedora Remix which can be loaded onto a microSD card and used on a GuruPlug to provide the specified feature set.

Maximum number of students: 3 (one for each of the use-cases)

Skills required: Linux administration, security, packaging, composing

Resources: Raymond Chan (rchan), Chris Tyler (ctyler)

Andora Projects

Andora is a Fedora Remix that the Linux-Android club has been working on. They have identified some needs within Fedora related to Android development.

Make Fedora Eclipse Compatible with the Android Extensions

The Eclipse IDE as packaged in Fedora appears to be incompatible with the Android software development plugins/extensions. Determine why this is the case, and get appropriate modifications into Fedora to rectify the issue.

Expected outcome: The Fedora Eclipse package will be compatible with the Android extensions.

Maximum number of students: 1

Skills required: building, packaging, testing

Resources: Raymond Chan (rchan), John Selmys

Package the Android Extensions for Eclipse

There are a group of extensions (4?) for Eclipse that enable development of Android applications. Package these extensions and make them available in (or for) Fedora.

Expected outcome: The extensions will be available as Fedora packages, or if not permitted by licensing, as packages available from an external repository.

Maximum number of students: 4 (one per extension/plugin)

Skills required: packaging, testing

Resources: Raymond Chan (rchan), John Selmys

Create the andora-logos, andora-release, and andora-fedora-remix-release-notes packages

Fedora usually contains three packages that cannot be redistributed with derived (remixed) versions:

  • fedora-logos
  • fedora-release
  • fedora-release-notes

Dummy versions of these packages are available, substituting generic- for fedora- (i.e., generic-logos, generic-release, and generic-release-notes).

This project involves creating a replacement for the three packages:

  • andora-logos -- This package will contain replacements for the Fedora logos, including the Andora logo where appropriate. It would probably also be a good idea to produce a Andora-backgrounds package with Andora-branded wallpaper.
  • andora-fedora-remix-release -- This package will contain Andora-Fedora Remix release files such as yum configs and various /etc/ files that define the release.
  • andora-fedora-remix-release-notes -- This package will contain documentation on the Remix, including notes on how to install it to a hard disk or an USB flash drive, trademarks, etc.

Expected outcome: three packages.

Skills required: documentation writing, graphics, packaging

Maximum number of people: 3 (logos, release keys, release notes)

Resources: Raymond Chan (rchan), John Selmys

Architecture Support Projects

ARMv8 Support Analysis

Many Fedora packages contain assembley code for performance optimization or platform-specific support. Assembley code is very processor-specific. When assembley code is not present for a specific architecture, either the package will not build on that architecture, or other code (typically C) which is not processor-specific is used instead.

This project involves analyzing Fedora packages to determine which ones contain assembly code, and determining whether the package will probably build on the upcoming ARMv8 64-bit architecture.

Expected outcome: An analysis of part of the Fedora package set to predict ARMv8 build outcomes.

Maximum number of students: 6 (each taking part of the Fedora package set)

Skills required: packaging, scripting, writing

Resources: Chris Tyler (ctyler), Jon Masters (jonmasters)

Project Page: ARMv8_Support_Analysis

OLPC Projects

School Server Packaging

The One Laptop per Child project (OLPC) provides a software distribution for what they call the "school server" (XS). This distribution needs to run on both ARM and x86_64/i386 systems.

There are some packages that have been created for this school server which should be reviewed using Fedora's packaging guidelines and made a part of the Fedora package set. This may involve refactoring the packages (dividing them up), adjusting spec files, and going through the Fedora package review process. There are some XO 1.75 ARM computers available for sign-out if needed.

Expected outcome: The XS packages will be in the Fedora package set.

Maximum number of students: 6 (each taking several different packages)

Web references:

  1. Repo: http://build.laptop.org.au/xs/XS-0.7+/repos/XS-F17ARM/SRPMS/
  2. Description of the new school server project: https://docs.google.com/document/pub?id=1dnhU2F6EntepVXTgN8QpkME8fZVUuPjcCoMUfAVKbcc
  3. Blog about the school server: http://schoolserver.wordpress.com/blog
  4. Mailing list: http://lists.laptop.org/listinfo/server-devel

Skills required: packaging, scripting, testing

Resources: Jerry Vonauk, Adam Holt, Chris Tyler (ctyler)