1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
About You

1.  My name is Thomas Martitz, you can always contact me at
    [email protected] which I check multiple times per day.
2.  My nick on IRC and the forums is kugel, I am subscribed to the rockbox-dev
    mailing list with my [email protected] 
3.  I'm attending at the HTW Berlin (University of applied science,
    http://www.htw-berlin.de/). I'm in the second year, focusing the Bachelor of
    Engineering in my course of studies, Computer Engineering. I definitely plan
    to get the Master of Engineering after then.
4.  I own many DAPs, including some Sansas (e200, Fuze (v1 and v2), Clip) and
    two Samsungs (YH-925 and YH-J70). I also own a FriendlyARM mini2440
    development board which runs Linux and Rockbox natively. This board will
    help me during this project.
5.  I'm involved in Rockbox since 2007, hanging around, hacking on it and simply
    enjoying being part of the project since then. In early 2009 I was given
    commit access, enabling to submit code directly to the SVN repository.
    I worked in many areas, but most notably the Sansa AMS port where I wrote
    and optimized some drivers and the skin engine where I was the first to use
    it outside of the WPS with the base skin. I also touched many other areas
    with often small but noticeable changes.
6.  I want to work on Rockbox because it's a fun project in all aspects and a
    compelling and useful software. I am actually working on with passion
    it for quite some time and I will continue to do so. The features it offers
    compared to the OF are exciting. In fact, some of its features even beat
    desktop media player or applications shipped with mobile devices which
    creates the desire to run Rockbox on those too. This is what my project will
    be about.
7.  I'm living in Berlin, Germany. The timezone is GMT+1. I am be available to
    the community and my mentor in the morning when I use my laptop in the uni
    and in the afternoon and evening at home.
8.  During the semester, my working hours would probably depending on when I
    come from the uni, but I prefer something between 14:00 - 22:00. I hope
    I can work some 35-40 hours per week, but that will depend on the work load
    the studies put on me.
    During my semester break I can work from 10:00 - 22:00, which means I would
    devote my entire sparetime to the project if needed. I'll be able to work at
    least 50 hours per week, possibly even more.
    The semester break begins on July, 27th. I'll somewhat busy with exams for
    the 3 weeks before, but I can schedule my exams so that they don't collide
    too much with my project. There's another exam period late September and
    I can choose between both periods for each exam. The semester break ends on
    October, 1st.
9.  I have built Rockbox a lot. I am familiar with the development environment
    and most the tools involved.
10. I have a good grasp of the C programming language and the ARM assembly
    language. I also worked with other scripting languages such as shell
    scripts, pearl and ruby.
11. I have good deal of open source experience. I'm involved into Rockbox for 3
    years and I participated in two DevCons. I also have commit access to
    another project, geany-plugins, which is a collection of plugins for use
    with the Geany IDE (which I use exclusively). I've contributed code to the
    plugins and Geany itself and hang around in the geany irc channels for quite
    some time.
    Both project got me accustomed to the open source culture. I'd even say I
    fell in love with it, because it's so fun to collaborate with other awesome
    hackers to produce good code and a useful software which can be used by
    everyone freely.

About Your Project

Abstract :

Recent DAPs show that it's not sensible to replace the the entire factory
OS with Rockbox on them. They have features which Rockbox cannot offer or don't make much sense given
the platforms Rockbox runs on as of now or it's simply difficult to port
Rockbox to them. However, many of todays mobile devices, most prominently
smartphones, come with the ability to run third partly applications. Therefore,
it makes sense to run Rockbox as an application on them, extending the already
feature-rich OS with the stunning playback features, codec support and plugins
of Rockbox. The goal of this project lay the grondwork for running Rockbox as
an application and to port the application to a Linux desktop and a mobile device.

Detailed Description :
We can see the desire among the
entire Rockbox community for a Rockbox application for several years now.
People do not want to miss Rockbox on their smartphones for example. That led
to experiments with the simulator. While the simulator works everywhere where
SDL works, the experiments have shown that the simulator itself is not suitable
for an application because it simulates an existing port. An application should
rather be tailored to the device it runs on. The experiments have also shown
that SDL is rather slow making the simulator not snappy enough to run on a
mobile device. The goal should be to not depend on a possibly slow SDL port,
instead we want to use the OS capabilities directly.
An attempt was made in 2008, but it wasn't quite successful. We also received a
GSoC application for 2009. The experience made will help me through the project.

During the project, the application will be ported to a platform. This port
should not be the end of the Rockbox application effort. In fact, this port
should serve as an example port to aid others porting the application to other
platforms.

Describe your project in as much detail as possible (only relevant details, no need to mention e.g. that you will set up a build environment) Try to subdivide the project in logical sub-projects, and describe them separately

I plan to divide the project into 2 major tasks:

1:  Refactor the existing simulator code into a new port and creating an SDL
    Application

    Here I will port the uisimulator code into target tree. I will split it into
    an application and a simulator part, moving simulator specific bits out of
    the application and create a real sdl port compared to the existing arm or
    coldfire ports.
    This also means revisiting other code areas which have conditional
    compilation (ifdefs) for simulators and and reconsidering the need for this
    ifdefs and whether they are suitable for the application as well, for
    instance enabling arch-specific codec optimizations for the sdl application.
    I plan to port resulting application to my mini2440 board which runs
    Linux. I can directly compare it to a native Rockbox installation, so
    if I manage to get a similar user experience under the application
    I consider this part as succeeded.

2:  Build a native application without SDL upon the groundwork laid above,

    Aim of this port is to remove the need for SDL, but instead rely on
    functions and libraries provided by the OS for threads and drawing.
    Special care about threads has to be taken because Rockbox heavily relies
    on cooperative threading, while the native OS threads are often of a
    preemtive kind.

    I'll probably target android, but other platforms such as Maemo (Linux) or
    Windows Mobile are possible too. I will probably buy a device
    specifically for this task.


Benefit to the Rockbox project

The benefit to the Rockbox project would be immense. It opens the door to many
more use cases and users as it removes the biggest hurdle when porting to a
new device: Being able to replace the OS by running custom code. As many devices
nowadays are locked of some sort it is increasingly difficult to port Rockbox
as a firmware replacement. With the Rockbox application it will also make sense
to run it on a phone, as it seems highly unlikely that Rockbox will be able to
make calls ever. We can provide the Rockbox application as an easy-to-install
app for mobile devices which greatly extends the userbase. For sure it will also
attract new developers which don't necessarily come from embedded systems
for our project which is always good (and the idea behind GSoC afterall).

Milestones and Project plan (this can follow the task subdivision, but this is not absolutely necessary)
Subdivide the working period in several parts, not more than one to three weeks long. For each of these parts, describe what you plan to do in this time, and which deliverables will be finished at the end of it. We know and understand that there will inevitably be deviations from these time estimates, but please try to make them accurate as possible.

   1. Do you expect that your project will need more work or maintenance after the GSoC period ends? What do you think are the chances of you sticking around and helping out with that and perhaps other projects? 

You and the Community

   1. How do you propose you will be keeping everyone informed of your progress, problems, and any questions you might have over the course of the project?
   2. What expectations do you have of your mentor(s) as well as the community itself? 

Misc

   1. Is there anything else that we should know that might have us lean in you/your project's favor?