YAFFS is an Open Source flash file system used in many embedded applications such as mobile phones, PDAs, aerospace and point of sale. YAFFS is mainly used in Linux systems but is also used with other OSs. YAFFS is even used in the Google Android platform!

We're looking for some bright minds interested in the GSoC concept - Google 2008 Summer of Code - to help make YAFFS even better. The particular area of interst here is performance improvement, and enriching the YAFFS development environment with support tools.

We strongly encourage student generated ideas, as well as further ideas from the YAFFS community.

Performance analysis

Performance is increasingly important in delivering high quality user experience on media-rich devices such as Google Android-based devices. High file system performance leads to slicker UI and faster data transfers. High performance also reduces flash memory read/writes which  reduces power consumption, meaning better battery life.

Our major focus for GSoC is to develop a performance analysis framework and tools that will help to identify opportunities for improvement as well as evaluate the performance impact of code changes. It would be great if this performance toolkit could be generalised for other applications, but that's beyond the focus of what we want to achieve here.

We have some ideas to seed this, but encourage students to think of their own ideas too.
* Develop an environment-neutral data gathering framework.
* Write a FUSE wrapper for YAFFS to improve test scripting. Include the data gathering framework in the FUSE wrapper.
* Extend the Android simulator with these tools, thus allowing performance analysis of Linux-based mobile devices.
* Develop performance-analysis display tools to allow clear observation of gathered data.
* Help in performance analysis.

Other ideas
We have some ideas of things we'd like to see done, but are not sufficient for a GSoC project on their own. These could be included with other ideas to make sufficient scope for a GSoc project. These tasks include:

* If documentation is your delight we would love to have someone build on the existing material and generate lucid new docs on How to integrate YAFFS, How it works, YDI Interface details, and anything else your training or experience makes clear our users would benefit from.
* Develop developer-support tools such as unyaffs: a tool to take a yaffs image and unpack the files on the host device.
*Improve/rewrite mkyaffsimage and related mtdutils to make image generation and extraction easier to do.


Got some ideas of you own? Give us a yell!