SlideShare uma empresa Scribd logo
1 de 31
Baixar para ler 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?

Mais conteúdo relacionado

Semelhante a 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
 

Semelhante a 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
 

Mais de Igalia

A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?Igalia
 
Building End-user Applications on Embedded Devices with WPE
Building End-user Applications on Embedded Devices with WPEBuilding End-user Applications on Embedded Devices with WPE
Building End-user Applications on Embedded Devices with WPEIgalia
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
 
Automated Testing for Web-based Systems on Embedded Devices
Automated Testing for Web-based Systems on Embedded DevicesAutomated Testing for Web-based Systems on Embedded Devices
Automated Testing for Web-based Systems on Embedded DevicesIgalia
 
Embedding WPE WebKit - from Bring-up to Maintenance
Embedding WPE WebKit - from Bring-up to MaintenanceEmbedding WPE WebKit - from Bring-up to Maintenance
Embedding WPE WebKit - from Bring-up to MaintenanceIgalia
 
Optimizing Scheduler for Linux Gaming.pdf
Optimizing Scheduler for Linux Gaming.pdfOptimizing Scheduler for Linux Gaming.pdf
Optimizing Scheduler for Linux Gaming.pdfIgalia
 
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
 

Mais de Igalia (20)

A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
Building End-user Applications on Embedded Devices with WPE
Building End-user Applications on Embedded Devices with WPEBuilding End-user Applications on Embedded Devices with WPE
Building End-user Applications on Embedded Devices with WPE
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
Automated Testing for Web-based Systems on Embedded Devices
Automated Testing for Web-based Systems on Embedded DevicesAutomated Testing for Web-based Systems on Embedded Devices
Automated Testing for Web-based Systems on Embedded Devices
 
Embedding WPE WebKit - from Bring-up to Maintenance
Embedding WPE WebKit - from Bring-up to MaintenanceEmbedding WPE WebKit - from Bring-up to Maintenance
Embedding WPE WebKit - from Bring-up to Maintenance
 
Optimizing Scheduler for Linux Gaming.pdf
Optimizing Scheduler for Linux Gaming.pdfOptimizing Scheduler for Linux Gaming.pdf
Optimizing Scheduler for Linux Gaming.pdf
 
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
 

Último

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
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...HostedbyConfluent
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j
 
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
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
Artificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning eraArtificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning eraDeakin University
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhisoniya singh
 
Benefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksBenefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksSoftradix Technologies
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?XfilesPro
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitecturePixlogix Infotech
 
Hyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your Budget
Hyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your BudgetHyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your Budget
Hyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your BudgetEnjoy Anytime
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptxMaking_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptxnull - The Open Security Community
 
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
 
Azure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & ApplicationAzure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & ApplicationAndikSusilo4
 
Snow Chain-Integrated Tire for a Safe Drive on Winter Roads
Snow Chain-Integrated Tire for a Safe Drive on Winter RoadsSnow Chain-Integrated Tire for a Safe Drive on Winter Roads
Snow Chain-Integrated Tire for a Safe Drive on Winter RoadsHyundai Motor Group
 

Último (20)

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
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
 
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
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
Artificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning eraArtificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning era
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
 
Benefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksBenefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other Frameworks
 
Vulnerability_Management_GRC_by Sohang Sengupta.pptx
Vulnerability_Management_GRC_by Sohang Sengupta.pptxVulnerability_Management_GRC_by Sohang Sengupta.pptx
Vulnerability_Management_GRC_by Sohang Sengupta.pptx
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC Architecture
 
Hyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your Budget
Hyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your BudgetHyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your Budget
Hyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your Budget
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptxMaking_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.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
 
Azure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & ApplicationAzure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & Application
 
Snow Chain-Integrated Tire for a Safe Drive on Winter Roads
Snow Chain-Integrated Tire for a Safe Drive on Winter RoadsSnow Chain-Integrated Tire for a Safe Drive on Winter Roads
Snow Chain-Integrated Tire for a Safe Drive on Winter Roads
 

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