SlideShare a Scribd company logo
1 of 31
Download to read offline
How GNOME Obsoleted its
“Enable Accessibility”
Setting
Alejandro Piñeiro (apinheiro@igalia.com)
Topics
●

Accessibility vs. Accessibility Support

●

Phase 1: Getting Started

●

Phase 2: Rebuilding What We Had

●

Phase 3: Achieving “Always On” Accessibility

●

How Does This Affect Me?
How GNOME Obsoleted its "Enable Accessibility Setting" | Alejandro Piñeiro | apinheiro@igalia.com
Accessibility vs.
Accessibility Support
An extremely quick introduction
Accessibility: removing barriers
●

Themes and fonts

●

Keyboard shortcuts

●

Visual bells

●

Assistive Technologies

How GNOME Obsoleted its "Enable Accessibility Setting" | Alejandro Piñeiro | apinheiro@igalia.com
Accessibility support: enabling
access via ATs
●

Screen Reader

●

Screen Magnifier

●

Navigation by on-screen keyboard

●

Navigation by voice

How GNOME Obsoleted its "Enable Accessibility Setting" | Alejandro Piñeiro | apinheiro@igalia.com
Phase 1: Getting Started
Creating an Accessible, Free Desktop
Starting GNOME Accessibility
●

Mar 1999: GNOME 1.0 release

●

Oct 2000: “GNOME Accessibility Summit”
–
–
–

●

Sun, IBM, and others
How to make an accessible Free Desktop
Focus on GNOME 2.0

Jun 2002: GNOME 2.0 released

How GNOME Obsoleted its "Enable Accessibility Setting" | Alejandro Piñeiro | apinheiro@igalia.com
Bolted on; not built in
●

Allowed to evolve independently

●

Implemented as gmodule plugins
–
–

●

gail
atk-bridge

Loaded conditionally at run-time based on an
Accessibility “on/off” user setting

How GNOME Obsoleted its "Enable Accessibility Setting" | Alejandro Piñeiro | apinheiro@igalia.com
Plugin pros
●

Support won't interfere when it is not needed

●

No additional memory/CPU overhead

(i.e. Hide the problems rather than fix them)

How GNOME Obsoleted its "Enable Accessibility Setting" | Alejandro Piñeiro | apinheiro@igalia.com
Plugin cons
●

Tied to the session

●

Loaded only at application start time

●

Users need accessibility enabled in order to
enable accessibility

How GNOME Obsoleted its "Enable Accessibility Setting" | Alejandro Piñeiro | apinheiro@igalia.com
Enabled by default in GNOME 2?
●

●

Nov 2005: Accessibility enabled by default for
development releases: ACCEPTED
Jul 2008: Accessibility enabled by default for
stable releases: REJECTED

How GNOME Obsoleted its "Enable Accessibility Setting" | Alejandro Piñeiro | apinheiro@igalia.com
“Still we have the problem that
our current accessibility
technology just sucks too much
for being enabled by default.”
-- desktop-devel-list commenter

How GNOME Obsoleted its "Enable Accessibility Setting" | Alejandro Piñeiro | apinheiro@igalia.com
Wait a moment ...
●

Still “sucks too much” after eight years?

●

Accessibility was seen as an optional add-on.

●

The Accessibility Team was always small.

●

And then ...

How GNOME Obsoleted its "Enable Accessibility Setting" | Alejandro Piñeiro | apinheiro@igalia.com
Perfect storm
●

Corporate accessibility development stops
–
–

●

Corporate “change of direction”
Layoffs followed by takeovers

GNOME 3 development starts

How GNOME Obsoleted its "Enable Accessibility Setting" | Alejandro Piñeiro | apinheiro@igalia.com
Phase 2: Rebuilding
What We Had
And taking the opportunity to make it better
2010: Rework existing support
●

Bonobo deprecation

●

AT-SPI over DBUS (AT-SPI2)

●

GObject Introspection

●

GSettings vs GConf

How GNOME Obsoleted its "Enable Accessibility Setting" | Alejandro Piñeiro | apinheiro@igalia.com
2010: Implement new support
●

New toolkits like Clutter

