NixOS / nixpkgs

Nix Packages collection & NixOS
MIT License
17.6k stars 13.75k forks source link

Accessibility: blind user unable to install nixos #30760

Open lheckemann opened 6 years ago

lheckemann commented 6 years ago

Background

We recently had a user on the IRC channel who couldn't get nixos working in qemu because syslinux and later on systemd-vconsole-setup insisted on setting graphical modes, which cannot be used with qemu's -display curses. (log at https://botbot.me/freenode/nixos/msg/92631760/ )

I eventually worked out that using -nographic for qemu gets grub to run in text mode, which allows editing the command line to add console=ttyS0 and using the installer in text mode. I wasn't able to help the user with this because they had already left, however.

Suggestions

It would be good to consider accessibility more overall. Some changes I think would be sensible:

These steps are pretty simple and should make installing nixos a lot easier on vision-impaired users as far as I understand. Any thoughts?

abbradar commented 6 years ago

I don't think we should disable systemd-vconsole-setup by default -- it's needed to display non-English glyphs. Rather, we definitely want to open a console on a serial port -- if I understand the user's story correctly, they could use it instead without problems. Also, making bootloader text-only sounds good to me.

EDIT: that being said, I don't think we have much of accessibility support in NixOS which would be a nice thing to have (not even sure where to start and how accessibility is done on Linux in general)...

dezgeg commented 6 years ago

IIRC if you add console=ttyS0 console=tty0 to the bootargs it would work both ways (i.e. serial AND the screen) by default, with the stage-1 output going to the screen (tty0).

fpletz commented 6 years ago

Using the console parameter works. Note that on Hypervisor consoles (hvc0) our systemd automatically starts a getty. This behaviour is a little inconsistent.

Since most of our bootloaders (grub2 & syslinux/isolinux tested, systemd-boot probably not?) are also opening a serial console by default it would make sense that we do so too.

samueldr commented 6 years ago

Cross-referencing issues

mhussaincov commented 4 years ago

hi there, not sure if this is still open? but heres to what is required to get things in regard to accessibility going, if the iso has a live session that is boots in to a desktop, then having the folowing packages installed would assist greatly. orca, the screen reader speech-dispatcher required espeak required for the next piece of software espeakup enables speech on the consol e.g tty1. note, you would have to enable espeakup.service via systemd. another note, i'm blind myself. there is espeak-ng but it is not compatable with espeakup for some reason, pulseaudio also required. the best desktop for accessibility is the mate-desktop currently, maybe spinning an iso with these changes to see if it would function? what is the installer gtk, qt? I hope this is enough information? how does the text based installer work? is it a menu driven installer? e.g choose desktop enviroment, 1, mate, 2, gnome, 3, lxqt etc? I hope this is of help? Majid

mhussaincov commented 4 years ago

hi again, also to inhance mate's accessibility settings a file must be created named what ever you wish, access.sh, accessibility.sh who cares, but it must have the folowing content in it, i'm currently on debian so ajust to nixos,

if [ "x$DESKTOP_SESSION" = "xmate" ] || [ "x$XDG_SESSION_DESKTOP" = "xmate" ]; then

Ensure GTK accessibility modules are active.

if [ -z "$GTK_MODULES" ] ; then
    GTK_MODULES=gail:atk-bridge
else
    GTK_MODULES="$GTK_MODULES:gail:atk-bridge"
fi
export GTK_MODULES

fi

that file needs to be made executable, I hope this also helps, Majid

lheckemann commented 4 years ago

Hi Majid, thanks for your input! We don't have a menu-driven installer, it's mostly a matter of:

  1. Setting up partitions and mounting them manually
  2. generating a hardware-configuration.nix file (this is done by running nixos-generate-config)
  3. Adjusting the template configuration file (written in the nix language) to your liking
  4. Running nixos-install

It's all still a relatively manual procedure and will go at least partly through the terminal, regardless of whether the minimal or graphical iso is used. The main difference I can think of is that the graphical one allows using a graphical partition editor like gparted and graphical text editor like gedit. I think in that respect console-based installation might work better? Of course, we'd need to go beyond just getting the installation working and make sure the installed OS is usable without vision as well. I don't really have any experience with accessibility in general unfortunately, but maybe getting a screenreader on the consoles (and the option in the example configuration for installation) would be a good first step?

mhussaincov commented 4 years ago

arr, indeed! installing espeakup along with it's friend espeak would work i think, speech-dispatcher encluded.

On 16/04/2020, Linus Heckemann notifications@github.com wrote:

Hi Majid, thanks for your input! We don't have a menu-driven installer, it's mostly a matter of:

  1. Setting up partitions and mounting them manually
  2. generating a hardware-configuration.nix file (this is done by running nixos-generate-config)
  3. Adjusting the template configuration file (written in the nix language) to your liking
  4. Running nixos-install

It's all still a relatively manual procedure and will go at least partly through the terminal, regardless of whether the minimal or graphical iso is used. The main difference I can think of is that the graphical one allows using a graphical partition editor like gparted and graphical text editor like gedit. I think in that respect console-based installation might work better? Of course, we'd need to go beyond just getting the installation working and make sure the installed OS is usable without vision as well. I don't really have any experience with accessibility in general unfortunately, but maybe getting a screenreader on the consoles (and the option in the example configuration for installation) would be a good first step?

-- You are receiving this because you commented. Reply to this email directly or view it on GitHub: https://github.com/NixOS/nixpkgs/issues/30760#issuecomment-614725423

-- kind regards, Majid Hussain

stale[bot] commented 3 years ago

Hello, I'm a bot and I thank you in the name of the community for opening this issue.

To help our human contributors focus on the most-relevant reports, I check up on old issues to see if they're still relevant. This issue has had no activity for 180 days, and so I marked it as stale, but you can rest assured it will never be closed by a non-human.

The community would appreciate your effort in checking if the issue is still valid. If it isn't, please close it.

If the issue persists, and you'd like to remove the stale label, you simply need to leave a comment. Your comment can be as simple as "still important to me". If you'd like it to get more attention, you can ask for help by searching for maintainers and people that previously touched related code and @ mention them in a comment. You can use Git blame or GitHub's web interface on the relevant files to find them.

Lastly, you can always ask for help at our Discourse Forum or at #nixos' IRC channel.

lheckemann commented 3 years ago

Still valid

CallMeAl1973 commented 1 year ago

What's the status of this issue? I am also a blind user and would be happy to test/offer feedback on anything that has been implemented.

samueldr commented 1 year ago

Total guess: I would assume a chunk of it is now knowing what the problems you will be facing are, already knowing those will help. The follow-up will be: how is that usually handled elsewhere?

So even just stating your expectations, and how it fails for you, is good information.

CallMeAl1973 commented 1 year ago

The most important thing is to begin defining a process. I can’t even begin to test/tinker unless I have a defined way to start speech and or Braille. An interesting thought exercise: assume the installer does not automatically load drivers for your display. You boot to a black screen and you have to perform "x" task to enable the display. What should that process look like? Well for starters, you would need audible confirmation to know that the system was ready on any level, so maybe a beep from the boot loader. After that beep, you now know that the system is ready for input, but you still have no output, so the input needs to be something easy. Maybe something like "d" enter to launch the display? In my opinion, Debian is the gold standard right now when it comes to accessible installs. They've given the process a lot of thought over the years. For reference, documentation on their process can be found here:https://www.debian.org/releases/stable/amd64/ch05s02

samueldr commented 1 year ago

Thank you, this is exactly what is needed: knowing what works elsewhere, rather than try and guess at a plausible solution. Additionally, having the input of someone that experienced other options to know what worked well and what didn't.

RastislavKish commented 5 months ago

Hello,

another blind user here. Has there been any progress on this issue recently?

I recognize NixOS to have great a11y potential, since disabled users can ensure presence of the accessibility services via the config files. But the difficult part is installation itself.

I think this can be split to three separate problems:

NixOS Minimal

This is (AFAIK) a console installation environment, similar to the one of Debian or Arch. Both these systems already have very well implemented screen-reading software. Picking up approach used by one of these seems like the most reasonable choice.

NixOS Gnome

The installation media comes with preinstalled working Orca, which can be started and used, what is great. Even the graphical installer works without significant problems, so this is a big plus.

What's a bit troublesome at this point is using the terminal, both xterm and gnome-console are inaccessible. That means I'm unable to pull down my Nix script and install the system based on it (at least I'm not aware there would be a graphical way to do this).

one solution is to blindly install gnome-terminal or mate-terminal by typing nix-env --install , but for some reason this makes Orca silent for me and I'm unable to make it speak again. But I do know at least one person using this strategy successfully, so perhaps something's wrong with quickemu on my side.

Postinstallation accessibility

If a new Nix user installs the system through the graphical installer, the resulting installation should have the a11y tech at least present (if not straight activated, say if Orca was on during the installation).

I see Orca is installed by the Gnome variant, but if I select Mate as my desktop environment during the installation, Orca is not installed. Other desktop managers may have a similar problem, didn't test them so far.

I think there are two approaches here, basically.

These are my observations sofar. Nix already does have the necessary tools to build a decently accessible experience, so there is definitely the ground to build on. I would say the main work that needs to be done is making this process intuitive and convenient, ideally working out of the box so anyone could either boot up the media, install via GUI and get an accessible system if they're new, or, if they already have a configuration file, so they could easily boot the minimal version and apply the configuration tailored to their liking.

flexiondotorg commented 5 months ago

@RastislavKish I am the creator of quickemu, if you think you've found a bug please raise an issue on the upstream project and we'll take a look: