Apple says they're removing my game because it's more than 2 years old
twitter.com
twitter.com
The number is about 20 or so games that have been removed by Apple because they hadn't been updated in two years. The worked perfectly fine on all the new hardware/software and even work today.
On top of that, I know that there is another 30 or so apps I was involved in with clients that have also been removed.
These weren't the biggest apps/games in the world, but they were all high quality finished products that had nothing wrong with them. Its just the cost of re-publishing each one out-weighed the return, so I didn't have much of a choice sadly. I do have plans to re-publish some of them, however they have to take a back seat for current work.
All that to say, I have a large part of my portfolio of work that is no longer available to the public, which just sucks.
But usually after a few years Xcode will bitch at you about a lot of stuff, so maybe you raise the minimum OS version requirement, click "Fix it" on a lot of API respellings, find a couple that it can't automatically fix so you have to google that a bit. Then test and upload.
Maybe get in a fight with Xcode over your signing keys.
Sometimes something you were using gets deprecated and you have to use the newer replacement. That takes some coding.
It can get ugly if the 'owner' in the app store is not you or is an entity you no longer control. Then you have to get them involved to do the chain of trust signing.
If you produced it under contract, you may not be legally allowed to update it without a new contract.
␃
¹ do your testing is easy to say, but that could take an arbitrarily long time depending on how thorough you are. I expect this to be the dominant cost for most game updates.
² I pulled out one of my aging apps and just did all this to check, 10 minutes from "checkout" to "installed in TestFlight". The dreaded App Store review was 3 minutes. This isn't really a fair data point though, Xcode didn't suggest any source code changes so it was just bumping numbers and rebuilding.
There are many dependancies that require some kind of reimplementation, it's a pain.
I have made things easier (in the long run) with my last game. I wrote it all in c++ with all dependancies under my control. I was thinking >20 years ahead for that one.
Xcode, I use Xcode for the most part and visual studio for the Steam version.
It took way longer to create than if I was using Unity, but its a great solution for a small and performant end product. I was able to get Kanso down below 100MB and will run on a total potato. Something I highly doubt I could do in Unity without some serious effort.
You missed one step: buy a new mac because the current version of xcode will not run on your old one.
It can become quite the rabbit hole, and thus quite costly.
It's a real cultural loss.
Meanwhile, the Wii’s web browser supported Flash, and the Wii is a lot less powerful than an iPhone.
The first iPhone that came out with those spec’s was in 2011.
- Android itself really sucked at this point in time.
- Android and iOS in 2010 couldn’t run complex web apps either without chugging. It really had to be native code to perform well.
Cross platform frameworks like the initial poster alluded to always suck compared to native purpose built frameworks.
We see that today with Electron - a battery killing, memory inefficient, platform.
Flash on the Wii, as I recall, worked well mostly for flash games that were designed with the Wii in mind, and for very simple interstitials. Anything more complex did not work well.
I think Adobe could have done something similar on the iPhone. I don't know that it would have been what people wanted, and I think it would have exposed some of the iPhone's hardware limitations to users.
Mostly though, I think Flash was a heck of a lot better than what we have today with overly-complicated webapps and Electron, as you referenced. That's the point I was trying to make—we've ended up with something even less efficient than Flash ever was!
Of course the iPhone hardware had limitations at the time. The iPhone OS was very optimized around its known limitations and it aggressively killed apps from running that drained battery life or used too much memory (and it still does).
Native iOS apps are very efficient. Now the thought of running apps in a Java virtual machine on a phone in 2008 like Android did wasn’t a great idea. The best thing that Apple did was help rid the world of Flash.
For a solo / indie shop, you have limited time.
Every time macOS/Xcode/iOS updates, some of the iOS APIs are deprecated in favor of "the new better way of doing things". You have to keep up, or else your old apps stop compiling at some point.
And then you go through review and they may reject your app because you get an inept reviewer who has a bad day.
Guess this ‘remove all the great apps that don’t need to be updated’ strategy is going to backfire.
Of course the best strategy would be to just don't do this at all. I find it offensive that a single company can decide on a whim to erase my perfectly fine software from history, because it's "ancient" in their opinion (two years old).
I still have a few crap apps on my phone that look zoomed in because the author never bothered to update them for HiDPI devices - that was half a decade ago.
If your app doesn't account for a notched display, or a retina screen, or multi-tasking or whatever, then there's nothing Apple can do aside from run it as it used to run on older hardware, without supporting the new features.
I'd turn the question around. Why wouldn't an Apple customer who buys a product expect it to be up to date, well-maintained, and reflect current best practices in security and privacy?
Saying that it's not convenient for the developer isn't a great answer to that question.
It isn't infeasible that some servers in a well-sited data center could survive. It'd take a lot of careful work to extract the data, but the potential wealth of information from a dump of, say, Wikipedia or any news archive would be massive compared to what previous lost societies left us.
Of course, it's equally possible all that survives is the logs of 4chan or Instagram or something equally embarrassing. What works future society think of us then?
But those won't survive, the simple reason being that the people running them now are making continuous changes to them now and there is no guarantee that those changes preserve whatever information future archaeologists will find of value (which we can't really know now).
And this is true for much simpler mediums than software as well. Take film for example. For film printed on celluloid, all you need is for a good copy of each reel of each film to survive and you've got pretty much a guarantee that this piece of culture will be preserved somehow. Nowadays films are digital thingamajigs rather than celluloid artefacts and the institutions tasked with looking after that digital cultural heritage go about it with an editorializing rather than archival mindset. (e.g. taxpayer-funded BBC removed an old episode of Fawlty Towers, itself a taxpayer-funded BBC production, from their streaming platform for being racist after the George Floyd incident [1]).
Besides: With virtualization and the various forms of infrastructure abstraction in combination with encryption-based security models, even a hypothetical scenario where all human life ceases to exist but all servers somehow survive on the bare metal layer would probably fail to preserve our digitual cultural artefacts.
Hard disks owned by private individuals with a "digital hoarder" mindset would probably make for a more useful archaeological find than servers.
Given the state of the world I recently looked into this: https://www.kiwix.org/en/
It takes 87 GB and a single click to create a local Wikipedia with pictures included. That software also has support for downloading data from a vast array of other sources as well.
Just read up on that and am shaking my head in disbelief about the fragility of, well, everything really. Technology, emotions, interpretations, a general sense of having to pre-emptively react to anything and everything. Even at the time of creation, Basil Fawlty was a caricature of a deeply despicable man and other characters equally so. Best leave it to John Cleese himself to sum it up:
> Cleese spoke against the removal of the episode due to the Major's use of racial slurs: "The Major was an old fossil left over from decades before. We were not supporting his views, we were making fun of them. If they can't see that, if people are too stupid to see that, what can one say?"
Yet throughout the story Huck runs into all sorts of people who are mostly acting like great people on the outside, yet invariably turn out to be horrible people on the inside (even including Huck himself). The one exception is Jim who actually ends up being a selfless and good person, inside out, from the start to the end.
The whole story is a reminder that what people pretend to be, and what they are - often have a rather strong disconnect. That many schools have successfully banned the book from the classroom because of the pejorative used, is perhaps one of the clearest reflections of the state of contemporary education. It'd be like if Germany had chosen to ban Schindler's List because the lead character is a Nazi.
Long-term digital storage is a somewhat tricky problem since all of our storage media lose their information over time if left lying about (usually on the order of decades) and require quite careful conditions for preservation. This is true in some sense for a lot of historical artefacts ranging from clay tablets to dinosaur bones to vellum, but getting useful information from half a clay tablet is still quite easy, whereas getting useful information from a broken digital media is a very hard – or even impossible – problem even today. In several thousand years your digital medium will need to be in a very good condition or its useless.
It’s doubly ironic because the ones that lasted were the ones that accidentally got turned into bricks when they were in fires.
Not to mention that a video is no replacement for an interactive game.
Not just youtube but soooo much content has come and gone. Its a total shame and travesty that so much wonderful content has been lost for so many different reasons.
Then they can never be removed.
Very curious as we’re building an iOS/Android platform for HTML5 games. Would love to help save some of these great iOS games being removed by Apple.
Meanwhile, games like Pocket God have not been updated for 7 years now: https://apps.apple.com/us/app/pocket-god/id301387274
Another example from someone else:
"That literally happened to us. Boss wants to change our iOS game icon. Changing icon requires a new build. A new build requires iPhone X support. iPhone X build target requires Xcode 9. Xcode 9 requires macOS 10.12. OS update breaks old Unity3D. Upgrading Unity breaks build."
That sounds like a valid reason to require you to submit a new build. it came out in 2017 and most iPhones follow that build style now.
> "That literally happened to us. Boss wants to change our iOS game icon. Changing icon requires a new build. A new build requires iPhone X support. iPhone X build target requires Xcode 9. Xcode 9 requires macOS 10.12. OS update breaks old Unity3D. Upgrading Unity breaks build."
* Apple requires you add support to new devices to push a new build. (this is the principal policy decision).
* This new support requires you build with new tools (Xcode 9)
* New tools require newer MacOS.
* Newer MacOS doesn't compile old Unity3D code.
* New Unity doesn't work with their codebase.
#1 is a policy decision, and solely Apple's choice. #2, #3 are (reasonable) technical pain owned by Apple's ecosystem. #4 is an annoyance that's mostly Apple's fault but is shared somewhat by Unity. #5 is "Unity's fault" for imperfect backward compatibility.
> * Apple requires you add support to new devices to push a new build. (this is the principal policy decision).
Doesn't the original, old app run unmodified on new devices anyway?
Only in an ugly fashion because of different aspect ratio & notch.
Apple required you to at least nominally support the iPhone X to push a new update to an app.
1: Native appearance on new devices is solely to prevent them from looking bad on a user's new device. Presumably the user would rather have their apps work, but Apple wants the appearance.
2: Apple only ships new SDKs with new Xcodes and new Xcodes can't run old SDKs. This is strictly a technical policy to limit Apple's development effort. People have been able to extract old SDKs from old Xcodes to run in the new version but that's become harder and harder over the years.
3. Another technical policy, this time with many parts. Apple starts a new Xcode version's life supporting the current and future macOS versions, but then removes support for what is then the previous version at some point. This lets them remove compatibility code but cuts OS support in the middle of a major version cycle. Additionally, Apple seems to be dropping arbitrary hardware support in macOS over the last few years, so many developers can't upgrade to the latest OS at all.
I basically said that.
You echo the way I distinguished things: #2 and #3 are limitations on what Apple chooses to support (for somewhat reasonable technical reasons). I suppose you could call them "technical policy". #1 is a deliberate marketing choice to leverage the App Store to make developers improve support for new devices.
Even currently I don’t allow Visual Studio Mac to update after I learned the hard way that the new version needs new Xcode, which needs new macOS which isn’t even available on my computer.
(I only recovered a working setup using Time Machine.)
so the existing build doesn't support iphone X? Isn't this a good reason for apple to push your app out because they want all their apps to support their latest phones?
Also, "unlisting" such apps would be better than removing them entirely, particularly since we have no alternative way of distribution.
You might be thinking about the fact that users who have previously downloaded the app will still be able to do so.
The market right now is absolutely flooded with indie games, some light pruning is probably for the best.
If you say something like “apps that are recently updated and using all of the latest APIs should be ranked higher within Apple’s search algorithm and recommendations”, that would make quite a bit of sense to me as an incentive to keep development and progress moving forward with all of the updated tech.
But it makes no sense to force devs to expend the effort to recompile and update an App just for the sake of staying on a store if everything is already working perfectly as intended with no security issues. This is especially a crap deal for small developers without endless resources to continuously be working on rebuilding and retooling projects just for the sake of Apple’s inability to do search and discovery well.
And then, I dunno, decide you are not going to upgrade because you don’t want devices in your house to be expensive bricks.
No it hasn't. They can rebuild without improving anything.
Sure, but realistically how does Apple tell perfectly fine apps apart from apps that are abandoned and do have security issues?
Hand-auditing every app doesn't seem realistic. I doubt a good automated solution is either.
They could just take developers' word for it, but Apple has a responsibility to protect end users. If you tell a developer, "your answer to our next question determines whether we remove your app", then you can't count on them to answer honestly because you gave them an enormous incentive to lie.
Not to mention, the more apps with an inch-thick layer of dust there are on the App Store, the more they become trapped in the same kind of backwards compatibility mire that Microsoft is now stuck in. They could just hide apps that don’t run on newer versions of iOS I suppose, but with the extremely high system upgrade rate of iOS users that’s practically the same as removing them from the store.
How is the age of the app relevant?
That would make ongoing maintenance more expensive for games than for other apps. Maybe Apple should honor that and allow more slack for games.
No one opened your app in 2 years? It gets the boot.
If an app is still actively being used, removing it hurts developers and users!
I have apps on my Android phone that haven't been updated in years. They work just fine.
Heck on my MacBook I use an app that wad last updated in 2016 or so, and I consider it a vital pri0 part of my daily workflow!
[1] https://boisefoundry.com/scam-apps-on-apples-macos-app-store...
Kicking them off the only store on a closed platform is erasure of artistic history. It's doubly insulting when they still work perfectly without modification.
For comparison: I've never heard of a game getting kicked off of a console's store because of a "lack of updates". The stores themselves usually shut down eventually - which is its own problem - but at least there's a reasonable business argument for why the company can't be expected to offer that service indefinitely.
It's a good thing I don't care for online gaming!
There are plenty of old 32 but apps that are “unavailable” in the App Store that are still available to older devices. Apple explicitly said that the authors app would still be available to people who already owned it.
Too much backwards compatibility is as bad as too little.
(Windows user on and off from win 3.1 to 8)
By arbitrarily removing perfectly working older games? This is why indie devs such as Vlambeer that used to make quality mobile games now avoid ios and android like the plague.
https://variety.com/2019/gaming/features/android-ios-apple-g...
The result of this is mobile games require significantly more upkeep then games on PC or consoles, and as a result the only games that are profitable in the long run are those that exploit their users with f2p microtransactions.
The end result of this is the sea of uninspired exploitative trash that makes up the games market on ios and android.
Software is an ongoing commitment and periodic recompiles and fixes should factor into architecture and planning. Some decisions early on can save you a lot of pain. For instance, building your app with stock UI widgets to the greatest extent possible and limiting custom widgets and third party stuff to a minimum goes a LONG way for making your apps weather new OS versions better. These days my UIKit apps only need a handful of minor changes when a new OS version is released, making them trivial to maintain.
Choosing Unity was a big part of the problem in this case because Unity is terrible about maintaining particular versions of their engines over time. Devs need to start dumping Unity over this, because it’s the only way that Unity is ever going to fix it.
You can on Windows. Microsoft has shown us what a three decades of maintaining an OS to that standard will do to a platform and its software ecosystem. There are definitely pros and cons to taking that approach. These days, as a user I'd much rather have decent emulators of older platforms and operating systems, rather than rely on the current OS to be completely and forever backwards compatible. But that doesn't seem like a good solution for mobile platforms or their app stores.
https://developers.redhat.com/blog/2019/08/01/how-the-gnu-c-...
I have linux binaries from 2001 that still work fine on recent Linux kernels.
If they link against libstdc++, Qt or Python, good luck...
You could “hack” a Windows server running IIS just by encoding DOS commands in the URL bar.
http://cd.textfiles.com/hmatrix/Tutorials/hTut_0239.htm
Also, by Apple eventually abandoning backwards compatibility, it was able to migrate Macs to different better processors four times.
By abandoning 32 bit software support, it was able to save space on its processors.
68k -> PPC actually did not break backwards compatibility at all. They realized it they had to make it good for the transition to work, so they built emulation right into the OS. A well-behaved app made for a 1984 Mac will run unmodified on the last version of old Mac OS, and on Mac OS X up to 10.4 under the Classic environment, that's over 20 years of compatibility. Apple could have maintained this level of compatibility until today, but they choose not to.
Apple couldn’t maintain 32 bit app support with newer processors without wasting die space.
According to Raymond Chen (author of “The Old New Thing”) there was literally code scattered all through Windows of the affect:
if app == “SimCity 2000” then doCompatibilityHack()Almost no one else seems to care, but I am too stubborn and lazy to do it any other way.
Auugghh! This is the wrongest thing I’ve read on HN since 2021 COVID threads. Sorry you get the distinction!
Software absolutely should keep working as it did the first day it was released. The binary is the same, no cosmic rays have flipped any bits, so why should it stop executing exactly the same, but for a deliberate choice made by the platform to break backwards compatibility?
This idea that software should have to get recompiled over and over with the latest SDK simply to keep doing the same thing is maybe the worst idea ever thought of in software: and Apple leads the charge.
And Apple ecosystem is rapidly changing. OSes are changing every year. Phones get reiterated every year. 2 years of no updates mean 2 cycles behind. And Apple is very good with pushing updates on the users.
And to be technically correct - both software on the tape brought to Mars and removed games will work in the same hardware and running context exactly the same. But for Mars context made it not runnable anymore and for Apple we’re talking about taking it down from storefront (but all existing customers can still get it).
I’d recommend checking Emacs - Elisp is very stable and some code is working well for decades and yet with all the carefulness of the developers some thing breaks due to API changes.
[0] https://media.handmade-seattle.com/self-hosted-conference/
If the argument is that OS vendors should include virtualized old OS environments for compatibility with old binaries to make sure OS development remains unencumbered, I could get behind that, but in that situation App Store listings of seldom updated apps should include a highly visible indicator that it’s been many years since the last update and as such expectations of significant bug fixes and support should be tempered.
As if that was the concern there at all. Most people who publish free games consider them "art", not "business model".
But even more recently, there were deprecated APIs that eventually Apple stopped supporting.
Have you read “The Old New Thing” Microsoft blog? There are all sort of special case hacks in Windows just to keep one version of one third party app running.
Should Apple also have kept shipping its 68K emulator from 1994 in its 2022 ARM Macs?
https://android-developers.googleblog.com/2022/04/expanding-...
It sucks, but this is what happens when platform vendors don't want to play the Microsoft's card of backwards compatibility to keep old applications going.
Also a way to force adoption of new APIs, even if they are irrelevant for many applications.
> Do you want to install an update to this existing application? Your existing data will not be lost.
Of course, you have to allow the third party app to initiate installs to begin with the very first time you try to install from that app, but that's not much worse, really (screenshots at [1]).
This seems pretty clear cut to me, and less scary than the disclaimers in open source software on Windows.
Now, if your app wants to modify system settings, access non-media files, etc...well, it's still not scary, really; for system settings changes, the OS will pop up a prompt similar to that for installing the app, while for accessibility and other permissions most apps will directly open the appropriate section of settings where all you have to do is approve the app. I think the warning on enabling a new keyboard is scarier, tbh.
[0]: https://gist.github.com/Efreak/b754063c18c8749aa339baffeab9f...
[1]: https://gist.github.com/Efreak/b754063c18c8749aa339baffeab9f... and https://gist.github.com/Efreak/b754063c18c8749aa339baffeab9f...
I have an objective-c app that is as old as the AppStore and I haven't updated it for 8 years [1], Apple even updated it once themselves somehow to support iOS 11.
Another of my apps was removed with a similar vague explanation as the OP got and it was written using Swift [2].
While I understand that they might want to drop support for old runtimes the 30-day deadline is ridiculous. And if you miss it you need to re-submit the app and lose your ratings etc.
I made nowhere near enough in the ~2 year period my app was available to justify spending the effort to modernize the project so I just let them remove it...
[1]: https://apps.apple.com/us/app/seismometer/id288966259 [2]: https://github.com/jnordberg/triggy
If Apple had its way with everything, we'd probably all have to buy new appliances and rewire/rebuild our houses every few years because nothing would be compatible with anything older. Do not want.
How is this forcrd obolescense? This has 0 impact on those who already have the software downloaded onto their device.
It's worth noting that Google do the same thing on the play store.
It seems your issue is less about the facts of the matter at hand, and more broadly a dislike of Apple.
I have games in AppStore not updated for many years. They work well on all devices, I also consider them to be a piece of art. And feedback is very positive!
Getting anxious that Apple will pull it.
Releasing a new version sounds easy, but it's a significant time effort (chain of dependencies, build environments and game engines are complex) with 0 value to anyone - because it is perfect and a piece of art.
Why don't they have better options for discovery, rather than saying "old is bad".
I have comments from people saying my game is their favorite childhood game and they have they have fond memories and stuff - and they are happy to play it now once in a while even.
Apple logic makes zero sense, it's like destroying books or paintings and stuff.
Paintings have to be restored, books have to be reprinted.
If your art is so cherished to you and other people then surely that should give you even more motivation to spend time ensuring that it is preserved into the future, no?
This is actually because the author doesn't want to do small labor, not because people are being silenced or murdered
If majority of games won't be around in 10-20 years, then it's a pretty good analogy of the parent post.
The phrase "small labor" has a legal meaning. This is not a colloquial attempt to describe the workload as small.
However, also, as an author of unity iOS software who's gone through this, I do think the amount of labor being described here is pretty over the top.
Even in an extreme case I would only expect dep upgrades to take a couple days.
I've read the many comments, thanks. It's just that I don't really agree with them.
As both a developer who's been through this, and as a user, like many other people in this comment thread, I agree with this policy. I believe that abandonware doesn't really belong in store. It makes it much harder for me to use my phone, that every time I want to do task X, I can't find an app for ten minutes because I'm digging through all the shovelware.
I also don't see any moral imperative to keep games available, frankly. To me it seems like insisting that every board game ever printed should still be on sale somewhere.
I think that if people feel the need to compare this to murder and political oppression, they're kind of ceding that if they describe it correctly, nobody's going to be angry.
In general, I treat invalid comparisons to war crimes as a warning sign, internally.
.
> If majority of games won't be around in 10-20 years, then it's a pretty good analogy of the parent post.
This has always been the case with computer games.
Try to dig up some 2600 or Colecovision games. I'll wait.
The author will eventually die, and then their work will either be modified without their oversight or deleted from the archives.
As the quote says, the problem extends beyond just video games.
What things against content guidelines should still be in store? That story does not make sense
Oh no, a store doesn't carry a video game for all eternity, past an author's death? Oh no. Since Apple is the country's archivist, the phone store should probably carry every single app ever written for all time. Screw the user experience, Apple's obligation is to the author of Lizard Pong
There is no problem
I have never seen a perfect app or a piece of art in the App Store.
Apple isn't running an art gallery, besides. If it's a piece of art, it belongs in MOMA.
I don't understand why everyone's saying "this store can't keep abandoned stuff out because they're capital-A Art."
You know how some guy makes a painting, and he thinks it's really good, so he takes it to a gallery, and they go "we're not interested," and he starts yelling about all the study he did, and it's Art, and how dare they?
They're running a business, dude, and almost everyone who says "I'm making art" isn't
Art is super rare.
I can only think of maybe half a dozen games in all of history that I personally believe have earned that title. Maybe two dozen films, and they've been around a lot longer.
Before you start arguing that everything little Billy makes with fingerpaint is culturally important art, ask yourself one question: where are all the legitimate art museums declaring games art? As far as I know, that list starts and stops with the 2012 Smithsonian exhibit where they let the population vote and then didn't hold anything physical at the building ever.
Have you ever considered that nobody goes to the Library of Congress, for anything? Have you ever considered that cramming the record with every insignificant thought ever thunk might actually be counterproductive?
Are we really so much worse off to be missing one romance poem from Lebanon in the Bronze Age?
Do you genuinely believe that archaeologists, a thousand years from now, will be studying Hotel Mario, Sonic Boom, or Ninjabread Man?
.
"Why don't they have better options for discovery, rather than saying "old is bad"."
They aren't saying "old is bad." They're saying "unmaintained is bad."
.
> Releasing a new version sounds easy, but it's a significant time effort (chain of dependencies, build environments and game engines are complex)
I dunno. One guy got Quake 2 up and running under the browser in Emscripten in three days.
I have a hard time understanding why everyone is acting like pressing the build button can be tragically difficult, but also, their software is perfect art. Being unable to build is a pretty big red flag
I know, I know, "old Unity." That's because it was left unmaintained for years, though.
I lost two apps this way. I think that was the right thing for Apple's users.
I think that Apple should be more focused on the users than the developers.
.
"Apple logic makes zero sense, it's like destroying books or paintings and stuff."
If a bookstore stops selling a book, do you believe the book is destroyed?
If I write a book and only release it on the Kindle, and then five years later Kindle requires PDF instead of ePub, and I don't want to put in the effort to convert, has Amazon somehow harmed me?
Is it relevant that you can un-destroy the game by just recompiling it and pushing a new build?
Is it relevant that you can release your game on other platforms?
I guess I feel like there's a whole lot of misrepresentation happening here.
They're not destroying anything. They're giving you 30 days' notice to show that you're still maintaining the app, and then it stays up.
Which would have been more than enough time... if the app had in fact been maintained.
And which doesn't change the fact that the developer agreement clearly states that apps must stay current and maintain compatibility.
I haven't had any that has weathered the OS changes past a couple of major steps, without having to make some code changes (sometimes, nothing more than just recompiling with the latest toolchains).
I just put out an update to my very first app, which is ten years old, but I have done a few updates, since first releasing it.
I have another app that is about two years old, and it needs a facelift. I don't have the bandwidth to give it said facelift (It still works, but looks like crap). I hope it won't get pulled before I can give it its update. I won't blame Apple, if they do pull it, however (see "looks like crap," above).
I've generally retired most of my apps, when they got long in the tooth.
If you don't want to be informed, then don't do that. But those issues could be real bugs.
For instance, one fine day GCC got the ability to diagnose situations when the indentation of an nested if statement is deceptive compared to the actual precedence of the clauses. So if someone had warnings as errors, and had such a statement, then their build stopped. If that was a real bug, they were grateful.
Often a technical linux user will want to download a source tarball for a particular version of a utility or program, and build it on or for a particular linux distro they're using. They usually do not want ad-hoc modifications done to the source of all the specific utility versions they compile for their system this way.
Sometimes the package maintainers who make binaries for themselves and others don't want to fix bugs. At most some minor build things, but something actually broken is punted upstream.
You may see behaviors like the program being disabled (unavailable) for some platforms because it couldn't build or tests didn't pass. Or the package will stay on the old version of the program: 1.2.3 isn't building, so we just give up for now and stick with packaging 1.2.1. Maybe 1.2.4 will fix it. In these situations, package maintainers will not always contact upstream; the developer doesn't know unless they go into that distro's site and search the issues for activity related to their program.
The solution was to introduce a deprecation message that wasn't technically a warning, and warn about the upcoming depreciation warning.
A clean build looks like this
CC foo.o
CC bar.o
CC parser.o
parser.c:42: warning: new thing found here (-Wnew-thing).
CC lexer.o
...
you hide all the details of the compiler command line so the diagnostics stand out.Warnings-as-errors is just a kind of negotiating hammer that is useful in team situations, when the developers have gotten used to ignoring new warnings, usually because they are hidden among reams of ignored old warnings.
Also, in a compiler that has a GCC-like interface, you can turn specific warnings into errors, which is useful. If there is something you don't tolerate in the code base, and it happens to be diagnosable as a warning, then you can error it.
GCC turns some required ISO diagnostics into mere warnings, like say assignments between incompatible pointer types. That kind of thing may be worth turning into an error.
Boss wants to change our iOS game icon. Changing icon requires a new build. A new build requires iPhone X support. iPhone X build target requires Xcode 9. Xcode 9 requires macOS 10.12. OS update breaks old Unity3D. Upgrading Unity breaks build.
https://twitter.com/aaefiikmnnnr/status/931222777301835782?s...
(I'd argue there's more room for this in non-game software as well, but certainly for games...)
I'm still on Mojave because I'd have to say bye bye to Adobe Fireworks if I upgraded.
It might be time to move on.
Imagine a library of books where every book over 5 years old is burned.
I agree that Apple and other companies are too aggressive about breaking compatibility but it's not the same thing as tried and true physical objects.
Changing icon should not require a new build. A new build should not require iPhone X support. iPhone X build target should not require Xcode 9. Xcode 9 should not require macOS 10.12. OS update should not break old Unity3D. Upgrading Unity should not break builds.
These are all examples of shitty engineering decisions that throw backwards compatibility under the bus for shaky (expedience, mostly) reasons.
https://www.homedepot.com/p/Milwaukee-18-Volt-NiCd-Battery-P...
On iOS, there is no other source. Once Apple removes an app from their store, that's it—unless you bought it already, it's gone forever, no recourse.
Adobe products are sadly required for industry work.
Systems improve over time. Apple's privacy in iOS improved a lot. Not updating your apps makes it hard to keep up with API changes. Its normal you have todo some work to ensure it still works. Sometimes you're out of luck. But not all dependencies stay with us forever. Software is sadly enough not immutable, environment impacts how software runs... My old android game stopped working on newer devices 3 years ago due to a OpenGL bug that was fixed, i depended on the bug in order to make my app work.
Welcome to the real world
Windows software still runs 20 years after in compatibility mode
The only reason WINE works is because of a massive community effort to reimplement those bugs that Windows is forced to keep.
> We’ve updated the App Store Review Guidelines to provide criteria for when apps are required to use Sign in with Apple. Starting today, new apps submitted to the App Store must follow these guidelines. Existing apps and app updates must follow them by April 2020. We’ve also provided new guidelines for using Sign in with Apple on the web and other platforms.
> 4.8 Sign in with Apple Apps that use a third-party or social login service (such as Facebook Login, Google Sign-In, Sign in with Twitter, Sign In with LinkedIn, Login with Amazon, or WeChat Login) to set up or authenticate the user’s primary account with the app must also offer Sign in with Apple as an equivalent option.
- Native Sign in with Apple button not working in Unity
- Official Sign in with Apple plugin provided by Unity also not working
- Hooked up API with help from GitHub and created Sign in with Apple button by myself ended up getting `4.0 Design` rejection without explanation
- Trying crazily to contact Apple reviewer for weeks only to find out you have to use system font on that button
- Unity cannot support new Thai system font after iOS 13 and they mark it won’t fix
- Ended up building a native sample app and screenshot Sign in with Apple button from it in 12 different languages into PNGs and ask the my designer co-worker to remove background for me to import them into Unity
- After all these the update is finally accepted by App Store
- Casually downloaded games by other companies a week later, saw a totally malformed Sign in with Apple button not being nitpicked by reviewer and just went live like thatI always wondered why so many apps support it because it seems like they'd prefer to know your real email, but now it makes sense.
Whereas Microsoft has been basically stuck on x86.
And Microsoft fully supports running x86 applications on ARM Windows[1], as well.
[1] https://docs.microsoft.com/en-us/windows/uwp/porting/apps-on...
Put another way, the raspberry pi runs all but two of the games I played in that era. I can think of 6 iOS games that no longer run, and I played at least 10x as many games on DOS as iOS.
My experience with productivity software has been similar.
They at least change over time. Not all of them improve.
Software is not free once written. You need to expend resources to keep it up to date and secure.
If you aren't keeping things up to date, you are neglecting the maintenance of your application. You wouldn't be surprised if your car stopped working if you never change the oil. Apple is taking proactive actions here, presumably to protect the end user experience. Wether or not I agree with the manner of proactive action is a different issue. We know apple loves to exert tons of control over things like this.
Apple is difficult to work with. It takes maintenance to keep apps up to date. Yes, the two year thing seems a bit over the top but remember the real issue is that this guy can't submit a new build because he hasn't added support for the last two OS versions.
The app store is hard to work with, but they payoff is immense also.
Welcome to the real world.
That being said, I also think your frustrated and typed word salad into the reply box.
I'm not apple. I don't like apple's practices. I don't own any apple devices (beyond what's required to support an iOS app) because I take an issue with the same things you do.
The reality is, if you want to support apple devices, you have to play their game, and that means updating your apps regularly. Sorry if you don't like it. I don't either.
Again, welcome to the real world.
Network connectivity has brought along with it a certain level of toxicity around updates and maintenance and such. At the very least Apple could be shipping older runtimes, downloaded on demand similar to Steam Proton runtimes.
They do, but Apple intentionally harms older systems.
Totally, but that’s not what I’m talking about. We did the move from OpenGL to Metal, for example. It was tough, but it is a huge improvement and we were glad to do it to avoid code rot. I’m talking about how something that we wrote and compiled with the last fully updated IDE a few months ago suddenly stops working in the next release and requires tweaking. This isn’t 20 year old code that we haven’t touched. It’s 20 year old code we’ve been religiously updating the entire time.
The more reasoned part of me says that you're totally wrong and you can boot up Windows and run software from two decades ago and the only real issue will be high dpi support which can be worked around.
There's nothing actually necessary about what Apple is doing in the least. They could even take a soft approach and simply slap a "vintage" tag on old unpatched software and call it a day. There is something profoundly stupid about automatically banning any software more than 2 years old from all Apple devices without even giving users the choice to use that old software. I'm not even saying it's morally wrong, or it's bad for consumers, I'm saying it an incredibly dumb decision. There is SO MUCH niche software out there designed for a tiny audience which nobody will ever be able to afford regularly updating so long as it's still basically working. Trying to maintain this ideal where only well patched up to date software appears on the app store is just dumb.
Throw something like Unity in the mix and now you have even more things to keep up to date.
You can say well that is just nonsense. My app is finished. But is it really? what if you actually need to do a critical bug fix. Or something to be compatible with new hardware?
There is no simple answer here. But one thing I’ve learned is that staying as “standard” as possible is a huge huge advantage. Apples upward path is mostly manageable.
* The iPhone X was released on 2018.
* Xcode 9.0 was released on 2017, and 9.4.1 (last release) on 2018.
* macOS 10.12 was released on 2016.
I'm sorry to say, but this sort of setup does not reflect well on anyone working on the project. Apple's call out should be considered a wakeup call.
Also, doesn't Xcode 9 only support iOS releases up to iOS 11? The global market of all iOS versions lower than iOS 11 should lie in the lower single digits.
These aren't like node updates, these are closer to Firefox removing legacy extensions, except happening quarterly. There's no guarantee that something that is "stable" in your version will work the same way in a newer version. Unfortunately, the engine is tied to specific iOS SDK versions, so in order to use a more recent iOS SDK you're forced to upgrade your unity version alongside it...
To be clear, I’m not talking about having to clean up a few new warnings with a new compiler release. That’s fine and probably a good thing. We really have to have one of our top engineers dive into it for several days to get things in shape. It just seems really weird to me.
Then one day, our startup brought some new employees on, who read the README and ran the indicated Docker command … and it failed with a mysterious bug requiring dev resources to debug! The exact thing you try to avoid by freezing the machine environment.
It turned out that Docker had silently pushed a backward-incompatible change in the format of docker-compose YAML files.
It’s like Office Space, “what would you say it is you do here?”
They don't help at all with kernel API drift, and barely help with libc drift.
You’re saying that using a container — which defines a specific version of an OS — shouldn’t protect against differences between that version and a new OS version? And shouldn’t save any effort whatsoever in reproducing the environment in which I got code working?
The sole purpose is so that I can leave an app configured to talk to port 8000 even though my machine is already using port 8000?
That feels like it falls short of the conventional case for virtualization or containerization.
What does "should" in this context even mean? They don't, because they're not meant to do that. They can be used to shield you from some differences, and for many use cases that subset is all that matters, but they don't and can't shield you from all of them.
You can't rely on containers alone if your goal is to ensure that your app will work on future operating systems. That's not something containers do. They only let you provide your own user space to run in a quasi-isolated environment, no more than that. You're still using the host's kernel which can still screw you up in multitude of ways (which is exactly what I said in my earlier comment), and you're still limited by API guarantees that the tools you use to make containers are providing you.
For example, apache can no longer run with SSL enabled on current synology NAS's docker environments.
One of the main selling points is security. (They don't do much for security, but that sort of thing doesn't matter much to sales).
The most useful feature is they reduce the pain associated having negligently-large build and runtime dependency trees.
They also add a few ulimit style tricks. Think "better than chroot, arguably worse than BSD jails", but with a standardized cross-linux-distro build system (dockerfiles)
I asked for their ostensible justification. A valid answer should not involve making up a justification I never referred to, with the implication I had done so, with you refuting said justification, even if other people proffer said justification.
And the reason that I asked, was because the first reply eye-rolled at the problem I ran into, and then (seriously, as best I can tell) suggested I should have solved it by nesting a VM within the existing VM to control the dependency chain that led to the problem — even though that was what the first VM exists to solve!
To clarify, here is that (dubious) reply again:
> That's not what containerization is about as can be easily demonstrated by simply running your container on a kernel that's built without some config option you rely on.
That is, surrounding the container by a controlled environment would avoid the problem… but I was already controlling the environment by a VM that exists to solve that problem! Hence, (sardonically) wondering what the first one is accomplishing.
> The most useful feature is they reduce the pain associated having negligently-large build and runtime dependency trees.
No, the most useful feature is locking down a machine spec that Just Works. When I have to go and debug things about that machine that suddenly fail, for reasons Docker (not the machine) introduced, I lost the most useful feature.
Sating my desire to have my app point at port 8000 and no other … is way, way down the list.
> and then (seriously, as best I can tell) suggested I should have solved it by nesting a VM within the existing VM
You were the first to suggest anything like that. My answer did not offer any suggestion for solution at all, read it again.
> No, the most useful feature is locking down a machine spec that Just Works.
That's not a feature Docker ever had or intended to have. Seems you have misunderstood something about what containers actually are. They're very explicitly not "virtual machines lite", and it sounds like you want an actual virtual machine instead.
As far as I know, the people making the incorrect claims/assumptions are distinct from the people that built commonly-used containerization software.
If you want to understand what containers are, start with the mental model that it is a chroot with /dev, /sys and /proc mounted, and with processes running with uid=0. Their sandboxing isn't quite that bad, but they are closer to chroot environments (or bsd jails) than a VM. Next, package a few things by writing dockerfiles, then deploy them to a raspberry pi or something.
If you still care, then follow up by reading the kubernetes tutorials.
Edit: This message is directed to SilasX.
Checked, was last updated in 2018: https://apps.apple.com/us/app/super-hexagon/id549027629
^ feels key. as a perpetual old device user it feels like platforms are continuously degrading the value of my hardware with updates, perhaps unintentionally through changes to hardware acceleration, sometimes intentionally like apple's throttling
not surprised developers feel just as squeezed
If Apple is so concerned about customer experience, they can just as well choose not to break existing apps.
The "customer experience" excuse hasn't held water in decades.
Inventing your own false statement so that you can point out how false it is, is an utterly uninteresting approach.
They literally said that. Form factor changes will break apps if devs refuse to update.
Yes, banning such apps is a loss for the customer experience of being able to run such applications, but there are disadvantages, too. For many of those applications, users would be happier _if_ those applications were maintained and adjusted to modern hardware and new OS capabilities.
Now, of course, that’s an _if_. Apple makes a different choice than Microsoft there. They think losing applications isn’t a big problem (presumably as long as replacements exist, but even that isn’t strictly necessary for some tools. The public at large can do without a Kermit program or RSS reader, for example, because it has alternative ways to download files or access news)
2) Even worse, they are forced to live without even though the work was done to create one and they had it yesterday.
This is not all explained my mere inevitable and unavoidable compatibility creep, nor by the sensible goal not to be Microsoft with their mountains of Rube Goldberg code to deal with countless obscure backwards compatibility quirks.
That will make things break eventually, but this an arbitrary and voluntary choice driven by goals other than serving the needs of users as well as possible in trade for their money.
Apple values their appearance and their revenue stream above all else.
Setting aside malware and other demonstrably legitimate security topics, because we aren't talking about apps that are no longer safe to use for some reason, or that are no longer compatible with the OS because of security-related changes in the OS.:
Purging all apps that are "ugly" or have any sort of undesired ux, or that aren't generating income for Apple one way or another, benefits Apple, not the users.
The users would prfectly happily simply not use an app that sucked. If any are using it, then it must be supplying some function that the user wants. Whatever that function is, obviously it matters more to the user than any of the excuses for removing it. It only benefits Apple to purge them, not the user, and it's not a case of "What's good for Apple is good for is good for all Apple users"
I don't claim it's just Apple either. Google increasingly does the same thing, just a bit less.
They move this fast to keep people on their toes - they know that everyone will just have to keep running after them, otherwise you lose a huge part of your userbase.
I assume this isn't as much of a problem for regular apps, but games are finished pieces of art and recompiling them with a new engine version is often unfeasible.
I intend to keep my new MBP for another 8-10 years.
Also if you managed to build, prepare (App Store metadata in different resolutions etc), submit and finally get your app shipped to the end user that was no small feat a couple of years ago. Probably not a very useful skillset to have if you only do it very infrequently (read: waste of time).
Requiring additional screenshots, icon sizes, universal app (iPhone+iPad, also supporting split view), new copy for different types of meta (e.g app sub title) for all the locales you probably had translated externally at some point, new privacy guidelines etc.. all not very attractive to get into even if not forced to update like this, especially if you lose your ratings in the process.
That's not the case anymore, but yes during the first ten years of iOS you had to recompile and resubmit your app to support new screen resolutions.
That was incredibly dumb. Even Android did not do this mistake.
Very curious as we’re building a mobile-focused platform for HTML5 games that make it easy to make your game social. I’d love to help save some of these great iOS games being removed.
¹ I know, it may harm your profit, but...
But the comparison isn’t entirely fair. If you were to compare a game to a concert or a festival, as an “ephemeral cultural performance by a large group of people” you could also argue that a festival lasts for a set number of days, until it’s gone, forever.
https://retrododo.com/best-retro-handhelds/
Software archival is not that hard unless the ecosystem is specifically designed to prevent it.
Source:
N64, GC, Wii, NES, all of their games still run on modern hardware.
Webapps will probably fair pretty well too.
As does Win32, Wine, Proton.
Your choice of stable platforms is actually pretty big in the game world! Pretty much every platform except native mobile!
One of my apps has been in the store for 10 years (Mac & iOS) and I have had to make many updates to keep it fresh. (Adding Retina support to the 3d rendering code and the picture assets, going 64 bit on iOS, dark mode, adding ARM to Mac, replacing deprecated API use, etc, etc.).
These changes are in addition to updates that fixed bugs or added actual new app features and are part of the cost of doing business.
And this assumes there aren't any new issues that need fixing during the maintenance.
> Now I need to dig up my project file, update the Unity version to make sure it meets the App Store requirements, rebuild, retest, resubmit all to get the exact same game in the exact same place it was before.
From my own experience, updating the Unity version tends to not be hassle-free, especially if it's a major version. Updating xcode tends to be a hassle as well, if not outright impossible unless you keep buying new Apple hardware too.
And why is the onus on the developers to update apps just for the sake of updating them? Can things not just be "done" anymore? There doesn't seem to be any specific reasons except "we like fresh updates" provided for why the updates should be done.
If it works, why remove it? Are they running out of space? Are people being fooled by the application somehow?
But there probably isn't an easy way to test whether an app uses them. Aside from literally going through the binary, looking for those calls or something.
>> Updates should be required only when specific apis or
>> features are deprecated and the app in question uses those.
>> But there probably isn't an easy way to test whether an app
>> uses them.
Xcode tells you what deprecated calls you are using every time you do a fresh build. The list varies by which minimum iOS version you state.Xcode also tells you if your project settings need an update, and will do it for you.
You should always be able to do a fresh build, or your app is effectively abandoned.
I can’t wait until Apple is forced to add third party stores.
Maybe they could implement a 20 year policy where it becomes possible for the community to try to fix things that Apple breaks through forced updates.
There is a very clear hierarchy here, and it isn’t “developers first” or even “developers 7th”. Instead, it is: whatever makes an absurdly rich company even richer is A-OK, the “curated experience” will be sure of that.
I updated the most popular one to keep it on the store, and made it much better in the process. It didn't support modern iPads with rounded corners, and I updated some of the menus and fixed a few small but long-standing bugs
In all it was a good thing that something got me to make an effort on keeping my stuff polished. It took about two days, but I ended up with a much cleaner git repo, fixed build issues, and better media and copy for the store presence
As for the other two games? I was happy to let them go. They were beyond my ability to update for modern hardware. I'd rather not have them publicly available than running in some half-assed compatibility mode for modern hardware
I suspect I'm in the minority, but I like being forced to keep my active software actually actively maintained
In college Amazon advertised on campus that you could sell your textbooks, so I did that. Now, years later, they advertise “Sell Your Stuff”—but too bad, in the interim my account was closed without notice and there’s no appeal, and no way to open a new one.
https://twitter.com/lazerwalker/status/1517849201148932096?s...
This is also why the iPad is never going to replace a computer for me. Any productivity ecosystem I create for myself is just going to break after a couple of OS updates.
Maybe the breaking churn in Apple is what brings the novelty seekers, and their money.
Unity and whatever breaking and not running well on older hardware has to do with people buying new hardware. Those are the people who bring the money to the table, which is what you must want a piece of if you have your neck in that toilet bowl.
I just played a “new” Pool & Snooker 2022 game in Apple Arcade and it looks and plays like Pool & Snooker 2012. The copyright says 2012-2022 so I assume the devs just lazily update the name each year and nothing more. Not seeing 10 years of improvement in this. Some of the graphics still don’t even have anti-aliasing…
That’s my paraphrasing of your statements. If the customers are in the garden, you have to go to the garden. That’s easier than building your own.
As an experiment i tried an iphone4. Apple support helped register an account which didnt work any more for multiple reasons, the app store works just fine, you just cant get any software. Clicking on download does dl the apps but then it says you must upgrade your OS.
There is no software!
Developers say they have a version for it but you may not install apple says. What kind of deal is that? Its a good device, it could have all kinds of applications.
iWorks still works on my first gen iPad.
say, what does a video doorbell with a screen cost?
Reducing the functionality to a single thing it would do better as a proverbial alarm clock than my flagship phone where i cant seem to figure out how to kill all sound except from the alarm.
Meanwhile, Apple built their castle in TSMC's kingdom ...
I wonder what is the etiquette for devs in their update notes, when there's no other change except this pulse update? Describe it accurately or slap a generic 'bug fixes' label on?
I can’t help but shake my head when Indie game devs unload these sob stories trying to garner support. If it’s so hard for you then just stop making games.
I often get this whiff of entitlement from indies that we should be supporting them because they are small, often one man operations. Or that because they invested so much time and money building a game, they should deserve to get that back through sales.
But the world doesn’t need more indie game devs, the world needs better games. I doubt a game that hasn’t been updated in 2 years is any good or doesn’t have a million competitor clones by now.
That statement doesn't make any sense whatsoever. Games can be "finished products". Do you also think that movies and songs that haven't been updated aren't good?
There are plenty of games from the 80s, 90s, 2000s that are still selling today, in unmodified form, running via emulators.
And clones are 99.9% pure garbage that don't replace the real thing.
Honestly, I'd rather play the original binary instead of some slapped together port to current unity + xcode. At best, the physics or something are slightly off. At worst, the game has major regressions that were introduced by the latest build.
I'm probably weird, but I like buying consoles toward the end of their lifecycles. That lets me limit myself to the top fraction of a percent of the games released over the last five-ish years, and still have a dozen titles to play.
Or are you claiming that only "games as a service" are good enough, and all "finished product" games should be removed?
If a good app is no longer maintained, this will release space for new enterprising developers to come in and fill.
You're welcome to not publishing your apps on App store.
The other “important” app I lost to the 64-bit transition was Mr. Driller. ;)
Rules for thee, but not for me!
Valve as an example runs steam with their own games, and also with paid community created remakes of their games sold on their same platform, they exemplify what I would expect from Apple, epic, Google, etc.
>1.4.4 Nov 3, 2017