●

New widgets in existing toolkits like Gtk+ 3

●

New desktops like GNOME Shell

How GNOME Obsoleted its "Enable Accessibility Setting" | Alejandro Piñeiro | apinheiro@igalia.com
2011: Make improvements
●

●

●

Fix regressions in the new and reworked code
Improve toolkit a11y support, e.g.
GtkTreeView
Improve performance and stability

How GNOME Obsoleted its "Enable Accessibility Setting" | Alejandro Piñeiro | apinheiro@igalia.com
2010-2011: Integrate modules
●

Cally becomes part of Clutter

●

Gail becomes part of GTK

●

ATK implementations are now built-in

●

But atk-bridge remained a plugin

How GNOME Obsoleted its "Enable Accessibility Setting" | Alejandro Piñeiro | apinheiro@igalia.com
Phase 3: Achieving
“Always On” Accessibility
It takes a community to obsolete a setting.
2012: “Year of Accessibility”
●

●

●

Hackfest to plan further work, including
accessibility enabled by default
Developers to focus on significantly improving
the accessibility stack
Friends of GNOME Campaign to support
additional development

How GNOME Obsoleted its "Enable Accessibility Setting" | Alejandro Piñeiro | apinheiro@igalia.com
What changed?
●

Stability improvements

●

Performance improvements

●

Accessibility framework not sending/getting
messages unless an AT is listening

How GNOME Obsoleted its "Enable Accessibility Setting" | Alejandro Piñeiro | apinheiro@igalia.com
Enabled by default in GNOME 3?
●

Apr 2012: proposed again

●

tl;dr: ACCEPTED

How GNOME Obsoleted its "Enable Accessibility Setting" | Alejandro Piñeiro | apinheiro@igalia.com
The conservative approach
●

Proposed by the Accessibility Team

●

Just change the default value of the setting

●

Approved by the GNOME Community

How GNOME Obsoleted its "Enable Accessibility Setting" | Alejandro Piñeiro | apinheiro@igalia.com
The no-turning-back approach
●

Proposed by Benjamin Otte & Bastien Nocera

●

Make atk-bridge a library which toolkits link to

●

Embraced by the community (who pitched in)

●

Implemented as the solution

How GNOME Obsoleted its "Enable Accessibility Setting" | Alejandro Piñeiro | apinheiro@igalia.com
What's the difference?
●

Not an add-on but an add-in

●

For users: It JustWorks™

●

For developers:
–
–

App accessibility is tested by everyone
The atk-bridge is compiled by more developers

How GNOME Obsoleted its "Enable Accessibility Setting" | Alejandro Piñeiro | apinheiro@igalia.com
Is it working?
●

Accessibility is always on as of GNOME 3.6.

●

Distros are shipping it, users are using it.

●

Developers have not suggested we undo it.

●

We're finding and fixing bugs here and there.

●

But...Yeah, it's working.
How GNOME Obsoleted its "Enable Accessibility Setting" | Alejandro Piñeiro | apinheiro@igalia.com
How Does This Affect Me?
As a developer who wants to make my
application or environment accessible
Are you using GTK?
●

If you are using GTK >= 3.6:
–
–

●

GTK depends on the new library
Your app should be accessible out of the box

If you are using GTK2:
–
–

These changes were not backported
The setting was kept in GNOME 3 for such apps

How GNOME Obsoleted its "Enable Accessibility Setting" | Alejandro Piñeiro | apinheiro@igalia.com
Any other toolkit/application?
●

●

Assuming that you already have an ATK
implementation for your widgets ...
You only need to use at-spi2-bridge library
–
–

●

Add the dependency
Call an init method

GNOME Shell's patch:
–

16 insertions, 199 deletions
How GNOME Obsoleted its "Enable Accessibility Setting" | Alejandro Piñeiro | apinheiro@igalia.com
Questions?

More Related Content

Similar to How GNOME Removed its "Enable Accessibility

Open accessibility at the desktop - the present and the future.
Open accessibility at the desktop - the present and the future.Open accessibility at the desktop - the present and the future.
Open accessibility at the desktop - the present and the future.AEGIS-ACCESSIBLE Projects
 
