SBR600 Potential Projects

From CDOT Wiki
Revision as of 08:39, 20 September 2011 by Chris Tyler (talk | contribs) (Introduction)
Jump to: navigation, search


Introduction

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).

Notes

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

  • Maximum number of students - Do not exceed this number without approval from your professor.
  • 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.

Important.png
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.

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.

Fedora-ARM Projects

iSCSI/AoE Support *

iSCSI (SCSI over TCP/IP) and AoE (ATA-over-ethernet) are different SAN protocols that can be used on a standard ethernet network.iSCSI did not work reliably in Fedora 12 on ARM systems, but will be needed by future ARM server systems. AoE has not been well-tested on ARM systems.

Goals of this project: (1) iSCSI and AoE need to be tested for stability and performance. (2) The ARM builders, which currently use loopback-mounted filessystems on top of NFS, should be reconfigured to use iSCSI or AoE (whichever is the optimal solution) providing it is faster than the current solution.

  • Maximium number of students: 2
  • Skills required: Linux system administration, debugging and troubleshooting, kernel building, benchmarking, documentation writing
  • Resources: an ARM system, CDOT PC systems
  • Expected result: iSCSI on ARM fixed and tested, and changes pushed upstream; AoE tested on ARM; report comparing iSCSI and AoE performance on ARM; ARM buildsystem configured to use a high-performing iSCSI or AoE storage solution in place of the existing NFS system
  • Initial contacts: ctyler, PaulW

Package Hadoop

Apache Hadoop is a set of tools used for large-scale distributed computing. It would be great to get this packaged for Fedora.

  • Maximum number of students: 3
  • Skills required: packaging, system administration; familiarity with Java programming/packaging
  • Resources: CDOT Development Systems, devel mailing list (some work on Hadoop packaging has already been done)
  • Expected result: the three Apache Hadoop subprojects (Hadoop Common, HDFS, and MapReduce) will be available in the main Fedora repositories (yum install hadoop-common hdfs mapreduce)
  • Initial contacts: ctyler

Test Thumb2 with ARMv7hl *

Thumb instructions mode is a 16-bit mode for ARM. It should provide a higher density for code (meaning that programs will be smaller). In the early versions of the ARM architecture, thumb mode was slower than regular instruction mode, but this should not be the case for newer processors (which support "Thumb2").

This project involves building a suitable set of packages in Thumb2 mode and in regular instruction mode and comparing:

  1. binary size
  2. RPM package size
  3. build speed
  4. execution speed
  • Maximum number of students: 2
  • Skills required: packaging, system administration, benchmarking
  • Expected results: a recommendation to the Fedora-ARM project on whether or not to use Thumb2 for the armv7hl architecture
  • Initial contacts: ctyler, Jon Masters (jonmasters)

Compare armv5tel and armv7hl Performance

The armv5tel and armv7hl versions of the Fedora ARM port vary in two ways:

  • minimum processor version supported (v5 vs. v7)
  • how floating-point arguments are passed to functions
    • armv5tel passes floating-point values in the general CPU registers, because no assumption is made about the presence of a floating point unit (FPU/VFP)
    • armv7hl passes floating-point values in the FPU registers, and requires that an FPU be present (the v7 specification requires that a VFP FPU exist)

This project involves doing a comparative benchmark between armv5tel and armv7hl versions of the Fedora ARM software to determine the performance difference.

  • Maximum number of students: 2
  • Skills required: packaging, system administration, benchmarking
  • Expected results: a report to the Fedora-ARM project on the relative performance of armv5tel and armv7hl
  • Initial contacts: ctyler

Raspbery Pi Configuration

The Raspberry Pi device is a tiny, inexpensive ARM microcomputer designed to use in educational environments (also of interest to experimenters and hackers). This project involves optimizing Fedora to run as efficiently as possible on the Raspberry Pi, including:

  • Tuning the kernel
    • Adding access to the GPIO pins
    • Tuning for size
    • Building a suitable module set (USB device drivers)
  • Tuning the startup scripts
    • Optimizing for startup speed and size
  • Configuring a GUI to run in 128MB (model "A" devices)
    • Optimizing the X configuration
  • Reducing and/or limiting Firefox's memory consumption
  • Testing alternate web browsers

This project will also involve:

  • Selecting the software to be included on the initial filesystem (i.e., default package set)
    • Programming environments
  • Building a repository to distribute any software that is not included in Fedora

Details:

  • Maximum number of students: 3
  • Skills required: packaging, system administration, benchmarking, tuning
  • Initial contacts: ctyler

YUM API Documentation

Yum is a package management tool used in Fedora. It is written in Python and offers a large and complex API. However, this API is not well-documented.

This project involves understanding and then documenting the yum api.

  • Maximum number of students: 3
  • Skills required: python, writing
  • Initial contacts: ctyler, Seth Vidal