The main page is at SummerOfCode2014.


All the the project descriptions should follow the following template.

Title of the project

  • Description of the project: At least 8-10 lines describing the project. It is essential to have a good description of your project idea if you want to attract good student applications. You should have enough information here to guide a prospective student when they're deciding whether to work on your project or not. Don't go too technical here, necessarily; you don't need to spell out your complete design for a project, nor should you. Give potential applicants the core idea of what you're thinking/expecting, and be prepared to work with them on their interpretation of the project as/when they apply.

  • Confirmed Mentor: Name of the mentor

  • How to contact the mentor: (mail, IRC, etc)

  • Confirmed co-mentors: It is not compulsory to have co-mentors, but it is definitely a good idea. Secondary mentors do not need to be as knowledgeable as the primary mentor, but they should be available to help the student as/when necessary (e.g. the primary mentor is on vacation)

  • Deliverables of the project: A clear and simple description of what you expect from a successful project

  • Desirable skills: Skills that the student has or is willing to develop. Remember, the students are not likely to have as much experience as the mentor!

  • What the student will learn: Tell the students what they should expect to pick up from the project, and how they will make a difference to Linaro. Help to motivate them here!

Projects with confirmed mentors

Please keep this section clear of project ideas without confirmed mentors, to avoid any confusion for prospective students. Such projects should be published in the next section.

AArch64 porting

  • Description of the project: ARMv8 is the newest version of the ARM CPU architecture, and with it comes a new 64-bit execution state called AArch64. The new 64-bit world includes a new instruction set with features such as more advanced SIMD capability, instructions to speed up software cryptography, increased register files, flexible addressing modes, support for tagged pointers, 64k data pages, a new exception model, enhanced cache management and enhanced floating point operations (IEEE754-2008). Making the most of these new features will necessitate porting of existing software: multimedia making use of SIMD for performance, multi-threaded applications and libraries using atomics for thread safety, etc. We have already identified a large example set of Free and Open Source Software packages where assembly is used and looks like it will need porting (more details). There is much more work here than Linaro engineers are going to be able to cover themselves, so we're looking for bright students to help!

  • Confirmed Mentor: Steve McIntyre

  • How to contact the mentor: [email protected] , SteveMcIntyre on

  • Confirmed co-mentors: TBA, we may have several iterations of this project targeting different packages

  • Deliverables of the project: A successful student will pick one or more existing Free Software package(s) that will benefit from ARMv8 porting, targeting threading, performance and other issues. Working with a mentor, he/she will generate patches to add useful improvements, document the benefits and submit them upstream.

  • Desirable skills: An appreciation of the challenges of porting software to new architectures, analysing existing software and identifying necessary changes. Low level skills such as assembly programming will be a major plus, depending on the package in question. Experience in build systems (autotools and others) is important to be able start quickly.

  • What the student will learn: How to work on a small team improving existing software; picking up knowledge about the latest CPU architecture which will be coming to mobile and other platforms very soon.

SIMD support for fftw3 (FFT library)

Run lightweight IP stack on top of OpenDataPlane

Port DPDK examples to OpenDataPlane

email submission interface for Debian package testing in LAVA

Publishing large files from a LAVA device

DTS schema and linter

Linux Flattened Device Tree Self-checking

UEFI Runtime Configuration from Flattened Device Tree

Port UEFI to Low-Cost Embedded Platform

  • Description of the project: UEFI is a standardized interface for firmware and Tianocore is an open source project providing a UEFI implementation that conforms to the UEFI spec. UEFI was designed primarily with general purpose computers in mind, but many of the benefits of UEFI are also valid for embedded system design. This project is to work through the process of porting UEFI to a new ARM platform (most likely the BeagleBoneBlack) and document the findings to make it easier for other developers to port UEFI to their own hardware.

As a secondary goal, this project will also explore how well UEFI matches with embedded designs and will provide recommendations for UEFI specification changes that would be required to make embedded UEFI fully compliant with the specification.

NEON2/VFPv4d32 emulation for Linux

Renderscript Port

Projects without confirmed mentors

This page contains project ideas that have been suggested but do not (yet!) include confirmed mentors. These projects won't happen if nobody steps up to the task of mentoring them.

If you are willing and able to mentor one of those projects, please add your name to the Mentors section and move the paragraph back up the the first section.

If you want to add an idea, please follow the template below. But before doing so, please consider mentoring the project, and/or looking for co-mentors to help you doing so. Not having mentors means the project won't happen.

Auxv based runtime cpu detection for OSS software

  • Description of the project: Many software try to detect runtime which CPU features are available (such as SSE on x86 or NEON on ARM). Methods used currently for runtime detection are often based cpuid instruction, parsing /proc/cpuinfo or trapping SIGILL to detect unsupported instructions. Worse, some projects don't have any runtime detection and only have compile-time detection. In this project, student would add auxv based runtime detection to a couple of open-source projects and write blog-posts detailing how auxv can be used for detecting cpu as documentation. Some of the methods for accessing auxv include libauxv ( and glibc's getauxval() function.

  • Confirmed Mentor: Name of the mentor

  • How to contact the mentor: (mail, IRC, etc)

  • Confirmed co-mentors:

  • Deliverables of the project:

  • Desirable skills:

    • C programming skills
    • Familiarity with Linux as application build envirment
  • What the student will learn:

    • interacting with Open Source projects
    • Details of CPU runtime detection

Coreboot on AArch64

  • Description of the project: Coreboot is a minimal firmware implementation, initially created as "LinuxBIOS" to be a replacement for the default PC firmware. This project is about porting this software to the 64-bit ARM architecture, AArch64. Mainline Coreboot contains some support for the 32-bit ARMv7-A architecture (AArch32), but AArch64 has a new exception handling model and a new instruction set, so a complete new port is required. Hardware platforms are still in short supply, so the intended target platform is the free (as in your favourite beverage) ARM Foundation Model for ARMv8. This also reduces the scope of this otherwise quite complex task, since certain steps such as memory controller configuration will be required.

  • Confirmed Mentor: Name of the mentor

  • How to contact the mentor: (mail, IRC, etc)

  • Confirmed co-mentors: Leif Lindholm

  • Deliverables of the project: Patches implementing coreboot support for the ARM Foundation Model in 64-bit mode, with a hardware feature support set less than what would be expected from an actual hardware platform.

  • Desirable skills:

    • C programming skills
    • Familiarity with Linux as application build environment
    • A basic grasp of processor architecture concepts
  • What the student will learn:

    • interacting with Open Source projects.
    • The 64-bit ARM instruction set (A64).
    • The AArch64 exception model.
    • Firmware concepts and design.

SummerOfCode2014/ProjectIdeas (last modified 2014-04-05 20:05:50)