GNOME 3.0 Accessibility: State of the Union (Desktop Summit 2011)
GNOME 3.0 Accessibility: State of the Union (Desktop Summit 2011)GNOME 3.0 Accessibility: State of the Union (Desktop Summit 2011)
GNOME 3.0 Accessibility: State of the Union (Desktop Summit 2011)Igalia
 
Gnome Architecture
Gnome ArchitectureGnome Architecture
Gnome Architecture동수 장
 
Contributions to an open source project: Igalia and the Chromium project
Contributions to an open source project: Igalia and the Chromium projectContributions to an open source project: Igalia and the Chromium project
Contributions to an open source project: Igalia and the Chromium projectIgalia
 
The Chromium/Wayland project (Web Engines Hackfest 2017)
The Chromium/Wayland project (Web Engines Hackfest 2017)The Chromium/Wayland project (Web Engines Hackfest 2017)
The Chromium/Wayland project (Web Engines Hackfest 2017)Igalia
 
Freesoftwarealternatives 100903075340-phpapp02
Freesoftwarealternatives 100903075340-phpapp02Freesoftwarealternatives 100903075340-phpapp02
Freesoftwarealternatives 100903075340-phpapp02Gurpreet Singh Sond
 
Guadec 2012 lt - web application stores in gnome
Guadec 2012   lt - web application stores in gnomeGuadec 2012   lt - web application stores in gnome
Guadec 2012 lt - web application stores in gnomeJosé Dapena Paz
 
Web application stores in GNOME (GUADEC 2012)
Web application stores in GNOME (GUADEC 2012)Web application stores in GNOME (GUADEC 2012)
Web application stores in GNOME (GUADEC 2012)Igalia
 
GNOME Contribution
GNOME ContributionGNOME Contribution
GNOME Contributionprinceofgiri
 
The Chromium project's Way to Wayland (FOSDEM 2018)
The Chromium project's Way to Wayland (FOSDEM 2018)The Chromium project's Way to Wayland (FOSDEM 2018)
The Chromium project's Way to Wayland (FOSDEM 2018)Igalia
 
The Chromium/Wayland Project (BlinkOn 9)
The Chromium/Wayland Project (BlinkOn 9)The Chromium/Wayland Project (BlinkOn 9)
The Chromium/Wayland Project (BlinkOn 9)Igalia
 
he Future of Continuous Integration in GNOME
he Future of Continuous Integration in GNOME he Future of Continuous Integration in GNOME
he Future of Continuous Integration in GNOME dmgerman
 
OpenOffice.org and ODF Accessibility Today (OOoCon 2008 Bejing)
OpenOffice.org and ODF Accessibility Today (OOoCon 2008 Bejing)OpenOffice.org and ODF Accessibility Today (OOoCon 2008 Bejing)
OpenOffice.org and ODF Accessibility Today (OOoCon 2008 Bejing)Malte Timmermann
 
Multimedia in Plone - Andy Nicholson
Multimedia in Plone - Andy NicholsonMultimedia in Plone - Andy Nicholson
Multimedia in Plone - Andy Nicholsonknappt
 
SIGNA11Y - Speaker Presentations
SIGNA11Y - Speaker PresentationsSIGNA11Y - Speaker Presentations
SIGNA11Y - Speaker PresentationsCello Signal
 

Similar to How GNOME Removed its "Enable Accessibility (20)

Chromium wayland
Chromium waylandChromium wayland
Chromium wayland
 
Open accessibility at the desktop - the present and the future.
Open accessibility at the desktop - the present and the future.Open accessibility at the desktop - the present and the future.
Open accessibility at the desktop - the present and the future.
 
GNOME 3.0 Accessibility: State of the Union (Desktop Summit 2011)
GNOME 3.0 Accessibility: State of the Union (Desktop Summit 2011)GNOME 3.0 Accessibility: State of the Union (Desktop Summit 2011)
GNOME 3.0 Accessibility: State of the Union (Desktop Summit 2011)
 
Blankon Installer
Blankon InstallerBlankon Installer
Blankon Installer
 
