]> git.sur5r.net Git - i3/i3.github.io/blob - _docs/gsoc2013-ideas
Merge pull request #64 from ultrabug/master
[i3/i3.github.io] / _docs / gsoc2013-ideas
1 Google Summer of Code 2013 ideas
2 ================================
3 Michael Stapelberg <michael@i3wm.org>
4 March 2013
5
6 == Idea 1: Saved sessions in i3
7
8 Many desktop environments nowadays have a way of restarting the applications
9 that you have been using when you reboot your computer.
10
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.
14
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.
18
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.
22
23 === Desirable skills
24
25 * Experience with C (best) or similar programming languages such as Perl, C++
26 * Willingness and ability to write documentation
27
28 === What you will learn
29
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
33
34 == Idea 2: Testsuite: better input and output
35
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
39 with i3.
40
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.
46
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).
50
51 === Desirable skills
52
53 * Experience with Perl or willingness to learn it
54 * Experience with automated software testing or at least a basic understanding
55   of the concepts
56 * Willingness to learn X11 mechanisms to capture output and simulate input
57
58 === What you will learn
59
60 * How real-world testsuites work
61 * How X11 input/output works
62 * How to implement an entirely new feature into an existing codebase
63
64 == Idea 3: Improve compatibility with certain Applications
65
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).
69
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.
73
74 Fixing compatibility problems is a huge gain for the users of said
75 applications.
76
77 === Desirable skills
78
79 * Some experience in debugging
80 * Willingness to look at X11 traces for many minutes :)
81
82 === What you will learn
83
84 * How real-world debugging works, sometimes with open source (Java) and
85   sometimes with closed source applications (Half-Life, VMware)
86 * How X11 works