I've been using all Apple products for almost 10 years, still do, but I've almost lost faith in Apple's ability to engineer reliable software. It's gotten really bad lately.
It's sad, because I really like their whole infrastructure with iCloud and sync between devices.
I don't know what happened, maybe they just have too many products and operating systems to support.
If you ever look under the covers at how Apple products are programmed you will know why. I'm not a big fan of Microsoft but if you compare, for example, the programming documentation on MSDN to Apple, it's night and day. Microsoft has clearly documented 95% of their APIs and for the most part, they are stable. Apple's APIs change constantly and are poorly documented. The documentation they do have is incomplete and full of dead links. How can you write good software on top of this?
I agree that Microsoft's documentation is stellar for their Windows APIs. Apple's is noticeably worse.
However Microsoft's APIs are not "more stable" than Apple's - in fact the Microsoft APIs change constantly. See Win32 -> MFC -> WinForms -> Silverlight -> WPF -> UWP -> WinRT... Or for languages, maybe you want to use or C++/CLI or C++/WinRT or C# or VB.NET or F# or JavaScript or the language they'll introduce next week. The treadmill is real and exhausting; what is a modern Windows app anyways?
For comparison Apple wants you to write Mac or iOS apps in Swift, or in Objective-C if you can't use Swift.
> However Microsoft's APIs are not "more stable" than Apple's
You can pretty much always run apps for Windows XP (released 2001) on Windows 10. You can't run any apps from OS X 10.0 (released the same year) on modern macOS. Yes, there was a processor architechture change in there (and a subsequently dropped compatibility layer), but the APIs have changed enough that that isnt the main issue.
Microsoft abandon the entire API, and replace it with something new every couple of years (the grandparent comment has a good list). This has the benefit that once software does work it should continue working more or less indefinitely.
Apple have mutated the same API over many years, however Xcode's default settings drift, deprecations are frequent, and the new macOS is rarely backward compatible with a large application. This means that each summer when the new Xcode/macOS combination is released you have to spend some time getting up and running again.
I doubt that the ideal situation of a continually developed API with perfect backwards compatibility exists. In that case the getting your code building and running with the new Xcode/macOS each summer is likely less time consuming than rewriting against a new API every 5/10 years. If you are maintaining well established code, then the opposite is true.
I recently installed something that was probably first targeted Windows 98.
The APIs listed by GP are deprecated and the platforms are not shipped/enabled by default, but that's worlds apart from intentionally breaking them (with almost no communication).
Of course, I still prefer a good package manager and direct access to the source on GitHub/GitSomewhere, but MSDN is very well maintained.
Microsoft is a little weird. The safe bet for a desktop application is to do it in WinForms. I'm pretty convinced that Winforms will outlive any of the newer frameworks from Microsoft.
The XAML developers will jump to whatever the next thing is when it comes around, but the conservative WinForm developers won't go anywhere anytime soon, forcing Microsoft to continue supporting and developing Winforms.
Throwing together a quick WinForm application is still much faster than building something using XAML, in my opinion. Especially if you don't know what you're doing, and that still how many in-house business applications seem to be built.
MS has backwards compatibility for existing software, but it's a gamble to start a new project using MS tech, you don't know what they will cancel, rename or invent next year.
Apple doesn't have backwards compatibility for existing software and stuff breaks regularly from version to version. However, one can count on Objective-C to pretty much work (although Swift is still work in progress).
I generally like MSDN's documentation, despite Google always sending me to an old version every single time (get on top of your SEO, Microsoft). That said...
Fairly recently, I was looking in to controlling a service using C# and while the docs claimed that System.Management was deprecated, I could not find code samples anywhere that did what I needed without using System.Management.
It doesn't seem like it's actually deprecated, and I couldn't find any corroborating claims that System.Management was deprecated, the mention only seems to exist on a single MSDN page. This one, in fact: https://msdn.microsoft.com/en-us/library/windows/desktop/aa3...
> Classes in the Microsoft.Management.Infrastructure namespace. (The System.Management namespace is no longer supported). For more information, see WMI .NET Overview.
What exactly does "no longer supported" mean if not deprecated? Why is it still in use if it's not supported? Why don't the System.Management docs mention this at all?
Full disclosure, I'm saying this as a very non-C# guy, so my relative inexperience with that ecosystem is absolutely a factor. But my thinking is that, if you're already a decently skilled programmer, you should at least be able to interpret documentation so long as it's not astoundingly terrible. In this case, there isn't a clear answer to my question, so I'm just left feeling like I'm writing doomed code.
Sorry for the rant. It's a relatively minor gripe, to be sure, but it needs fixing.
No, he means Swift and Objective-C. That's what was, is and will be supported.
On the other hand, Microsoft's API screw-ups are legendary at this point... not even they know what developers should use for Windows apps. I think Windows Phone was recently canceled, so that simplifies things a bit.
And even if there was such a blessed SDK/language combination, they'd probably drop it or rename it next year ;-)
I've found that C++/MFC and C#/WinForms are the one that are stable and actually work over the long term. Our >20 year old app runs a lot of MFC code that is unmodified from that era.
I could go on and on about how bad Apple's developer documentation is. So much stuff is missing an overview document or sample project, so you have documentation on the 10 classes but not how they fit together. Sample code that does exist won't compile on the latest Xcode 1/4 times, especially if it's Swift. I've found code that won't compile even in the Swift language documentation. There's almost never any documentation what can go wrong and why.
These days I prefer Stack Overflow answers to Apple's own documentation since it's more up-to-date
When it comes to macOS, it seems that it simply stoped caring. Especially when it comes to features for their traditional UNIXy user base.
Some examples:
- It took them years to bring back features to Pages (e.g. linked text boxes).
- Keynote now crashes on presentations that worked with older versions of Keynote (e.g. presentations converted with PDFToKeyNote).
- XQuartz still doesn't permit native resolution in windows (meaning HiDPI-capable Gtk3+ are scaled up and blurry).
- Location services steals focus from XQuartz, making X11 applications unusable.
- macOS regularly crashes on my MacBook Pro with two external displays when the display configuration changes (e.g. one display is turned off)).
- I regularly run into a bug where my MacBook Pro does not charge when the adapter is plugged in (even though the status icon shows the charging status). Plugging out and in again fixes this.
- Many basic UNIX utilities are buggy and never updated or fixed. E.g. take grep:
- macOS provides no trivial way to semi-automatically install drivers for Bonjour printers anymore if they support Postscript. Pretty annoying if you need scanner functionality.
- Preview.app/PDF kit have become pretty much useless. E.g. form filling for a lot of work forms does not work correctly any more (it used to work find pre-10.12 or 10.11). And since 10.13 Preview.app crashes all the time while regenerating a PDF document using LaTeX (a use-case that worked fine before), sometimes when zooming. Moreover, going through a slide deck with the arrow keys often makes weird jumps through the slides.
...and I could go on for a while. macOS used to be so far ahead of the curve on the UNIX desktop (and perhaps the desktop in general) that even with all the current deficiencies, macOS is still a reasonable desktop. But it is clear that macOS is now beyond its high point. And if Apple does not lose their 'iOS is the future of the desktop'-blinders, things will only go further downhill.
What makes this even more sour is that Mac prices have gone up a quite a bit. A reasonable MacBook (and not the near-EOL Air) with more than one port and a 256GB SSD starts at 1749 Euro. When I started using a Mac as a student ten years ago, an up-to-date Mac Mini was 500 Euro and a reasonable specced (and upgradable) MacBook was ~1000 Euro.
I think the last Mac Pro and the iMac Pro show the disconnect with their traditional user base. People do not want overpriced works of art. They want a stable macOS. They want an upgradable tower Mac Pro, they want a memory-accessible Mac Mini, they want a MacBook Pro that stops optimizing for thinness but has a larger battery, MagSafe, and perhaps one or two USB 3.0 ports during the transition period.
> they want a MacBook Pro that stops optimizing for thinness but has a larger battery, MagSafe, and perhaps one or two USB 3.0 ports during the transition period.
This is the situation I'm in. I need a new laptop as my MBP (2010) has recently hit the hay, but I'm just putting it off and stalling being of things like this and the massive price increases. Instead of magsafe and useful ports I get touchbar... thanks Apple. Honestly trying to convince myself if I can get by with an alternative laptop with Linux (Windows isn't an option anymore).
I was recently looking at replacing my 13" MacbookPro and comparing laptops that would run Linux. Here are the notes I had in order of most-likely to least likely to choose:
* Dell XPS 13 - camera below screen (looks up your nose, fingers in frame), proprietary battery charger. They recently updated it; replaced SD card reader with microSD, USB 3.0 and power dropped for USB-C
I went with a MacBook Pro because soldered on RAM was standard on most all of them which took the price up within 20-30% of the MacBook Pro. With all of the PC laptops I had concerns about trackpad and general build quality and wasn't confident about battery life or resale value.
Out of the concerns we share I didn't find anything better on the PC side. The Razer Blade Stealth was closest, but with 1 USB-C port that is used for charging isn't reasonable, either. Why would I buy anything with USB-C on it if the only port is already occupied?
It's a sad state of affairs. I use the new MBP with touchbar for work and it's a nice machine except the touchbar and dubious keyboard (I can live with it). I just wish it wasn't so user-hostile and objectively good features like magsafe hadn't disappeared. I've already had my work laptop yanked to the floor multiple times by people because the charging cable is much shorter than previous generations.
I've pretty much been looking at the same list as you but have concerns over build quality / trackpad / random design choices like a webcam pointing up your nose. Not sure what I will do yet, will likely hang on until next refresh and see if there's a new 15mbp without touchbar.
NeXT was never about UNIX, rather about all the other UI/UX.
They only based it on UNIX, because they were going after Sun, and just like Microsoftm, UNIX compatibility was a way to bring software into their world, not to out of it.
Now Apple does not need to use that path any more for their survival nor do they care about servers, what matters are Objective-C and Swift OS APIs, not C ones and very latest version of POSIX CLI utilities.
This is exactly why my MBP has been reduced to a $2700 VNC terminal / web browser / mail client. They screwed up keyboard handling in the built-in VNC client a few releases ago, so it’s failing at the most important of those three use cases.
When it eventually dies, I’ll need a replacement with a decent screen, keyboard and trackpad. Apple used to make those, but not any more.
I’ll probably end up running linux on some well-regarded windows laptop.
What broke about keyboard handling? I use the build-in vnc client often (every other vnc client seems to suck). I have trouble with copy/paste...but that's very common with remote login tools.
I have a newer Mac. I didn't like the keyboard at first and still hear about reliability/repair issues, but going back to the mushy keyboards on an older Mac is weird. What's wrong with Apple's trackpads and screens? Trackpads got larger (and get a lot of rogue input when using Linux/Windows), but work great as ever in macOS.
A personal anecdote: when upgrading my High Sierra to the latest version (security fix to the passwordless root fiasco) macOS automatically made an APFS snapshot of my computer in case something went wrong. This is fine, except the snapshot was never removed.
There was absolutely no documentation on this all happening, let alone any UI indicating it (even in Disk Utility!!!). All I saw initially was ~80GB of space used by mysterious “system files” (according to the system profiler). Except they weren’t files at all, it was all hidden in the file system.
So there was literally no way to diagnose this issue without using poorly documented Apple-proprietary command line utilities. Even fdisk didn’t reveal the issue!
If I, a computer science student, have to spend hours trawling forums to solve what should be a trivial issue, then I don’t know how the hell Apple expects the lowest common denominator to cope.
Apple have been getting worse at producing high quality software, in my opinion. Still Apple delivers higher quality stuff then anyone else, so you don't really have anywhere to go.
I recently got an AppleTV, allowing my to cancel my TV via fiber delivered by my ISP. While I have seen a little weirdness from the AppleTV, is not even close to leave of stupidity seen in the tv-box delivered by my ISP. Apple would pretty much have to send a guy to my house and jam a screwdriver into the AppleTV to hit the low level of quality found in other TV boxes.
From what I’ve heard of Apple TV, it does not compare favorably to a $35 Roku stick.
Point taken about cable tv boxes though. The cable company keeps offering to pay me to put one in my house. I fell for that once. Never again. (It is not worth the closet space or hassle of returning the equipment after a few years.)
Any specifics? I had an older Roku and it was incredibly underpowered, but it did work. Is an AppleTV 6x better? Probably not, but its worked out very well for my needs. With the Roku I wished for a single store to buy/rent tv film I wasn't streaming (I think I mostly used Amazon, but I never have been a fan of their app).
They have literally hundreds of billions of dollars in cash to spend on supporting their products. "Too much to handle" can't explain it. It must be cultural.
Very likely it’s design over function and new features over stability. They need to skip adding whatever their latest “innovation” is for a year and nail down their current systems. These yearly cycles are not giving the teams enough time to qa and bugfix.
It's sad, because I really like their whole infrastructure with iCloud and sync between devices.
I don't know what happened, maybe they just have too many products and operating systems to support.