6 ms·
"The idea here is to have the printing functions all behave in a manner perfectly consistent with printing being fully supported, yet mysteriously there is neve
by Jabrov 3y ago
"The idea here is to have the printing functions all behave in a manner perfectly consistent with printing being fully supported, yet mysteriously there is never a printer to print to."
This must be satire. Otherwise I can't comprehend how something as infuriating as this could be presented as a good or smart thing to do UX-wise
- recursive 3y agoThe alternative is that the app fails to run at all. Doesn't seem like satire to me.
- GMoromisato 3y agoOr worse, crashes at a random spot because it tried to initialize the printer stack.
- bombcar 3y agoAnyone who has spent some time with vintage or otherwise older software (and even some new stuff) should have experienced a "don't do this, it explodes" - often the cause is something akin to what Raymond is pointing out. The software asks for something, gets back an answer it can't handle, explodes.
- avery17 3y agoWhat do you suggest as an alternative?
- kentonv 3y agoNo, this is a guy who has been one of the architects of Windows for more than 30 years giving you hints about how they achieved their reputation for amazing backwards compatibility. He really, really knows what he's talking about.
- daveoc64 3y agoIf the two options are "this app can't run on your Xbox" or "this app runs on your Xbox, but the printing functions don't work and some of the messages are a little weird", which option do you think users would prefer?
- chrisjj 3y agoBut the first option is not "this app can't run on your Xbox". It is "This app possibly cannot run after trying to print".
- Arainach 3y agoCode like this often runs during application startup. It's not just printers.
- chrisjj 3y agoThe situation is "What should happen if an app tries to print on an Xbox?". I do not believe code that tries to print often runs on app startup.
- Arainach 3y agoPrinting is one example of this pattern - there are plenty of reasons APIs end up unsupported Printing may also run on startup. Consider software for a vinyl cutter which looks for the device when beginning.
- chrisjj 3y ago> Printing is one example of this pattern Then my point stands. > Consider software for a vinyl cutter On Xbox?? Good grief.
- elevatedastalt 3y agoNo it's not satire. It's a demonstration of the excellence in backward compatibility and cross-compatibility that Microsoft has always been known for, and that so-called modern players like Google and Apple don't take seriously. Just because an XBox can't print doesn't mean that an app that prints shouldn't run on XBox. It should just mean that the printing function shouldn't run. How to achieve that is exactly what Raymond Chen, a Microsoft and Windows veteran, is trying to explain here.
- toss1 3y agoPerhaps you missed the context in which it was made clear that this imperfect solution was still less bad than all other options. It seems the point resembled: 'this device doesn't support printing, don't return obscure, unhelpful or crashing errors; return something that makes sense so that the user can figure out and move on'. I.e.: Fail gracefully.
- Contortion 3y agoI wouldn't call creating mystery failing gracefully. As a user I would prefer a full crash to the application gas lighting me by suggesting there's something wrong with my setup (we can't find your printer vs you're not allowed to print). If anything creating mystery about what the app is doing is the direct opposite of good UX.
- xp84 3y agoUser spends two hours creating content. User hits print. 1. App crashes back to the desktop/Home Screen/etc 2. App can’t find any printers. User cancels and saves the document, prints elsewhere. You really think option 1 is better? Also, none of this precludes the ability to display a message. He’s talking about the system calls themselves and how they should respond. I suppose if the call for the “Add Printer Wizard” is called, it could not only return the “user cancelled it” status but also display an error message. It depends on the implementation details and whether someone probably 20 years ago foresaw the need for a modal but not fatal system error message to be triggered by that API call. Which again is not in the today developer’s control.
- chrisjj 3y ago> 1. App crashes back to the desktop/Home Screen/etc Why do think it would crash, rather that simply return to main loop?
- xp84 3y agoIt might return to the main loop if you throw a NoPrintingOnXboxException… if and only if the author of the app has decided to catch a broad enough exception in that exact place in the code, and handles it gracefully. Good practice to always handle any exception that might be thrown, but it’s not always obvious in the past where there might be a chance for an exception to be thrown. For instance, the printing subsystem itself can’t be missing, can it?? So anyway, the platform vendor can’t be sure the above situation is perfectly handled by every app, so the entire point of the article is “given you must technically comply with the published API specifications, how can you construct the least harmful and least disruptive response to every request sent to this fully-removed system component.” This whole exercise is basically constructed in order to usually guarantee the outcome you’re suggesting: to cause the app to just return to its normal functioning without doing the impossible thing.
- alpaca128 3y agoMS being okay with the user clicking somewhere and never getting any reaction out of it explains many of my interactions with Windows 10.
- bastawhiz 3y agoSo what, you crash the app? What if there's no API to say "there's no printing on this device"? What is the difference between a device where printing isn't supported and a device where a printer isn't set up yet? Showing an empty list of printers isn't a bad solution, frankly.
- Jabrov 3y agoAhh I completely misunderstood the article from a quick reading. It seems like the only solution to a tricky problem. Thanks to anyone who replied to me pointing that out. It's a good example of when one should read the article more closely before commenting!