# FOSS Outreach Program for Women (OPW) **note: this page is still in flux** 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, ...). ------- ## 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, ... ). ------- ## 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.