summaryrefslogtreecommitdiff
path: root/XorgOPW.mdwn
blob: de580d375a769ff038db0987b72d09c53a23d78b (plain)
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
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
# FOSS Outreach Program for Women (OPW)
<!--
short overview c&p for mentors what information you should provide
### Project: NAME YOUR PROJECT
1 line Mentor
1 line overview 
#### Goal:
       General goal of the project
#### Tasks
       what should be done
#### Skills: ( Required or it's needed to learn them )
-->

X.Org is participating in round 9 of the [[Outreach Program for Women|https://wiki.gnome.org/OutreachProgramForWomen/]]. The OPW is  "open to anyone who was assigned female at birth and anyone who identifies as a woman, genderqueer, genderfluid, or genderfree regardless of gender presentation or assigned sex at birth. " Please see [[https://wiki.gnome.org/OutreachProgramForWomen/|https://wiki.gnome.org/OutreachProgramForWomen]] for an introduction to the program. This page only lists information specific to X.Org.

For this round we are sponsoring one intern to work on the X.Org stack and related projects (Mesa, DRI, Wayland, ...).

***Application period for this round is closed.*** Please refer to the [[Outreach Program for Women|https://wiki.gnome.org/OutreachProgramForWomen/]] website for future rounds.

-------

## Proposed Projects

Below is a list of projects that we've compiled so far, but if you have an idea for a good project feel free to contact us. If you're interested in becoming a mentor, please read the [[Info for mentors|https://wiki.gnome.org/OutreachProgramForWomen/Admin/InfoForMentors]]

### Project: review and fix/finish XCB protocol descriptions 

Mentor: [[Christian Linhart|ChristianLinhart]]


The main task is to review XCB protocol definitions
of one or multiple X11-extensions ( or the core-protocol ) and
to fix any encountered bugs or unfinished places.

#### Goal

The goal is to get the XCB-implementation of these X11-extensions
to a quality that's sufficient for server-side XCB.

This means that the '''complete''' protocol must be
represented by the XML-definition, so that, for example,
byte-swapping code for the server can be generated
automatically.

That's basically for other X11-extensions what Christian Linhart
is currently doing with XInput and what he'll do for XKB.
(look at the mailing list archives to get an idea.)

#### Tasks
The project includes some or all of the following tasks:

* review of the XML protocol definitions,
* manually compare the spec with the XML,
* compare the spec with the implementation of the X-server and Xlib, in order to catch bugs in the spec,
* make appropriate fixes to the XML,
* fix the parser/generator as needed, or add features to it,
* propose new XML-elements when something cannot be expressed with the current elements,
* implement new XML-elements in the parser and generator,
* write or extend automatic verification tools for the XCB-XML,
* write test-cases for the more complex structures.

#### Skills ( Required or it's needed to learn them )

* knowledge of lowlevel stuff such as bits and bytes, byte-order, alignment, ...
* XML: basic knowledge of XML.
* programming languages: C, Python.
* understand and fix other people's complex code ( the generator ).


### Project: Server-side XCB 

Mentor: [[Christian Linhart|ChristianLinhart]]

#### Goal

The goal is that byte-swapping code in the X-Server is automatically generated
from the XCB protocol definitions.

Switching from the old manually written code to the automatically generated
code
should be possible at X11-extension granularity.
So that the automatically generated code can be used for those extensions
which are already supported in XCB with a quality that's sufficient for
server-side usage.

Also, quality should be ensured by automatic tests which compare the old
manual byte-swapping code with the new automatically
generated code. The test-cases may run outside
of the X-Server, just using both code-variants.

#### Tasks
The project includes some or all of the following tasks:

* write a generator for the byte-swapping code. The generator shall be written in Python and use the parser of xcb/proto.
* modify the framework of the X-Server so that this automatically generated code is called.
* Support switching to the generated code for each X-Extension separately, so we can gradually migrate.
* Write automatic test-cases which compare the old manual byte-swapping code with the new automatically generated code.

#### Skills ( Required or it's needed to learn them )

* knowledge of lowlevel stuff such as bits and bytes, byte-order, alignment, ...
* XML: basic knowledge of XML.
* programming languages: C, Python.
* understand other people's complex code.

### Project: Make XPYB up to date with functionality of XCB

Mentor: [Christian Linhart](ChristianLinhart)

XPYB is the Python binding for the X-protocol.
It basically consist of a generator which generates python code
out of XCB protocol definitions, and some utility code.

XPYB is somewhat behind in supporting all XCB-XML features and will fall further behind due the new features that are in the queue to be added.

#### Links

* [Source](http://cgit.freedesktop.org/xcb/xpyb)
* [Mailinglist](http://lists.freedesktop.org/mailman/listinfo/xcb)

#### Goal

Make XPYB up to date with the functionality of XCB, so that all protocol entities that work with XCB also work with XPYB.

#### Tasks

* Implement those features in XPYB that are supported in libxcb ( or are in the queue to be added ) but not yet supported in XPYB.
* There's probably a lot to do because XPYB is somewhat behind libxcb.
* A part of the project is to find out what's missing in XPYB...
* Make test-cases to test these new features.
* Fix problems/bugs in XPYB.
* ...

#### Skills

* knowledge of low-level stuff such as bits and bytes, byte-order, alignment, ...
* XML: basic knowledge of XML.
* programming languages: Python, C
* glue-logic between Python and C ( which is written in C ).
* understand and fix other people's complex code ( the generator, glue-logic, ... ).

-------

### Project: Build you own Widgetset
 Mentor: [[Walter]]

 Build you own Widgetset 
   
#### Goal:
        
  Since some years the knowledge of the X11 Internals and how to build
  a proper widget is vanishing. New requirements like 4k screens, multiple
  displays are causing havoc. More over there had been several changes in libXt
  to make widgets handling more easy but sadly seldom used. So most code is
  was copied from earlier widgets that do not use these features.
 
#### Tasks
  * build some simple widget
  ** document what and how this is done    
  * build some application to use this widget(s)
  ** document what and how this is done
  * continue to create more complex widget

#### Skills: ( Required or it's needed to learn them )
   You should know about C progamming, Shell scripts.
   Get some basics in X11 progamming

### Note:
  If you are interested contact me. I have prepared some tar files so you have
  an more easy start 

-------

## General Requirements

See the [[general application process|https://wiki.gnome.org/OutreachProgramForWomen/#Application_Process]] first. For our projects, 
Participants need to have at least a basic understanding of the following:

* mailing lists
* irc (graphics developers use irc.freenode.net #xorg-devel,#xorg, #dri-devel, #nouveau and #wayland to name a few.)
* git
* Be comfortable using a linux shell and command line
* building software from source, particularly the X.Org stack. See [[DeveloperStart]] for information

-------
## How to apply

If any of the projects above appeal to you:

* check out the [[general application process|https://wiki.gnome.org/OutreachProgramForWomen/#Application_Process]]
* contact the mentor listed
* start hanging out on the respective IRC channel
* start hacking, get familiar with the code, maybe even send out a patch or two

-------

## Contact
Please contact Peter Hutterer (peter dot hutterer at who-t dot net). IRC nickname is "whot", but note that he's on UTC+10.