Apple’s app review prevents developer from submitting fix to game for the blind
applevis.com
applevis.com
Now, I do understand that every app needs to go through review every time it is updated, of course. But this is verion 2.5 of the app, this is in no way the first or second version. So yes, Apple seems to find a new issue when someone just finds a little light in their brain clicking into place, the first version had no such issue. But after 4 or 5 versions, oooooh wait, your app does not comply with blah blah blah. So, yes, I think this is unfair. Anyway, I have some news regarding this whole hing, the update was pushed through and approved finally so I'm a bit less worried, they still say I should talk to them on the phone so they're going to schedule a call with me. Let's see how this turns out. Thanks all.
Twice now I’ve had to appeal the review. Each time the appeal worked in my favor and I was able to publish again. Keep in mind, as part of the appeal process they call you, so you will need to be answering unknown calls for a while. But the people I’ve talked to that handled the appeal process were all very nice.
CSS could match the current appearance exactly. I bet if dang put up the code on GitHub he'd get PRs fixing tons of stuff within a week.
This is a different case -- HN genuinely does not have a complicated UI, and it genuinely would not be difficult to make a UI that worked better with screen readers. It would not be difficult to rebuild a HN UI to stop using tables without even making any visual changes to what the site looks like.
There is very little complicated functionality going on in HN pages. They're paginated, they don't have a ton of content, they don't have a lot of complicated UI controls they need to support. They're mostly static pages with some very minor form controls.
In this specific case, there really is no excuse for HN to be screenreader inaccessible. This would not be a complicated conversion for even a single experienced web developer. You wouldn't need to use React, you wouldn't need to use any 3rd-party library or dependency at all. You wouldn't need complicated CSS features, you wouldn't need to redesign the UI.
Honestly in a lot of ways, the current HN table layout is more complicated than it needs to be, the generated HTML could be a lot simpler. Really, there's a difference between being "retro" and using what works instead of chasing modern trends, and having outputted HTML that's broken and hacky, and was broken and hacky even at the time it was released. HN is very solidly in the latter category.
No, it seemed awful at the time as well. Table layouts were already long obsolete by the time Hacker News was launched. Here’s a discussion from over a decade ago on the subject:
https://news.ycombinator.com/item?id=2019950
Quotes:
> If this were anyone other than pg, you'd all be excoriating the developer for living in the 90s.
> The big benefit is to accessibility through screenreaders or other alternate clients.
> Look, do what you want. You want to write bullshit markup, be my guest. But there isn't a single web dev in this community who would code output like this for their own site. They're just too chickenshit to tell you.
And here we are, a decade later: nothing has changed, we’re still having the same discussion about the same flaws, and it’s still causing problems for people with disabilities. It doesn’t “only seem awful in retrospect” – it has been awful all along and people have been pointing it out for over a decade.
pg is very proud of HN's quirky implementation that does what he wants very efficiently.
For visual use, I would agree that the site is great, far better than most of the bloated nonsense that is out there these days.
I'm not sure I agree that it does. HN ships a bunch of extra DOM content that it really doesn't need to ship. If you're optimizing for page size, the HTML could be lighter.
The site does what pg wants, but he really shouldn't be proud of it for doing what he wants well. It's not that the HTML is super-optimized but that the optimization has tradeoffs. It's more like whoever programmed it is very familiar with tables, and when all you have is a hammer everything starts looking like a nail.
[0]http://paulgraham.com/arc0.html
>pg: "Arc embodies a similarly unPC attitude to HTML. The predefined libraries just do everything with tables. Why? Because Arc is tuned for exploratory programming, and the W3C-approved way of doing things represents the opposite spirit.
>(...)
>Tables are the lists of html. The W3C doesn't like you to use tables to do more than display tabular data because then it's unclear what a table cell means. But this sort of ambiguity is not always an error. It might be an accurate reflection of the programmer's state of mind. (...)
... and yes, that decision is baked into the server, web app, HTML and forum code (which to my knowledge have never been changed in the standard Arc distribition,) making it a de facto requirement for all Arc based webapps and a PITA to change.
I suggest dropping a line about this to dang at hn@ycombinator.com. He is extremely nice and helpful.
I've always felt HN should use nested lists for comments.
(I know there’s ways to restructure it completely to do this, but I like focused and surgical changes that don’t affect anyone who doesn’t notice them. Opinions vary on that.)
I had someone else mention that rare bug too but unfortunately I haven’t been able to reproduce it to be able to narrow it down. I will see what I can do to fix it.
Two that display comments: https://hackerweb.app/ https://hn.premii.com/ I don't know how good they are with screenreaders.
The hackerweb.app site seems very good for accessibility. It uses nested lists as others here have suggested.
hn.premii.com is a little more difficult to use (in terms of getting from the list of posts to the comments), but still quite usable. It uses a slightly more complicated layout of divs and lists.
Basically, the comments on HackerNews are laid out in a tree form. When you first load the page, the comment tree is expanded. You can collapse them by pressing on the little '-' next to the comment.
With the tree expanded, NVDA just reads the comments as a linear stream. Of course, many forums are structured linearly, but the advantage of a tree layout is that you can have tangents like this one, without interrupting the main flow of the thread. Reddit is very similar in that regard. If NVDA can't read the tree structure, it's hard to know what is going on. From my experience, using the arrow keys ( e.g. CTRL + DownArrow ) will not report the indentation, whereas using the numpad keys ( e.g. Numpad 7 or Numpad 9 ) will report indentation, but will not indicate how deep the indentation is, so that isn't terribly helpful. It may be possible to change settings in NVDA to get this to work, but I doubt it, which leads us to the technical implementation.
As others have pointed out, the comments are in a complicated nested table structure, which NVDA seems completely blind to, not even recognizing it as a table. Then, the visual indentation is created by prepending the comments with gif images, which act as spacers. The width of the spacers is determined by a 'width=' attribute.
Others who are more knowledgeable than me have already pointed out alternative ways that this could be implemented, such as using <ol> or <ul> tags.
It wouldn't be hard to also criticize the lack of headings, but we can leave that for another day; if this indentation issue could be sorted out, the usability of the site would go up by about 300%. I've almost stopped coming on here since using a screnreader, whereas I used to browse on here a lot -- it's one of my favourite sites.
To the other commenters: thanks for the useful suggestions and insights; this had been bugging me for months.
Edit: typo
Holy shit I didn't realise this? That's terrible!
I am not (visibly) disabled, myself, but write software for a demographic that has a statistically high number of folks dealing with various challenges. Accessibility is a big deal for me (as is Usability –Accessibility's redheaded stepchild). I do things like provide localizable accessibility labels, as well as support for things like colorblind access, high contrast mode, and reduced transparency mode.
I have also released over 20 apps in the App Store (myself), since 2012, and am the proud recipient of many app rejection notes.
One of the more annoying things, is that the reviewers are required to select from a menu of rejection reasons. They can't just write "You need to add a plist row to ensure the new permission we just added is presented to the user." Instead, they have to send you some generalized "blanket" reason that includes that requirement, among a list of others that don't apply.
It's easy to panic, when we get these.
In my case, I sometimes need to break out a Ouija board, to figure out what they mean.
Fortunately, I have had very good luck in getting folks on the phone. They still tend to "beat around the bush," but you can usually figure out what they want.
Not a big deal. I can always work to modify awkward habits.
Give my regards to your dear Ginger. I'm married to one.
Congratulations on your award.
It's a staple of large corporations struggling scale processes and at the same time properly handle edge cases.
How? He tried talking to them, and they rejected his appeal.
If Apple was more developer-friendly, which they are absolutely not as a company, you would think that all replies to rejection e-mails should go through this board. But unfortunately, that's not the case - you have to go through a different process to submit an appeal, which is what it sounds like the blog poster has done (to get a call with them scheduled.)
We've created over 100 cross platform experiences, and I'm seriously considering a #FckApple tattoo.
This is the standard corporate playbook at this point.
Screw over lots and lots of people, then opponents will find some sympathetic cases like this one and put them in the news to put pressure on the company to do something.
The company fixes the one specific case that made the front page. Neither the million other instances, nor the systemic problems that led to them, are addressed. But if anyone refers to the case that made the news, the company can say that it turned out alright. "The system works."
It only turns out alright in that case because it made the front page. Things are still broken everywhere else.
You might want to look into Google's new UI toolkit, for Android, called Compose.
Could you post on how the conversation went?
Normal procedure of Apple to avoid any written communication.
Unless I'm misunderstanding the feature, this is coming to Android as well (well, it already has, though it's fairly recent), in the form of Jetpack Compose.
That said, Apple VoiceOver is still one of the best shipped-by-default accessibility systems. However, we have to thank Steve Jobs for this. If it were only for Tim Cook, apple wouldn't even know how to spell accessibility.
Which is frightening, because two years ago I had a terrible experience trying to modify a web app to be accessible using VoiceOver (I gave up after over a week of solid effort).
We couldn’t afford[1] to pay a third party to modify our 100% custom HTML framework[2], and VoiceOver seemed the most approachable for me to try and see how far I could progress on making our web app accessible.
VoiceOver just felt so very buggy - although perhaps the issue was the integration of VoiceOver within Mobile Safari (my dev experience is that Mobile Safari is a steaming pile of problems - current example is that iPadOS15 Safari crashes twice on many pages then goes blank so you can’t use it!).
As a dev, there also needs to be some better online training for using VoiceOver, since small teams do not have easy access to a colleague that uses it.
[1] We could pay 100% blind users to give us feedback, but couldn’t afford to pay a skilled team to consult and do the work.
[2] Custom framework because we started our product before reliable frameworks existed. Modern components are often designed to support accessibility out of the box, which is far preferable!
Luckily, Chrome for iOS exists :(
Also for your specific use case (I realise you were making a point) would be worth using the app I guess.
The Google Sheets app is a no-go because it kept using stale data for some reason. The sheets are regularly updated via script, and the app would constantly fail to show recent data.
Also, I think you are making many assumptions about me in your response: perhaps try to be a little more generous towards others.
I then had to explain why "the market" hadn't already corrected that, and why regulators hadn't.
Separate from my professional career, one of the more personal reasons that the reality of the iron-fisted mad-king Apple iOS app store made me sad is... I had hard-won skills at some tricky iOS things, and it would've been very tempting to moonlight on some creative apps that did something new, while also generating side income. But, for this and other Apple developer-hostile reasons, I'd end up aggravated in my spare time, and always with the risk that at some point Apple will stab me in the back. That's no way to spend one's spare time refreshing from the real job.
'... why "the market" hadn't already corrected [Apple's ability to cut people off], and why regulators hadn't.
Because there are a lot of money to be made, iOS users spend a lot more than Android users, that's a well known fact. If you don't build an app on iOS, someone else will. There are always developers who don't know enough, or simply don't care and keep building apps for iOS.
> why regulators hadn't.
They're starting to notice the problems. Recent regulations from overseas and the Epic lawsuit will draw attention to it.
There’s also a lot of irony in Apple judging whether or not your app is good enough. Like does anyone actually think Apple is cool in 2021? To me they’ve just become another boring, stuffy corporation like Dell and HP. The iPhone 13 is so incredibly uninteresting and inconsequential that I couldn’t even remember what number they were on when I was typing this comment. That whole launch just came and went.
But as a user I fully support Apple for curating the App Store experience. Discoverability is a challenge when you have this many apps and it's simply not fun having to wade through so many low quality, user-hostile apps.
You only need to look at the Windows Store to know that curation is an integral part of making a store work.
There is plenty of garbage on the app store and while in this case I’m sure there are a ton of hangman games on iOS, at least this one if offering something the others aren’t. So it’s kind of failing to deliver on the stated premise for the rejection. Also this seems like a pretty bad justification to reject and app update. Nobody benefits from this as part of a curation aspect. The app will still be there, so it’s already cluttering things up if that’s the issue for the rejection.
I guess what really bothers me about the App Store review process is that most of the time it feels like the human aspect is ignored despite being enforced (which I think is conceptually good). If you’re going to have people actually review everything, let the people actually act as people instead of rule-detecting machines.
The Mac App Store has about a dozen Chinese Bonzi Buddy clones on it.
Have you ever looked at the App Store? It's already like this…
Except curating is a very strong word. This story looks more like the app reviewers are on minimum wage and just go through a script without trying to understand anything about the app. Probably because they have to review too many submissions per day.
We already have to do this.
https://www.theverge.com/2021/4/21/22385859/apple-app-store-...
We need alternate app stores. Maybe with some actual competition Apple will pay more than just lip service to many of the issues that keep cropping up over and over and over....
Then again they never have given the macOS app store much love; then again it does no where the volume the iOS stores do.
Apple been trying to stifle innovation for profit for a very long time and has been getting away with it. Had it not for the good open-source alternatives I believe computers would just be big dumb bricks with 0 scope of experimentation.
I think it's a bit unfortunate that the GNU page mixes some good points with hyperbolic nonsense, and I don't care much for calling them "tyrants" either; seems a bit much...
ios is attractive to the masses because, among other reasons, the people who can afford to pay for apps use it.
More increasingly, that seems to be changing, thankfully. I just wish the world had a better alternative than Android. It's hard to protest an overstep of Apple by giving money to Google.
There are at least forks of Android that are open-source. You don't necessarily__have_ to run the Google version of Android.
Lineage-OS is one of them, but a few others have cropped up over the years that I have forgotten the names of.
If you're app is for sale in the UK, which almost all are, then Apple is obliged to enforce their trademark.
[1] https://trademarks.ipo.gov.uk/ipo-tmcase/page/Results/1/UK00...
Sure, it's definitely "easier." But given all of the bad press they've been getting about how they treat developers on the App Store, maybe it's time for them to stop just doing what's easier for them and start sometimes doing what's better for developers. Now this can't come from individual reviewers, so I don't fault the reviewer for enforcing their policy. I fault their policy for having limited nuance.
The form could first strongly discourage the use of trademarks.
But then provide fields for escalating the user of the trademark, based on the developers description of why the trademark is required to describe basic functionality of their app.
Auto-escalation options seem like a good thing for an iron gatekeeper to be providing if they want to reduce frustration with the shadow they are casting over techdom.
Please tell me this is a joke, this can't be true. So I can't develop an app and upload it if there's one similar already on the app store? What kind of stupid rule is this?
The problem is that 1) it seems enforced unevenly at best and this doesn't seem like "spam" at all, and 2) it's hard to bypass the Apple-curated app store. Apple can have all the rules in their app store they want – I don't really care – as long as they don't prevent me from running the software I want. It's that part that I find far more objectionable.
I don't agree with all the takes the Debian people have on their Free Software guidelines either, and that's not a problem at all because Debian isn't trying to prevent me from running any software I want! Even the more hard-line Free Software-only distros aren't preventing me from installing non-free software (they may not facilitate it or make it easy, but that's different from actively preventing it).
Or more eloquently: It's my bloody phone and I want to run whatever software I fucking want.
I hope this clarifies a bit what some of you were thinking, if you would like to you can try some of my other games, they are also made with accessibility in mind of course. https://apps.apple.com/us/app/choose-your-face/id1537309376
Thanks all for the support.
If companies are making byzantine and ridiculous claims against other participants, it's bad for business.
This is completely outside the issues of Apple's right to manage apps - if it's going to do so, it has to fairly clear policy and way to redress grievances.
Things like: 'business review' and 'technical review' are separate so that bug updates don't trigger a business reviews. If a complaint is raised to level 2 and there are problems, it goes to some kind of level 3 mediation, possibly by an outside party. It also might be reasonable for Apple to require a small fee for new feature release review i.e. $100 to release a new version and have the business review. They could even consider having 3rd parties do the reviewing and only have Apple weigh in if there is a conflict. Etc..
Arbitrary and bad business operations are not good for anyone in the long run.
“If you did a 180 then do a manual review. If the app is fundamentally the same with a minor bug fix then why review it?” would have to be a different thing.
You literally already have an ongoing relationship with the party in question, which is usually one of the biggest hurdles to reputation systems (new users).
I expect the real reason they haven't moved in this direction is fundamentally App Store review is seen as a tool of ongoing control rather than quality. So the more frequently something has to pass through it, the better.
If Apple can "find an issue" with your app every time you update, that's a very different relationship than an ongoing approval.
PS: Would also require developers to inform Apple of any company sale / dev team replacement to prevent abuse (Didn't mention you sold your company? Ban).
I can totally see Facebook pushing a update which uses internal APIs to access private information outside of its sandbox.
Honestly apps need to be verified after every update for much of the same reasons they need to be verified initially. The issue is the verification process itself, which sometimes blocks legitimate developers while also sometimes allowing scam apps.
See: recent iOS exploits.
And the original poster (the blind game developer) says so too
Isn't this being possible a security issue with iOS?
Second, Apple really hates the idea of special rules for specific developers. When they make an exception for, say, Kindle; they don't just approve Kindle. They change the App Store rules to say "apps that are just viewing content purchased on other devices don't have to use IAP". The closest thing they have to special rules are entitlements; things like Zoom's special camera multitasking entitlement comes to mind. However, even that ultimately wound up being something other developers of video chat apps could ask for, they just didn't say anything about it until they got called out on it.
The 1Password example you cite is plain 'ol trademark infringement. I imagine Apple isn't particularly interested in doing trademark enforcement for third parties, though I'm pretty sure they wrote the rules to allow them to do exactly that. This is definitely something where Apple could be more proactive, but there's a limit to how much they can do before you get people complaining about Apple going overboard.
You mean "really loves" special rules for specific developers. They won't change the public rules, of course, but backroom deals for private APIs or specific entitlements are a thing.
It's not feasible to get in touch with Google to fix/remove these.
It's a hard issue to solve; Apple are erring on the side of user safety.
In fact, trying to cite other approvals in an argument in App Review is usually a good way to get other developers' apps pulled.
Apple hands you willing buyers on a silver platter and you pay for it.
I have to admit that software for blind people sounds like a fascinating specialty. I'd love to get into it but being not-blind (came close though) probably gives one false theories on design. I love the angle of making software that requires only a microphone and a speaker, it would be an amazing way to rethink the world.
My guess is that ground-up software for the blind would work differently at fundamental levels. Really, what an interesting problem.
In theory, yes, but in practice it's probably a very bad experience unless actively worked on. For instance, I worked on a "seat chooser" once, that actually was very keyboard friendly and worked with screen readers. But trying to actually use it to select a specific seat for a blind was impossible. A seeing user can just press the seat directly, or tab quickly until the correct one is selected. But with voiceover it had to read out "seat 7B, $5 extra, not occupied, extra leg room, aisle, power outlet".
An actually useful way of selecting a seat would be to specify a seat directly, or some kind of filter for wanted features, a table or whatever. Not just take a visual way of presenting something and slap on some voice data.
The two aren’t comparable. It’s not even close. I take it you haven’t actually built an iOS app.
That said, for sure, you can build a custom UI that is inaccessible, but with iOS if you build something that is close to conventional, you’d be surprised by how well it works.
Provide a non custom UI alongside the custom one. Use tabs to offer ‘graphical’ and ‘list’ views.
The comment I replied to said this:
> In theory, yes, but in practice it's probably a very bad experience unless actively worked on
It’s also not even clear that the UI they described was that bad for blind people.
The voiceover information is relevant to making a selection, and the blind person can’t see that data so it needs to be read to them at some point. Of course it’s not as easy to use as if you can see it. They describe a search function, and I propose a plain list, but there isn’t a lot of evidence that either would require less interaction.
Obviously it's bad. Becoming blind doesn't magically make you infinitely patient. Having to listen to a whole listing of airplane seats one by one with unnecessary details when you just want to book a place would probably make you crazy. Well it's the same for your blind users.
They don’t. Why would you expect them to be able to?
It's very common for an update to not respect rule X since there are literally thousands of rules. First you can appeal/answer them (like you did).
In the scenario where they still reject your update you can still make a new executable by bumping up the version identifier.
Try to make some change that answer their previous objection. In this case I would add/change a line in the description or title of the app specifying is for blind users.
You could modify the feature to their demands but I'm not sure it applies in this case.
Then you submit again.
You will get a new human reviewer which may have a different opinion from the previous reviewer who rejected you.
Be kind and respectful but keep appealing/resubmitting/explaining/asking what you can do.
Don't give up.
It's very time consuming but usually you will always get meaningful updates published in the end.
"Exploring images with VoiceOver: Explore people, objects, text, and tables within images in more detail with VoiceOver. Navigate receipts and nutrition label values intelligently in logical order. And move your finger over a photo to discover a person’s position relative to other objects within images."
"Voice image descriptions in Markup: Markup lets the user add image descriptions that can be read by VoiceOver. Image descriptions persist even when shared and can be read in a range of supported apps on iPhone, iPad, and Mac."
"Per-app settings: Customize display and text size settings on an app-by-app basis. Bold or enlarge text, increase contrast, invert colors, add color filters, and more for only the apps you want."
"Magnifier app: Magnifier finally becomes a default app on iOS, so you can use your iPhone as a magnifying glass to zoom in on objects near you."
I’d imagine a rule to check the existing market and determine if there are too many duplicates should be on first submission only and not enforced again unless the app category or title has a material change.
(Cue people whose needs it serves coming to tell me all about it)
This specific app is not an issue for me (I'm not blind) but there is another app that I do rely on that has also not been upgrade to 15.0 so I'm still faced with the same dilemma. And unfortunately, this particular app (Foreflight) is iOS-only.
I contacted Apple tech support and they have so far escalated through two levels. The ticket is still open.
In the jailbreaking world you can save these signatures allowing you to install that iOS version later at your leisure.
That said, Apple appears to still be signing iOS 14.8. You can check the signing status here: https://ipsw.me/iPhone12,3
(But look up your device model in particular. Sometimes there’s inconsistencies)
It is literally what apple decide to do to this dev, because it was, in their opinion "just another hangman in the store".
But they have definitely stirred some publicity (including nongeek audience) around all these practices, which is good, maybe someone is going to have a better case riding this wave.
If violations got automatically grandfathered in, you’d get devs pulling tricks like sneaking barely functional violations into the app so it’s unlikely to be spotted then when they got it approved make it fully functional.
In any case, it looks like Apple is already engaged with the dev to sort this out. They’ve made some major changes to review appeals in the last year or two.