Gnome Architecture
Gnome ArchitectureGnome Architecture
Gnome Architecture
 
Contributions to an open source project: Igalia and the Chromium project
Contributions to an open source project: Igalia and the Chromium projectContributions to an open source project: Igalia and the Chromium project
Contributions to an open source project: Igalia and the Chromium project
 
The Chromium/Wayland project (Web Engines Hackfest 2017)
The Chromium/Wayland project (Web Engines Hackfest 2017)The Chromium/Wayland project (Web Engines Hackfest 2017)
The Chromium/Wayland project (Web Engines Hackfest 2017)
 
Freesoftwarealternatives 100903075340-phpapp02
Freesoftwarealternatives 100903075340-phpapp02Freesoftwarealternatives 100903075340-phpapp02
Freesoftwarealternatives 100903075340-phpapp02
 
Guadec 2012 lt - web application stores in gnome
Guadec 2012   lt - web application stores in gnomeGuadec 2012   lt - web application stores in gnome
Guadec 2012 lt - web application stores in gnome
 
Web application stores in GNOME (GUADEC 2012)
Web application stores in GNOME (GUADEC 2012)Web application stores in GNOME (GUADEC 2012)
Web application stores in GNOME (GUADEC 2012)
 
GNOME Contribution
GNOME ContributionGNOME Contribution
GNOME Contribution
 
The Chromium project's Way to Wayland (FOSDEM 2018)
The Chromium project's Way to Wayland (FOSDEM 2018)The Chromium project's Way to Wayland (FOSDEM 2018)
The Chromium project's Way to Wayland (FOSDEM 2018)
 
The Chromium/Wayland Project (BlinkOn 9)
The Chromium/Wayland Project (BlinkOn 9)The Chromium/Wayland Project (BlinkOn 9)
The Chromium/Wayland Project (BlinkOn 9)
 
he Future of Continuous Integration in GNOME
he Future of Continuous Integration in GNOME he Future of Continuous Integration in GNOME
he Future of Continuous Integration in GNOME
 
OpenOffice.org and ODF Accessibility Today (OOoCon 2008 Bejing)
OpenOffice.org and ODF Accessibility Today (OOoCon 2008 Bejing)OpenOffice.org and ODF Accessibility Today (OOoCon 2008 Bejing)
OpenOffice.org and ODF Accessibility Today (OOoCon 2008 Bejing)
 
Computer practical
Computer practicalComputer practical
Computer practical
 
Ubuntu Quick Guide
Ubuntu Quick GuideUbuntu Quick Guide
Ubuntu Quick Guide
 
Multimedia in Plone - Andy Nicholson
Multimedia in Plone - Andy NicholsonMultimedia in Plone - Andy Nicholson
Multimedia in Plone - Andy Nicholson
 
SIGNA11Y - Speaker Presentations
SIGNA11Y - Speaker PresentationsSIGNA11Y - Speaker Presentations
SIGNA11Y - Speaker Presentations
 
Homework
HomeworkHomework
Homework
 

More from Igalia

Running JS via WASM faster with JIT
Running JS via WASM      faster with JITRunning JS via WASM      faster with JIT
Running JS via WASM faster with JITIgalia
 
To crash or not to crash: if you do, at least recover fast!
To crash or not to crash: if you do, at least recover fast!To crash or not to crash: if you do, at least recover fast!
To crash or not to crash: if you do, at least recover fast!Igalia
 
Implementing a Vulkan Video Encoder From Mesa to GStreamer
Implementing a Vulkan Video Encoder From Mesa to GStreamerImplementing a Vulkan Video Encoder From Mesa to GStreamer
Implementing a Vulkan Video Encoder From Mesa to GStreamerIgalia
 
8 Years of Open Drivers, including the State of Vulkan in Mesa
8 Years of Open Drivers, including the State of Vulkan in Mesa8 Years of Open Drivers, including the State of Vulkan in Mesa
8 Years of Open Drivers, including the State of Vulkan in MesaIgalia
 
