1 00:00:06,320 --> 00:00:11,499 [Music] 2 00:00:15,679 --> 00:00:21,279 hi everyone hope you all had a lovely 3 00:00:18,640 --> 00:00:22,560 afternoon tea or time zone appropriate 4 00:00:21,279 --> 00:00:26,560 other break 5 00:00:22,560 --> 00:00:28,720 um we have next up here 6 00:00:26,560 --> 00:00:31,279 um sorry i'm looking at the wrong place 7 00:00:28,720 --> 00:00:34,399 in the screen we have next up here don e 8 00:00:31,279 --> 00:00:37,200 call it i'm talking about upstream 9 00:00:34,399 --> 00:00:38,399 upstream accessibility a contributor's 10 00:00:37,200 --> 00:00:40,079 guide 11 00:00:38,399 --> 00:00:41,680 don likes to tinker with cloud 12 00:00:40,079 --> 00:00:43,600 infrastructure and security and 13 00:00:41,680 --> 00:00:45,440 regularly goes down rabbit holes in a 14 00:00:43,600 --> 00:00:47,120 futile search for ways to develop 15 00:00:45,440 --> 00:00:49,680 systems that are both reliable and 16 00:00:47,120 --> 00:00:52,719 impenetrable as well as accidental 17 00:00:49,680 --> 00:00:54,239 accessibility advocacy don can regularly 18 00:00:52,719 --> 00:00:55,840 be found sharing knowledge within the 19 00:00:54,239 --> 00:00:58,879 melbourne cloud infrastructure and 20 00:00:55,840 --> 00:01:00,960 devops communities outside work don is 21 00:00:58,879 --> 00:01:03,199 an occasional author kitchen alchemist 22 00:01:00,960 --> 00:01:06,640 and raging sports ball fan 23 00:01:03,199 --> 00:01:08,320 so don's talk is a pre-recorded talk um 24 00:01:06,640 --> 00:01:10,240 there won't be time for live questions 25 00:01:08,320 --> 00:01:12,159 after but don will be in the chat 26 00:01:10,240 --> 00:01:15,119 chatting away with you so please ask 27 00:01:12,159 --> 00:01:17,920 dawn all of your questions in the chat 28 00:01:15,119 --> 00:01:20,640 all right we're ready to go 29 00:01:17,920 --> 00:01:20,640 roll it chris 30 00:01:22,560 --> 00:01:26,799 hello everyone it is really good to be 31 00:01:24,880 --> 00:01:28,560 back here again at linux conference 32 00:01:26,799 --> 00:01:29,840 australia once again from the comfort of 33 00:01:28,560 --> 00:01:32,240 our own homes 34 00:01:29,840 --> 00:01:34,960 and i am here this year to talk about 35 00:01:32,240 --> 00:01:37,840 accessibility specifically accessibility 36 00:01:34,960 --> 00:01:39,439 in the upstream of open source software 37 00:01:37,840 --> 00:01:41,520 if that doesn't make sense to you yet 38 00:01:39,439 --> 00:01:43,119 don't worry because my aim by the end of 39 00:01:41,520 --> 00:01:45,439 this talk is to have laid out a 40 00:01:43,119 --> 00:01:47,600 contributor's guide if you will for the 41 00:01:45,439 --> 00:01:49,759 idea of upstreaming accessibility in 42 00:01:47,600 --> 00:01:51,200 open source software 43 00:01:49,759 --> 00:01:53,119 if you want to follow along with the 44 00:01:51,200 --> 00:01:55,439 sources that i used to put together this 45 00:01:53,119 --> 00:01:57,520 talk you can go to the link in the slide 46 00:01:55,439 --> 00:01:59,439 that's up at the moment or you can scan 47 00:01:57,520 --> 00:02:01,119 the qr code with your phone and it will 48 00:01:59,439 --> 00:02:02,960 bring you to a github repository with a 49 00:02:01,119 --> 00:02:05,759 list of all the sources that i used when 50 00:02:02,960 --> 00:02:07,200 putting this talk together 51 00:02:05,759 --> 00:02:08,879 to begin with i would like to 52 00:02:07,200 --> 00:02:10,959 acknowledge the warandro people of the 53 00:02:08,879 --> 00:02:13,440 kulin nation on whose land this talk was 54 00:02:10,959 --> 00:02:15,520 recorded this is and always will be 55 00:02:13,440 --> 00:02:18,160 aboriginal land their sovereignty was 56 00:02:15,520 --> 00:02:18,160 never seeded 57 00:02:18,560 --> 00:02:23,040 i'm sure that most of you have probably 58 00:02:20,879 --> 00:02:24,239 met me or encountered me in the wild by 59 00:02:23,040 --> 00:02:25,760 now 60 00:02:24,239 --> 00:02:27,280 but for those of you who haven't we're 61 00:02:25,760 --> 00:02:29,200 going to do a bit of an atypical 62 00:02:27,280 --> 00:02:31,519 introduction again 63 00:02:29,200 --> 00:02:34,000 last year at luna's conference australia 64 00:02:31,519 --> 00:02:35,519 when i gave my talk on the privacy tax 65 00:02:34,000 --> 00:02:37,360 which was about 66 00:02:35,519 --> 00:02:40,000 privacy and data 67 00:02:37,360 --> 00:02:43,120 data security in a world of tracking and 68 00:02:40,000 --> 00:02:44,959 hacking with regards to disability 69 00:02:43,120 --> 00:02:46,560 i had an artificial intelligence 70 00:02:44,959 --> 00:02:49,200 introduce me 71 00:02:46,560 --> 00:02:50,720 this time i want to introduce myself in 72 00:02:49,200 --> 00:02:52,000 terms of the way that i get around the 73 00:02:50,720 --> 00:02:53,440 world 74 00:02:52,000 --> 00:02:55,599 pertinent piece of information to 75 00:02:53,440 --> 00:02:57,920 understand here i don't have a driver's 76 00:02:55,599 --> 00:03:00,000 license so that means that i have a few 77 00:02:57,920 --> 00:03:02,879 different options for navigating my way 78 00:03:00,000 --> 00:03:04,800 around the world i can find someone who 79 00:03:02,879 --> 00:03:06,640 has both the car and a driver's license 80 00:03:04,800 --> 00:03:08,159 and ask them to take me from point a to 81 00:03:06,640 --> 00:03:09,680 point b 82 00:03:08,159 --> 00:03:11,920 i can 83 00:03:09,680 --> 00:03:14,640 get on public transport 84 00:03:11,920 --> 00:03:16,640 i can go out and i can get myself a taxi 85 00:03:14,640 --> 00:03:18,879 or use some sort of ride sharing app to 86 00:03:16,640 --> 00:03:21,120 get myself from point a to point b 87 00:03:18,879 --> 00:03:23,360 or i can walk 88 00:03:21,120 --> 00:03:25,840 some of these options have various 89 00:03:23,360 --> 00:03:27,120 benefits and downsides um 90 00:03:25,840 --> 00:03:28,799 being driven by other people is a 91 00:03:27,120 --> 00:03:30,879 wonderful thing but i am not always 92 00:03:28,799 --> 00:03:32,879 going to be able to find people who have 93 00:03:30,879 --> 00:03:34,959 a car a driver's license and the time to 94 00:03:32,879 --> 00:03:38,480 get me from point a to point b 95 00:03:34,959 --> 00:03:40,720 um using taxis and or ride sharing apps 96 00:03:38,480 --> 00:03:43,760 costs a lot of time and money and 97 00:03:40,720 --> 00:03:46,799 sometimes he's a really big faf 98 00:03:43,760 --> 00:03:48,480 walking is very practical but as you 99 00:03:46,799 --> 00:03:51,040 probably all know by now i'm quite 100 00:03:48,480 --> 00:03:53,519 limited in my ability to walk and you 101 00:03:51,040 --> 00:03:55,519 can't really walk long distances anyway 102 00:03:53,519 --> 00:03:57,120 so what this means in practice is that 103 00:03:55,519 --> 00:03:59,519 the way that i tend to get around the 104 00:03:57,120 --> 00:04:03,200 world involves a lot of use of 105 00:03:59,519 --> 00:04:03,200 melbourne's public transport system 106 00:04:03,360 --> 00:04:07,360 melbourne's public transport system 107 00:04:05,599 --> 00:04:09,280 at least in metropolitan melbourne is 108 00:04:07,360 --> 00:04:12,239 made up of three different forms of 109 00:04:09,280 --> 00:04:14,480 transport largely trains trams and buses 110 00:04:12,239 --> 00:04:16,479 forget about the buses let's talk about 111 00:04:14,480 --> 00:04:18,560 the trams and the trains 112 00:04:16,479 --> 00:04:20,639 and i want to start here by talking 113 00:04:18,560 --> 00:04:23,040 about the trams 114 00:04:20,639 --> 00:04:25,440 because if i want to get from point a to 115 00:04:23,040 --> 00:04:27,440 point b on a tram there are quite a 116 00:04:25,440 --> 00:04:30,000 number of logistical hurdles to me 117 00:04:27,440 --> 00:04:32,160 actually doing that 118 00:04:30,000 --> 00:04:34,720 the victorian government's auditor has 119 00:04:32,160 --> 00:04:37,520 actually done an audit recently on the 120 00:04:34,720 --> 00:04:39,520 accessibility of the yara trams fleet 121 00:04:37,520 --> 00:04:42,639 and yara tram stops 122 00:04:39,520 --> 00:04:44,639 and what they found is that only about 123 00:04:42,639 --> 00:04:47,199 half of the tram routes that run in 124 00:04:44,639 --> 00:04:50,960 melbourne have low floor accessible 125 00:04:47,199 --> 00:04:53,120 trams running on them at all 126 00:04:50,960 --> 00:04:56,800 and none of those routes have low fall 127 00:04:53,120 --> 00:04:58,080 low floor trams running 100 of the time 128 00:04:56,800 --> 00:05:00,479 now 129 00:04:58,080 --> 00:05:02,400 the chief importance here being that uh 130 00:05:00,479 --> 00:05:04,400 the higher floor trams actually require 131 00:05:02,400 --> 00:05:06,240 you to get upstairs to be able to get on 132 00:05:04,400 --> 00:05:08,080 them so if you're a wheelchair user 133 00:05:06,240 --> 00:05:10,160 essentially you cannot use high floor 134 00:05:08,080 --> 00:05:11,840 trams unless you've somehow managed to 135 00:05:10,160 --> 00:05:13,600 crawl yourself in the wheelchair up the 136 00:05:11,840 --> 00:05:16,000 stairs 137 00:05:13,600 --> 00:05:18,160 but it's not just the tram fleet that 138 00:05:16,000 --> 00:05:19,520 prevents a that presents a logistical 139 00:05:18,160 --> 00:05:21,280 barrier to 140 00:05:19,520 --> 00:05:22,880 myself and other disabled people 141 00:05:21,280 --> 00:05:25,520 actually using 142 00:05:22,880 --> 00:05:28,000 the services of yara trams it's also the 143 00:05:25,520 --> 00:05:29,840 fact that in order to be able to safely 144 00:05:28,000 --> 00:05:32,560 get on a tram if you are a wheelchair 145 00:05:29,840 --> 00:05:34,800 user even if it's a low floor tram you 146 00:05:32,560 --> 00:05:37,520 need to actually be able to get on at a 147 00:05:34,800 --> 00:05:39,759 stop that is accessible where the 148 00:05:37,520 --> 00:05:42,000 curbside of the stop 149 00:05:39,759 --> 00:05:43,199 meets the doors of the tram 150 00:05:42,000 --> 00:05:45,440 and again 151 00:05:43,199 --> 00:05:47,520 even on the route where the vast 152 00:05:45,440 --> 00:05:50,400 majority of trams that are run are 153 00:05:47,520 --> 00:05:52,479 accessible low floor trams 154 00:05:50,400 --> 00:05:55,199 only one route 155 00:05:52,479 --> 00:05:58,160 the number 96 156 00:05:55,199 --> 00:06:00,800 comes close to 100 of its tram stops 157 00:05:58,160 --> 00:06:02,880 being accessible the rest even the ones 158 00:06:00,800 --> 00:06:06,080 that quite a number of low floor trams 159 00:06:02,880 --> 00:06:08,400 run on hover between sort of 50 and 60 160 00:06:06,080 --> 00:06:11,680 percent some have basically no 161 00:06:08,400 --> 00:06:11,680 accessible stops at all 162 00:06:12,000 --> 00:06:16,319 so to illustrate this 163 00:06:14,720 --> 00:06:18,319 let's go for a walk through the 164 00:06:16,319 --> 00:06:20,240 melbourne cbd 165 00:06:18,319 --> 00:06:22,400 and have a look at some of the public 166 00:06:20,240 --> 00:06:24,560 transport options that i would have if i 167 00:06:22,400 --> 00:06:25,759 wanted to get from point a to point b on 168 00:06:24,560 --> 00:06:27,280 a track 169 00:06:25,759 --> 00:06:29,680 so it is currently 170 00:06:27,280 --> 00:06:32,639 approximately nine o'clock 171 00:06:29,680 --> 00:06:36,240 in melbourne on the 28th of december and 172 00:06:32,639 --> 00:06:38,240 i have just got off a route 86 tram 173 00:06:36,240 --> 00:06:40,400 uh at the burke street mall elizabeth 174 00:06:38,240 --> 00:06:43,280 straight stop 175 00:06:40,400 --> 00:06:45,840 and i want to do a little tour of all of 176 00:06:43,280 --> 00:06:49,440 the tram stops going down to where my 177 00:06:45,840 --> 00:06:52,000 office currently is to actually prove 178 00:06:49,440 --> 00:06:54,560 this point about accessibility 179 00:06:52,000 --> 00:06:57,759 then we have a crossing here 180 00:06:54,560 --> 00:06:57,759 that is coming up ahead 181 00:06:58,240 --> 00:07:01,759 and if i turn the phone very slightly to 182 00:07:00,240 --> 00:07:05,039 the left 183 00:07:01,759 --> 00:07:05,039 accessible tram stop 184 00:07:10,240 --> 00:07:14,840 so you can see along these routes that 185 00:07:11,919 --> 00:07:17,039 some of the trap stops are actually 186 00:07:14,840 --> 00:07:19,440 accessible but if we head a little bit 187 00:07:17,039 --> 00:07:19,440 further 188 00:07:19,680 --> 00:07:24,160 something which you can't see 189 00:07:21,759 --> 00:07:25,599 but is visually apparent to me is there 190 00:07:24,160 --> 00:07:27,919 is a tram at the moment pulling up to 191 00:07:25,599 --> 00:07:30,479 the accessible transport 192 00:07:27,919 --> 00:07:32,960 which is a high fuel tram that has got 193 00:07:30,479 --> 00:07:34,880 stairs coming up to it 194 00:07:32,960 --> 00:07:36,560 so what we have there is the problem of 195 00:07:34,880 --> 00:07:38,400 the stop is accessible 196 00:07:36,560 --> 00:07:40,000 but the tram that's running along is 197 00:07:38,400 --> 00:07:41,840 actually not 198 00:07:40,000 --> 00:07:43,599 so we're now approaching collins 199 00:07:41,840 --> 00:07:45,199 straight 200 00:07:43,599 --> 00:07:47,360 there are cross between four and 201 00:07:45,199 --> 00:07:49,919 straight levels of the stream 202 00:07:47,360 --> 00:07:52,319 so actually crossing over the road 203 00:07:49,919 --> 00:07:56,319 if i tilt this to the right 204 00:07:52,319 --> 00:07:56,319 you can see again accessible 205 00:07:56,840 --> 00:08:02,240 that's straight over three but again 206 00:08:00,000 --> 00:08:03,599 it had one of the non-accessible trams 207 00:08:02,240 --> 00:08:08,000 there 208 00:08:03,599 --> 00:08:10,160 so they run 11 12 48 and 109 along there 209 00:08:08,000 --> 00:08:13,759 and part of the problem is not all of 210 00:08:10,160 --> 00:08:16,080 those trams are actually accessible 211 00:08:13,759 --> 00:08:17,280 this is going to require me to make two 212 00:08:16,080 --> 00:08:20,560 crossings 213 00:08:17,280 --> 00:08:20,560 to actually show this to you 214 00:08:25,680 --> 00:08:29,280 and you can see here again 215 00:08:29,360 --> 00:08:34,250 that there 216 00:08:30,479 --> 00:08:37,340 is a local trap 217 00:08:34,250 --> 00:08:37,340 [Music] 218 00:08:46,510 --> 00:08:53,440 [Music] 219 00:08:51,200 --> 00:08:55,279 so this area around the street the 220 00:08:53,440 --> 00:08:57,680 little stream 221 00:08:55,279 --> 00:09:01,760 this was just redone 222 00:08:57,680 --> 00:09:03,600 at a um not small expense 223 00:09:01,760 --> 00:09:06,560 as you can see 224 00:09:03,600 --> 00:09:08,640 as i'm walking along here 225 00:09:06,560 --> 00:09:10,240 they didn't actually think to redo the 226 00:09:08,640 --> 00:09:12,080 tram stop 227 00:09:10,240 --> 00:09:14,000 so this entire tram stop is a ground 228 00:09:12,080 --> 00:09:15,920 level 229 00:09:14,000 --> 00:09:17,839 and if i approach 230 00:09:15,920 --> 00:09:20,560 the route 19 [ __ ] head which is 231 00:09:17,839 --> 00:09:23,120 actually a beautiful illustration 232 00:09:20,560 --> 00:09:24,640 of how this works 233 00:09:23,120 --> 00:09:27,360 you can see 234 00:09:24,640 --> 00:09:29,360 the doors don't meet the ground 235 00:09:27,360 --> 00:09:32,560 so as you can see 236 00:09:29,360 --> 00:09:34,480 that's not super ideal 237 00:09:32,560 --> 00:09:36,320 there are certain areas of melbourne if 238 00:09:34,480 --> 00:09:38,080 you want to get from point a to point b 239 00:09:36,320 --> 00:09:40,080 by tram that are exceptionally 240 00:09:38,080 --> 00:09:41,920 accessible very easy for wheelchair 241 00:09:40,080 --> 00:09:44,560 users to just roll themselves on and 242 00:09:41,920 --> 00:09:46,080 roll themselves off pretty easy for the 243 00:09:44,560 --> 00:09:47,760 vast majority of other people with 244 00:09:46,080 --> 00:09:49,519 physical disabilities to get on and get 245 00:09:47,760 --> 00:09:51,680 off as well 246 00:09:49,519 --> 00:09:53,200 but there are tram stops like the one at 247 00:09:51,680 --> 00:09:55,839 the corner of flinders and elizabeth 248 00:09:53,200 --> 00:09:58,399 street which even though there is ample 249 00:09:55,839 --> 00:09:59,760 space to make the tram stop itself 250 00:09:58,399 --> 00:10:01,600 accessible 251 00:09:59,760 --> 00:10:03,519 and even though 252 00:10:01,600 --> 00:10:06,160 a very large amount of money was just 253 00:10:03,519 --> 00:10:07,680 spent renovating that precinct 254 00:10:06,160 --> 00:10:09,519 nothing was actually done to make the 255 00:10:07,680 --> 00:10:11,920 tram stop accessible 256 00:10:09,519 --> 00:10:14,560 and they don't run low floor trams along 257 00:10:11,920 --> 00:10:16,160 there now the audit report actually 258 00:10:14,560 --> 00:10:19,200 pointed out that 259 00:10:16,160 --> 00:10:21,120 yara trams used to have a 260 00:10:19,200 --> 00:10:23,440 an exemption from 261 00:10:21,120 --> 00:10:25,440 or a waiver around the accessibility 262 00:10:23,440 --> 00:10:28,399 legislation in victoria that actually 263 00:10:25,440 --> 00:10:30,240 expired in september of last year um the 264 00:10:28,399 --> 00:10:32,480 new target was supposed to be for them 265 00:10:30,240 --> 00:10:35,519 to make the vast majority of tram fleets 266 00:10:32,480 --> 00:10:37,600 accessible by september of 2022 267 00:10:35,519 --> 00:10:39,600 and probably surprising nobody who's had 268 00:10:37,600 --> 00:10:42,160 any dealings with government they're not 269 00:10:39,600 --> 00:10:44,480 going to meet that deadline either 270 00:10:42,160 --> 00:10:46,560 the auditor also pointed out that this 271 00:10:44,480 --> 00:10:48,880 actually puts them at risk of being sued 272 00:10:46,560 --> 00:10:52,160 or taken to tribunal for offering 273 00:10:48,880 --> 00:10:52,160 inaccessible services 274 00:10:52,399 --> 00:10:57,920 so then we have to look at metro trains 275 00:10:55,519 --> 00:11:00,240 because on the surface 276 00:10:57,920 --> 00:11:02,720 metro trains actually seems like a much 277 00:11:00,240 --> 00:11:05,120 better option if you want to take public 278 00:11:02,720 --> 00:11:07,040 transport around melbourne all of 279 00:11:05,120 --> 00:11:09,600 melbourne's trains at least the ones 280 00:11:07,040 --> 00:11:12,320 that run on the metropolitan lines are 281 00:11:09,600 --> 00:11:16,240 accessible they're all low floor you can 282 00:11:12,320 --> 00:11:16,240 get in get out of them fairly readily 283 00:11:16,320 --> 00:11:20,160 kind of 284 00:11:18,079 --> 00:11:22,000 because the issue that you run into with 285 00:11:20,160 --> 00:11:23,680 metro trains 286 00:11:22,000 --> 00:11:26,160 is that they have the same sort of 287 00:11:23,680 --> 00:11:29,680 problem that the trams do in that in a 288 00:11:26,160 --> 00:11:32,480 lot of cases the floor of the train does 289 00:11:29,680 --> 00:11:34,320 not actually meet the edge of the tram 290 00:11:32,480 --> 00:11:36,240 stop the edge of the 291 00:11:34,320 --> 00:11:38,240 the train platform 292 00:11:36,240 --> 00:11:40,079 and so in order to get on 293 00:11:38,240 --> 00:11:41,600 if you're me or if you're a wheelchair 294 00:11:40,079 --> 00:11:43,600 user or someone who has some sort of 295 00:11:41,600 --> 00:11:45,680 other mobility impairment you're 296 00:11:43,600 --> 00:11:47,120 actually reliant in a lot of cases on 297 00:11:45,680 --> 00:11:49,600 the driver 298 00:11:47,120 --> 00:11:51,279 coming out and getting a ramp for you so 299 00:11:49,600 --> 00:11:53,600 that you can then will yourself on and 300 00:11:51,279 --> 00:11:53,600 off 301 00:11:54,160 --> 00:11:57,920 and 302 00:11:55,120 --> 00:12:01,920 as the many many complaint letters that 303 00:11:57,920 --> 00:12:04,560 i have sent to metro trains can attest 304 00:12:01,920 --> 00:12:06,000 and as the many many very polite letters 305 00:12:04,560 --> 00:12:08,959 that i've got back from their complaints 306 00:12:06,000 --> 00:12:11,760 department can also attest um that 307 00:12:08,959 --> 00:12:13,920 doesn't always work out quite so well as 308 00:12:11,760 --> 00:12:16,000 you might think so this is a train 309 00:12:13,920 --> 00:12:18,639 sitting on a platform at flinders street 310 00:12:16,000 --> 00:12:20,880 station if you look at the doors of the 311 00:12:18,639 --> 00:12:24,240 trains that are open you can actually 312 00:12:20,880 --> 00:12:26,480 see not only is there a gap between the 313 00:12:24,240 --> 00:12:28,480 train and the platform that's quite 314 00:12:26,480 --> 00:12:30,320 significant but there's also a height 315 00:12:28,480 --> 00:12:31,680 differential and that means that if 316 00:12:30,320 --> 00:12:33,519 you're in a wheelchair or you have 317 00:12:31,680 --> 00:12:35,760 trouble lifting your knees it's going to 318 00:12:33,519 --> 00:12:37,040 be really hard if not impossible to get 319 00:12:35,760 --> 00:12:39,760 yourself on 320 00:12:37,040 --> 00:12:42,000 this has been fixed to an extent by 321 00:12:39,760 --> 00:12:44,079 raising the platforms at one end of the 322 00:12:42,000 --> 00:12:47,200 platform where the driver usually comes 323 00:12:44,079 --> 00:12:50,079 in so that people can roll themselves on 324 00:12:47,200 --> 00:12:52,959 but that hasn't been done on every train 325 00:12:50,079 --> 00:12:55,040 platform at every station and the other 326 00:12:52,959 --> 00:12:56,800 issue with that is even then there's 327 00:12:55,040 --> 00:12:58,480 only the one position that you can get 328 00:12:56,800 --> 00:13:00,240 on the train you still have to get 329 00:12:58,480 --> 00:13:02,720 yourself often all the way down the 330 00:13:00,240 --> 00:13:04,639 platform to be able to safely get on the 331 00:13:02,720 --> 00:13:06,560 train without assistance 332 00:13:04,639 --> 00:13:08,399 there's a salient point here that i want 333 00:13:06,560 --> 00:13:10,639 to illustrate 334 00:13:08,399 --> 00:13:13,120 which is around 335 00:13:10,639 --> 00:13:15,519 the nature of accessibility 336 00:13:13,120 --> 00:13:17,360 the nature of adaptability and 337 00:13:15,519 --> 00:13:21,279 assistance 338 00:13:17,360 --> 00:13:25,120 and what these actually look like now 339 00:13:21,279 --> 00:13:28,320 this is important because 340 00:13:25,120 --> 00:13:31,440 in some cases even though the yara trams 341 00:13:28,320 --> 00:13:33,920 network actually looks less accessible 342 00:13:31,440 --> 00:13:35,920 in some cases the yara trams network is 343 00:13:33,920 --> 00:13:37,360 actually the better option 344 00:13:35,920 --> 00:13:40,079 if you're physically disabled and you 345 00:13:37,360 --> 00:13:42,720 want to get from point a to point b 346 00:13:40,079 --> 00:13:45,600 because you don't actually need help 347 00:13:42,720 --> 00:13:47,600 from any individual person there's no 348 00:13:45,600 --> 00:13:49,920 single point of failure you can get 349 00:13:47,600 --> 00:13:51,600 yourself on and get yourself off because 350 00:13:49,920 --> 00:13:53,760 the infrastructure has been built in 351 00:13:51,600 --> 00:13:55,839 such a way to allow you to do that 352 00:13:53,760 --> 00:13:58,000 essentially rather than you having to 353 00:13:55,839 --> 00:14:00,240 ask people for assistance the 354 00:13:58,000 --> 00:14:02,399 infrastructure has adapted 355 00:14:00,240 --> 00:14:04,079 it's helped without the handshake it's 356 00:14:02,399 --> 00:14:06,560 help that comes in the form of the way 357 00:14:04,079 --> 00:14:08,320 that we've built up society 358 00:14:06,560 --> 00:14:10,399 rather than help that relies on 359 00:14:08,320 --> 00:14:12,240 individual people good will and single 360 00:14:10,399 --> 00:14:14,240 points of failure 361 00:14:12,240 --> 00:14:16,480 this sort of analogy is applicable to 362 00:14:14,240 --> 00:14:18,160 many many other aspects of life as well 363 00:14:16,480 --> 00:14:22,079 so something that's important to think 364 00:14:18,160 --> 00:14:25,040 about here then is the idea of public 365 00:14:22,079 --> 00:14:27,440 utilities 366 00:14:25,040 --> 00:14:28,880 metro trains and yarra trams even though 367 00:14:27,440 --> 00:14:30,800 they're technically privatized are 368 00:14:28,880 --> 00:14:33,040 public utilities they're available for 369 00:14:30,800 --> 00:14:34,800 anyone in the public to use on the 370 00:14:33,040 --> 00:14:36,079 assumption that they pay some sort of 371 00:14:34,800 --> 00:14:38,240 fee 372 00:14:36,079 --> 00:14:40,880 in fact a modern world without public 373 00:14:38,240 --> 00:14:42,480 utilities wouldn't really be a modern 374 00:14:40,880 --> 00:14:44,480 world at all 375 00:14:42,480 --> 00:14:46,160 a lot of the things that we're able to 376 00:14:44,480 --> 00:14:47,760 do day-to-day 377 00:14:46,160 --> 00:14:49,760 a lot of these structures of modern 378 00:14:47,760 --> 00:14:52,240 daily life 379 00:14:49,760 --> 00:14:54,079 are actually very much built around 380 00:14:52,240 --> 00:14:56,560 these public utilities and public 381 00:14:54,079 --> 00:14:59,040 support that we as a size that we as a 382 00:14:56,560 --> 00:15:00,160 society have been able to put together 383 00:14:59,040 --> 00:15:02,480 to function 384 00:15:00,160 --> 00:15:04,320 interconnected but without needing to 385 00:15:02,480 --> 00:15:06,880 ask for help from any specific 386 00:15:04,320 --> 00:15:06,880 individual 387 00:15:07,199 --> 00:15:11,040 and there are a lot of different aspects 388 00:15:09,519 --> 00:15:13,040 of the world around us that we could 389 00:15:11,040 --> 00:15:16,000 consider in some ways to be 390 00:15:13,040 --> 00:15:17,760 public utilities in the sense that 391 00:15:16,000 --> 00:15:19,839 regardless of whether one has to pay a 392 00:15:17,760 --> 00:15:21,680 fee they are used by a very large 393 00:15:19,839 --> 00:15:24,079 percentage of the public in their 394 00:15:21,680 --> 00:15:27,440 day-to-day lives we can look at things 395 00:15:24,079 --> 00:15:29,199 like water electricity public transport 396 00:15:27,440 --> 00:15:31,519 but we can also look at things which are 397 00:15:29,199 --> 00:15:35,199 much more relevant day-to-day to our 398 00:15:31,519 --> 00:15:37,040 career in in our careers in technology 399 00:15:35,199 --> 00:15:39,839 we can actually look at the internet and 400 00:15:37,040 --> 00:15:42,480 computers and the whole interconnected 401 00:15:39,839 --> 00:15:46,399 framework of the world wide web 402 00:15:42,480 --> 00:15:48,320 as being part of a public utility 403 00:15:46,399 --> 00:15:51,279 you know anyone can effectively just 404 00:15:48,320 --> 00:15:53,279 walk into other people's public websites 405 00:15:51,279 --> 00:15:55,839 and see what's up there and see what's 406 00:15:53,279 --> 00:15:55,839 going on there 407 00:15:56,240 --> 00:16:00,399 and that sort of thinking has been 408 00:15:58,639 --> 00:16:02,320 brought to the forefront of 409 00:16:00,399 --> 00:16:04,720 consciousness in the united states of 410 00:16:02,320 --> 00:16:06,839 america recently by the country's 411 00:16:04,720 --> 00:16:09,440 favorite pastime of 412 00:16:06,839 --> 00:16:11,920 lawsuits specifically i want to call out 413 00:16:09,440 --> 00:16:14,399 the robles versus domino's pizza llc 414 00:16:11,920 --> 00:16:16,800 lawsuit which has been wending its way 415 00:16:14,399 --> 00:16:18,399 through the courts for several years at 416 00:16:16,800 --> 00:16:20,880 this point i believe it was actually 417 00:16:18,399 --> 00:16:24,079 filed in 2019 418 00:16:20,880 --> 00:16:26,639 and it was settled earlier this year 419 00:16:24,079 --> 00:16:29,519 essentially what happened was guillermo 420 00:16:26,639 --> 00:16:31,680 robles a blind screen reader user wanted 421 00:16:29,519 --> 00:16:33,600 to order himself a pizza 422 00:16:31,680 --> 00:16:36,079 and he chose to do this not by going 423 00:16:33,600 --> 00:16:38,800 down to his local domino's pizza outlet 424 00:16:36,079 --> 00:16:40,800 but by doing so online unfortunately 425 00:16:38,800 --> 00:16:43,040 what he found was that he wasn't 426 00:16:40,800 --> 00:16:44,800 actually able to not to navigate 427 00:16:43,040 --> 00:16:47,600 domino's website 428 00:16:44,800 --> 00:16:50,240 using his screen reader 429 00:16:47,600 --> 00:16:51,759 after some attempts to resolve this he 430 00:16:50,240 --> 00:16:55,040 followed the time-honored american 431 00:16:51,759 --> 00:16:57,920 tradition of having to suffer rights and 432 00:16:55,040 --> 00:17:00,079 sued domino's pizza 433 00:16:57,920 --> 00:17:01,040 the consequence of this after it went 434 00:17:00,079 --> 00:17:02,880 through 435 00:17:01,040 --> 00:17:04,480 several layers of the courts and 436 00:17:02,880 --> 00:17:06,959 appealed to the supreme court which 437 00:17:04,480 --> 00:17:09,199 ultimately sided with robles 438 00:17:06,959 --> 00:17:11,919 and then a second judgment in the lower 439 00:17:09,199 --> 00:17:14,480 court which sided with robles and agreed 440 00:17:11,919 --> 00:17:17,199 that domino's pizza needed to remediate 441 00:17:14,480 --> 00:17:21,039 the issues with their website 442 00:17:17,199 --> 00:17:23,280 the ultimate consequence of this is that 443 00:17:21,039 --> 00:17:26,720 in the us at least 444 00:17:23,280 --> 00:17:29,280 the world wide web and public websites 445 00:17:26,720 --> 00:17:31,919 are moving towards being defined as a 446 00:17:29,280 --> 00:17:34,160 place of public accommodation as part of 447 00:17:31,919 --> 00:17:35,840 the americans with disabilities act and 448 00:17:34,160 --> 00:17:38,080 this means that if you are legally 449 00:17:35,840 --> 00:17:40,559 required to have your brick and mortar 450 00:17:38,080 --> 00:17:42,320 stores accessible to all of the public 451 00:17:40,559 --> 00:17:44,720 not just those members of the public 452 00:17:42,320 --> 00:17:47,679 without disabilities 453 00:17:44,720 --> 00:17:49,679 you are also required to do the same 454 00:17:47,679 --> 00:17:51,760 with your online shopping website to do 455 00:17:49,679 --> 00:17:54,000 the same with your corporate website to 456 00:17:51,760 --> 00:17:55,919 provide equal access to people with 457 00:17:54,000 --> 00:17:58,240 disabilities regardless of the type of 458 00:17:55,919 --> 00:18:01,120 disability that they may have so that 459 00:17:58,240 --> 00:18:03,120 they can consume your content interface 460 00:18:01,120 --> 00:18:05,440 with your services or purchase your 461 00:18:03,120 --> 00:18:05,440 goods 462 00:18:08,320 --> 00:18:13,919 so that's america 463 00:18:10,400 --> 00:18:15,600 let's take a little trip across the pond 464 00:18:13,919 --> 00:18:18,080 i don't know what percentage of the 465 00:18:15,600 --> 00:18:18,880 audience today has ever lived in or been 466 00:18:18,080 --> 00:18:20,720 to 467 00:18:18,880 --> 00:18:21,760 england wales scotland or northern 468 00:18:20,720 --> 00:18:24,160 ireland 469 00:18:21,760 --> 00:18:26,559 the constituent countries of the united 470 00:18:24,160 --> 00:18:29,440 kingdom 471 00:18:26,559 --> 00:18:30,880 but the united kingdom actually has a 472 00:18:29,440 --> 00:18:33,360 really really 473 00:18:30,880 --> 00:18:36,000 good situation which will allow us to 474 00:18:33,360 --> 00:18:38,720 illustrate some of this idea of websites 475 00:18:36,000 --> 00:18:40,799 as public utilities 476 00:18:38,720 --> 00:18:42,400 for all of the massive problems with the 477 00:18:40,799 --> 00:18:43,679 uk's government that have become 478 00:18:42,400 --> 00:18:44,880 apparent 479 00:18:43,679 --> 00:18:46,720 probably 480 00:18:44,880 --> 00:18:48,640 well before my lifetime and have been 481 00:18:46,720 --> 00:18:51,360 continuing to become apparent for the 482 00:18:48,640 --> 00:18:54,640 entire time that i have been around 483 00:18:51,360 --> 00:18:56,799 one thing that the uk does really well 484 00:18:54,640 --> 00:18:59,600 is accessibility on their government 485 00:18:56,799 --> 00:19:00,960 website essentially the dot gov dot uk 486 00:18:59,600 --> 00:19:04,000 sites 487 00:19:00,960 --> 00:19:08,840 and information on dot gov dot uk sites 488 00:19:04,000 --> 00:19:10,880 massively varies from the uh much 489 00:19:08,840 --> 00:19:12,000 satirizedpreparingwithemergencies.gov uk 490 00:19:10,880 --> 00:19:14,400 to 491 00:19:12,000 --> 00:19:18,960 her majesty's internal revenue service 492 00:19:14,400 --> 00:19:20,480 to various parliamentary websites to 493 00:19:18,960 --> 00:19:22,799 general uh 494 00:19:20,480 --> 00:19:25,360 information on how to access various 495 00:19:22,799 --> 00:19:28,080 aspects of the country 496 00:19:25,360 --> 00:19:29,600 and the dot gov dot uk websites as a 497 00:19:28,080 --> 00:19:31,120 whole 498 00:19:29,600 --> 00:19:33,120 have the incredible achievement of 499 00:19:31,120 --> 00:19:36,400 probably actually being one of the most 500 00:19:33,120 --> 00:19:38,320 accessible top level domains on the web 501 00:19:36,400 --> 00:19:42,240 and the reason why this is really 502 00:19:38,320 --> 00:19:44,799 interesting is because by and large 503 00:19:42,240 --> 00:19:50,960 uk government websites are all built 504 00:19:44,799 --> 00:19:53,280 almost entirely with raw html and css 505 00:19:50,960 --> 00:19:56,080 the reason why they're built that way is 506 00:19:53,280 --> 00:19:57,919 actually for accessibility purposes 507 00:19:56,080 --> 00:19:59,760 the idea is that if the government is 508 00:19:57,919 --> 00:20:01,200 not building with frameworks if the 509 00:19:59,760 --> 00:20:04,159 government and people building 510 00:20:01,200 --> 00:20:06,400 government websites build with raw html 511 00:20:04,159 --> 00:20:09,039 and css and have a consistent set of 512 00:20:06,400 --> 00:20:10,640 standards that they have to follow 513 00:20:09,039 --> 00:20:12,960 it's vastly more likely that the 514 00:20:10,640 --> 00:20:14,720 websites that they produce actually will 515 00:20:12,960 --> 00:20:17,600 be accessible 516 00:20:14,720 --> 00:20:20,720 to anybody who needs to go to them 517 00:20:17,600 --> 00:20:22,559 particularly now with html5 518 00:20:20,720 --> 00:20:25,039 that a lot of features around 519 00:20:22,559 --> 00:20:27,760 accessibility are inherently built into 520 00:20:25,039 --> 00:20:29,520 html itself 521 00:20:27,760 --> 00:20:31,360 and this is a strategy that's actually 522 00:20:29,520 --> 00:20:33,919 worked really well 523 00:20:31,360 --> 00:20:36,480 having uk government software developers 524 00:20:33,919 --> 00:20:40,520 follow this strategy has 525 00:20:36,480 --> 00:20:42,559 according to several surveys resulted in 526 00:20:40,520 --> 00:20:45,760 the.gov.uktld being one of the most 527 00:20:42,559 --> 00:20:45,760 accessible in the world 528 00:20:47,600 --> 00:20:52,080 the problem is that 529 00:20:49,520 --> 00:20:53,520 the modern web is not the dot gov dot uk 530 00:20:52,080 --> 00:20:55,520 tld 531 00:20:53,520 --> 00:20:58,080 the modern web is 532 00:20:55,520 --> 00:21:00,240 built almost entirely these days on 533 00:20:58,080 --> 00:21:02,080 frameworks 534 00:21:00,240 --> 00:21:04,559 and whilst there are very good reasons 535 00:21:02,080 --> 00:21:06,640 for the uk government choosing to build 536 00:21:04,559 --> 00:21:09,679 the vast majority of their websites in 537 00:21:06,640 --> 00:21:11,840 raw html and css there are also very 538 00:21:09,679 --> 00:21:14,080 good reasons why the modern web is built 539 00:21:11,840 --> 00:21:16,240 up the way that it is because there's no 540 00:21:14,080 --> 00:21:18,159 point in everybody reinventing the wheel 541 00:21:16,240 --> 00:21:20,960 there's no point in everybody writing 542 00:21:18,159 --> 00:21:23,840 their code in raw html when we can 543 00:21:20,960 --> 00:21:26,480 simply build frameworks and component 544 00:21:23,840 --> 00:21:28,799 libraries which will allow us to reuse 545 00:21:26,480 --> 00:21:30,480 other people's code and get on with the 546 00:21:28,799 --> 00:21:33,039 business of building the websites that 547 00:21:30,480 --> 00:21:35,200 we actually want to build 548 00:21:33,039 --> 00:21:37,520 this ethos has made web development 549 00:21:35,200 --> 00:21:39,760 vastly more accessible in terms of 550 00:21:37,520 --> 00:21:41,039 people actually being able to produce 551 00:21:39,760 --> 00:21:42,880 websites 552 00:21:41,039 --> 00:21:45,280 if you look at a lot of the modern low 553 00:21:42,880 --> 00:21:48,240 code platforms out there pretty well 554 00:21:45,280 --> 00:21:50,240 anyone can knock up a website in not too 555 00:21:48,240 --> 00:21:52,400 much time 556 00:21:50,240 --> 00:21:54,320 and actually put it on the web so that 557 00:21:52,400 --> 00:21:56,880 anyone is able to interface with their 558 00:21:54,320 --> 00:21:59,039 content anyone is able to purchase their 559 00:21:56,880 --> 00:22:01,840 goods and anyone is able to understand 560 00:21:59,039 --> 00:22:04,080 the services that they may provide 561 00:22:01,840 --> 00:22:05,840 the trade-off with that 562 00:22:04,080 --> 00:22:07,440 is that if your framework is not 563 00:22:05,840 --> 00:22:09,360 accessible 564 00:22:07,440 --> 00:22:12,159 your website is not necessarily 565 00:22:09,360 --> 00:22:15,520 accessible either 566 00:22:12,159 --> 00:22:19,120 the web aim study has consistently found 567 00:22:15,520 --> 00:22:21,440 that websites using frameworks have are 568 00:22:19,120 --> 00:22:23,679 more likely to have accessibility issues 569 00:22:21,440 --> 00:22:25,200 that are picked up by automatic checkers 570 00:22:23,679 --> 00:22:28,000 and that they also have more 571 00:22:25,200 --> 00:22:31,280 accessibility issues that are picked up 572 00:22:28,000 --> 00:22:34,400 um through automatic automated checkers 573 00:22:31,280 --> 00:22:37,200 ruby on rails is one of the uh 574 00:22:34,400 --> 00:22:38,960 better frameworks out there for this and 575 00:22:37,200 --> 00:22:41,760 some of the javascript-based frameworks 576 00:22:38,960 --> 00:22:43,919 are very much the worst offenders as you 577 00:22:41,760 --> 00:22:45,679 can see from this chart 578 00:22:43,919 --> 00:22:48,960 but 579 00:22:45,679 --> 00:22:51,039 it's true across the board that 580 00:22:48,960 --> 00:22:53,679 there are not really any frameworks out 581 00:22:51,039 --> 00:22:55,840 there that actually reduce your chance 582 00:22:53,679 --> 00:22:58,559 of having accessibility errors on the 583 00:22:55,840 --> 00:23:01,200 website that you're building 584 00:22:58,559 --> 00:23:02,880 and there are a few things to look at 585 00:23:01,200 --> 00:23:05,520 here around 586 00:23:02,880 --> 00:23:07,919 what actually makes a framework or a 587 00:23:05,520 --> 00:23:11,760 component library or some sort of 588 00:23:07,919 --> 00:23:14,320 reusable setup accessible 589 00:23:11,760 --> 00:23:16,320 full credit here to jess budd an 590 00:23:14,320 --> 00:23:18,000 accessibility specialist from perth 591 00:23:16,320 --> 00:23:20,960 western australia who i met at 592 00:23:18,000 --> 00:23:22,960 conference in adelaide in 2019 593 00:23:20,960 --> 00:23:24,880 she gave a talk there talking about how 594 00:23:22,960 --> 00:23:26,960 react accessibility wasn't that hard 595 00:23:24,880 --> 00:23:28,799 from her point of view and at the end of 596 00:23:26,960 --> 00:23:30,480 the talk i challenged her on this i 597 00:23:28,799 --> 00:23:33,200 actually said 598 00:23:30,480 --> 00:23:35,120 in my view as a disabled person 599 00:23:33,200 --> 00:23:37,600 the best kind of framework is a 600 00:23:35,120 --> 00:23:40,080 framework where 601 00:23:37,600 --> 00:23:42,240 people don't have to think about 602 00:23:40,080 --> 00:23:43,919 building accessibility into it and the 603 00:23:42,240 --> 00:23:46,400 fact that people have to think about 604 00:23:43,919 --> 00:23:48,799 building accessibility and to react in 605 00:23:46,400 --> 00:23:51,919 some ways actually means that it's maybe 606 00:23:48,799 --> 00:23:53,679 it is that hard 607 00:23:51,919 --> 00:23:54,799 we had a very very long and productive 608 00:23:53,679 --> 00:23:57,120 discussion 609 00:23:54,799 --> 00:24:00,080 after her talk and 610 00:23:57,120 --> 00:24:02,080 in some ways as i've seen more of modern 611 00:24:00,080 --> 00:24:03,679 web development build up and i've had 612 00:24:02,080 --> 00:24:05,840 more discussions with people about how 613 00:24:03,679 --> 00:24:08,400 it works i'm actually sort of coming 614 00:24:05,840 --> 00:24:09,360 around to her point of view on this 615 00:24:08,400 --> 00:24:11,120 that 616 00:24:09,360 --> 00:24:13,279 sometimes 617 00:24:11,120 --> 00:24:15,520 with regards to accessibility you don't 618 00:24:13,279 --> 00:24:16,400 want the perfect to be the enemy of the 619 00:24:15,520 --> 00:24:19,039 good 620 00:24:16,400 --> 00:24:21,120 the problem with that though is that 621 00:24:19,039 --> 00:24:23,679 some of these frameworks are designed so 622 00:24:21,120 --> 00:24:25,440 that anyone who deals with 623 00:24:23,679 --> 00:24:27,840 websites should be able to spin it up 624 00:24:25,440 --> 00:24:29,279 themselves and they're not necessarily 625 00:24:27,840 --> 00:24:31,200 going to know what they need to do to 626 00:24:29,279 --> 00:24:35,120 make it accessible 627 00:24:31,200 --> 00:24:37,520 so to boil it down into a few points 628 00:24:35,120 --> 00:24:40,320 the first thing that makes a framework 629 00:24:37,520 --> 00:24:43,200 or a component or any sort of reusable 630 00:24:40,320 --> 00:24:44,080 widget that you can plug into some sort 631 00:24:43,200 --> 00:24:45,760 of 632 00:24:44,080 --> 00:24:48,000 framework to build or some sort of 633 00:24:45,760 --> 00:24:50,640 programming language to build a website 634 00:24:48,000 --> 00:24:52,799 is that it's easy to do 635 00:24:50,640 --> 00:24:54,799 and that might mean that there is some 636 00:24:52,799 --> 00:24:56,799 manual intervention that still has to 637 00:24:54,799 --> 00:24:59,520 happen but it should be manual 638 00:24:56,799 --> 00:25:02,240 intervention that's clearly documented 639 00:24:59,520 --> 00:25:04,559 and easily explained to anyone without a 640 00:25:02,240 --> 00:25:07,039 lot of coding experience the second and 641 00:25:04,559 --> 00:25:09,840 perhaps more obvious aspect is there 642 00:25:07,039 --> 00:25:11,840 should be no errors that mean that you 643 00:25:09,840 --> 00:25:14,559 have to actually rewrite bits of the 644 00:25:11,840 --> 00:25:17,520 component or bits of the framework 645 00:25:14,559 --> 00:25:20,080 if you're building something reusable 646 00:25:17,520 --> 00:25:21,279 that has accessibility errors inherently 647 00:25:20,080 --> 00:25:22,960 baked in 648 00:25:21,279 --> 00:25:24,400 at that point it kind of defeats the 649 00:25:22,960 --> 00:25:26,000 purpose 650 00:25:24,400 --> 00:25:28,400 if you have to go and write another 651 00:25:26,000 --> 00:25:30,480 framework over it to actually make it 652 00:25:28,400 --> 00:25:32,480 accessible 653 00:25:30,480 --> 00:25:35,760 the third aspect around what makes a 654 00:25:32,480 --> 00:25:40,240 framework accessible is 655 00:25:35,760 --> 00:25:41,760 ease of use of accessibility features 656 00:25:40,240 --> 00:25:45,760 and something that's really interesting 657 00:25:41,760 --> 00:25:48,240 to call out here is tailwind css and 658 00:25:45,760 --> 00:25:50,320 specifically the tailwind ui components 659 00:25:48,240 --> 00:25:54,799 that they release 660 00:25:50,320 --> 00:25:57,200 rely on a bunch of free icons and free 661 00:25:54,799 --> 00:25:58,880 essentially component libraries 662 00:25:57,200 --> 00:26:01,600 that are 663 00:25:58,880 --> 00:26:04,080 fully accessible 664 00:26:01,600 --> 00:26:06,159 the issue that you may run into and this 665 00:26:04,080 --> 00:26:07,120 is part of where the nuance here is is 666 00:26:06,159 --> 00:26:09,120 around 667 00:26:07,120 --> 00:26:11,120 the difference between something that's 668 00:26:09,120 --> 00:26:13,520 actually built 669 00:26:11,120 --> 00:26:15,760 in a way that hinders accessibility and 670 00:26:13,520 --> 00:26:17,360 something that's just not built to make 671 00:26:15,760 --> 00:26:19,360 it easy 672 00:26:17,360 --> 00:26:21,360 frameworks like your react views 673 00:26:19,360 --> 00:26:23,120 angular's ruby on rails 674 00:26:21,360 --> 00:26:24,880 tend to fall more into the form of 675 00:26:23,120 --> 00:26:26,880 bucket that they're just not built to 676 00:26:24,880 --> 00:26:28,799 make it easy 677 00:26:26,880 --> 00:26:31,520 whereas 678 00:26:28,799 --> 00:26:34,000 if a component library is bad it's 679 00:26:31,520 --> 00:26:36,559 usually really bad and often that's 680 00:26:34,000 --> 00:26:39,840 around actual accessibility errors being 681 00:26:36,559 --> 00:26:39,840 baked in 682 00:26:40,240 --> 00:26:44,480 speaking of accessibility errors 683 00:26:42,880 --> 00:26:46,400 some of the accessibility errors that 684 00:26:44,480 --> 00:26:47,760 you might run into around component 685 00:26:46,400 --> 00:26:49,039 libraries 686 00:26:47,760 --> 00:26:50,720 are 687 00:26:49,039 --> 00:26:52,720 not the types of things that you might 688 00:26:50,720 --> 00:26:54,320 think of off the top of your head 689 00:26:52,720 --> 00:26:56,000 they're also not the types of things 690 00:26:54,320 --> 00:26:58,320 that are necessarily going to be picked 691 00:26:56,000 --> 00:27:01,520 up by automatic checkers 692 00:26:58,320 --> 00:27:04,840 and i can illustrate this by using the 693 00:27:01,520 --> 00:27:08,159 uh just use dark mode it'll be fine 694 00:27:04,840 --> 00:27:10,240 principle these are two logos of the 695 00:27:08,159 --> 00:27:12,640 chicago blackhawks of the national 696 00:27:10,240 --> 00:27:14,640 hockey league 697 00:27:12,640 --> 00:27:18,799 these were pulled off the website for 698 00:27:14,640 --> 00:27:21,279 cat friendly which is a website that 699 00:27:18,799 --> 00:27:23,120 lists essentially details around a 700 00:27:21,279 --> 00:27:25,679 contract of hockey players who play in 701 00:27:23,120 --> 00:27:27,600 the national hockey league 702 00:27:25,679 --> 00:27:29,760 and i'm sure that most of you can 703 00:27:27,600 --> 00:27:31,279 probably see the problem with this 704 00:27:29,760 --> 00:27:34,480 fairly readily 705 00:27:31,279 --> 00:27:37,200 um poor black hawk there 706 00:27:34,480 --> 00:27:39,520 doesn't quite function on light mode 707 00:27:37,200 --> 00:27:41,840 he's missing not just his eyes but some 708 00:27:39,520 --> 00:27:43,760 of the paint on his face 709 00:27:41,840 --> 00:27:45,919 of course this can essentially be solved 710 00:27:43,760 --> 00:27:46,960 by saying just use dark mode it'll be 711 00:27:45,919 --> 00:27:49,520 fine 712 00:27:46,960 --> 00:27:51,840 but if at that point you've actually 713 00:27:49,520 --> 00:27:53,600 built an entire website and you've set 714 00:27:51,840 --> 00:27:56,399 it up with both light mode and dark mode 715 00:27:53,600 --> 00:27:58,240 which the people who run cat friendly 716 00:27:56,399 --> 00:28:00,480 probably haven't at this point if 717 00:27:58,240 --> 00:28:02,000 they've got this error um 718 00:28:00,480 --> 00:28:03,600 you would be a bit knocked if you 719 00:28:02,000 --> 00:28:05,600 discovered that the images that you were 720 00:28:03,600 --> 00:28:07,279 using had transparent bits that 721 00:28:05,600 --> 00:28:09,600 essentially just disappeared depending 722 00:28:07,279 --> 00:28:12,960 on the color of your background 723 00:28:09,600 --> 00:28:14,399 and that kind of thing is a real issue 724 00:28:12,960 --> 00:28:17,200 because it can't be picked up by 725 00:28:14,399 --> 00:28:19,440 automatic checkers and you might start 726 00:28:17,200 --> 00:28:21,039 with a component library that looks 727 00:28:19,440 --> 00:28:22,880 perfectly fine 728 00:28:21,039 --> 00:28:24,720 and then as you're adding 729 00:28:22,880 --> 00:28:27,840 more and more accessibility features 730 00:28:24,720 --> 00:28:30,159 things like actually theming your site 731 00:28:27,840 --> 00:28:31,679 some of the more advanced features that 732 00:28:30,159 --> 00:28:34,000 help people 733 00:28:31,679 --> 00:28:34,880 particularly with visual differences 734 00:28:34,000 --> 00:28:36,640 then 735 00:28:34,880 --> 00:28:38,080 six months down the line you actually 736 00:28:36,640 --> 00:28:40,080 discover that the component library that 737 00:28:38,080 --> 00:28:42,720 you're using isn't accessible at all 738 00:28:40,080 --> 00:28:46,399 because it works with one or one of 739 00:28:42,720 --> 00:28:46,399 light or dark mode and not both 740 00:28:48,159 --> 00:28:51,600 and 741 00:28:49,200 --> 00:28:54,480 i'm sure that the vast majority of you 742 00:28:51,600 --> 00:28:55,840 here would not be surprised by what i'm 743 00:28:54,480 --> 00:28:57,200 about to say 744 00:28:55,840 --> 00:28:59,679 but something that's really important to 745 00:28:57,200 --> 00:29:01,840 consider here is 746 00:28:59,679 --> 00:29:03,600 careful choice of frameworks when you 747 00:29:01,840 --> 00:29:05,440 interact with 748 00:29:03,600 --> 00:29:07,360 the web and when you are building 749 00:29:05,440 --> 00:29:08,880 websites 750 00:29:07,360 --> 00:29:11,120 is important and it is your 751 00:29:08,880 --> 00:29:13,520 responsibility to look into it to do 752 00:29:11,120 --> 00:29:15,520 this research not to find things that 753 00:29:13,520 --> 00:29:18,159 are perfect 754 00:29:15,520 --> 00:29:20,240 but to find frameworks that are going to 755 00:29:18,159 --> 00:29:22,399 help you do this work rather than hinder 756 00:29:20,240 --> 00:29:22,399 it 757 00:29:23,760 --> 00:29:26,720 so that was a whole lot of discussion 758 00:29:25,600 --> 00:29:29,520 around 759 00:29:26,720 --> 00:29:31,520 public infrastructure and around 760 00:29:29,520 --> 00:29:32,880 the basics of what makes an accessible 761 00:29:31,520 --> 00:29:35,520 framework 762 00:29:32,880 --> 00:29:38,320 but the reality is nobody's perfect 763 00:29:35,520 --> 00:29:42,320 right not every framework is going to be 764 00:29:38,320 --> 00:29:44,320 entirely accessible out of the box 765 00:29:42,320 --> 00:29:47,200 so there's an important discussion here 766 00:29:44,320 --> 00:29:49,440 to have if you are using open source 767 00:29:47,200 --> 00:29:52,080 frameworks if you are building within an 768 00:29:49,440 --> 00:29:54,159 open source ecosystem 769 00:29:52,080 --> 00:29:56,880 about how we can contribute back to 770 00:29:54,159 --> 00:29:58,559 public infrastructure about how we can 771 00:29:56,880 --> 00:30:00,559 actually build around public 772 00:29:58,559 --> 00:30:03,760 infrastructure to make it more 773 00:30:00,559 --> 00:30:05,679 accessible to the people that use it 774 00:30:03,760 --> 00:30:09,279 and this to me is where the concept of 775 00:30:05,679 --> 00:30:11,600 upstream accessibility comes in 776 00:30:09,279 --> 00:30:13,679 there's no point in having 777 00:30:11,600 --> 00:30:15,840 fifty or a hundred or 778 00:30:13,679 --> 00:30:18,240 a thousand or a hundred thousand 779 00:30:15,840 --> 00:30:22,080 different web developers 780 00:30:18,240 --> 00:30:24,240 make the same change to a framework or 781 00:30:22,080 --> 00:30:27,200 to a component library or to 782 00:30:24,240 --> 00:30:32,000 some other piece of reusable code 783 00:30:27,200 --> 00:30:34,799 to make it accessible on their website 784 00:30:32,000 --> 00:30:36,960 it is vastly preferable for all of us if 785 00:30:34,799 --> 00:30:39,600 we can find ways to build this into the 786 00:30:36,960 --> 00:30:42,159 framework at its core 787 00:30:39,600 --> 00:30:44,640 to make it easier for people to use and 788 00:30:42,159 --> 00:30:46,240 to make it more readily accessible so 789 00:30:44,640 --> 00:30:48,080 that we don't have to have everyone 790 00:30:46,240 --> 00:30:51,840 essentially reinventing the wheel in 791 00:30:48,080 --> 00:30:51,840 amer in many many different ways 792 00:30:52,159 --> 00:30:56,000 but the thing about upstream 793 00:30:53,440 --> 00:30:58,480 accessibility that makes this kind of 794 00:30:56,000 --> 00:31:00,399 interesting is 795 00:30:58,480 --> 00:31:02,159 it requires becoming part of the open 796 00:31:00,399 --> 00:31:04,480 source ecosystem and it requires 797 00:31:02,159 --> 00:31:06,159 actually working out a way to 798 00:31:04,480 --> 00:31:09,519 have a lot of these discussions around 799 00:31:06,159 --> 00:31:11,440 accessibility and to push 800 00:31:09,519 --> 00:31:12,399 for people to 801 00:31:11,440 --> 00:31:15,919 take 802 00:31:12,399 --> 00:31:17,760 take their frameworks and improve them 803 00:31:15,919 --> 00:31:20,799 and a key component of this is that if 804 00:31:17,760 --> 00:31:22,559 you can do some of the work for people 805 00:31:20,799 --> 00:31:25,360 that will often show them the path to be 806 00:31:22,559 --> 00:31:27,519 able to do the rest 807 00:31:25,360 --> 00:31:28,640 so you're sitting down you're coding a 808 00:31:27,519 --> 00:31:29,919 website 809 00:31:28,640 --> 00:31:31,679 and you discover that maybe the 810 00:31:29,919 --> 00:31:34,399 component library that you're using has 811 00:31:31,679 --> 00:31:36,000 an outright accessibility error in it or 812 00:31:34,399 --> 00:31:37,440 you're looking at different component 813 00:31:36,000 --> 00:31:39,279 libraries and there's one that would be 814 00:31:37,440 --> 00:31:40,080 absolutely perfect for what you want to 815 00:31:39,279 --> 00:31:41,840 do 816 00:31:40,080 --> 00:31:44,000 but it requires you to use a web 817 00:31:41,840 --> 00:31:46,880 framework that doesn't really make 818 00:31:44,000 --> 00:31:48,480 accessibility easy for you 819 00:31:46,880 --> 00:31:50,399 at this point you're at the finding 820 00:31:48,480 --> 00:31:52,880 issues stage 821 00:31:50,399 --> 00:31:56,720 and there are several different ways to 822 00:31:52,880 --> 00:31:59,360 deal with these sorts of discoveries 823 00:31:56,720 --> 00:32:01,919 with varying chances of success 824 00:31:59,360 --> 00:32:04,240 in some cases you can just 825 00:32:01,919 --> 00:32:06,000 percolate what you've discovered up to 826 00:32:04,240 --> 00:32:07,919 the maintainers of the upstream package 827 00:32:06,000 --> 00:32:10,399 and say hey this is an issue around 828 00:32:07,919 --> 00:32:13,200 accessibility if they're very switched 829 00:32:10,399 --> 00:32:15,440 on if they're very active in making sure 830 00:32:13,200 --> 00:32:17,919 that they do know what's going on and 831 00:32:15,440 --> 00:32:19,519 that what they build is accessible 832 00:32:17,919 --> 00:32:21,519 it's very likely that those changes are 833 00:32:19,519 --> 00:32:22,960 going to be made really quickly 834 00:32:21,519 --> 00:32:24,720 on the other hand you might find that 835 00:32:22,960 --> 00:32:26,960 you're dealing with people who've never 836 00:32:24,720 --> 00:32:28,799 really interacted with the concept of 837 00:32:26,960 --> 00:32:30,320 accessibility at all 838 00:32:28,799 --> 00:32:34,480 or you might find that you're dealing 839 00:32:30,320 --> 00:32:34,480 with people who just don't understand it 840 00:32:34,640 --> 00:32:40,320 and so once you've found an issue 841 00:32:38,000 --> 00:32:42,480 then there's the question of 842 00:32:40,320 --> 00:32:44,960 when to upstream 843 00:32:42,480 --> 00:32:46,720 and when i originally proposed this talk 844 00:32:44,960 --> 00:32:48,640 i thought that i was going to be giving 845 00:32:46,720 --> 00:32:51,600 a very different roadmap for how to deal 846 00:32:48,640 --> 00:32:54,080 with upstream accessibility 847 00:32:51,600 --> 00:32:56,559 what changed my mind on this was a blog 848 00:32:54,080 --> 00:33:00,480 post by sherry bernhaber who is one of 849 00:32:56,559 --> 00:33:03,600 the luminaries of modern accessibility 850 00:33:00,480 --> 00:33:05,200 particularly modern web accessibility 851 00:33:03,600 --> 00:33:06,960 talking about how not to be an 852 00:33:05,200 --> 00:33:08,799 accessibility grinch which is very 853 00:33:06,960 --> 00:33:10,799 appropriate given that it's just gone 854 00:33:08,799 --> 00:33:12,480 christmas and new year 855 00:33:10,799 --> 00:33:14,960 and one of the things that she actually 856 00:33:12,480 --> 00:33:18,399 talks about in that blog post which 857 00:33:14,960 --> 00:33:20,880 completely changed my thinking on this 858 00:33:18,399 --> 00:33:24,640 is that 859 00:33:20,880 --> 00:33:26,880 you can't just take accessibility at a 860 00:33:24,640 --> 00:33:29,760 point in time 861 00:33:26,880 --> 00:33:31,440 part of maintaining accessible websites 862 00:33:29,760 --> 00:33:33,840 accessible frameworks accessible 863 00:33:31,440 --> 00:33:34,960 component libraries accessible reusable 864 00:33:33,840 --> 00:33:36,640 anything 865 00:33:34,960 --> 00:33:38,960 is about being able to constantly 866 00:33:36,640 --> 00:33:40,559 evaluate your accessibility posture it's 867 00:33:38,960 --> 00:33:44,159 about 868 00:33:40,559 --> 00:33:46,559 having if not an extremely deep at least 869 00:33:44,159 --> 00:33:48,960 deeper than surface level understanding 870 00:33:46,559 --> 00:33:51,679 of what you need to do to make all of 871 00:33:48,960 --> 00:33:54,080 these things work 872 00:33:51,679 --> 00:33:57,360 and so when it comes to the question of 873 00:33:54,080 --> 00:33:59,279 when to upstream accessibility 874 00:33:57,360 --> 00:34:01,200 the fundamental question that you have 875 00:33:59,279 --> 00:34:02,399 to ask yourself 876 00:34:01,200 --> 00:34:04,640 is 877 00:34:02,399 --> 00:34:06,159 am i dealing here with a group of people 878 00:34:04,640 --> 00:34:07,919 who look like they're going to be 879 00:34:06,159 --> 00:34:10,879 receptive to this 880 00:34:07,919 --> 00:34:13,040 and how much time am i willing to put in 881 00:34:10,879 --> 00:34:15,200 on fixes to make sure that these issues 882 00:34:13,040 --> 00:34:16,639 are remediated and these are all 883 00:34:15,200 --> 00:34:18,399 questions that you've got to consider 884 00:34:16,639 --> 00:34:20,800 when you think about when to upstream 885 00:34:18,399 --> 00:34:22,560 accessibility fixes 886 00:34:20,800 --> 00:34:24,240 there are scenarios where it's just 887 00:34:22,560 --> 00:34:27,359 better to walk away 888 00:34:24,240 --> 00:34:29,520 there are scenarios where it's better to 889 00:34:27,359 --> 00:34:31,040 actually find the most accessible option 890 00:34:29,520 --> 00:34:33,280 off the shelf 891 00:34:31,040 --> 00:34:34,399 and not worry about trying to make these 892 00:34:33,280 --> 00:34:35,919 improvements 893 00:34:34,399 --> 00:34:38,159 but if you have the time and the 894 00:34:35,919 --> 00:34:40,240 wherewithal and you have maintainers who 895 00:34:38,159 --> 00:34:42,159 are very receptive to this 896 00:34:40,240 --> 00:34:44,399 upstreaming accessibility can have 897 00:34:42,159 --> 00:34:47,200 massive benefits in the sense that it 898 00:34:44,399 --> 00:34:49,679 can make reusable things that many 899 00:34:47,200 --> 00:34:52,399 people are using and hopefully keeping 900 00:34:49,679 --> 00:34:52,399 up to date 901 00:34:53,040 --> 00:34:59,200 much much better in terms of experience 902 00:34:55,520 --> 00:34:59,200 for disabled users of the web 903 00:34:59,599 --> 00:35:03,200 the other thing that's very important to 904 00:35:01,280 --> 00:35:05,760 understand when you're thinking about 905 00:35:03,200 --> 00:35:07,440 when to upstream accessibility issues is 906 00:35:05,760 --> 00:35:10,400 the difference between 907 00:35:07,440 --> 00:35:12,400 a framework or component issue and a 908 00:35:10,400 --> 00:35:14,320 site level issue 909 00:35:12,400 --> 00:35:17,280 sometimes there will be things that you 910 00:35:14,320 --> 00:35:19,359 want to build that are very specific 911 00:35:17,280 --> 00:35:22,640 things that you want to build 912 00:35:19,359 --> 00:35:24,880 that need to be accessible 913 00:35:22,640 --> 00:35:26,160 but if those go into an upstream 914 00:35:24,880 --> 00:35:28,880 framework 915 00:35:26,160 --> 00:35:30,400 it may just add complexity that most 916 00:35:28,880 --> 00:35:32,240 people don't need 917 00:35:30,400 --> 00:35:35,200 if the core features of that framework 918 00:35:32,240 --> 00:35:37,359 are accessible as is it may not actually 919 00:35:35,200 --> 00:35:40,400 benefit people to build accessibility 920 00:35:37,359 --> 00:35:43,760 directly in for edge cases where you're 921 00:35:40,400 --> 00:35:45,520 building on top of the framework 922 00:35:43,760 --> 00:35:46,720 because it will potentially add more 923 00:35:45,520 --> 00:35:49,599 bloat 924 00:35:46,720 --> 00:35:51,200 we'll get on to that a bit later 925 00:35:49,599 --> 00:35:52,880 what we're talking about though in terms 926 00:35:51,200 --> 00:35:54,560 of the really good candidates for 927 00:35:52,880 --> 00:35:56,880 upstreaming accessibility are where 928 00:35:54,560 --> 00:35:59,119 you've got framework level issues so 929 00:35:56,880 --> 00:36:00,720 where you can either identify 930 00:35:59,119 --> 00:36:02,720 improvements that can be made to the 931 00:36:00,720 --> 00:36:04,800 framework that reduce the amount of 932 00:36:02,720 --> 00:36:06,560 manual work that people need to do to 933 00:36:04,800 --> 00:36:08,400 make things accessible 934 00:36:06,560 --> 00:36:10,000 or where you can identify outright 935 00:36:08,400 --> 00:36:12,960 errors in the framework that need to be 936 00:36:10,000 --> 00:36:14,480 remediated for it to be accessible so 937 00:36:12,960 --> 00:36:16,240 that's what you're essentially looking 938 00:36:14,480 --> 00:36:18,480 at there's a bit of nuance in the 939 00:36:16,240 --> 00:36:20,560 difference between a framework 940 00:36:18,480 --> 00:36:21,599 a framework level issue and a site level 941 00:36:20,560 --> 00:36:23,839 issue 942 00:36:21,599 --> 00:36:25,520 but in general you can assume that if 943 00:36:23,839 --> 00:36:26,960 you're building something on top of the 944 00:36:25,520 --> 00:36:29,680 framework and you need to do work to 945 00:36:26,960 --> 00:36:31,359 make it accessible it's probably on you 946 00:36:29,680 --> 00:36:33,599 whereas if you're using something out of 947 00:36:31,359 --> 00:36:35,440 the box in a framework and you find 948 00:36:33,599 --> 00:36:40,520 yourself having to build around it or 949 00:36:35,440 --> 00:36:40,520 rewrite it it's probably on them 950 00:36:40,880 --> 00:36:46,240 and the human aspect is really important 951 00:36:42,960 --> 00:36:48,240 to understand as i alluded to earlier 952 00:36:46,240 --> 00:36:50,480 it's going to be a very different 953 00:36:48,240 --> 00:36:52,560 scenario when you're dealing with 954 00:36:50,480 --> 00:36:54,960 maintainers who are very understanding 955 00:36:52,560 --> 00:36:57,280 of this or maintainers who don't know 956 00:36:54,960 --> 00:36:58,640 much but are willing to learn 957 00:36:57,280 --> 00:37:02,560 compared to when you're dealing with 958 00:36:58,640 --> 00:37:04,240 maintainers who don't particularly care 959 00:37:02,560 --> 00:37:06,079 but there are things that you can do to 960 00:37:04,240 --> 00:37:08,960 make this easier as well in the process 961 00:37:06,079 --> 00:37:11,200 of upstreaming accessibility 962 00:37:08,960 --> 00:37:13,440 you can talk to the maintainers about 963 00:37:11,200 --> 00:37:15,040 how the project is set up 964 00:37:13,440 --> 00:37:17,200 if you're pushing in 965 00:37:15,040 --> 00:37:19,200 upstream fixes and you don't intend to 966 00:37:17,200 --> 00:37:20,960 be involved over the long term 967 00:37:19,200 --> 00:37:22,880 make it as easy as possible for the 968 00:37:20,960 --> 00:37:24,960 maintainers to actually merge those 969 00:37:22,880 --> 00:37:26,640 fixes in so that means following the 970 00:37:24,960 --> 00:37:28,880 code of conduct following the 971 00:37:26,640 --> 00:37:30,880 contributing guidelines doing any 972 00:37:28,880 --> 00:37:33,280 testing that's requested 973 00:37:30,880 --> 00:37:35,599 and also showing your work in terms of 974 00:37:33,280 --> 00:37:37,760 what you've done what it resolves and 975 00:37:35,599 --> 00:37:41,920 how it actually improves the framework 976 00:37:37,760 --> 00:37:41,920 or component or reusable thing 977 00:37:43,280 --> 00:37:49,359 and this brings us to the concept of 978 00:37:46,119 --> 00:37:50,800 implementation and testing 979 00:37:49,359 --> 00:37:53,280 the 980 00:37:50,800 --> 00:37:55,280 sort of piece around implementing fixes 981 00:37:53,280 --> 00:37:56,400 is not one that i'm going to talk to 982 00:37:55,280 --> 00:37:57,920 very much 983 00:37:56,400 --> 00:38:00,720 and that is for the one very simple 984 00:37:57,920 --> 00:38:02,400 reason that i am not a web developer 985 00:38:00,720 --> 00:38:04,640 this is not what i do in my day-to-day 986 00:38:02,400 --> 00:38:06,960 job 987 00:38:04,640 --> 00:38:09,440 i can explain to you how all of this 988 00:38:06,960 --> 00:38:11,760 works i can explain to you how i think 989 00:38:09,440 --> 00:38:13,839 it can be done well but i cannot explain 990 00:38:11,760 --> 00:38:15,599 to you how to remediate the problems 991 00:38:13,839 --> 00:38:17,200 that's also going to vary vastly 992 00:38:15,599 --> 00:38:19,280 depending on what sort of framework 993 00:38:17,200 --> 00:38:21,680 you're using what sort of language it 994 00:38:19,280 --> 00:38:23,760 interfaces with and the specific type of 995 00:38:21,680 --> 00:38:25,040 reusable thing that you actually want to 996 00:38:23,760 --> 00:38:27,359 uplift 997 00:38:25,040 --> 00:38:30,079 so as far as implementing fixes my 998 00:38:27,359 --> 00:38:32,960 recommendations would be that you 999 00:38:30,079 --> 00:38:34,560 understand what accessibility issues are 1000 00:38:32,960 --> 00:38:37,280 that you test 1001 00:38:34,560 --> 00:38:38,880 your fixes for accessibility issues and 1002 00:38:37,280 --> 00:38:40,960 that you discuss that with other people 1003 00:38:38,880 --> 00:38:43,040 who are knowledgeable in the language or 1004 00:38:40,960 --> 00:38:45,119 framework that you're working on to make 1005 00:38:43,040 --> 00:38:48,960 sure that it would be an appropriate fix 1006 00:38:45,119 --> 00:38:48,960 and that it's also well implemented 1007 00:38:49,200 --> 00:38:53,839 my friend katie has inspired many many 1008 00:38:52,000 --> 00:38:54,880 aspects of this talk 1009 00:38:53,839 --> 00:38:56,720 and 1010 00:38:54,880 --> 00:38:59,280 is very very passionate about 1011 00:38:56,720 --> 00:39:00,960 accessibility but one thing that i 1012 00:38:59,280 --> 00:39:02,800 always really enjoy about working with 1013 00:39:00,960 --> 00:39:04,160 katie is at the end of it i come out 1014 00:39:02,800 --> 00:39:08,480 with much better code than i would have 1015 00:39:04,160 --> 00:39:08,480 had if if only my eyes were on it 1016 00:39:08,960 --> 00:39:13,280 the bit which is a bit easier to do from 1017 00:39:11,200 --> 00:39:16,640 a sort of run book is the accessibility 1018 00:39:13,280 --> 00:39:18,400 testing piece because presumably 1019 00:39:16,640 --> 00:39:20,640 well that's not always the case but 1020 00:39:18,400 --> 00:39:22,480 presumably if you're here at the point 1021 00:39:20,640 --> 00:39:24,640 of wanting to upstream accessibility 1022 00:39:22,480 --> 00:39:27,599 improvements you've identified that the 1023 00:39:24,640 --> 00:39:30,000 accessibility issue is there 1024 00:39:27,599 --> 00:39:31,920 and so testing in that sense is fairly 1025 00:39:30,000 --> 00:39:34,000 straightforward because it's about a few 1026 00:39:31,920 --> 00:39:35,920 things first of all being able to 1027 00:39:34,000 --> 00:39:38,800 demonstrate that the issue existed 1028 00:39:35,920 --> 00:39:40,160 originally and was repeatable sometimes 1029 00:39:38,800 --> 00:39:42,400 you can do that with automated 1030 00:39:40,160 --> 00:39:43,280 accessibility checkers sometimes you 1031 00:39:42,400 --> 00:39:44,960 can't 1032 00:39:43,280 --> 00:39:47,520 automated accessibility checkers are 1033 00:39:44,960 --> 00:39:49,040 only really half the story 1034 00:39:47,520 --> 00:39:50,800 it's about 1035 00:39:49,040 --> 00:39:53,280 being able to 1036 00:39:50,800 --> 00:39:55,680 verify that the accessibility issue is 1037 00:39:53,280 --> 00:39:58,320 gone once you have fixed it 1038 00:39:55,680 --> 00:40:00,400 and it's about being able to verify that 1039 00:39:58,320 --> 00:40:02,800 you've not made any other accessibility 1040 00:40:00,400 --> 00:40:05,200 issues worse and that you can otherwise 1041 00:40:02,800 --> 00:40:06,960 test and appropriately document the code 1042 00:40:05,200 --> 00:40:09,119 some of that as i said can be done with 1043 00:40:06,960 --> 00:40:10,880 automated checkers sometimes it will 1044 00:40:09,119 --> 00:40:12,720 require you to manually change things it 1045 00:40:10,880 --> 00:40:14,640 will require you to zoom your screen in 1046 00:40:12,720 --> 00:40:16,720 and out it will require you to use a 1047 00:40:14,640 --> 00:40:18,480 screen reader sometimes it will require 1048 00:40:16,720 --> 00:40:19,680 you to actually view things with sounds 1049 00:40:18,480 --> 00:40:21,599 off 1050 00:40:19,680 --> 00:40:24,160 there are many many different things 1051 00:40:21,599 --> 00:40:27,920 that you may have to do to be able to do 1052 00:40:24,160 --> 00:40:27,920 appropriate accessibility testing 1053 00:40:28,319 --> 00:40:33,119 the other important piece here is what 1054 00:40:30,960 --> 00:40:35,680 you as a maintainer need to know about 1055 00:40:33,119 --> 00:40:38,400 upstream accessibility because if you're 1056 00:40:35,680 --> 00:40:40,240 building your own system 1057 00:40:38,400 --> 00:40:41,839 you need to have again 1058 00:40:40,240 --> 00:40:43,119 a bit better than surface level 1059 00:40:41,839 --> 00:40:45,440 knowledge of what's going on with 1060 00:40:43,119 --> 00:40:46,800 accessibility if you want it to actually 1061 00:40:45,440 --> 00:40:48,319 be accessible 1062 00:40:46,800 --> 00:40:50,160 and that's about things like 1063 00:40:48,319 --> 00:40:52,160 understanding the automated checkers 1064 00:40:50,160 --> 00:40:54,560 that are out there it's about things 1065 00:40:52,160 --> 00:40:56,000 like understanding what you can't pick 1066 00:40:54,560 --> 00:40:58,400 up with automated checkers and you'll 1067 00:40:56,000 --> 00:41:00,720 need to test for manually it's really 1068 00:40:58,400 --> 00:41:02,480 really easy for things to disappear into 1069 00:41:00,720 --> 00:41:04,000 the ether if you don't know what it is 1070 00:41:02,480 --> 00:41:05,599 that you're looking for 1071 00:41:04,000 --> 00:41:07,599 even if they were accessible at one 1072 00:41:05,599 --> 00:41:09,520 point people can make changes that might 1073 00:41:07,599 --> 00:41:12,319 not be picked up by any automated 1074 00:41:09,520 --> 00:41:14,720 checking and so some of that as well 1075 00:41:12,319 --> 00:41:16,560 is if someone's come to you and said hey 1076 00:41:14,720 --> 00:41:17,839 i'm up streaming some accessibility 1077 00:41:16,560 --> 00:41:19,920 fixes 1078 00:41:17,839 --> 00:41:22,400 it's about understanding what you need 1079 00:41:19,920 --> 00:41:24,079 to do to keep the code base accessible 1080 00:41:22,400 --> 00:41:25,440 and if you're taking external pull 1081 00:41:24,079 --> 00:41:28,160 requests 1082 00:41:25,440 --> 00:41:30,240 understanding what you need to convey to 1083 00:41:28,160 --> 00:41:34,480 people to make sure that the code that 1084 00:41:30,240 --> 00:41:36,720 they're putting in is accessible 1085 00:41:34,480 --> 00:41:38,480 and as i said automation is only only 1086 00:41:36,720 --> 00:41:39,680 half the answer 1087 00:41:38,480 --> 00:41:41,680 ai 1088 00:41:39,680 --> 00:41:45,200 is not good enough yet that we can get 1089 00:41:41,680 --> 00:41:47,359 it to do accessibility for us 1090 00:41:45,200 --> 00:41:49,599 there are some accessibility issues that 1091 00:41:47,359 --> 00:41:52,079 have to be tested for and remediated 1092 00:41:49,599 --> 00:41:53,359 manually 1093 00:41:52,079 --> 00:41:55,200 and then there's a matter of actually 1094 00:41:53,359 --> 00:41:57,520 releasing fixes which is probably the 1095 00:41:55,200 --> 00:41:59,200 easy bit because at this point if you've 1096 00:41:57,520 --> 00:42:02,400 pull requested it following all of the 1097 00:41:59,200 --> 00:42:04,000 guidelines and it's been reviewed then 1098 00:42:02,400 --> 00:42:05,440 it will hopefully be released by the 1099 00:42:04,000 --> 00:42:07,920 maintainers 1100 00:42:05,440 --> 00:42:09,760 and from there you can look to 1101 00:42:07,920 --> 00:42:11,839 either helping them to continue to 1102 00:42:09,760 --> 00:42:13,440 uplift it going and building what you 1103 00:42:11,839 --> 00:42:14,960 were trying to build originally or 1104 00:42:13,440 --> 00:42:18,880 looking for other places where you can 1105 00:42:14,960 --> 00:42:18,880 upstream these accessibility fixes 1106 00:42:21,440 --> 00:42:26,640 i do want to briefly come back to the 1107 00:42:23,599 --> 00:42:29,200 point that i made earlier around 1108 00:42:26,640 --> 00:42:30,560 the ease of use of a lot of these 1109 00:42:29,200 --> 00:42:33,680 frameworks 1110 00:42:30,560 --> 00:42:35,119 because one thing to me that kind of 1111 00:42:33,680 --> 00:42:37,359 hinders 1112 00:42:35,119 --> 00:42:40,000 the web being accessible as a public 1113 00:42:37,359 --> 00:42:41,680 utility in the same way as metro trains 1114 00:42:40,000 --> 00:42:43,839 or yara trams 1115 00:42:41,680 --> 00:42:45,760 is the fact that 1116 00:42:43,839 --> 00:42:47,680 there's a big knowledge gap so a lot of 1117 00:42:45,760 --> 00:42:49,440 people don't actually understand what 1118 00:42:47,680 --> 00:42:51,119 needs to be done to make websites 1119 00:42:49,440 --> 00:42:52,960 accessible 1120 00:42:51,119 --> 00:42:55,520 and in some ways frameworks have made 1121 00:42:52,960 --> 00:42:57,440 this worse because people just take 1122 00:42:55,520 --> 00:42:58,880 things off the shelf and build with it 1123 00:42:57,440 --> 00:43:01,520 without actually understanding that 1124 00:42:58,880 --> 00:43:03,280 there's more work that they need to do 1125 00:43:01,520 --> 00:43:05,760 and that's why the dot gov dot uk 1126 00:43:03,280 --> 00:43:08,480 websites kind of built up the way that 1127 00:43:05,760 --> 00:43:11,119 they did is because if you are using raw 1128 00:43:08,480 --> 00:43:12,560 html and raw css you can take advantage 1129 00:43:11,119 --> 00:43:16,240 of all the features that are in there 1130 00:43:12,560 --> 00:43:16,240 and you have to know what you're doing 1131 00:43:18,720 --> 00:43:22,079 i want to close with a thought 1132 00:43:20,400 --> 00:43:23,760 experiment 1133 00:43:22,079 --> 00:43:25,200 imagine that all of the humans in the 1134 00:43:23,760 --> 00:43:28,160 world tomorrow 1135 00:43:25,200 --> 00:43:30,480 were turned into perfect spheres 1136 00:43:28,160 --> 00:43:32,560 and we had to travel around everywhere 1137 00:43:30,480 --> 00:43:34,400 by rolling 1138 00:43:32,560 --> 00:43:36,800 this immediately means 1139 00:43:34,400 --> 00:43:39,520 even if we have our own power we cannot 1140 00:43:36,800 --> 00:43:41,359 get into the vast majority of cars 1141 00:43:39,520 --> 00:43:42,880 only some public transport will be 1142 00:43:41,359 --> 00:43:44,240 accessible to us 1143 00:43:42,880 --> 00:43:45,920 there's a decent chunk of office 1144 00:43:44,240 --> 00:43:47,040 buildings that we won't be able to get 1145 00:43:45,920 --> 00:43:49,119 into 1146 00:43:47,040 --> 00:43:51,119 and there is a decent chunk of the web 1147 00:43:49,119 --> 00:43:54,800 that as a perfect sphere 1148 00:43:51,119 --> 00:43:56,800 we would not be able to interact with 1149 00:43:54,800 --> 00:43:58,960 if we don't have hands to deal with 1150 00:43:56,800 --> 00:44:00,400 keyboards or mice 1151 00:43:58,960 --> 00:44:03,520 then we're going to have to do things 1152 00:44:00,400 --> 00:44:05,280 like train voice activation software 1153 00:44:03,520 --> 00:44:07,599 and fundamentally what upstream 1154 00:44:05,280 --> 00:44:11,280 accessibility is actually about is the 1155 00:44:07,599 --> 00:44:13,359 concept of removing limitations 1156 00:44:11,280 --> 00:44:16,000 this means that if you want to 1157 00:44:13,359 --> 00:44:17,200 understand how to design things really 1158 00:44:16,000 --> 00:44:18,720 well 1159 00:44:17,200 --> 00:44:20,800 whether you be 1160 00:44:18,720 --> 00:44:23,359 someone trying to upstream accessibility 1161 00:44:20,800 --> 00:44:25,520 fixes or a maintainer accepting upstream 1162 00:44:23,359 --> 00:44:27,680 accessibility fixes 1163 00:44:25,520 --> 00:44:31,280 you've got to think like you're not who 1164 00:44:27,680 --> 00:44:32,960 you are you've got to think about 1165 00:44:31,280 --> 00:44:35,440 what people would do in different 1166 00:44:32,960 --> 00:44:37,520 scenarios and in some cases it can be 1167 00:44:35,440 --> 00:44:40,000 really instructive 1168 00:44:37,520 --> 00:44:42,160 to look at the bazaar to look at 1169 00:44:40,000 --> 00:44:44,319 situations like what if every human 1170 00:44:42,160 --> 00:44:45,440 tomorrow was turned into a perfect 1171 00:44:44,319 --> 00:44:47,040 sphere 1172 00:44:45,440 --> 00:44:50,319 because once you start thinking about 1173 00:44:47,040 --> 00:44:53,040 the bazaar and designing for the bazaar 1174 00:44:50,319 --> 00:44:55,760 you get really good at thinking about 1175 00:44:53,040 --> 00:44:59,200 humans and designing for humans rather 1176 00:44:55,760 --> 00:44:59,200 than just designing for yourself 1177 00:44:59,680 --> 00:45:03,839 i would not have been able to give this 1178 00:45:01,520 --> 00:45:06,079 talk without the wisdom without the 1179 00:45:03,839 --> 00:45:07,680 wisdom and expertise of others 1180 00:45:06,079 --> 00:45:09,839 specifically i want to call out the 1181 00:45:07,680 --> 00:45:11,359 three people that i named over the last 1182 00:45:09,839 --> 00:45:12,960 45 minutes 1183 00:45:11,359 --> 00:45:15,040 sherry burnham 1184 00:45:12,960 --> 00:45:16,880 for all of her body of work but for her 1185 00:45:15,040 --> 00:45:19,359 excellent blog post about how not to be 1186 00:45:16,880 --> 00:45:21,119 an accessibility grinch 1187 00:45:19,359 --> 00:45:23,520 jess budd for the stimulating 1188 00:45:21,119 --> 00:45:26,400 conversation that we had at ddd adelaide 1189 00:45:23,520 --> 00:45:29,200 in 2019 and for being willing to 1190 00:45:26,400 --> 00:45:31,200 understand my view and also challenge it 1191 00:45:29,200 --> 00:45:32,880 and change it 1192 00:45:31,200 --> 00:45:34,560 and katie mark for the many 1193 00:45:32,880 --> 00:45:37,119 conversations that we've had about 1194 00:45:34,560 --> 00:45:38,880 accessibility and for somehow always 1195 00:45:37,119 --> 00:45:40,400 giving me the perfect scenario to 1196 00:45:38,880 --> 00:45:42,000 illustrate the point that i've had in my 1197 00:45:40,400 --> 00:45:44,400 head that i didn't know needed to go in 1198 00:45:42,000 --> 00:45:44,400 the talk 1199 00:45:44,880 --> 00:45:47,760 i'm assuming that i have been answering 1200 00:45:46,480 --> 00:45:50,079 questions throughout the course of the 1201 00:45:47,760 --> 00:45:52,640 talk but if you do have more questions i 1202 00:45:50,079 --> 00:45:56,000 will be around later to answer them or 1203 00:45:52,640 --> 00:45:59,040 you can contact me on the um 1204 00:45:56,000 --> 00:46:00,960 information that's up on the slide 1205 00:45:59,040 --> 00:46:03,680 hopefully this talk has given you a good 1206 00:46:00,960 --> 00:46:05,839 roadmap to upstream accessibility 1207 00:46:03,680 --> 00:46:07,760 improvements that you want to see and if 1208 00:46:05,839 --> 00:46:09,839 you're a maintainer hopefully it's given 1209 00:46:07,760 --> 00:46:12,640 you a good roadmap to understand what 1210 00:46:09,839 --> 00:46:14,800 you need to do to keep your work to keep 1211 00:46:12,640 --> 00:46:19,319 your project accessible rather than just 1212 00:46:14,800 --> 00:46:19,319 making it accessible at a point in time