{"id":47360,"date":"2025-04-09T15:57:01","date_gmt":"2025-04-09T19:57:01","guid":{"rendered":"https:\/\/mjtsai.com\/blog\/?p=47360"},"modified":"2025-04-09T16:02:10","modified_gmt":"2025-04-09T20:02:10","slug":"soured","status":"publish","type":"post","link":"https:\/\/mjtsai.com\/blog\/2025\/04\/09\/soured\/","title":{"rendered":"Soured"},"content":{"rendered":"<p><a href=\"https:\/\/www.magiclasso.co\/insights\/apple-development\/\">Matthew Bickham<\/a> (<a href=\"https:\/\/news.ycombinator.com\/item?id=43540096\">Hacker News<\/a>):<\/p>\n<blockquote cite=\"https:\/\/www.magiclasso.co\/insights\/apple-development\/\">\n<p>Once upon a time, developing for Apple was an exciting, rewarding challenge. Apple built world-class hardware and software, and developers created incredible apps that made those devices indispensable. It was a win-win. But in 2025, that relationship has soured.<\/p>\n<p>[&#8230;]<\/p>\n<p>Sure, they&rsquo;ll pay lip service to developers. But as in any relationship, don&rsquo;t listen to the loving words of the perpetrator, instead observe their hurtful actions. Apple has continually created an environment and policies, along with nurturing a culture, that is detrimental and harmful to developers.<\/p>\n<p>[&#8230;]<\/p>\n<p>Developing for Apple isn&rsquo;t just about writing great code &mdash; it&rsquo;s about navigating a bureaucratic obstacle course filled with red tape, secret handshakes, and hidden pitfalls.<\/p>\n<p>[&#8230;]<\/p>\n<p>Now from experience, I know there is a limit on the number of rules that can be loaded. This isn&rsquo;t documented anywhere. You are just meant to know the limit. [&#8230;] Unfortunately &#x2013; and what isn&rsquo;t documented anywhere &#x2013; is that although you can load that many rules, you are unlikely to actually be able to do so. There is also a hard, undocumented, memory limit on the extension process that loads the rules. A memory limit that kills the extension and means the app doesn&rsquo;t work if it&rsquo;s exceeded. A memory limit that isn&rsquo;t documented, isn&rsquo;t defined and isn&rsquo;t known until you spend weeks trying to determine why your app is not working. An undocumented memory limit that is also different across iOS and macOS.<\/p>\n<\/blockquote>\n\n<p>He also talks about the annual release cycle and API churn. There are certainly other prioritization and management issues, e.g. with Radar, documentation, and the elevation of &ldquo;security&rdquo; over all else, but so many problems come down to the schedule. Apple is trying to do too much too quickly. Major changes are snuck in months after the beta cycle began. Remember when &ldquo;beta&rdquo; used to mean that it was feature-complete and had already been extensively tested internally? And, of course, they ship stuff that&rsquo;s immature (doesn&rsquo;t work, has bugs or obvious design flaws, isn&rsquo;t documented, etc.).<\/p>\n\n<p>In theory, the release interval is arbitrary and not determinative: an annual schedule could be fine if the releases were smaller. But this is not what Apple has been doing. And, recently, they&rsquo;ve made it worse by announcing stuff that they <em>know<\/em> won&rsquo;t ship in the 0.0 release. This is spun as clever planning to deliver new delights throughout the year. But it seems more like a cope for squeezing more into the major release than they should. And the reality is that it means introducing whole new APIs and breakage in the <a href=\"https:\/\/mjtsai.com\/blog\/2025\/03\/31\/macos-15-4\/\">0.4<\/a> <a href=\"https:\/\/mjtsai.com\/blog\/2025\/03\/31\/ios-18-4-and-ipados-18-4\/\">release<\/a>. We no longer get a stable version before the next cycle begins.<\/p>\n\n<p>The outward manifestation of all this is reduced quality. What&rsquo;s less seen is that this bad process ultimately wastes time for everyone involved. If Apple ships something with known issues or issues that could have been caught internally, that generates work for external developers. They have to test and file bugs and develop workarounds because there&rsquo;s no longer an expectation that bugs will be fixed before release to customers. Apple then has to process these bug reports, which it clearly doesn&rsquo;t have time to do before shipping. As a bug gets out to more people, customers encounter it, which wastes their time and generates more support load and bug reporting for developers and more bug reports and AppleCare calls for Apple. So much of this could have been eliminated by catching problems earlier in the process. But, hey, technically they did hit the schedule.<\/p>\n\n<p>Ironically, Apple does understand this at the micro level. They continue to make improvements to Xcode&rsquo;s automated testing support. And Swift is all about catching problems early. Before you get to <em>runtime<\/em> testing, let&rsquo;s block you from even <em>compiling<\/em> code with these potential errors. Let&rsquo;s restrict what you can do in the interest of being able to <a href=\"https:\/\/mastodon.social\/@caseyliss\/114304343646106876\">prove<\/a> to the compiler that it&rsquo;s correct. And if a bug does make it through testing and to a user&rsquo;s device, <a href=\"https:\/\/en.wikipedia.org\/wiki\/Fail-fast_system\">fail<\/a> <a href=\"https:\/\/mjtsai.com\/blog\/2024\/10\/01\/swift-concurrency-and-objective-c\/\">fast<\/a>. Yet at the macro level, Apple&rsquo;s software strategy seems to be the opposite. Ship first, catch later, move fast and break things, just <a href=\"https:\/\/tvtropes.org\/pmwiki\/pmwiki.php\/Main\/FixItInPost\">fix it in post<\/a> (or <a href=\"https:\/\/mjtsai.com\/blog\/2019\/10\/11\/mail-data-loss-in-macos-10-15\/\">not<\/a>).<\/p>\n\n<p><a href=\"https:\/\/x.com\/ScooterComputer\/status\/1909730180282957903\">Scott<\/a>:<\/p>\n<blockquote cite=\"https:\/\/x.com\/ScooterComputer\/status\/1909730180282957903\">\n<p>Just had a thought: given rumored iPhone 17 designs which are&mdash;quite simply&mdash;not all that compelling, that the M4 has made it Mac-wide (excepting the Mac Pro), and the tariff situation, now would be a PERFECT TIME for Apple to announce a 1 year &lsquo;pause&rsquo; (of sorts) on OSes, &lsquo;SNOW&rsquo;!<\/p>\n<p>[&#8230;]<\/p>\n<p>Could announce at WWDC that they&rsquo;re extending development on i|PadOS 18 and macOS 15 another 12 months; squashing bugs, solidifying features, not dropping any additional Intel Macs or iPhones, and eventually, finally, really bringing promised Apple Intelligence\/Siri features.<\/p>\n<\/blockquote>\n\n<p>Previously:<\/p>\n<ul>\n<li><a href=\"https:\/\/mjtsai.com\/blog\/2025\/04\/08\/locked-out-of-apple-developer-accounts\/\">Locked Out of Apple Developer Accounts<\/a><\/li>\n<li><a href=\"https:\/\/mjtsai.com\/blog\/2025\/04\/01\/xcode-16-3\/\">Xcode 16.3<\/a><\/li>\n<li><a href=\"https:\/\/mjtsai.com\/blog\/2025\/03\/31\/ios-18-4-and-ipados-18-4\/\">iOS 18.4 and iPadOS 18.4<\/a><\/li>\n<li><a href=\"https:\/\/mjtsai.com\/blog\/2025\/03\/31\/macos-15-4\/\">macOS 15.4<\/a><\/li>\n<li><a href=\"https:\/\/mjtsai.com\/blog\/2025\/03\/28\/apple-needs-a-snow-sequoia\/\">Apple Needs a Snow Sequoia<\/a><\/li>\n<li><a href=\"https:\/\/mjtsai.com\/blog\/2025\/03\/24\/tim-dont-kill-my-vibe\/\">Tim, Don&rsquo;t Kill My Vibe<\/a><\/li>\n<li><a href=\"https:\/\/mjtsai.com\/blog\/2025\/03\/13\/rotten\/\">Rotten<\/a><\/li>\n<li><a href=\"https:\/\/mjtsai.com\/blog\/2025\/03\/12\/apple-delays-more-personalized-siri-apple-intelligence-features\/\">Apple Delays &ldquo;More Personalized Siri&rdquo; Apple Intelligence Features<\/a><\/li>\n<li><a href=\"https:\/\/mjtsai.com\/blog\/2025\/02\/27\/our-changing-relationship-with-apple\/\">Our Changing Relationship With Apple<\/a><\/li>\n<li><a href=\"https:\/\/mjtsai.com\/blog\/2024\/10\/02\/local-network-privacy-on-sequoia\/\">Local Network Privacy on Sequoia<\/a><\/li>\n<li><a href=\"https:\/\/mjtsai.com\/blog\/2024\/09\/18\/feedback-feedback\/\">Feedback Feedback<\/a><\/li>\n<li><a href=\"https:\/\/mjtsai.com\/blog\/2024\/05\/29\/cloudkit-throttles-and-debugging\/\">CloudKit Throttles and Debugging<\/a><\/li>\n<li><a href=\"https:\/\/mjtsai.com\/blog\/2022\/03\/23\/incentives-in-product-design-and-development\/\">Incentives in Product Design and Development<\/a><\/li>\n<li><a href=\"https:\/\/mjtsai.com\/blog\/2020\/10\/01\/priorities\/\">Priorities<\/a><\/li>\n<li><a href=\"https:\/\/mjtsai.com\/blog\/2020\/06\/19\/have-you-contributed-any-revenue\/\">Have You Contributed Any Revenue?<\/a><\/li>\n<li><a href=\"https:\/\/mjtsai.com\/blog\/2019\/09\/03\/icloud-drive-features-removedpostponed\/\">iCloud Drive Features Removed\/Postponed<\/a><\/li>\n<li><a href=\"https:\/\/mjtsai.com\/blog\/2018\/02\/05\/sandbox-limitation-on-number-of-files-that-can-be-opened\/\">Sandbox Limitation on Number of Files That Can Be Opened<\/a><\/li>\n<\/ul>","protected":false},"excerpt":{"rendered":"<p>Matthew Bickham (Hacker News): Once upon a time, developing for Apple was an exciting, rewarding challenge. Apple built world-class hardware and software, and developers created incredible apps that made those devices indispensable. It was a win-win. But in 2025, that relationship has soured. [&#8230;] Sure, they&rsquo;ll pay lip service to developers. But as in any [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"apple_news_api_created_at":"2025-04-09T19:57:03Z","apple_news_api_id":"fbeeecb4-1e7c-4ea2-a2e3-db9e0dfb1d58","apple_news_api_modified_at":"2025-04-09T20:02:13Z","apple_news_api_revision":"AAAAAAAAAAAAAAAAAAAAAA==","apple_news_api_share_url":"https:\/\/apple.news\/A--7stB58TqKi49ueDfsdWA","apple_news_coverimage":0,"apple_news_coverimage_caption":"","apple_news_is_hidden":false,"apple_news_is_paid":false,"apple_news_is_preview":false,"apple_news_is_sponsored":false,"apple_news_maturity_rating":"","apple_news_metadata":"\"\"","apple_news_pullquote":"","apple_news_pullquote_position":"","apple_news_slug":"","apple_news_sections":"\"\"","apple_news_suppress_video_url":false,"apple_news_use_image_component":false,"footnotes":""},"categories":[4],"tags":[91,1143,164,31,2586,30,2598,2118,71,2109,2246],"class_list":["post-47360","post","type-post","status-publish","format-standard","hentry","category-programming-category","tag-appstore","tag-apple-software-quality","tag-documentation","tag-ios","tag-ios-18","tag-mac","tag-macos-15-sequoia","tag-magic-lasso-adblock","tag-programming","tag-radar-and-feedback-assistant","tag-safari-extensions"],"apple_news_notices":[],"_links":{"self":[{"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/posts\/47360","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/comments?post=47360"}],"version-history":[{"count":2,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/posts\/47360\/revisions"}],"predecessor-version":[{"id":47367,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/posts\/47360\/revisions\/47367"}],"wp:attachment":[{"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/media?parent=47360"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/categories?post=47360"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/tags?post=47360"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}