Introducción a Mesa. Caso específico dos dispositivos Raspberry Pi por Igalia
Introducción a Mesa. Caso específico dos dispositivos Raspberry Pi por IgaliaIntroducción a Mesa. Caso específico dos dispositivos Raspberry Pi por Igalia
Introducción a Mesa. Caso específico dos dispositivos Raspberry Pi por IgaliaIgalia
 
2023 in Chimera Linux
2023 in Chimera                    Linux2023 in Chimera                    Linux
2023 in Chimera LinuxIgalia
 
Building a Linux distro with LLVM
Building a Linux distro        with LLVMBuilding a Linux distro        with LLVM
Building a Linux distro with LLVMIgalia
 
turnip: Update on Open Source Vulkan Driver for Adreno GPUs
turnip: Update on Open Source Vulkan Driver for Adreno GPUsturnip: Update on Open Source Vulkan Driver for Adreno GPUs
turnip: Update on Open Source Vulkan Driver for Adreno GPUsIgalia
 
Graphics stack updates for Raspberry Pi devices
Graphics stack updates for Raspberry Pi devicesGraphics stack updates for Raspberry Pi devices
Graphics stack updates for Raspberry Pi devicesIgalia
 
Delegated Compositing - Utilizing Wayland Protocols for Chromium on ChromeOS
Delegated Compositing - Utilizing Wayland Protocols for Chromium on ChromeOSDelegated Compositing - Utilizing Wayland Protocols for Chromium on ChromeOS
Delegated Compositing - Utilizing Wayland Protocols for Chromium on ChromeOSIgalia
 
MessageFormat: The future of i18n on the web
MessageFormat: The future of i18n on the webMessageFormat: The future of i18n on the web
MessageFormat: The future of i18n on the webIgalia
 
Replacing the geometry pipeline with mesh shaders
Replacing the geometry pipeline with mesh shadersReplacing the geometry pipeline with mesh shaders
Replacing the geometry pipeline with mesh shadersIgalia
 
I'm not an AMD expert, but...
I'm not an AMD expert, but...I'm not an AMD expert, but...
I'm not an AMD expert, but...Igalia
 
Status of Vulkan on Raspberry
Status of Vulkan on RaspberryStatus of Vulkan on Raspberry
Status of Vulkan on RaspberryIgalia
 
Enable hardware acceleration for GL applications without glamor on Xorg modes...
Enable hardware acceleration for GL applications without glamor on Xorg modes...Enable hardware acceleration for GL applications without glamor on Xorg modes...
Enable hardware acceleration for GL applications without glamor on Xorg modes...Igalia
 
Async page flip in DRM atomic API
Async page flip in DRM  atomic APIAsync page flip in DRM  atomic API
Async page flip in DRM atomic APIIgalia
 
From the proposal to ECMAScript – Step by Step
From the proposal to ECMAScript – Step by StepFrom the proposal to ECMAScript – Step by Step
From the proposal to ECMAScript – Step by StepIgalia
 
Migrating Babel from CommonJS to ESM
Migrating Babel     from CommonJS to ESMMigrating Babel     from CommonJS to ESM
Migrating Babel from CommonJS to ESMIgalia
 
The rainbow treasure map: Advanced color management on Linux with AMD/Steam D...
The rainbow treasure map: Advanced color management on Linux with AMD/Steam D...The rainbow treasure map: Advanced color management on Linux with AMD/Steam D...
The rainbow treasure map: Advanced color management on Linux with AMD/Steam D...Igalia
 
Freedreno on Android – XDC 2023
Freedreno on Android          – XDC 2023Freedreno on Android          – XDC 2023
Freedreno on Android – XDC 2023Igalia
 

More from Igalia (20)

Running JS via WASM faster with JIT
Running JS via WASM      faster with JITRunning JS via WASM      faster with JIT
Running JS via WASM faster with JIT
 
To crash or not to crash: if you do, at least recover fast!
To crash or not to crash: if you do, at least recover fast!To crash or not to crash: if you do, at least recover fast!
To crash or not to crash: if you do, at least recover fast!
 
Implementing a Vulkan Video Encoder From Mesa to GStreamer
Implementing a Vulkan Video Encoder From Mesa to GStreamerImplementing a Vulkan Video Encoder From Mesa to GStreamer
Implementing a Vulkan Video Encoder From Mesa to GStreamer
 
