FOSS Outreach Program for Women (OPW)

X.Org is participating in round 9 of the Outreach Program for Women. 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/ 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 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

Project: review and fix/finish XCB protocol descriptions

Mentor: Christian Linhart

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

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

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.

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 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
  • 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.