1 Google Summer of Code 2013 ideas
2 ================================
3 Michael Stapelberg <michael@i3wm.org>
6 == Idea 1: Saved sessions in i3
8 Many desktop environments nowadays have a way of restarting the applications
9 that you have been using when you reboot your computer.
11 In i3, we want to take that idea a step further: We want to make it possible
12 for the user to define a precise layout, which is then filled with the
13 application windows as they start up.
15 Many users are currently achieving a similar effect with custom scripts and
16 lots of sleep calls to wait for applications to launch and then simulate
17 interactive commands to move windows around.
19 Many of the building blocks for this feature are already in place, but there
20 still are a few places of code that need to be touched, a specification to be
21 written, user feedback to be gathered and documentation to be updated.
25 * Experience with C (best) or similar programming languages such as Perl, C++
26 * Willingness and ability to write documentation
28 === What you will learn
30 * How X11 and i3 work (not completely, but the most important parts)
31 * How to interact with users
32 * What good specification and documentation entails
34 == Idea 2: Testsuite: better input and output
36 i3 uses a comprehensive testsuite and cares about test-driven development as
37 well as regression tests. While our testsuite covers quite a lot of code and
38 works well and fest, it currently only uses the IPC interface to communicate
41 The current state enables us to simulate anything a user might also trigger by
42 a keypress. This does *not* include dragging windows around, moving the mouse,
43 clicking on things, or handling actual keyboard events. Furthermore, the
44 testsuite never sees the actual output the user gets to see. Instead, it just
45 looks at the data structures.
47 Therefore, it would be good to extend the testsuite so that it captures the X11
48 output and compares it with saved images. Also, X11 input such as mouse and
49 keyboard input should be simulated somehow (e.g. captured and replayed).
53 * Experience with Perl or willingness to learn it
54 * Experience with automated software testing or at least a basic understanding
56 * Willingness to learn X11 mechanisms to capture output and simulate input
58 === What you will learn
60 * How real-world testsuites work
61 * How X11 input/output works
62 * How to implement an entirely new feature into an existing codebase
64 == Idea 3: Improve compatibility with certain Applications
66 We often receive bug reports which are specific to certain toolkits and/or
67 applications. For example, people are reporting problems with the IntelliJ IDE,
68 Java applications in general, VMware or Half-Life (via Steam).
70 Most often, these problems are caused by i3 doing things slighty differently
71 than other window managers and can be solved by observing and comparing what
72 others do and what i3 does.
74 Fixing compatibility problems is a huge gain for the users of said
79 * Some experience in debugging
80 * Willingness to look at X11 traces for many minutes :)
82 === What you will learn
84 * How real-world debugging works, sometimes with open source (Java) and
85 sometimes with closed source applications (Half-Life, VMware)