8 Years of Open Drivers, including the State of Vulkan in Mesa
8 Years of Open Drivers, including the State of Vulkan in Mesa8 Years of Open Drivers, including the State of Vulkan in Mesa
8 Years of Open Drivers, including the State of Vulkan in Mesa
 
Introducción a Mesa. Caso específico dos dispositivos Raspberry Pi por Igalia
Introducción a Mesa. Caso específico dos dispositivos Raspberry Pi por IgaliaIntroducción a Mesa. Caso específico dos dispositivos Raspberry Pi por Igalia
Introducción a Mesa. Caso específico dos dispositivos Raspberry Pi por Igalia
 
2023 in Chimera Linux
2023 in Chimera                    Linux2023 in Chimera                    Linux
2023 in Chimera Linux
 
Building a Linux distro with LLVM
Building a Linux distro        with LLVMBuilding a Linux distro        with LLVM
Building a Linux distro with LLVM
 
turnip: Update on Open Source Vulkan Driver for Adreno GPUs
turnip: Update on Open Source Vulkan Driver for Adreno GPUsturnip: Update on Open Source Vulkan Driver for Adreno GPUs
turnip: Update on Open Source Vulkan Driver for Adreno GPUs
 
Graphics stack updates for Raspberry Pi devices
Graphics stack updates for Raspberry Pi devicesGraphics stack updates for Raspberry Pi devices
Graphics stack updates for Raspberry Pi devices
 
Delegated Compositing - Utilizing Wayland Protocols for Chromium on ChromeOS
Delegated Compositing - Utilizing Wayland Protocols for Chromium on ChromeOSDelegated Compositing - Utilizing Wayland Protocols for Chromium on ChromeOS
Delegated Compositing - Utilizing Wayland Protocols for Chromium on ChromeOS
 
MessageFormat: The future of i18n on the web
MessageFormat: The future of i18n on the webMessageFormat: The future of i18n on the web
MessageFormat: The future of i18n on the web
 
Replacing the geometry pipeline with mesh shaders
Replacing the geometry pipeline with mesh shadersReplacing the geometry pipeline with mesh shaders
Replacing the geometry pipeline with mesh shaders
 
I'm not an AMD expert, but...
I'm not an AMD expert, but...I'm not an AMD expert, but...
I'm not an AMD expert, but...
 
Status of Vulkan on Raspberry
Status of Vulkan on RaspberryStatus of Vulkan on Raspberry
Status of Vulkan on Raspberry
 
Enable hardware acceleration for GL applications without glamor on Xorg modes...
Enable hardware acceleration for GL applications without glamor on Xorg modes...Enable hardware acceleration for GL applications without glamor on Xorg modes...
Enable hardware acceleration for GL applications without glamor on Xorg modes...
 
Async page flip in DRM atomic API
Async page flip in DRM  atomic APIAsync page flip in DRM  atomic API
Async page flip in DRM atomic API
 
From the proposal to ECMAScript – Step by Step
From the proposal to ECMAScript – Step by StepFrom the proposal to ECMAScript – Step by Step
From the proposal to ECMAScript – Step by Step
 
Migrating Babel from CommonJS to ESM
Migrating Babel     from CommonJS to ESMMigrating Babel     from CommonJS to ESM
Migrating Babel from CommonJS to ESM
 
The rainbow treasure map: Advanced color management on Linux with AMD/Steam D...
The rainbow treasure map: Advanced color management on Linux with AMD/Steam D...The rainbow treasure map: Advanced color management on Linux with AMD/Steam D...
The rainbow treasure map: Advanced color management on Linux with AMD/Steam D...
 
Freedreno on Android – XDC 2023
Freedreno on Android          – XDC 2023Freedreno on Android          – XDC 2023
Freedreno on Android – XDC 2023
 

Recently uploaded

"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clashcharlottematthew16
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsMemoori
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationSafe Software
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 3652toLead Limited
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024Scott Keck-Warren
 
costume and set research powerpoint presentation
costume and set research powerpoint presentationcostume and set research powerpoint presentation
costume and set research powerpoint presentationphoebematthew05
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024The Digital Insurer
 

