Open main menu

CDOT Wiki β

Changes

SBR600 Potential Projects

5,496 bytes added, 10:41, 25 September 2013
Infrastructure Projects
[[Category:SBR600]][[Category:Winter 2012 SBR600]]
= 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 [[Winter 2011 Fall 2013 SBR600 Participants|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 [[User:Chris Tyler|Chris Tyler]]).
* 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.
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.
= Raspberry Pi Fedora-ARM Remix Projects =
== iSCSI/AoE Support * Update the raspberrypi-config package ==
[http://enThe raspberrypi-config package contains the default configuration files for Pidora.wikipedia.org/wiki/ISCSI iSCSI] (SCSI over TCP/IP) These files need to be updated to reflect new options available in the Raspberry Pi firmware, as well as options that are not commonly used and [http://en.wikipedia.org/wiki/ATA_over_Ethernet AoE] (ATAmay conflict with common use-cases -overfor example, the current configuration files cause kernel start-ethernet) are different SAN protocols that can up messages to be used reported on a standard ethernet networkthe serial port.[[Fedora ARM Secondary Architecture/iSCSI|iSCSI did not work reliably in Fedora 12 on ARM systems]]This is rarely used, but will be needed by future ARM server systemsany may cause conflicts with other devices connected to that port (e.g. AoE has not been well-tested on ARM systems, LCD displays).
Goals of this projectSkills required:(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.packaging
* Maximium Maximum number of studentsparticipants: 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: [[User:Chris Tyler|ctyler]], [[User:Paul.W|PaulW]]1
== Package Hadoop ==Expected result: An updated, working raspberrypi-config package
[http://hadoop.apache.org/ Apache Hadoop] is a set of tools used for large-scale distributed computing. It would be great to get this packaged for Fedora.== Kernel Configuration Files ==
* Maximum number of students: 3* Skills required: packagingThe build process for the kernel uses a configuration file to control which kernel capabilities are built into the kernel itself, system administration; familiarity with Java programming/packaging* Resources: [[CDOT Development Systems]]which are built as loadable modules, [https://adminand which are not built.fedoraproject.org/mailman/listinfo/devel devel mailing list] (some work on Hadoop packaging has already been done)* Expected result: The Pidora kernel configuration file is a combination of the three Apache Hadoop subprojects (Hadoop Common, HDFS, RaspberryPi default configuration file and MapReduce) will be available in the main Fedora repositories (yum install hadoopconfiguration file. This project involves reviewing the Pidora kernel configuration to optimize it for the widest possible range of use-common hdfs mapreduce)* Initial contacts: [[User:Chris Tyler|ctyler]]cases while ensuring a fairly small kernel image size.
== Test Thumb2 with ARMv7hl * ==Skills required: kernel configuration/building, packaging
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 Maximum number 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").participants: 1
This project involves building a suitable set of packages Expected result: An improved kernel configuration in Thumb2 mode and in regular instruction mode and comparing:# binary size# RPM the raspberrypi-kernel package size# build speed# execution speed
* Maximum number of students: 2* Skills required: packaging, system administration, benchmarking* Expected results: a recommendation to the Fedora-ARM project == Profile and Improve RPM and YUM performance on whether or not to use Thumb2 for the armv7hl architecture* Initial contacts: [[User:Chris Tyler|ctyler]], Jon Masters (jonmasters)Pi ==
== Compare armv5tel RPM/YUM appear to perform slowly on the Pi -- which is appropriate, since the Pi has a slower processor and armv7hl Performance ==storage system than most modern PCs -- but the performance can probably be improved. This project involves profileing the RPM/YUM operations to determine which parts of the processing are slowest, and then examining how those parts work to see if any improvements in speed are possible.
The armv5tel and armv7hl versions of the Fedora ARM port vary in two waysSkills required:* minimum processor version supported (v5 vs. v7)* how floating-point arguments are passed to functions** armv5tel passes floating-point values in the general CPU registersprofiling, because no assumption is made about the presence of a floating point unit (FPU/VFP)** armv7hl passes floating-point values in the FPU registersprogramming, and requires that an FPU be present (the v7 specification requires that a VFP FPU exist)packaging
This project involves doing a comparative benchmark between armv5tel and armv7hl versions Maximum number of the Fedora ARM software to determine the performance difference.participants: 1
* Maximum number of students: 2* Skills required: packaging, system administration, benchmarking* Expected resultsresult: Either a report to the Fedora-ARM project proving that RPM/YUM are as fast as can be expected on the relative Pi, or changes to affected packages to improve performance of armv5tel and armv7hl* Initial contacts: [[User:Chris Tyler|ctyler]]
== Raspbery Pi Configuration Internationalization Support in Firstboot for Pidora 19 ==
The [http://raspberrypi.org Raspberry Pi] device is a tiny, inexpensive ARM microcomputer designed This project involves taking the Pidora 19 Firstboot package and internationalizing it (making it possible to use in educational environments (also of interest to experimenters and hackersmultiple language files with Firstboot). This project involves optimizing Fedora Note that Pidora 19 is expected to run as efficiently as possible on the Raspberry Pi, including:* Tuning the kernel** Adding access to the GPIO pins** Tuning for size** Building use a suitable module set Fedora 18-style Firstboot system (USB device driversas was used in Pidora 18)* Tuning rather than the startup scripts** Optimizing for startup speed and size* Configuring a GUI to run firstboot system used in 128MB (model "A" devices)** Optimizing the X configuration* Reducing Fedora 19 and/or limiting Firefox's memory consumption* Testing alternate web browsershigher.
This project will also involveSkills required:* Selecting the software to be included on the initial filesystem (i.e.python, default package set)** Programming environments* Building a repository to distribute any software that is not included in Fedorai11n using gettext, packaging
DetailsMaximum number of participants:1
* Maximum number Expected result: A version of students: 3* Skills required: packaging, system administration, benchmarking, tuning* Initial contacts: [[User:Chris Tyler|ctyler]]firstboot and the firstboot modules that are fully internationalized
== YUM API Documentation New Firstboot for Pidora 20 ==
Yum is Firstboot on the Pi varies a package management tool used bit from firstboot on PCs, because the software isn't installed onto storage in the same way as PCs. This project involves updating the Fedora. It is written in Python and offers a large and complex API. However, this API is not well-documented20 firstboot package to work with Pidora 20.
This project involves understanding and then documenting the yum api.Skills required: python programming, packaging, testing
* Maximum number of studentsparticipants: 1 Expected result: A version of the Fedora 19 or Fedora 20 firstboot that works on the Pi and has full support for the Pidora options (such as rootfs resizing) == Compiler Flags on Pidora == We're not sure if the compiler flags being used for Pidora are optimal. This project involves building a number of packages with different combinations of compiler flags, observing the results (in terms of binary size and performance) and recommending the optimal set of flags. Skills required: building, benchmarking Maximum number of participants: 1 Expected result: Modified RPM macros that include the optimal flags for Pidora == Avahi Configuration for Pidora == Avahi (zeroconf) enables discovery of computers without DNS or IP numbers. This project involves configuring Avahi for use on the Pi, so that other computers can connect to it by name without DNS support. This configuration must then be packaged in such a way that it can be included in the Pidora composes without causing conflicts. Skills required: testing, packaging Maximum number of participants: 1 Expected results: A configuration package that, when installed, will correctly set up Avahi for local discovery on the Pi == Upstream the Pidora RPM Changes == There are some small changes to the RPM system that have been done for Pidora. These changes need to be included in the upstream version of RPM. This project involves working with upstream to ensure that these changes are in the correct format and included in subsequent releases of RPM. Skills required: interpersonal skills - negotiation, patch creation, packaging Maximum number of participants: 1 Expected results: Pidora RPM changes will be upstreamed == Wayland == Fedora 20 includes support for the Wayland display system. The RaspberryPi foundation has been working on a Wayland implementation for the Pi. This project involves getting the two to work well together. Skills required: system administration, debugging, possibly some programming, packaging Maximum number of participants: 32 Expected results: The Wayland snapshot in Fedora 20 will be usable on the Pi (Ideal: fully packaged; Acceptable: Instructions on how to set it up) == Automate Pidora Kernel and Firmware Building == The Raspberry Pi Foundation maintains a kernel fork that is updated frequently. We would like to package kernel and firmware changes on a daily basis, and have these available in a testing repository so that anyone can use them. Periodically, we will select a kernel-firmware combination from this testing repository and make it available as the main Pidora kernel. * Skills required: scripting (pythonand/or bash), writingpackaging Maximum number of participants: 1 Expected results: Raspberry Pi kernel and firmware updates will be included in a package in a testing repository through an automated (cron'd) process == Change raspberrypi-vc Package to Build from Source == Originally, the VideoCore IV GPU on the Pi was used with proprietary libraries which were only available in compiled form, so the raspberrypi-vc package was originally set up to package prebuilt binaries and not build from source. The source code for these libraries is now available, and the raspberrypi-vc package should be changed to build from source (this will help with SELinux compatibility). Skills required: packaging Maximum number of participants: 1 Expected result: A new version of the raspberrypi-vc package that build from source, is compatible with the current Pidora package, and can be easily updated/maintained == Write an Updated Boot Screen == Pidora includes an OpenGL-powered boot screen, which uses the Raspberry Pi Fedora Remix logo. The current code does not use OpenGL very effectively. This package should be updated to use OpenGL better and to use the Pidora logo. Skills required: C programming, OpenGL programming, packaging Maximum number of participants: 1 Expected result: A visually appealing boot screen, packaged as a drop-in replacement for the current boot screen == Update rootfs-resize == The rootfs-resize package resizes the Pidora rootfs after installation. It works with primary partitions, and it works with the NOOBS system, but it doesn't work with a NOOBS-style layout outside of NOOBS (i.e., where the rootfs is placed in an extended partition). This project involves extending rootfs-resize so that it can resize extended and logical partitions as well as primary partitions. Skills required: Python scripting/programming, system administration, packaging Maximum number of participants: 1 Expected result: An updated rootfs-resize package == Packaging Pi-compatible Software == There are a number of Pi-specific software packages that could/should be included in Pidora. Select one, package it, and get it into Fedora (preferred) or directly into Pidora. {{Admon/tip|Finding Your Own Package|You can find any Pi-specific software and propose packaging it for your project. Note that it must be (a) broadly-useful Pi-specific software, or (b) a substantial software package that would be generally useful in Fedora and specifically on the Pi, in order to be approved as a project.}} Some possible packages ideas to get you started:* Initial contacts: Adafruit WebIDE* Adafruit libraries/tools/etc (select a specific piece of software)* OMXplayer* Vidcore library compatibility package (symlink farm in /opt/vc so that source code expecting to find the VC libraries there will work successfully)* Quick2wire python library See the [[Userhttp:Chris Tyler|ctyler]//trac.proximity.on.ca/projects/rpfr/report/1 Pidora Bug Tracker]for ideas for other packages that people want included in Pidora. Skills required: packaging Maximum number of participants: 1 per package (identify the package!) Expected result: A working, Pidora-compatible package that has gone through package review == Clean Up the Pidora Kickstart File == The Pidora images are composed using a kickstart-based process. The kickstart file could be cleaned up for better readability and smallest-functional package selection. Recent (but not necessarily latest) kickstart: http://scotland.proximity.on.ca/raspberrypi/test-releases/rpfr18v6/latest/pidora-18.ks Skills required: packaging, composing Maximum number of participants: 1 Expeccted result: A clean kickstart file for Pidora 19 = Infrastructure Projects = == Bug Tracker for Pidora == Pidora currently uses a Trac instance for bug tracking. However, there is a lot of spammer activity on that system. Implement an effective spam prevention system on Trac, or implement an alternative bug tracking system such as Bugzilla. Document the solution for future maintainability. Skills required: system administration, documentation Maximum number of participants: 1 Expected result: A spam-resistant bug tracking system == Create a Fedpkg-compatible Package Repository for Pidora == Fedpkg is a tool used to manage Fedora packages using GIT (and http). We'd like to be able to use it for Pidora-specific (non-Fedora) packages as well. To set up Fedpkg, a package database (pkgdb), GIT repository, http repository, and Fedpg configuration will be required. Completion of the various components of this project should result in a usable, RPM-installable Fedpkg configuration for Pidora packages. Skills required: system administration, testing, packaging Maximum number of participants: 3 Expected result: A working Fedpkg repository, plus configuration files packaged up in an RPM == Mirrorlist CGI Script == Yum uses a mirrorlist retrieved from a server to determine which mirrors to use for downloading packages. This mirrorlist can be generated by a script (e.g., to randomize or to optimize mirror selection), but at the present time a static file is just passed through to the yum client. Skills required: scripting, Seth Vidaltesting Maximum number of participants: 1 Expected result: An updated mirrorlist script