This GSoC proposal is for OpenInkpot, a Debian-based e-reader OS.
Project proposal
I plan to port OpenInkpot to the lightweight uClibc C library in order to improve its memory usage. Here are some of the other benefits this project could provide.
Possible benefits
- Increase number of devices on which OI could run
- Improve performance
- Decrease compile time
- Reduce firmware transfer and installation time
- Simplify porting OI to other architectures
Plan of action
Follow these instructions for porting IPLinux to a new architecture.
- Acquire target device (my own e-reader!)
- Add new architecture identifiers (uclibc and ucarmel) to dpkg.
- Build and package toolchain for new arches.
-
- Cross-compile existing packages to new arches with toolchain, starting with most important packages
- Build and test firmware once the necessary packages (uClibc, dpkg, and BusyBox) have been packaged
- Test packages on device with chroot
- Test complete firmware and allow autobuilders to start porting packages to new arches
Background
Programming experience
I've been programming for about two years. I've primarily used five programming languages: Javascript, PHP, ActionScript 3, Python, and C++. I've finished several small independent programming projects, but two in particular have taught me important lessons.
Last fall, I created an example game for Pygame2, a low-level Python wrapper for SDL. The game ran, but it was worthless as an example because my clumsy graphics abstraction obscured the underlying Pygame2 graphics calls. From this failure, I learned to never lose sight of the purpose of my project. My initial announcement for the flawed example.
Earlier this year, I decided to rewrite my Flash app for drawing snowflake patterns with Javascript and SVG. Once I chose the right data structure, the whole library fell into place. This project taught me that few programs must be complex; with enough thought, you can find a simple solution to many complicated problems. Read more about the SVG snowflake micro-library.
Personal qualities
- I'm hard-working
- When I am assigned a task, I feel compelled to do it as well as I can. I find it difficult to walk away from an unfinished task.
- I'm self-motivated
- Events in my life have taught me to work independently and seek out my own answers. When I discover a problem I don't know how to solve, I start looking for a solution. I check any relevant manuals, search for tutorials, look for examples, and — if I still haven't found a solution — ask for help. Finding answers on my own gives me a feeling of satisfaction and accomplishment.
- I love programming
- Writing code is my favorite hobby, and I will someday make it my profession. I'm not participating in the Google Summer of Code because I really need the money or I want another bullet point for my resume; I'm participating because I want to create software and learn more about software development.
Open-source experience
In addition my recent OI patch, I've spent some time working with Pygame2. While developing an example game with the unstable development version, I found, isolated, and reported several bugs.
GNU/Linux distributions development experience
I've used Ubuntu for about a year, learning much about Linux and Debian. I've become proficient at finding, installing, and upgrading Debian packages. I packaged my first .deb and started my own repository in order to test my fix for Ticket #834. I've compiled my share of source code, and I'm familiar with the GNU build system as both a user and a developer. I've written several bash scripts, and I'm comfortable with the major Unix commands and concepts. I've even spent some time configuring and troubleshooting the GRUB bootloader.
Kernel hacking
Unfortunately, I haven't worked on the Linux kernel yet.