Recently uploaded (20)

"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clash
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial Buildings
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024
 
costume and set research powerpoint presentation
costume and set research powerpoint presentationcostume and set research powerpoint presentation
costume and set research powerpoint presentation
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024
 

How GNOME Removed its "Enable Accessibility

  • 1. How GNOME Obsoleted its “Enable Accessibility” Setting Alejandro Piñeiro (apinheiro@igalia.com)
  • 2. Topics ● Accessibility vs. Accessibility Support ● Phase 1: Getting Started ● Phase 2: Rebuilding What We Had ● Phase 3: Achieving “Always On” Accessibility ● How Does This Affect Me? How GNOME Obsoleted its "Enable Accessibility Setting" | Alejandro Piñeiro | apinheiro@igalia.com
  • 3. Accessibility vs. Accessibility Support An extremely quick introduction
  • 4. Accessibility: removing barriers ● Themes and fonts ● Keyboard shortcuts ● Visual bells ● Assistive Technologies How GNOME Obsoleted its "Enable Accessibility Setting" | Alejandro Piñeiro | apinheiro@igalia.com
  • 5. Accessibility support: enabling access via ATs ● Screen Reader ● Screen Magnifier ● Navigation by on-screen keyboard ● Navigation by voice How GNOME Obsoleted its "Enable Accessibility Setting" | Alejandro Piñeiro | apinheiro@igalia.com
  • 6. Phase 1: Getting Started Creating an Accessible, Free Desktop
  • 7. Starting GNOME Accessibility ● Mar 1999: GNOME 1.0 release ● Oct 2000: “GNOME Accessibility Summit” – – – ● Sun, IBM, and others How to make an accessible Free Desktop Focus on GNOME 2.0 Jun 2002: GNOME 2.0 released How GNOME Obsoleted its "Enable Accessibility Setting" | Alejandro Piñeiro | apinheiro@igalia.com
  • 8. Bolted on; not built in ● Allowed to evolve independently ● Implemented as gmodule plugins – – ● gail atk-bridge Loaded conditionally at run-time based on an Accessibility “on/off” user setting How GNOME Obsoleted its "Enable Accessibility Setting" | Alejandro Piñeiro | apinheiro@igalia.com
  • 9. Plugin pros ● Support won't interfere when it is not needed ● No additional memory/CPU overhead (i.e. Hide the problems rather than fix them) How GNOME Obsoleted its "Enable Accessibility Setting" | Alejandro Piñeiro | apinheiro@igalia.com
  • 10. Plugin cons ● Tied to the session ● Loaded only at application start time ● Users need accessibility enabled in order to enable accessibility How GNOME Obsoleted its "Enable Accessibility Setting" | Alejandro Piñeiro | apinheiro@igalia.com
  • 11. Enabled by default in GNOME 2? ● ● Nov 2005: Accessibility enabled by default for development releases: ACCEPTED Jul 2008: Accessibility enabled by default for stable releases: REJECTED How GNOME Obsoleted its "Enable Accessibility Setting" | Alejandro Piñeiro | apinheiro@igalia.com
  • 12. “Still we have the problem that our current accessibility technology just sucks too much for being enabled by default.” -- desktop-devel-list commenter How GNOME Obsoleted its "Enable Accessibility Setting" | Alejandro Piñeiro | apinheiro@igalia.com
  • 13. Wait a moment ... ● Still “sucks too much” after eight years? ● Accessibility was seen as an optional add-on. ● The Accessibility Team was always small. ● And then ... How GNOME Obsoleted its "Enable Accessibility Setting" | Alejandro Piñeiro | apinheiro@igalia.com
  • 14. Perfect storm ● Corporate accessibility development stops – – ● Corporate “change of direction” Layoffs followed by takeovers GNOME 3 development starts How GNOME Obsoleted its "Enable Accessibility Setting" | Alejandro Piñeiro | apinheiro@igalia.com
  • 15. Phase 2: Rebuilding What We Had And taking the opportunity to make it better
  • 16. 2010: Rework existing support ● Bonobo deprecation ● AT-SPI over DBUS (AT-SPI2) ● GObject Introspection ● GSettings vs GConf How GNOME Obsoleted its "Enable Accessibility Setting" | Alejandro Piñeiro | apinheiro@igalia.com
  • 17. 2010: Implement new support ● New toolkits like Clutter ● New widgets in existing toolkits like Gtk+ 3 ● New desktops like GNOME Shell How GNOME Obsoleted its "Enable Accessibility Setting" | Alejandro Piñeiro | apinheiro@igalia.com
  • 18. 2011: Make improvements ● ● ● Fix regressions in the new and reworked code Improve toolkit a11y support, e.g. GtkTreeView Improve performance and stability How GNOME Obsoleted its "Enable Accessibility Setting" | Alejandro Piñeiro | apinheiro@igalia.com
  • 19. 2010-2011: Integrate modules ● Cally becomes part of Clutter ● Gail becomes part of GTK ● ATK implementations are now built-in ● But atk-bridge remained a plugin How GNOME Obsoleted its "Enable Accessibility Setting" | Alejandro Piñeiro | apinheiro@igalia.com
  • 20. Phase 3: Achieving “Always On” Accessibility It takes a community to obsolete a setting.
  • 21. 2012: “Year of Accessibility” ● ● ● Hackfest to plan further work, including accessibility enabled by default Developers to focus on significantly improving the accessibility stack Friends of GNOME Campaign to support additional development How GNOME Obsoleted its "Enable Accessibility Setting" | Alejandro Piñeiro | apinheiro@igalia.com
  • 22. What changed? ● Stability improvements ● Performance improvements ● Accessibility framework not sending/getting messages unless an AT is listening How GNOME Obsoleted its "Enable Accessibility Setting" | Alejandro Piñeiro | apinheiro@igalia.com
  • 23. Enabled by default in GNOME 3? ● Apr 2012: proposed again ● tl;dr: ACCEPTED How GNOME Obsoleted its "Enable Accessibility Setting" | Alejandro Piñeiro | apinheiro@igalia.com
  • 24. The conservative approach ● Proposed by the Accessibility Team ● Just change the default value of the setting ● Approved by the GNOME Community How GNOME Obsoleted its "Enable Accessibility Setting" | Alejandro Piñeiro | apinheiro@igalia.com
  • 25. The no-turning-back approach ● Proposed by Benjamin Otte & Bastien Nocera ● Make atk-bridge a library which toolkits link to ● Embraced by the community (who pitched in) ● Implemented as the solution How GNOME Obsoleted its "Enable Accessibility Setting" | Alejandro Piñeiro | apinheiro@igalia.com
  • 26. What's the difference? ● Not an add-on but an add-in ● For users: It JustWorks™ ● For developers: – – App accessibility is tested by everyone The atk-bridge is compiled by more developers How GNOME Obsoleted its "Enable Accessibility Setting" | Alejandro Piñeiro | apinheiro@igalia.com
  • 27. Is it working? ● Accessibility is always on as of GNOME 3.6. ● Distros are shipping it, users are using it. ● Developers have not suggested we undo it. ● We're finding and fixing bugs here and there. ● But...Yeah, it's working. How GNOME Obsoleted its "Enable Accessibility Setting" | Alejandro Piñeiro | apinheiro@igalia.com
  • 28. How Does This Affect Me? As a developer who wants to make my application or environment accessible
  • 29. Are you using GTK? ● If you are using GTK >= 3.6: – – ● GTK depends on the new library Your app should be accessible out of the box If you are using GTK2: – – These changes were not backported The setting was kept in GNOME 3 for such apps How GNOME Obsoleted its "Enable Accessibility Setting" | Alejandro Piñeiro | apinheiro@igalia.com
  • 30. Any other toolkit/application? ● ● Assuming that you already have an ATK implementation for your widgets ... You only need to use at-spi2-bridge library – – ● Add the dependency Call an init method GNOME Shell's patch: – 16 insertions, 199 deletions How GNOME Obsoleted its "Enable Accessibility Setting" | Alejandro Piñeiro | apinheiro@igalia.com