Name: David Derby
Contact/Email: firstname.lastname@example.org irc: wicket64 (freenode/OFTC)
Background: Graduated in BSc Computer Science 10 years ago. Since leaving university, I pursued a career primarily focused towards system administration. Having worked in technical support for Sun Microsystems supporting Solaris and Linux systems, I achieved Sun certification in System Administration for Solaris 9. My following job, a position I held for six and a half years, was as a System Administrator/Software Engineer in which I gained experience in multiple Linux and Unix variants as well as other operating systems such as OpenVMS. Last year I decided to move abroad and return to university to do a Master's degree in Computer and Systems Engineering at Universidad de los Andes, Colombia and I am now into my second semester. Aside from my sysadmin experience, I am a keen programmer/hacker with knowledge of C (amongst other languages) and Unix and Linux system calls. LinkedIn profile
Project title: Debian GNU/Linux on Neo900.
In early 2010 I purchased the Nokia N900 mobile computer/smartphone running a derivative of Debian GNU/Linux known as Maemo 5/Fremantle. Maemo resembles traditional Linux and showed me that desktop-like computing is possible on a smartphone and there is no reason to comprise and succumb to the restrictions imposed on us by popular mobile operating systems such as iOS, Android, etc. Key benefits of Maemo include desktop/server-style preemptive multitasking and dynamic power management. Five years have passed since its introduction and there is still no other smartphone on the market that offers the user the same power as the N900.
Last year the Neo900 community project was announced which aims to produce a spiritual successor to the N900. Backed by Golden Delicious, the Neo900 is based on Openmoko GTA04 hardware and embraces free software values.
My proposal for GSoC is to optimise Debian GNU/Linux for the Neo900 so that it will be suitable for everyday use. The Neo900 is not yet available however I have already placed a pre-order for the Neo900 and I will use a QEMU environment and my N900 for building and testing (where possible) until I am in possession of the device.
The Neo900 team plan to ship the device with a Linux image which will probably be Debian GNU/Linux (currently unconfirmed) however this is expected to be a stop-gap solution with little optimisation. The image provided by the Neo900 team is not expected to be suitable for everyday use and their main objective is to port Fremantle to the device.
- Ensure that the Neo900 is usable as a mobile phone under Debian. It should be able to make and receive telephone calls, send and receive SMS and access the internet via the available networks. I will probably use the freesmartphone.org mobile telephony stack for this but I will also evaluate oFono to see if it offers any significant advantages (packages for both are already available in Debian).
- Work towards all Neo900 hardware features being usable under Debian.
- Identify useful parts/tweaks present in Fremantle and apply them to Debian.
The Linux kernel will come from the Fremantle Porting Task Force project https://gitorious.org/linux-n900/linux-n900/. My plan is install this kernel under Debian and then create a Linux Container (LXC) for Fremantle under Debian. This serves the purpose of not losing any functionality that is provided by Fremantle and also takes advantage of all of the work already achieved by the Fremantle Porting Task Force. An additional benefit of using LXC is that Fremantle closed components will be sandboxed away from Debian. This will provide a the starting point for a usable system. From there I will be able to start to identify critical Fremantle components that would be off if run natively under Debian and I can start building and porting those components to Debian.
The Neo900 team plan to provide a Board Support Package. It's not yet clear to me what this will consist of but I will need to evaluate this to see what can be used natively under Debian.
Long-term goals (in no particular order)
- Port a touchscreen-friendly user interface to Debian. Possible options include Hildon, Plasma Active, current Nemo Mobile UI, Glacier (currently under development, will require Wayland/Qt5), Tizen's UI, Luna System Manager (Open webOS).
- Port a modern mobile web browser to Debian. Possible options are Apolex, Sailfish Browser, Tizen's browser, ISIS (Open webOS).
- Port other mobile-optimised software to Debian such as a mobile friendly email client (Kontact Touch, Trojitá), satellite/voice navigation (Marble Mobile), office suite (Calligra Mobile), etc.
Implement a suitable MAC framework policy (SELinux or AppArmor). This would be particularly useful for limiting access from closed blobs such as the modem driver.
- Create an installer for Debian on Neo900, ideally one that will boot from SD card, USB or PXE.
- Contribute to upstream Debian project.
File system layout. The Neo900 will have two types of flash storage available: NAND (fast but has a limited capactity) and eMMC (slow but has a large capacity). The N900 dealt with this by "optification" however this is not feasible on Debian as packages are not optified. Note that the problem will not be so extreme on the Neo900 as the NAND is expected to have . I see five possible solutions:
Place /usr, /var, /opt, /home and /tmp on eMMC and the [rest should fit on NAND. The problem with this is that udev is broken and does not allow a separate /usr slice. One possible solution would be to use eudev however this may present a problem for those who wish to use systemd given the tight coupling of udev and systemd.
- Use an overlaying filesystem such as AuFS or OverlayFS.
- Use volume management to create a RAID0 concatenation or striping of NAND flash and eMMC flash.
- Configure APT with a post-install script that automatically optifies packages.
- Install everything on eMMC and use the NAND for caching in a similar manner to SSD caching. I need to investigate this as I'm unsure whether the NAND is suitable for heavy writing so this might be a bad idea.
Synopsis: Optimise Debian GNU/Linux for the Neo900 mobile device.
Benefits to Debian: Debian will become a viable option for smartphones and other touch screen devices. Hopefully this will generate interest in porting Debian to other mobile devices (ports to Android devices should be achievable using libhybris). Although the focus of this project is for the Neo900, much of the work should be useful for those wanting to run Debian on the original N900.
Deliverables: I see this as an ongoing project that I would like to continue to work on beyond GSoC. I would like to have the primary goals completed for GSoC but it really depends on what turns out to be achievable without the having the hardware available and any obstacles that I may encounter. I will move on to the long-term goals if necessary. I would prefer to discuss the deliverables and schedule with the project mentor.
Project schedule: I can begin this project as soon as this semester finishes. I expect to be able to dedicate my time to this project after the date of my final exam (see below). The following semester will begin on 28 July so my available time will be limited from this date.
Exams and other commitments: The last day of exams is on 26 May however I expect that my final exam will take place sometime before then. I have an exam on 6 May. Other exam dates are not yet confirmed.
Other summer plans: I may take an optional Securing Coding summer course as part of my master's degree that runs in the evenings (6pm-9pm) from 16 June to 4 July.
Why Debian? Having used a multitude of operating systems I have come to settle on Debian for personal use. I appreciate the high standards set by the Debian project (Social Contract and DFSG), the diversity in terms of ports to different ISAs and variety of kernels (Linux/kFreeBSD/Hurd). I am yet to find a distribution of Linux that betters it in terms of stability and completeness.
Are you applying for other projects in SoC? No.