The core of the Linux Screen Reader is defined as the components that enable the delivery of events to scripts, provide tools for inspecting accessible widgets, support input and output devices, enable persistence and configuration of settings, and manage extensions. The following resources are available for people interested in learning about these components.

  • The LSR workbook gives an overview of the architecture of the LSR system. It describes fundamental LSR concepts and components, and links to parts of the generated source code documentation as a way of connecting design to implementation. The workbook is updated every few releases and may not reflect the current architecture of LSR. LSR workbook as a single file.

  • The LSR UI Specification describes the design of the non-core parts of LSR as defined by the supplied perks, choosers, monitors, devices and settings. These define the user interface including the speech output and keyboard input behavior and thus provide working examples of using the core services.

  • The LSR epydoc is generated from the Python docstrings in the LSR source code. It describes the purpose of all packages, modules, classes, functions, and methods as well as all instance, class, and parameter variables. The epydoc is guaranteed to match the source before each major release of LSR.

  • The source code can also be viewed on line.

How to contribute

  1. Check the project ideas page. Let us know if you want to help implement any of the short term features by emailing the LSR mailing list (

  2. Let us hear your novel ideas. Most new features only require that you write a script or device extension to LSR rather than modify the deep internals. Discussing your ideas on the LSR mailing list ( will ensure you're not headed for more work than is necessary.

  3. Understand the concepts in the LSR workbook and the structure of the code in the LSR epydoc. Working on the core will be difficult if you don't have a working knowledge of the architecture and codebase.

  4. Create a development sandbox so you can hack without having to reinstall after each change.

  5. Become versed in the LSR code style guidelines. We like to run a tight ship.

  6. Implement your idea.
  7. Submit patches. We will review your initial contributions to the core to establish trust and pedigree.
  8. Become priviledged. We may grant commit permissions after one or more successful contributions to the core.

Attic/LSR/CoreDevelopers (last edited 2013-11-21 22:56:09 by WilliamJonMcCann)