Hello all!
I've spent the last week or so building a new screen reader for the Mac, called TurnOver. I've been pretty vocal about how poorly VoiceOver now behaves in some apps: Mail, Safari, Terminal and Microsoft Word. So I built something to take over in exactly those apps. The aim is no more unexpected behaviour in Mail, more consistent reading and control in Terminal, a Word that behaves itself, and fewer "Safari not responding" announcements.
TurnOver is built to be responsive and customisable, and it takes a lot of its design from NVDA: browse mode for web pages and emails, single-letter quick navigation, find, say all, an elements list and so on. It also understands VoiceOver's own commands, so VO M, VO U, VO I and friends do what you'd expect.
It's early days. My plan is to broaden the apps it covers, including media apps like TV, Music and Podcasts, where VoiceOver is, yet again, less than ideal. Later versions will also bring some of TurnOver's ways of working, such as Windows-style keyboard commands, to the apps VoiceOver still handles. I'm working on a rising tide principle: TurnOver takes over from VoiceOver a little at a time, without leaving anyone high and dry.
How it works
TurnOver sits in your menu bar and runs alongside VoiceOver. In this first version it can take over in four apps: Mail, Safari, Terminal and Microsoft Word. When you Command Tab into one of them, VoiceOver turns off and TurnOver takes over. Command Tab anywhere else and VoiceOver comes straight back. Nothing changes in any other app.
You choose which of the four TurnOver handles. In the TurnOver menu (Caps Lock N), go to Preferences, then Applications, and set each app to "TurnOver leads" or "VoiceOver leads". So if you only want TurnOver in Safari, say, VoiceOver carries on as normal in the other three.
- Caps Lock V hands the app you're in back to VoiceOver there and then, without going into the menu.
- Command Control T starts TurnOver, or quits it, from anywhere, a nod to NVDA's Control Alt N. Quitting always brings VoiceOver back.
- If TurnOver ever stops responding, VoiceOver comes back by itself within a few seconds, so you're never left without speech.
- A short guide comes with it, covering the keys and how to send feedback.
Permissions
Like any screen reader, TurnOver needs your permission for a few things, which macOS asks for when you first run it. You'll find them in System Settings, under Privacy and Security:
- Device Control and Data Access (called Accessibility on older versions of macOS), so it can read what's on screen and move around apps. VoiceOver has this built in.
- Input Monitoring, so its keyboard commands work.
- Automation, for Microsoft Word only, to reach a few things Word doesn't show screen readers any other way.
I know these are big permissions, so to be clear: - It keeps a log on your Mac so I can fix bugs. When you send feedback, the report leaves out what TurnOver read aloud unless you choose to include it, and it opens as an email you can check before you send it. - It never reads out or logs what you type into password fields. - It's signed with my Apple Developer ID and notarised by Apple, so it opens without warnings. - You can turn the permissions off, or delete TurnOver, at any time.
What you need
An Apple Silicon or Intel Mac running macOS Sonoma or later. I've tested it on the latest macOS on Apple Silicon, so reports from older versions and Intel Macs are especially welcome.
Joining the closed beta
This is a closed beta, so I'm keeping the group small for now. I'm looking for people willing to use it day to day and tell me where it trips up: bugs, things that fail, and what you'd prefer it to do. I can't cover every use case on my own, which is why I need testers. Sending feedback is built in: TurnOver menu, Send feedback, and it opens an email with a report attached.
If you'd like a place, drop me a message through my contact details on here and I'll send you a download link.
Thanks,
O
PS: I really wanted to call it Apple TurnOver... But think I'd probably get in trouble for that one!
Amendment...
I previously said TurnOver doesn't connect to the internet. That's no longer true: it now checks my GitHub page once a day for updates, and downloads them from there. Nothing about you is sent; GitHub just sees an ordinary web request. You can turn the check off in the TurnOver menu, under Updates.
The only thing you ever share with me is a feedback report, and only if you choose to send one. I've made sure you share only what you want and nothing else.
Comments
Re: Answers to points and questions
Regardless of whether the code is supervised or not, reviewing code is significantly harder than writing it. If you lack the required competence to write it, you are definitely not a competent reviewer. That's another problem with vibe coding; people thinking that reading code gives them anything even remotely close to the perspective of people who write actual code. Humans aren't good reviewers, and existing AI isn't good at coding.
I'll wait until this becomes open-source to cast further judgment, because I'm yet to read good complex code generated by any kind of AI, but if I find the code to be genuinely good, I will be the first to admit it. I've been asking for demonstrations of good code written by AI for years now, and so far have been served none, with most people conveniently claiming trade secret as an excuse to not fulfill my requests.
Re: vibe coding
I definitely don't want to go another few rounds on here over vibe coding. But what I would say is that I don't think we will ever get an alternative to VoiceOver without it. I think it's too big to be done as a hobby and there isn't going to be a good enough business case for it to be commercial. You probably understand as much as anyone what the scale of the task is.
vibe coding
well Vibe coding is commonplace, and human programmers traditionally write better code, I think it's here to stay. regardluss on weather or not an app is coded by a human, or AIO, fact is, Vibe coding solves an issue. for people who don't know swift, Python, or another programming language, it means that solutions can be solved faster. now, AI gets most complex thingds wrong, , and really, there is a much better world with AI than without it. turn over, seems to be amazingly good, for what it is. I have trouble turning the preview features. space doesn't seem to work. everywhere. thoughts?
Re: Answers to points and questions
o boy.
it seams as if every post like this goes into an ai vs no ai thing as soon as this is said, and it never goes back to what the post was talking about at the start.
like i understand people hav there reasons for doing this, but if rools permet, would it be better to make another post on this matter?
Re: vibe coding
I've seen some truly horrible code written by human programmers. Heck I've written some horrible code myself, when I've needed a quick tool that just works or wanted to prove a concept before committing a lot of development time. So it's not just AI. And AI code is improving with every model. But this comes with caveats, one being that you have to prompt well. For example, unless you specify the version of the programming language you want to comply with, most LLMs will write code for an older standard, such as Swift 5 instead of Swift 6 for example. And when you're writing for platforms like Apple's, where you're reliying heavily on their own APIs and frameworks, unless you tell the AI to adhere strictly to the guidelines and documentation for those APIs and frameworks, it will often go off and write messy code to implement things that are already covered, or to solve problems that never existed.
And then there's the plan and iterate loop, which is important. Have the AI work with you to plan. Have it interview you, have it research (including the aforementioned documentation), and have it formulate a plan that you can then work through. Get the plan watertight before you build anything, and there's less chance the LLM will go off on a tangent and leave you with a messy codebase. And know that some models are better at some programming languages and frameworks than others. I personally think Astra is better than any claude model at Swift, and it has a far better understanding of Apple's platform APIs and frameworks. claude is slightly better at front-end web design in React, and they're all pretty equal when it comes to older languages like C and Python, though I find the Open AI models reason better and produce less slop than any Claude model I've ever used, which have mostly been a tremendous waste of time, effort and money.
There are agent skills that cover a lot of this and if you use AI tools in a development workflow, where you're working along-side an AI, not purely vibecoding, you'll develop prompts that keep the model in line. We're long past the days when all models wrote sloppy code regardless of how you prompted them, but we're not at the point where simply testing an app, as a user does, is sufficient to prove the quality and security of a vibecoded app, yet. AI-based hostile codebase audits are useful, and can also be used to help refine a model's output for your specific usecase through custom skills or good agent instructions, but often these are done with the same models that wrote the code in the first place, so it's not really a second opinion.
Bringing this back to turnover. I've put forward my arguments to Oliver regarding this being, if not open source, then at least the sum of contributions from a small team with some dev experience. I personally have no problem with an AI being used to work along-side developers to speed up the development of a final product. We demand a lot from our screenreaders these days, and if you think back to when NVDA started, its development took years from those early 0.x releases to reach a point where it was truly a viable commercial alternative. Would you rather a voiceover alternative by Christmas, or in a few years?
But I also understand the risks and implications. I don't want to see a closed-source screenreader, because it's the reason we're in the position we are now. If Apple had simply opened up Voiceover, even to a small team of committed
blind devs, we wouldn't even be having this conversation.
I also understand Oliver's position in wanting to be compensated fairly for his time and for his compute to be covered. That's reasonable, of course, but it presents a dilemma. You either charge for the product, or you have to find some other income source, be it support, training, charging for add-ons and plugins for a free core, or commercial licensing deals.
Charging money also introduces the berden of providing technical support for the product, and meeting moral obligations (if not financial ones) to users who may be less tech literate. This is especially true for a product aimed at a small community. That costs time, which when you're a one-person team is time you aren't spending on the product. Open source projects don't have those obligations. There's nothing stopping you offering support as an open-source dev, but there's less expectation to do so.
And finally, there's fragmentation. Were Turnover to remain a closed-source, wholely AI-developped project, it is probably not something I would consider using myself, based on my own personal choice. I would probably develop an open source solution from scratch. Or I would stick with Voiceover, since I'm comfortable working around most of its annoyances, besides a few that really do bother me. If I did release my own product, it's not a competition. Use what you like, and what works for you. Multiple screenreaders have co-existed peacefully on the windows side for decades and while I think it's better to pool resources for the benefit of everyone, as aptly demonstrated by NVDA, sometimes people want different things, or have different ways of working, and that's perfectly OK.
Re: vibe coding
i use codex to make my website, it's honestly dun a very good job.
i haven't tried making an app for android, windows or mack using it though but i'd say it would do a pretty good job.
back to ternover.
the reason i hav issues with it i guess is because I think it uses nvda or another keyboard layout for some of the keys, not all of them but some imo and it's confusing when i command i would noramly put into voiceover that works doesn't on t o
Things of Note
Oliver,
I've sat down with turnover in the applications it is natively used in and several it isn't. I have a couple questions and comments which I hope will help you moving forward.
As a programmer, I employ a program called Textmate. It is one that hasn't worked quite as well as I would have liked with Voiceover. So far, it's done fantasticly, if unverified, under Turnover. I can actually have multiple files open and navigate between them much as I used to when I used JAWS and worshiped at the Alter of Windows.
I've noticed a definite snappiness, as others have observed, to Turnover. I hope this continues. While I love my Macbook (five years old and still going strong), Voiceover is beginning to lag and Safari is a pain on the best days. HOwever, I'm using Safari right now to write this, so a definite win.
I've also tested Discord lightly under it as well as a few other programs which I can list at request.
A couple of suggestions I have are regarding graphics on web pages. I personally, try to alt text or title everything. However, many sites don't and I'd like to have the ability to tell Turnover to fallback to the graphic's name if required.
Spellcheck in Safari under Voiceover automatically notes spelling issues. Turnover does not, as far as I know, do so. Consider slipping this in there when you can.
The next is a feature request of sorts. Voiceover has the ability to describe images. Can this be done for Turnover?
Great job all around, though!
That is all,
Lorien
Build 16 is out
Hi all,
Build 16 is out; testers get it from the TurnOver menu, Updates, Check for updates, or within the day.
From your reports, fixed in 16: automatic language switching in any app and when moving by character (TextEdit, Pages); the formatting key reporting the selection's first character, and the detail (colour, alignment) on a second press; Word tables moving by row with TurnOver Up and Down, with a switch for row and column headers; VO M in the Mac style no longer interrupted by the focused item; typing straight after reading with the VO keys going into the field; a Finder "crash" that was a hand-over to VoiceOver when macOS reported TurnOver's own process in front; the first letter typed after VO heading navigation.
Under the bonnet, from a review of the whole code base this week: TurnOver's keys are decided on its main thread now, so a frozen app can no longer get its keyboard switched off; automated tests run on every build; and the code was split into smaller named pieces. Nothing should feel different, except perhaps quicker.
Also new in 16: Command Option Escape lists the running applications to force quit one, spoken, with a confirmation, since the Mac's own Force Quit window is silent with VoiceOver off; TurnOver Shift T for the time and date, for Macs without an Insert key or function keys; and a short start-up tone when TurnOver starts while VoiceOver has the Mac.
Daniel: the previews live in the TurnOver menu, Preferences, Applications. Each app is a setting that reads "VoiceOver leads" or "TurnOver leads"; Return, Space or Right flips it. If Space did nothing where you were, tell me which item and I'll check.
Lorien: three good ones. Graphics with no alt text falling back to the file name is in hand for a later build; spelling in Safari is read as you move through misspelt words with TurnOver E, and I'll look at marking them as you pass; describing images is on the list, after screen recognition, which is in already (TurnOver R reads what's drawn on screen).
I'm off over the weekend, so replies will wait until Monday. Enjoy, and keep the reports coming.
O O
Re: vibe coding
Two wrongs don't make a right. Humans writing bad code doesn't excuse using AI to do the same. Technology is supposed to simplify our lives, and AI can be used for that as a reviewer, which it has already proven to be far superior to humans; as a coder, however, it holds no candle to skilled human coders, so people should stop using it to generate production code. I don't care if people use AI to write quick scripts, as I've done it myself, but I draw the line when it comes to production code. For example very recently I exported all the E-mails sent to my old domain to an mbox file, and then asked Gemini to write a Python script to extract all the unique domains that I received mail from in order to update my contact information on all those services. That script is not production code, it's not going anywhere outside of my computer. if it fails I'm the only one who suffers, and it's so small that reviewing it was trivial, but none of this is the case for production code.
As for the project itself, I wasn't planning on using it because VoiceOver works well enough for me. However learning that it's vibe coded only makes me even less willing to check it out. I said in my previous post that I'd review the code if it's ever made open-source, but I won't go any further than a superficial skim, which is usually all it takes for me to find problems in AI generated code.
A couple of really tiny things
I've only got as far as running this once - I've not tried it properly. It seemed to work pretty well in Safari from a quick play. Everything I tried was snappy and did what I expected so it was pretty nice once I turned Eloquence off. :)
I have a few really tiny nit picky comments thsat I found mainly to do with the instructions:
- The email says that all apps are disabled by default, but this wasn't the case - it was speaking over safari and finder straightaway.
- The download link says it is a zip but it was the full application I think.
- I might have been doing it wrong but I think it had trouble with the menu extras - it seemed to speak everything as Control Centre.
- I was told to turn on input monitoring permissions and that the app would appear in the list, but I had to add it myself.
One thing I don't really like, but it's not the app's fault really, is that I don't use the VoiceOver shortcuts that it is emulating. I very rarely use Caps lock/Control+Option and I never use single key nav. Instead I almost entirely use the numpad, and I use the right option keyu shortcuts toswitch apps. I'm not sure if it's reasonable to expect Turnover to do absolutely everything that VoiceOver does, but it does mean that I either need to switch control styles as I move between apps, or I need to ditch the things I actually really like about VoiceOver.
Anyway this is really impressive and I look forward to spending some more time playing about with it.
Vibe Coding Discussions
Hi all,
I think it would be best if we please keep this topic specific to TurnOver. Anyone who wishes is welcome to create a new topic to discuss vibe coding.
Thanks.
Some feedback
Here's some feedback i sent to the developer but also wanted to share here:
I use the Windows/NVDA style keyboard layout, and when I press Caps Lock + T to have it read the window/tab title, it says “Safari, Untitled,” even though the tab name is clearly displayed. Turnover also doesn’t speak the window or the tab names as i switch between them. I feel that Caps Lock + T should speak not only the app name but also the window title. I couldn’t use Turnover reliably on Google Suite, such as Google Drive, Docs, Slides, etc. For example, when searching menus with Option + Slash, when I search for an item, arrows don’t take me anywhere. I’m not sure why. I also noticed that Turnover may speak live regions that appear one after another multiple times when playing Uno on The Playroom. I’m happy to provide audio demonstrations if that helps.
More feedback:
Here are some issues I encountered with Turnover’s Windows keyboard style. These issues do not occur when the Mac style is active. However, in my opinion, item navigation should still be the VoiceOver way in Windows style as well when the item group is set to the VoiceOver way. Mac’s UI is much easier to navigate when it’s the VoiceOver way.
• Item navigation isn’t consistent across apps. Turnover detects multiple copies of the same items and interacts with groups even when it’s set to group the items instead. It also doesn’t sync with the keyboard focus.
Every time I open Turnover, the function keys setting is reverted back to its default. Normally, I use it as classical function keys, but it reverts back to having the brightness adjustment and other functions, requiring me to press the FN key along with them to get the FN keys. Every time I stop using Turnover, I need to change this setting back.
Thanks for your work. I’m quite hopeful for this as it’s really the first real demo of an alternative screen reader on Mac, and it’s showing its potential.
Waiting for new releases
Hey Oliver, hope you’re doing well! Just wanted to check in—I sent over some feedback recently and noticed TurnOver releases have stalled a bit. Hope everything is alright on your end!
Still here! - Build 17 is out
Hi all,
Build 17 is out, and it's a big one, so it's TurnOver 2.0. Testers get it from the TurnOver menu, About and updates, Check for updates, or within the day. When it starts you'll get a short welcome, a few pages with Next and Back, saying what's changed. Please read it: some keys have moved.
Keys. TurnOver now has three sets of keys. In the Mac style, VoiceOver's keys do exactly what they do in VoiceOver: VO-N is the notifications you've heard, VO-V the verbosity list, VO-1 to VO-0 hot spots, VO-Command with the arrows the speech settings, and 178 of the 189 commands in Apple's VoiceOver guide now behave as VoiceOver's do. In the Windows style, NVDA's keys do exactly what they do in NVDA: the review cursor, table navigation with Control Alt and the arrows, Control to stop speech and Shift to pause it, sleep mode, and 114 of the 130 commands in NVDA's reference.
TurnOver's own commands now sit behind one key, the same in both styles and in any app: Command Control Comma, then a letter. N is the TurnOver menu, T hands the app to VoiceOver or back, S settings, K the keyboard style, J "that was wrong", Slash the shortcuts here, H the guide. Any other key reads you the letters. Command Control Period now starts or quits TurnOver; it was Command Control T.
Why one key: I checked the menus of Finder, Safari, Mail, Terminal, Preview, Xcode and others, and Apple's own apps use nearly every Command Control letter. TurnOver shouldn't be taking shortcuts away from the apps you use. JAWS users will know this as a layered key. I'd really like to know what you think of it, good or bad.
The keypad. In the Mac style it's VoiceOver's NumPad Commander, with VoiceOver's own assignments: VO-Clear turns it on. In the Windows style it's NVDA's desktop layout: 7 8 9 lines, 4 5 6 words, 1 2 3 characters, keypad 0 held as the NVDA key. A Mac keypad has no Num Lock, so Clear switches between NVDA's commands and typing numbers.
Audio ducking, as in NVDA: other apps' sound is lowered while TurnOver speaks. It's off to start with, under Settings, Speech, or Caps Lock Shift D in the Windows style. The first time, macOS asks to let TurnOver record system audio; that's how it lowers the sound, and nothing is recorded or kept.
Plugins. You can now label an unnamed button, give an item a key, have it read when it changes, or stop it being announced, in any app TurnOver reads: VO-Slash in the Mac style, or Command Control Comma then P. Your changes are kept as your own plugin for that app, and can be undone and shared. This is a careful first step: plugins start with what's safe for everyone, and what they can do will broaden over the coming builds, with each plugin asking for what it needs so you always know what one can do before you turn it on. If you'd like to build plugins, I'd love to hear from you.
Also fixed: system prompts that come up behind the app you're in ("would like to use your current location") are now read, and Tab and Space work in them; typing straight after Backspace no longer lags in web text boxes; and a good few smaller things in the update notes.
A change to how often builds come: from now on there'll be two or three releases a week rather than one a day, and none at weekends. Each will be tested more thoroughly before it goes out, and the welcome after each update will say what's new and what to test.
As ever, keep the reports coming: Send feedback in the TurnOver menu.
O O
Re: Still here! - Build 17 is out
I suspect that VoiceOver actually lowers the volume of everything else playing on its output device through CoreAudio, which doesn't require audio capture privileges. I don't recommend starting a recording session even if you discard the data because if you record from a microphone, that will mess with bluetooth headphones like the AirPods, making everything sound worse and possibly in mono as well, plus it drains a lot of battery.
Beta
hey Oliver. This sounds like a really cool project and id love to jump on the beta if possible. Im very interested in working on some plugins for this for some apps i use all the time. I sent you a PM last week so if you are still after testers you can find my details in there. Hope to hear from you soon.
Cheers
Matt
Re: Ducking
Hi Choom,
Thanks for the heads up on ducking .
TurnOver never actually opened a microphone, so AirPods weren’t being switched into their low-quality headset mode. It tapped the other apps’ output and played it back quieter. You're right that it doesn't have to work that way. trying to avoid asking for system permissions and, thankfully, this one is avoidable.
From build 18, ducking uses macOS’s own ducking, the same mechanism the system uses for its voices and there’s no permission to grant, no sound passes through TurnOve at all now.
It'll be out in tomorrow's build.
O
Re: Beta
Hey Matt,
I did send a reply over. could you check your spam? If not, drop me another message and I'll get you sorted. Sorry about that.
Ollie
Re: Ducking
What's the mechanism? Is it in CoreAudio? Because I never found anything specifically related to audio ducking in CoreAudio and just thought that it was just a matter of lowering the volume of everything else playing on the same device. I'll investigate this in the mean time until you find the time to reply, since I'm genuinely curious.
Just found the functionality in AVFAudio. The web documentation is not very accessible (I personally read it in Xcode), but essentially it's just a property of
AVAudiosession.this might make some people mad
So after a few hours of messing around, and thanks to the accessible android emulator, I have now, at least on my system, essentially ported over the old S voice pico speech synthesizer from an android 5.0 ASP image that was from the accessible android emulator. In fact, I'm currently using it right now to type this and besides some minor pronunciation quirks it seems like it's working perfectly fine and it actually seems a lot more speedier compared to Karen the Australian vocalizer voice. This is currently on an installation of macOS 27 on an M1 MacBook Air, so yes this had to be converted from whatever package. It was originally running on to a format that would support Apple Silicon. Apologies for hijacking this I just didn't know if yoited be cool to make a whole new topic discussing it especially because I'm not sure if I'm going to release it into the wild
Will this be made open source?
Will this be made open source? I'm unwilling to run closed source from a single developer that has such deep system access. My concern isn't just the developer being a bad actor, but this could be a high value target for someone to inject malware into.
Re: Will this be made open source?
I think you should be fine. I did have to reinstall macOS, though, but that had nothing to do with TurnOver, in fact it was from a whole completely different reason because of me screwing around with the speech libraries. I've used this a couple of times and it works very well.
Build 18 is live
Hi all,
Build 18 is out. Testers get it from the TurnOver menu, About and updates, Check for updates, or within the day. The headlines:
As ever, Send feedback in the TurnOver menu, or reply here.
Hoping to get build 19 out on Friday with wider scope for plugins so people can play over the weekend.
Toodles
O O
Typical... 18.1 is out
Just after I sent out 18 I found a bug...
A small build on the heels of 18, out now, for one bug worth having at once: after closing a menu with Escape, such as the spelling menu in TextEdit, TurnOver could lose the focus and the arrows went quiet until you switched apps. Fixed.
If you already have 18, Check for updates in the TurnOver menu, or wait for the daily check.
Build 19 is out
Yo yo
Build 19 is out. Testers get it from the TurnOver menu, About and updates, Check for updates, or within the day. The headlines:
A change of direction, so you know where this is going. From here there are two TurnOvers from the same code. TurnOver Beta is what you have: the wide, experimental one, with plugins, the Windows style and everything else thrown at the wall. TurnOver Commercial is the one being finalised for sale: a smaller, polished reader for a set list of apps, with VoiceOver doing the rest. Beta development slows while Commercial is finished, though updates and experiments will still come, and you can choose which to run. More in the welcome.
Help wanted: if you use OpenAI's Codex or Google's Gemini CLI, please try Make a plugin with ChatGPT or Gemini and let me know how it goes. I can only test Claude Code here.
As ever, Send feedback in the TurnOver menu, or reply here.
Cheers
O
Re: Build 19 is out
While I appreciate your work on this Oliver, for me I don't like the direction. While it's great to have plugins, I'm still too uncertain about the core. Just because something works, doesn't mean it is optimal or even safe. I also think fragmentation and inconsistency in the screenreader space is the very last thing we need, so having 2 versions, especially 1 that frequently drops back into Voiceover, is not a direction I can get onboard with. For newer, or less experienced MacOS users, that is only ever going to cause confusion. And for me, as a highly proficient voiceover user, it is something that would become so incredibly annoying I would just stick to Voiceover.
I really would love to be fully onboard with this but if you're set on this direction, I'm out, I'm afraid.
Re: Build 19 is out
Yeah, I'm honestly starting to see some slight issues with it myself now too. Earlier it was pretty easy to navigate with the arrow keys. Now I have absolutely no idea what the hell I'm doing half the time.
But hell, if it allows me to finally use steam, I can work with that. But honestly, unless it's somehow it's better than VoiceOver and most other aspects or starts to become a genuine rival to VoiceOver. I probably won't use it outside of steam, especially the commercial part.
and
And, frankly, I honestly think you kinda need to slow down a bit with development. Take this personally from me as a website developer. I've been developing my website, RL reserves, for seven weeks. Turnover is probably a lot more harder than what RL reserves is to actually develop. So even two things will happen here probably. Either you, eventually, get some mad burnout, or you'll pack in way too many features, and they would the great screen readers experience to the point where no one may want to use it, and if you're trying to get profit, you aren't going to get profit from nobody using the product that will buy you profit. It's not even profit though. Because I found when developing my website over the last week or so, I've had a bit less enjoyment, actually doing it, I've been enjoying it a lot less than what I would. It's not good, but what can you do. So imagine what it's like. Developing an actual screen reader, I could never do that. And just the amount of features in here too, it's very overwhelming, and I've used a MacBook since 2021, and Windows since 2015, thanks to an old IBM center desktop running Windows XP SP3 2003. So just imagine what it's like for a new macOS user. They get recommended the screen reader online. They go in downloaded. Immediately they just swarmed by the amount of stuff here. Again it confuses me and I call myself a pretty experienced macOS user so just imagine what it's like for someone. Who's only use their computer for like a week or a bit more
steam
So Steam doesn't really work. On my computer at least it detects itself as being an app called Steam Helper, which is an official Steam app, but there's no plug-ins for it. I also can't go to the main steam menu. When I was able to go to the game menu I wasn't able find games in the steam store. I was able to successfully login though, something I couldn't do with VoiceOver.
o yeah, also
I also can't find Steam speech anywhere. I did do what you suggested, put steam into big picture mode, but then it wanted to do some kind of update or something. So I let it do that and now it's not letting me access the Steam menu at all. At the moment, if we are rating app accessibility, I'd honestly give it a 2.5 out of 10. It allowed me to login, but everything else is even very clunky on my end or straight up doesn't work. Also, not being able to put in your own code instead of getting an AI to do It is kind of weird. Granted, we don't know what you're using because you haven't made it exactly open source, but AI would also not really have much of an idea, and also what a screen curtain is turned on because when making a plug-in, it opens up a Terminal window and says a whole bunch of stuff about taking elements on the screen, but not taking what it was red or something like that I don't really know, but either way currently I rate that I rate the whole app of 4.5 out of 10, but I'm a bit less enthusiastic now than what I was originally which is one of the reasons why I said you should probably slow down
Why not just port NVDA and be done with it?
Clearly, this thing's goal, regardless of the VOiceover layer/version, is to make the Mac work like Windows, specifically like NVDA and adding in the native Windows keystrokes like arrows and tab working everywhere.
Why not quit faffing about with all these layers and Voiceover features and just do what you really want, and make an NVDA clone for the Mac?j It would probably be less complicated to maintain anyway.
Some clarifications
The whole concept is that it works along side voiceover, at first at least. Turnover takes over in apps where voiceover has issues and voiceover returns in other apps. I'm trying to make this seemless as possible.
the version which I aim to ship will be simple. No windows keys. No settings for speech, headings etc, as these will all be imported from voiceover. I agree the skope has broadened a lot. There have been many rquests and a lot of very useful feedback. My first run at this was throwing everything at the wall, seeing what stuck and what worked. Now, I'm tightening the skope.
Ash, your view on plugins is well heard. My reasoning was that some people might, for their own use, want to hook into TurnOver in a way we can't with voiceover. Plugins aren't going to be something that ships with the standard version.
The first open release, and I'm hoping to put out the public beta early November, will support about 15 apps, including music, podcasts, TV, Word, and a handful of the most used and most requested apps. the work I'm doing now is to get parity between the behaviour of voiceover shortcuts and, hopefully, gestures on the trackpad. The goal is to almost be unaware you are shifting from voiceover to TurnOver as you move between apps.
I am very grateful for everyone's feedback on the rather frantic and messy beta. From now on, however, I am pulling in the goals. there will be features I add in the future, or re-add, but the product will be simple, filling in the gaps where voiceover struggles.
As always, I'm very happy to hear opinions and concerns.
O
Re: Some clarifications
I'm not saying I'm against plugins. Far from it. I like plugins, add-ons are one of the many thigns that make NVDA so great. A simple plugin format is exactly the kind of thing that allows non coders especially ot use AI to successfully bring compatibility and functionality to otherwise inaccessible applications, and it's why there are a ton of successful NVDA addons that are purely vibecoded and work very well.
I'm saying that I'm uncomfortable with a closed-source, solo-developped, core written entirely by AI. That is ultimately what would make me walk away. I still think the money is in the commercial application and sale of support and training for an open source product. It probably doesn't help that I'm no fan of claude and the way it writes code, but that is by the by.
I actually really like the flexibility between voiceover commands, NVDA commands or both. There are things I really like about Voiceover's way of navigation and screen presentation, but there are things I also really mis from my Windows days using NVDA, or, prior to that, Jaws. I think a screenreader that brings either of those solutions, or a combination of both, to the Mac is a great thing. I would never be one to encourage you against producing something feature-rich. The more functionality the better. Especially since you've already spent time and compute building it, why strip it now?
Simply ship with a minimal settings configuration, and the user can enable features or configure the app as they please. You might even create a first-time onboarding wizard for this configuration. When I started writing Simulcast, it was the most basic podcast client. It now has over 3 million possible combinations of settings. Versatility is not a bad thing, and neither is being rich in features. Neither is wanting a MacOS screenreader to operate like a Windows one, or vice versa. If you'd asked me in 2014, when I started moving full-time to Mac, I'd have loved a screenreader that was more familiar to help ease that transition. Now, with more than a decade of living exclusively with Voiceover under my belt and having figured out most of its bugs and workarounds, I find it difficult to go back to using a Windows machine. Even then, I've enjoyed Turnover's amalgamation of the two.
The thing you can fix, with regards the transition between turnover and Voiceover, is the speed that it happens. There is that period where turnover quits and voiceover starts back up again that will always be annoying when switching between supported vs unsupported apps, and there's really nothing you can do about that. That is probably the main reason why a screenreader that was intended otherwise work along-side Voiceover would never really work. And in truth, turnover is already great with unsupported apps. So once you better support a few more UI elements, like tree view tables and such, you probably don't really need that compatibility layer.
agree with ashley
For something like this? Open sourcing it might be best. I.e, if something happens and you cant mintaine it, we'd be back to square 1. As far as vibecoding that's, I don't care either way, providing its tested as much as possible and that if possible effort is made to insure no major security breaks etc but, that's happening so hense my not minding.
Agree for opensource
Jaws business model worked for 20+ years because there was nothing first party anyway. Here it won't work as bad / good voiceover on mac may be.
Yeah but
Jaws worked as long as it did because there was no competition, and because they were the first to do it. Now, however, I would say that a reasonable argument could be made that they have lost their grip of the market. The individual market, at any rate. And if not all of it, a major part of it. Partly do to the reason of not inovating. They where so used to our way or the highway that they eventually stagnated, hard, imo.
An Independent Screen Reader
I have been following this topic since I first saw it. From an outsider perspective, because I'm not in beta, the app is very promissing.
However this idea of taking over where VoiceOver fall short is not my cup of tea. I think a seperate screen reader would be really great like Jaws and NVDA on Windows. I asume that would be difficult and very time consuming to code, but an other app who stitches itself to VoiceOver?
I'm not a developer too, so I appriciate your time and effort, still an independent Screen reader sounds more stable for me.
Independent Screen Reader
VoiceOver has become really buggy over time, and some bugs have been around for years. Honestly, what area doesn’t have issues with VoiceOver? I mainly use my Mac for text editing, browsing, and media consumption, and VoiceOver gives me trouble with all three. So yes, I’m all for an independent screen reader.
Re: Yeah but
I said worked :) not is working. you're 100% right of course.
Re: Yeah but
Jaws worked because they were in the commercial field. It helped that they were the first, but they were usually the de facto solution supplied by access technology specialists and training firms, or at least certainly here in teh UK, unless you requested an alternative like Window Eyes or even Hal for reasons of cost. I was lucky enough to receive my first computer through grant funding from a UK organisation that no-longer exists, which at the time provided a Windows PC setup and a copy of JAWS 4.51 that could also be installed on a couple of machines at the mainstream primary school I attended.
I don't know how the windows side works now as I've been out of the market for over a decade, and am not really active in the VI community. I do remember the early versions of NVDA (the 0.x versions) when it was good, but basic. It sat somewhere between JAWS and Narrator at that time. Then the community got ahold of it and it started to be developped at pace, and quickly became not only a viable alternative but a genuinely better one.
A quick scroll through the NVAccess website shows how at least some of their money is made. There are several training books, a couple of synths, and the offer of online or telephone support. There's also a donate button. Given the number of VI folk who have kindly reached out and offered to put money into my own projects, I'd bet a lot more could be raised through a donation model than a subscription one.
I agree with making turnover open source
Whilst I am fine with a program being closed source during the beta stages, I mean, you're obviously working out issues and stuff, I feel like it's to a point now where I personally believe the code should be open for the world to see, especially as you've been using AI to code this, which, in my eyes, provides even more of a reason to why you should make it open source in the first place, so the people can audit and have a look at your code and make necessary fixes and modifications
I’m also in favor of open sourcing it
If you decide to make it open source, then we’ll be able to add support for the apps we actually use every day, and at least in the first few months, I’ll definitely be making a fork of this and modifying it to my needs. Someone could really benefit from this, and yes, this kind of thing actually does need to be open sourced if you want the users to feel both safe and independent
The question of opensource...
It's rather disappointing how on one hand we argue that blind people should be in employment, paid a decent wage, have a purpose and then, in the next breath ask for hard work to be given away for free. Yes, I vibe coded all this, but I have also invested time and money into this project and have produced something that no one else has.
To my mind there are two options: I make this available to others who face similar issues on mac and with VoiceOver on my terms. I will decide what features come out when, how the application develops, and how much I want to charge for it which people can choose to pay or not. the second choice is that I withdraw it. I've got a system which works significantly better than it did. The apps I need are now fully accessible and I can call it a win.
I get that you developers want to get in there, have a tinker, devs gonna dev. I also understand caution. this is new, still in its infancy.
The existence of TurnOver in no way precludes any of you making your own open source solution. there seems to be quite a few of you interested in such a project. I give you my blessing. A world with more choice for us is always a good thing.
I will be releasing a public beta over the next couple of weeks. It will be significantly simpler than the closed beta but, as time passes, I will add back in features such as the NVDA style navigation.
As I said at the start of this, the whole concept is a rising tide style of product. More apps will come on line and be added to the TurnOver library once I'm sure they work better than they do with VoiceOver.
As always, thank you for your interest and your thoughts.
Ollie
Re: The question of opensource...
nobody, certainly not me anyway, is saying that you shouldn't be compensated for your time and effort, and earn a fair wage. If it came across that way, I apologise. I don't doubt for a second that you've invested a lot of time and significant money into this, I am fully aware of the cost of compute.
For me, it is entirely caution, and no reflection on the cost of the product. I'd just feel more comfortable running the solution beyond testing if there were experienced devs at least checking over the code, especially given the level of system access involved. Beta testing a user-facing application doesn't tell you anything about its security risk or potential affect on hardware, for example SSD storage wear. Ultimately it's your project, and it would be a shame to see it fall by the wayside.
welp...
hay all.
as you all would no, I've been following TurnOver since the early builds, and I genuinely appreciate the work Oliver has put into it. I was initially very enthusiastic about the project, especially because I'm also someone who uses AI to develop software.
i mean, hell, without the use of AI, I most certainly wouldn't have been able to back Port svox pico from AOSP talk back android 5.0 onto my MacBook Air M1 and use it as a voiceover or system voice. No way.
However, after testing several builds, including Build 19, I'm becoming increasingly, how do i put this? Disillusion I think? Honestly, I don't even know what to say here., especially with the idea of relying on TurnOver if its core remains closed source.
My concern isn't simply that AI was used to write the code. I use Codex to develop RL RESERVES, my rugby league archive website, so I'd be a hypocrite if I claimed AI-assisted development was inherently bad.
But there's a considerable difference between developing a website and developing a screen reader that requires extensive system permissions and that blind users may depend on to operate their computers.
For that reason, I believe independent scrutiny is particularly important. Being able to inspect the source code, identify potential problems and contribute improvements would make me considerably more confident in the project.
I've also encountered some practical issues. Navigation has sometimes been confusing, and although Build 19 allowed me to sign into Steam when VoiceOver couldn't, I couldn't reliably access the rest of Steam's interface or locate the advertised Steam speech plugin.
I understand that this is beta software, and I'm not expecting perfection.
I also completely respect your right to retain ownership of your work, decide how it's distributed and receive compensation for developing it. Open source and commercial sustainability aren't necessarily mutually exclusive, but I recognise that choosing a business model is ultimately his decision.
But at the moment, whilst it's in its current state, and with no external review over anything, especially due to my not so great experience with Claude in itself, I probably will pass on using this as my main screen either unfortunately.
I do, however, wish this well and hope that future developments can continue and that people can make their own adjustments to their own source how they see fit whilst you get external support through compensation. Worse comes to worse you could do an NVDA style thing such as donations. I still do wish for this screen reader to be open sourced, and I do hope you do not stop developing this, however, it is what it is I guess
Re: The question of opensource...
I completely aggree with this comment here.
Re: The question of opensource...
I think that one problem that you are failing to account for is that this is a project that requires high maintenance, which you won't be able to do all by yourself as the number of supported applications grows thus making it a bad choice to sell as a product. If I decided to work on Vosh again, which I won't, I'd do just an open-source core with some example add-ons, in AppleScript or Python, and let the community take over and do the rest. In Vosh my goal, which I failed to accomplish, was to find a general solution to most or all the problems, precisely because I didn't want the burden of having to support lots of individual applications and wasn't expecting much interest from the community, even though getting the community involved was also a goal.
Re: The question of opensource...
I hate to sound like a broken record here, but again I completely agree. As I've said before here, I'm kindly developing a rugby league website. I've developed it for seven weeks straight and I am starting to get burned out. So imagine what it's like when you have a community of people who are desperate for anything better than VoiceOver on you when you say that you've made something that might be better than VoiceOver in certain aspects. I don't have a community behind me and even I'm half stressed half the time.. Not to mention, this is an app you're making nowhere near a website, Jesus if I was doing what you were doing I'd probably have like a panic attack or more per day
also
To anyone who currently has the app, have you looked in the app contents and had a look at the app reed-me and notice? You might find some interesting things in there. I'm not going to say much more because it's closed status at the moment, but if you have it on your computer, do have a look?
Some extra maintenance problems
While thinking some more about this, I remembered that one of the things that frustrated me in Vosh was that the public API, which today I know is not the one used by VoiceOver, had no way to interact with custom rotors that applications make available, like jumping to the next and previous functions, errors, or warnings that Xcode makes available. I'm not sure whether you have solved this without using the private CoreAccessibility framework that VoiceOver uses, and if you are using the CoreAccessibility framework, then that's yet another moving target adding to the high maintenance nightmare since it's private, meaning that Apple makes no stability guarantees and can break everything by changing the interface at any moment without warning.
Since I'm not in the beta, I'm also not sure whether you are providing support for accessibility notifications, but if you are, beware that there are serious concurrency problems in the public API which I addressed by relegating all accessibility calls to a Swift global actor backed by a dedicated thread in Vosh. The global actor serves the purpose of ensuring that no concurrent access is ever made to the accessibility API, and the dedicated thread guarantees that even if the accessibility API has any kind of thread-affinity, like for example due to using thread-local storage or locks, the affinity is fully upheld.