Tender to implement C++ accessibility tests (#202110-01)
The Document Foundation (TDF) is the charitable entity behind the world’s leading free/libre open source (FLOSS) office suite LibreOffice.
We are looking for an individual or company to implement C++ accessibility tests.
The work has to be developed on LibreOffice master, so that it will be released in the next major version.
The current accessibility tests are rather incomplete and hard to maintain. Additionally, they are written in Java.
The scope of this tender is to convert them into in-process cppunit-based tests and create a solid foundation in both code as well as documentation to facilitate extending the coverage both as part of this tender as well as for follow-up contributions. TDF aims to prepare a good infrastructure and documentation, so that adding further tests is much simpler in the future, even for new kinds of widgets, up to a point where they could be implemented as part of our EasyHacks. The implementation therefore has to be solid and thorough to support future test cases easily.
We recommend the following steps to approach the tender deliverable:
- assessing the technical requirements (both using the existing tests to convert, plus the various requirements of a11y in general)
- assessing the current status
- designing and creating the new required interfaces, or adapting or augmenting existing ones
- creating helpers to ease writing tests
- writing some tests to both serve as examples and proof of concept (at least a couple for each key aspect of testing, but exercising the infrastructure to validate it is key to having something that has a chance of withstanding the test of time)
- extensive documentation on all those, plus how to write tests and such
- peer review
Therefore, this tender should provide the infrastructure to:
- Test the interfaces (AT-SPI, UIA, MSAA, etc.) allowing accessibility tools (ATs) such as e.g. screen readers, magnifier glasses, etc. to access the information required to perform their tasks. This requires testing the LibreOffice implementation of the AT interfaces themselves to catch issues at the outer edge. It is crucial because even if all is well working inside LibreOffice itself, but the information is not properly sent to the platform, it still won’t work for users. Also, it probably has to be done for each platform separately (Desktop Linux (AT-SPI2), Windows (UIA, MSAA), macOS etc.) as their APIs are different, even if often similar, and have separate modules in LibreOffice.
- Test that there is enough information sent through those interfaces and that it is accurate and usable. This could rely on internal unified interfaces to fetch information and interact with the UI, but there still is a fair bit of diversity on what needs to be tested.
- Test that functionalities are usable with different type of input (e.g. work with the keyboard, as it’s the most common offender). Also this could rely on internal unified interfaces to fetch information and interact with the UI, but there still is a fair bit of diversity on what needs to be tested.
A key item of the deliverables for this tender is the extensive documentation (in addition to the source-code documentation) that will allow to both maintain the converted tests as well as create additional tests. The documentation shall include (but is not limited to) common pitfalls with accessibility related tests (like timeouts/waiting for events/deal with load dependent/parallelism differences) and how to deal with them. The documentation could walk the developer through the process behind the creation of newly created tests, showcasing both the obvious and not-so-obvious hurdles with that specific tests/a11y related tests in general and how they were dealt with. Aiming for an extendable framework, this likely requires creating new interfaces for missing functionality for reuse in tests.
We expect bidders to provide information on both the code and the non-code parts of this tender, e.g. methodology, structure and technical aspects. The Document Foundation will publish this under a free and open source license and make it available to the general public.
Required skills
- Extensive knowledge of C++
- Experience working on the LibreOffice source code
Other skills
- English (conversationally fluent in order to coordinate and plan with members of TDF)
We use free, libre and open source (FLOSS) software for development wherever possible, and the resulting work must be licensed under the Mozilla Public License v2.0.
TDF welcomes applications from all suitably qualified persons regardless of their race, sex, disability, religion/belief, sexual orientation or age.
Bidders will get a preference for including a partner or independent developer who has not been involved in a successful tender before.
As always, TDF will give some preference to individuals who have previously shown a commitment to TDF, including but not limited to certified developers and/or members of TDF. Not being a member, or never having contributed before, does not exclude any applicants from consideration.
The task offered is a project-based one-off, with no immediate plans to a mid- or long-term contractual relationship. It is offered on a freelance, project basis. Individuals and companies applying can be located anywhere in the world.
When budgeting, we anticipated that this project (all items combined) to take in the region of 30 days of work. Should bidders’ assessment result in a significantly different number, please reach out to us before sending your bid, so we can clarify upfront.
TDF is looking forward to receiving your applications for one or more of the aforementioned tasks, your financial expectations and the earliest date of your availability, via e-mail to a committee at tender20211001@documentfoundation.org no later than November 26, 2021.
Applicants who have not received feedback by December 23, 2021 should consider that their application, after careful review, was not accepted.
All bidders are invited to ask their questions on this tender until November 19, 2021. Questions and answers will be made public in a collected and anonymized form.