00:00:14.920
so one of the things I love the most about our community is how caring and
00:00:20.000
welcoming we are as I'm sure you have all seen in your time here I think that something that really
00:00:27.160
struck me when I think when I was thinking about that is that us programmers are often stereotyped as
00:00:32.520
being you know really out of touch and I'm really proud of how in the Ruby Community we've really come to value and
00:00:39.320
embody that welcoming spirit that inclusivity but I have some bad news as
00:00:46.600
an industry the products we build are incredibly unwelcoming to people with
00:00:53.239
disabilities depending on who you ask between 70 and basically all of the percent of the internet is a effectively
00:01:00.359
Out Of Reach for people who are blind but I have some good news we can do better and I'm here to show you
00:01:07.960
how so we've been working really hard over the past couple of years to make GitHub more usable for people with
00:01:13.439
disabilities and I'd love to share what we've learned so you can do the same at your company I might as well do a quick intro
00:01:20.000
my name is Joel I'm a Staff engineer at GitHub uh I would kind of describe my role as being one half of our UI
00:01:27.360
Architects so we have someone who's a little bit more re focused on I'm the more traditional rails focused person uh
00:01:33.520
I work on all sorts of UI related things as they affect the company such as accessibility and I live
00:01:40.240
like a 10-minute drive from here so Spike thank you for throwing a conference that was super close uh I can
00:01:45.320
tuck my one-year-old boy into bed tonight uh thanks to you and I don't have to you know FaceTime him
00:01:51.200
instead so as a quick recap I actually gave a talk uh last year about accessibility tooling I shared how we
00:01:57.560
use ax which is an automated accessibility scanner to automatically surface accessibility issues in our app we happen to highlight
00:02:04.200
them in red uh if you're a staff member uh but I talked about how can only catch so much it's just automation it's not
00:02:10.160
complete I shed how we use some custom abstractions like in this case a form Builder uh to Def find certain classes
00:02:16.920
of accessibility errors out of existence and then I also showed a lookbook something I was just telling
00:02:22.080
you about uh a couple minutes ago it's a tool like storybook that we use to build our UI pieces and isolation and that
00:02:28.000
that allows us to more thoroughly test them for excess ibility issues and for those of you who are here I think I hope
00:02:33.840
you remember it as being a good talk I think it was well received uh but what really struck me is the questions
00:02:39.040
afterward had nothing to do with the talk um and to me that was a sign that I
00:02:44.400
gave a talk on the wrong topic uh so today's talk is answering those questions in more detail and the
00:02:50.800
questions I got really amounted to uh questions were all used to getting as rails developers which is uh that's nice
00:02:57.319
but how do you scale it uh it's a question I'm definitely used to uh especially at GitHub where I feel
00:03:04.159
like we're constantly being used as an example of how rails does and doesn't scale uh quite
00:03:11.120
honestly but to be more specific there were kind of three questions one was how do you get leadership to
00:03:17.560
care how do you make your entire application accessible these tools are cool but how do you scale it up to like
00:03:23.599
something big and then how do you keep it that way like say we go and invest all this money how do we make sure we don't regress
00:03:31.720
uh but before I get too far uh how many of you here have accessibility goals of any kind at your
00:03:38.120
company okay not bad um how many of you here have worked on them
00:03:45.000
personally about the same hands cool um you know we've long worked to make iub
00:03:50.920
accessible we've had various teams across the years make improvements of what I would call like fits and starts but there was never really a widely
00:03:58.040
coordinated effort you know we never really had any specific goals that we like we want to get to this standard in this time uh that all changed uh when we
00:04:06.040
got bought uh as it turns out Microsoft cares deeply about accessibility not
00:04:11.519
just because it's the right thing but because it's often a non-negotiable requirement of the big government uh and
00:04:17.519
Enterprise sales contracts uh that Microsoft is famous for there are of course many
00:04:23.280
non-technical and non-economic reasons uh to make our products accessible I think that we could all generally agree
00:04:29.080
that it's the right thing to do uh but I don't think I need to convince any of you of that so I'm going to focus on the
00:04:35.680
pragmatic if not capitalistic reasons uh you should do accessibility and why you should uh you know take those reasons to
00:04:41.720
your company so a big one is that accessibility is a legal risk uh well
00:04:47.000
I'm not a lawyer uh most of my work has actually come out of and been funded by our legal department and I wouldn't be
00:04:53.320
you know giving you a talk about accessibility without mentioning that not having an accessible application is
00:04:58.479
a very real legal risk and often a significant one uh many companies have faced legal pressure for accessibility
00:05:04.800
issues and GitHub is one of them part of my work I'm doing is actually in response to Legal pressure we've
00:05:11.680
received and this is not uh this is not anything new I don't know how many of you are familiar with the greater
00:05:17.840
accessibility field but lawsuits have long been what some would argue the only effective Tool uh for making buildings
00:05:24.440
accessible for people with disabilities uh there's a New York Times article uh app the man who filed more than 180
00:05:31.400
disability lawsuits um talking about how you know for decades wheelchair users have had to sue businesses that don't
00:05:37.360
have like a ramp or a table they can use so that they can go DME uh the same is true for digital
00:05:42.560
accessibility uh according to Forbes who does not know the definition of exponential
00:05:49.039
uh there were over twice twice as many uh digital accessibility lawsuits
00:05:55.240
filed in 2023 as in 2018
00:06:00.919
as a former journalist this just it just kills me um but I showed this slide to my
00:06:07.120
colleague earlier this year and she's like yeah that's kind of impressive but did you know that in the last five years
00:06:14.039
80% of the top 500 e-commerce websites in the world have been sued over
00:06:19.360
accessibility it's like most of them so if you're in the 20% this talk is fre
00:06:25.319
you well maybe or maybe you're doing a great job and you didn't get sued because of it
00:06:30.919
so our most most concrete goal for github.com is really pretty simple we want to make it so that when people use
00:06:36.680
our UI uh with assist of Technology they are not blocked they can accomplish any
00:06:42.120
goal that a cited user uh is able to accomplish and in practice that means
00:06:47.479
complying with wiag 2.1 soon to be 2.2 these are the web content accessibility
00:06:52.759
guidelines It's actually an international standard uh and it's used by companies and governments in
00:06:58.160
purchasing decisions in fact if you've seen the new European regulations I think they took the wick Haag numbers
00:07:03.360
and like appended a suffix to them or something like that it's like 211e for like the European version of it um it's
00:07:10.039
it's pretty much equivalent around the globe so whenever I share how we do
00:07:15.440
things a GitHub I think that it's really important to provide some context because we are a very big company and I
00:07:20.759
want you to like take some of the things I'm saying with a grain of salt you know we have about 4,000 employees uh we had
00:07:26.400
like 600 when I joined which is wild um we have about 1,500 engineers and still
00:07:33.080
I will say this every year until it's not true we are still a Ruan rails monolith despite despite what everyone
00:07:40.080
thinks is changing it's not meaningfully changing um almost all of our API traffic and and uh UI traffic comes
00:07:47.560
directly through the monolith uh to this day and that's like 10 billion requests
00:07:52.800
per day something like that probably more at this point maybe uh Nathan Nathan do you uh do you know if it's
00:07:58.960
over 10 yet I have no idea you have no idea okay but does it scale it does it scale yeah exactly right I mean I don't
00:08:06.440
know it's 10 billion scale Are We There Yet I uh we also have around 2,000 Pages
00:08:11.560
which I think is more relevant to the accessibility work like we have 2,000 Pages just in our Monet that we need to make accessible and I think I've
00:08:17.800
inventoried somewhere around a 100,000 additional pages on like static marketing documentation websites Etc so
00:08:24.199
massive footprint uh many of you have been also asking me uh 95% of those routes still are just rendered in Erb
00:08:31.120
made with view component 5% of those routes are rendered with react
00:08:38.719
um no no comment um so what I'm curious here uh
00:08:46.440
how many people here work by themselves how many people here work with at least five
00:08:52.640
people how about 10 uh
00:08:58.240
50 okay I'm I'm very alone here okay how about like a 100
00:09:05.320
500 a thousand okay yeah so it's basically me and the Cisco guys
00:09:12.320
okay uh you know regardless of of the size I think the kind of like the fundamental concepts of what I'm going to talk about today you know do apply
00:09:18.959
across scale but know that there's a lot of process that I'll talk about that maybe maybe you need a smaller version of it than we do um so I think there
00:09:26.600
kind of like three key things we've learned after doing this for a couple CP of years that like actually have impact when it comes to investing in
00:09:32.360
accessibility and the first one is measurement um you got to have a Target
00:09:37.480
right you can't just go out and do it without a Target um second thing is having durable ownership making sure that like everyone can agree whose
00:09:43.120
responsibility it is and then the last one was lived experience like you got to make sure that it actually works for people with disabilities not just that
00:09:49.320
it meets the wick head so a few years uh into my time at
00:09:54.680
GitHub I joined the design organization as an engineer and I reported to basically our head of design for the
00:10:00.079
company and I remember an early conversation with her about how I was really frustrated about how oh there's
00:10:05.320
technical debt everywhere no one uses our design system our UI is super inconsistent and what she said to me is
00:10:13.040
there will always be something wrong like code has never finished like why should we care in this specific context
00:10:18.680
you know how will we know that we've succeeded when it comes to uh UI consistency and honestly just figuring
00:10:24.839
out the scale of the accessibility work we've had to do was a challenge in and of itself before even addressing it and
00:10:31.240
uh one of my favorite I should say favorite a book on this topic is called how to measure anything and it's really really dry um but it basically just
00:10:38.320
talks about how like when you're coming up with a measurement you really need that measurement to be able to accurately boil down to a Boolean value
00:10:46.360
so like basically to tell you whether you met your goal or not and really don't need more Precision than that so
00:10:52.519
you know we're all very well very well aware of this kind of measurement you know tests are like this you know they let us quickly learn if something is
00:10:58.839
good or bad right um so if you think about it like if premature optimization is the root of
00:11:05.560
all evil uh in the case of doing this kind of work maybe making a change
00:11:10.959
without a Target is also a root of evil so we need to come up with a way to measure our accessibility problem and
00:11:18.279
I'll go through how we did that at least for like our like marketing pages so I started with our DNS configuration in
00:11:24.160
our case we have somehow rigged it up through Source control so you make all DNS changes through uh yaml file
00:11:30.399
um and this gave me a list of about the 100 domains that we have public publicly accessible pages on and with that I
00:11:36.839
wrote a script that pulled up in Chrome and ran that X tool I talked about last year and reported the statistics to data
00:11:44.240
dog and what this basely showed is that you know each color in this graph is one of our websites and what this meant is
00:11:51.000
that we had 18 accessibility violations just on the homepage of our roughly like
00:11:56.920
100 properties and this is actually pretty good the industry average is 55 detected by a on a page that's been un
00:12:03.240
remediated um but like these are the things that like are pretty like a is very conservative in what it reports it
00:12:09.120
only reports things that are like very confidently wrong these aren't like warnings these are errors um and I also
00:12:15.320
just say that like if someone comes to your site and can find something that Axe can find it's basically evidence
00:12:21.639
that you didn't even try because like it's like super obvious stuff um and you know these things all
00:12:29.560
these errors all 1800 of them represent potential roadblocks for our customers
00:12:35.320
uh you know if they're using syis of Technologies those are all places where they might struggle to accomplish the goal that say a cited user would want to
00:12:42.399
accomplish so we use the same tooling to scan our design system and you can see like we had a little bit of a of a rocky
00:12:49.480
ride for like our bug bash month but we eventually got it down to zero so this is a way that we trct uh a monthly
00:12:54.880
month-long uh accessibility bug bash we also use it in our system tests so we have I think it's like a dozen
00:13:02.519
critical paths that simulate say like the process of opening a poll request or filing an issue or using GI projects and
00:13:09.320
this is the ax report uh cated for all of those critical paths together over
00:13:15.680
what like a three and a half month time period so this shows our ongoing progress reducing the net the total
00:13:21.399
number of accessibility violations encountered by our customers across critical flows we also track longer term trends
00:13:28.399
for some of our Market critical rules I don't know if you guys use data dog but at least for us it's C at like 15 months so if you want to show something that's
00:13:34.279
like longer than that you need a different tool so in this case we literally just dump stuff into Google Sheets and this is an example of uh our
00:13:42.199
accessibility lint rules so these are the number of violations per rule uh just for a couple that we can detect
00:13:47.279
statically with I think it's using Erb lint and you can see over time going
00:13:52.360
right until about 2022 things were on the rise and that's when we started saying okay we need to make an effort about this and then really you know over
00:13:59.199
the course of two years we got a lot of these things significantly reduced so while being act clean and
00:14:05.480
reducing those violations doesn't mean that a page is accessible it's often a very significant improvement over a page
00:14:11.600
with ax errors and those graphs literally those graphs are what we brought to leadership that gave us more
00:14:18.519
funding to hire contractors to literally fill more engineering roles like that's what it took to go and say okay we need
00:14:26.240
you know two more two million more a year for engine ing budget to answer your questions from
00:14:33.000
last year so to sum it up you can't improve what you can't measure and even a
00:14:38.160
measurement that is a proxy for accessibility like a scanning can be really useful to demonstrate your progress you know we were obviously
00:14:43.839
making other changes besides just making our Pages acts clean um so I'd encourage you to go out and measure your acts
00:14:50.360
violations and then set some time aside to resolve them and continue to attct them over
00:14:56.920
time so now you have that measurement um and You' made your app a clean so
00:15:02.600
you've made some improvements you know how do you keep it that way uh this question reminds me of a favorite thought experiment does anyone know what
00:15:08.759
this ship represents okay tell me more what's the
00:15:15.519
ship of thesias so basically um to I won't give what the myal
00:15:23.199
background thank you here's this ship and um um it keeps
00:15:30.240
taking damage and they they're replacing pieces of it and the ship is always one
00:15:38.839
ship um but after a certain point every piece of the ship has been replaced and
00:15:47.720
none of the original ship is still there and so the sort of thought experiment is
00:15:54.600
is it the same ship and if not when did it stop being the same ship if replacing
00:16:00.279
well you did a better job than I would have basically the idea to summarize like I don't know if you could hear that the recording is that it's like if you
00:16:06.839
were to replace every piece of an object uh over time is it still the same object
00:16:12.279
at the end of the day in fact there's a git project called git ofthis that is really fun to run that will show you uh
00:16:19.120
it took five days to run on the two million commits in our code base but it uh it will show you the halflight like
00:16:25.040
the survival rate of all your code which is really cool um but that all being being said this really reminds me of
00:16:30.680
what Legacy software looks like in practice you know code gets moved around teams get reassigned constantly um
00:16:37.360
projects are put in maintenance mode you know people go on fraternity leave or they move on to other jobs so given all
00:16:43.240
those factors how do we make sure that if we like truly care about something that it doesn't fall through the cracks
00:16:48.360
and what we use is a a tool called a service catalog and those of you who have done security compliance work uh
00:16:54.399
specifically sock 2 might be aware of this um so we built this originally to our availability believe it or not to
00:17:00.680
just say that like okay for all the many uh areas of our product who's actually responsible for making sure that thing
00:17:06.559
is up or not um then when security became a thing we also use this as well and basically what it means is that like
00:17:13.280
for every chunk of our routes file effectively we group it together and we have a SLO hopefully four 9es hopefully
00:17:23.319
um an on call rotation and a chain of command up to a VP and we enforce that in code so we use
00:17:30.600
code owners uh we use a a we basically assign these GitHub teams to specific folders or files we'll also use
00:17:38.080
programmatic tags so we'll this is a simplified version but you might imagine that like you have a controller that actually for better for worse is split
00:17:45.559
between two Services we can use this macro to say map to service Repose for specific actions for example um with
00:17:52.679
this mean is that means is that every line of code has an owning service not an individual uh it's something that I
00:17:58.520
wish we didn't do in code owners on on GitHub where like you could assign a person like I think that's pretty unhealthy for a lot of companies to be
00:18:04.320
like okay this is Dan's code right like that's not good for you Dan and it's not good for everyone else um and forcing
00:18:11.240
every line of code to be owned by a service instead of a person really revealed a lot of bus factors in fact I
00:18:17.240
as part of going on leave it's often an audit to to go look at all the stuff that you have ownership for and make sure you are on a team of one uh which
00:18:24.640
is what actually happened to me and it it inspired us to hire some people that that split my ownership away from me
00:18:29.720
which is pretty cool um we also require playbooks for each service so like in order to get in this catalog you have to
00:18:35.679
have a Playbook so it's a way of us guarantee that we have some level of process um you know in documentation and
00:18:41.200
whatnot um I would say that like as we've scaled Beyond accessibility this is the single most important competence
00:18:47.520
we've added as an engineering organization like it's been a night and day like this is what I call like the adults walking into the room being like
00:18:53.960
okay everyone has to be responsible like yeah what so when I joined GitHub there
00:18:59.559
was one on call rotation for the whole company when we were 600 Engineers so once every 90 days I was the one person holding the L1 pager it's not that way
00:19:07.200
anymore and this and this is why um so uh amongst other things this
00:19:13.400
allows us to do really cool stuff like when you have an exception we can programmatically assign it right away so like for example we have an exception in
00:19:19.320
our search middleware and it goes immediately to the the team that owns that middleware uh without any like sort
00:19:25.960
of triage so like when we went from like one on call to like service specific on call we wanted to be able to we didn't
00:19:32.039
want to have to have one person triage request to the right on call so this allowed us to do it programmatically um so when we care
00:19:39.039
about any engineering capability now not just availability or security we give it a scorecard and then we incrementally
00:19:45.640
add services to that scorecard so we say like okay you are in compliance with the availability discipline the security
00:19:51.159
discipline um and these scorecards include criteria for whether a service is passing or failing it's a binary
00:19:58.200
measurement and if you're failing that leadership chain that same on call chain is alerted
00:20:04.200
and basically you have to stop work until you're in compliance in a lot of cases so for example we have an
00:20:10.720
accessibility compliance uh scorecard and this one is uh for automation so for some of those automation things we talked about this enforces that a
00:20:17.440
service is using our lenders and that there are no disables of the L rules so you get a a check mark on this if you
00:20:22.520
are passing acts basically uh we then track our scorecard participation over time and this is another way of showing
00:20:28.400
progress you can say that like okay we happen to have 220 services at GitHub and you can see this blue line is
00:20:35.080
just over you know a month we had an increase of like it was like you know 15 or 20 services that got in and got in
00:20:43.320
compliance so code team projects people they all come and go uh we should use
00:20:49.720
systems to prevent services from becoming unowned and a service catalog is one example of how you could do it I'm sure at smaller companies something
00:20:56.600
a little less formal might be fine
00:21:05.919
so at the end of the day uh the goal of any accessibility work is to make a product usable for as many people as
00:21:12.840
possible including people with disabilities it's not to pass a specific audit or be in compliance with Wick Haag
00:21:20.480
um and while we can get pretty far with Automation and tooling and the things I've talked about already there really
00:21:25.799
is no substitute for lived experience uh as a starting point we we uh taught
00:21:32.000
people who are cited uh across the company how to use screen readers to test their work we also set up a
00:21:37.720
Champions program which is a pretty common model where we basically took someone from each team and gave them more in-depth training so like for all
00:21:44.080
those 220 services for about I think like 50 or 60 of them that were the most critical we said okay you have to commit one engineer who's going to do 20 hours
00:21:50.520
of accessibility training uh that was more in-depth knowledge on screen readers in that case um and our goal is
00:21:56.279
basically to have one of those people trained up on as many teams that build UI as possible of which we have about of
00:22:01.880
those 220 it's probably ending being about 150 so to measure the impact of Champions We actually track their work
00:22:08.120
so we say okay how many issues did these people that we trained close so this was another graph that we put in front of leadership that said hey you know these
00:22:14.880
people that we trained have closed you know 450 issues and for reference we put the cost of closing accessibility issue
00:22:21.240
between five and $110,000 so that allows us to directly say dollars to Dollar people right that's a really important
00:22:28.360
thing to do just if they speak dollars you have to speak dollars to them um and
00:22:33.679
while we have several employees with live disability experience they are very small minority I could probably count
00:22:38.840
them on both hands uh in terms of people that have lived experience that specifically applies to like the screat
00:22:44.640
technology we're working on and because of that we've had to seek outside help so we hired a couple consultancies uh
00:22:51.120
We've hired petrological and Prime access Consulting they are super expensive but they are subject matter
00:22:56.480
experts so if you don't have the expertise you can't buy it um and it's often startling like I remember early on
00:23:03.120
when we worked with prime access they've worked they work with like NASA smithsonia and like all the big entities
00:23:08.799
and their consultant who's blind pulled open our homepage and brought us all to tears he's like I can't use it
00:23:16.320
sorry um he's like he couldn't sign up for an account like he was dead in the water
00:23:22.520
just going to Doom right like it was it was awful um but they aren't cheap
00:23:28.480
Consultants aren't cheap so a good starting point could be say have a screen reader hackathon where you know your team learns how to use screen
00:23:34.559
readers you know or passion week or something where you know you try and test as much of your app as you can as a
00:23:40.080
sighted user using a screen reader on the product side uh we've had
00:23:45.200
to do this process called accessibility conformance reports which uh use a specific template called the vpat or
00:23:51.840
voluntary product accessibility template and this is from section 508 and that's a lot of jargon for really something
00:23:58.000
simple which is that you have to document your accessibility issues for critical workflows in your product and
00:24:04.159
we publish ours publicly and this is often something that like larger companies have to do as part of this process and here's what it looks like
00:24:10.400
it's on accessibility. github.com you can go read all of our acrs today um
00:24:16.200
this for example shows that like when you go to the GitHub homepage and click the skip to main content link the screen
00:24:22.960
reader does not announce the main landmark that's one specific um screen
00:24:28.559
reader bug and this kind of disclosure is required by large customers because they want to understand what risk
00:24:34.880
they're taking on so you don't have to be perfect at accessibility to be quote unquote compliant what you really need
00:24:40.279
to do is you need to be aware you need to say okay these are problems we know we have and then the customer can decide
00:24:45.440
okay those are a deal break work for us in the case of some of our customers they literally take them to the people who work uh for them that have
00:24:51.320
disabilities and say are these things going to get in the way of you using GitHub and if not they'll buy the
00:24:56.360
software um we create these reports by navigating through about a dozen critical workflows that roughly line up
00:25:01.600
to the ones I talked about testing earlier very critically so we have automated testing for a lot of these very key uh workflows that we assess and
00:25:09.600
we have to do this every year and in in fact uh for more critical paths we have to do it about every six months and we
00:25:15.559
pay an outside firm uh to do this for us so we also track what services need
00:25:22.039
those audits using a scorecard in the service catalog you can see the pattern at this point it's like okay if it
00:25:27.760
matters if people need to be responsible and held accountable we put it in the service catalog so while I would guess that most
00:25:35.000
of you probably don't need this level of compliance I think the principle of this tool is very compelling despite the
00:25:40.320
jargon of of it um because this process forces us to identify the key
00:25:46.320
experiences in our products and to see if they are usable for people with disabilities and what we found is it's
00:25:52.679
easy to make the case to non-technical stakeholders that people with disabilities should be able to give us
00:25:57.720
money uh so you know because the last thing we want is for someone to be able to tell us that they can't do business with us
00:26:04.360
because of their disability and in fact if you look at like the kind of the Canon of accessibility lawsuits they all
00:26:11.039
basically hinge on being able to spend money or not that's why Ecommerce is like super prevailing because it's very
00:26:16.360
clear like oh I couldn't buy the shirt right it's pretty easy to be like could I with a screen reader go through and check out right and we have to make this
00:26:23.440
case because like as I've said this process requires a significant amount of money uh for a product of our scale so
00:26:28.760
for the low ballpark we're spending I would say over five and under $10 million per year on all of our
00:26:36.480
accessibility work as a company um that includes a seveners accessibility engineering team that's full-time a
00:26:43.279
threepers accessibil designed team each of those teams have a manager um and I
00:26:48.840
recognize this is a big hill to climb like I'm not expecting really I I would say that we're probably investing most
00:26:54.000
than more than most companies do um but there is something you all can do today
00:26:59.159
and I have some homework for you I have three tickets you can go file and get you can even do it right now some of you
00:27:04.919
are on your laptops so here's the first one as a screen reader user I can sign
00:27:10.000
up for a paid account as a screen oh sorry I can sign
00:27:15.120
up for an account and then as a screen reader user I can upgrade to a paid account uh so for example for us we use
00:27:21.159
a we still use a third party payment provider and like they control that UI code so like you could sign up for an
00:27:26.559
account but when you went into the iframe to actually enter your credit card details we had to work with them to actually get to the point where you
00:27:31.880
could complete the flow as a customer your customer doesn't know that implementation detail they just know whether they could actually sign
00:27:38.279
up and then the last one is as a screen reader user I can complete the workflow for my products most compelling use case
00:27:45.120
so think about the founder of your company when they went into an elevator and said this is what my pitch is that's
00:27:51.159
what you should be writing a screening your test for because if you can't deliver that core value that's where you're going to get into trouble really
00:27:56.640
quickly so for us this is like can I open a PR can I complete a code review
00:28:01.840
can I you know uh run tests with actions and see the result um can I merge a PR
00:28:09.480
uh and here's one way of doing it you can use tdd so one technique we've kind of
00:28:16.360
adopted here is using system tests for keyboard navigation because at the end of the day when you're using a syst of
00:28:21.960
Technology you're basically navigating the page with a keyboard um so what we did is we started by taking existing
00:28:27.240
system tests that clicked on UI elements and we rewrote them to use keyboard navigation so for example here's an
00:28:32.799
actual test this is the first test we converted from clicking to keyboard now and you don't need to read the source I
00:28:38.720
don't know why I put it on here but you go to the new releases page you select a tag that you pushed up and you click on
00:28:44.159
create uh release and you press the uh enter button in this case so what's Wild
00:28:49.559
here is that this is the first time we did this and we caught a screen reader bug on day one because this is what it
00:28:55.159
looks like when you run that test so as it turns out there was some
00:29:00.200
JavaScript that only triggered this lazily loaded uh portion of the drop down loading the tags
00:29:06.480
list if you had a cursor present on the window this was super hard to debug because the test kept failing and we
00:29:12.240
would Mouse into the into the uh page and it would just load and we're like great it works but then what we realized
00:29:18.159
is that if you let it sit for a while that was the bug it was that when there was no cursor present it never loaded so this is literally the first
00:29:25.120
time we tried this technique uh and we validated that the page was in deed broken for screw users we hit up actually our tetral consultant they were
00:29:31.640
like oh yeah it's never worked for me we're like why didn't you tell us um so besides automated tests like I
00:29:38.559
said you could you know getting people to use your application without a mouse Vim users are going to love to hear this
00:29:44.120
right like uh you know some some places they'll have no mouse Fridays just
00:29:49.360
Friday put your mouse away tape over your trackpad oh you know all these Vim users are like
00:29:56.159
finally my day is com waited all my life didn't know it was
00:30:01.240
going to be for screen readers but you know ultimately for lived experience to matter we need to
00:30:07.200
employ people with disabilities and then we need to give them power so in our case we hired a fantastic head of
00:30:13.279
accessibility who has Decades of experience uh in our legal department uh
00:30:18.640
who's a computer also computer science major and is also blind he uses a screen reader and he is in control of the
00:30:26.039
budget and can stop the line any in the company if he thinks that we aren't doing things the right way for
00:30:31.519
accessibility and I believe that that single move was the S was the most important thing that most important
00:30:38.640
decision any leadership at our company has made since I've been at the company was giving him
00:30:45.840
power because it'd be disingenous not to mention that this work is really hard like I said it's expensive it's also
00:30:52.200
timec consuming and I can guarantee you that it will slow you down but be Beyond
00:30:57.399
being the right thing to do our customers increasingly require it selling to the government and big
00:31:02.559
business often means more of this compliance burden and you can really see how it can limit
00:31:08.760
Innovation but if we don't pursue this work we run the very real risk of leaving those with disabilities behind
00:31:15.279
you know in this time of incredible technological progress you know GitHub we believe that like our software
00:31:21.279
enables people to improve the world in a really powerful way and we don't want to leave people with disabilities behind from that work so here's my challenge
00:31:28.799
for all of you measure your products accessibility own up to it and then give
00:31:34.559
people with lived experience the power to make it better thank
00:31:46.440
you for a couple of questions yeah time for a couple questions I want to say thank you to my peers these are some colleagues and uh Tim locally who are
00:31:53.240
peer reviewers for this any more questions or am I done giving talks here it was Microsoft
00:32:00.000
Microsoft so the qu sorry the question was was getting that leadership change in a Grassroots thing and no it was on high in fact honestly it's because we
00:32:06.559
weren't making enough progress on our own they were like okay we're going to appoint this person in your legal department and then this is their
00:32:12.240
responsibility and here's how much money they have on all this stuff sure so the question was uh from someone who works
00:32:17.320
at a university where accessibility compliance is probably actually the highest standard of most Industries um
00:32:22.760
how do you help individual developers like learn how to use screw neuters effectively and not run into blockers I
00:32:28.039
mean I'll tell you what we do which is we pay for training with DQ there's a lot of good resources online but DQ is
00:32:33.480
the uh where's the deck I can never get it right um they make acts and they have excellent resources that that go through
00:32:40.360
all this um that are hiring someone honestly like that's a lot of what we've done even with uh having the right
00:32:46.760
experts in house like we'll still do consultants and whatnot
00:32:51.960
yeah anyone else great thank you all