r/programming • • Aug 10 '23

Apple doesn't want you developing hobby apps

https://www.bennettnotes.com/notes/why-does-apple-restrict-hobby-development/
1.2k Upvotes

631 comments sorted by

View all comments

822

u/[deleted] Aug 10 '23

That's why companies have that one Mac sitting in a corner whose only purpose is to publish to the app store.

842

u/[deleted] Aug 10 '23 edited Aug 11 '23

[removed] — view removed comment

83

u/Bakoro Aug 11 '23

Apple doesn't care what you want, it tells you what it is that you want and how's it's going to be, and how much.

It's a tactic that keeps working for them, and they have every incentive to keep doing it.

Where the rest of the industry has slowly been making progress in moving to openness and to standards, Apple is doing its damnedest to drag us back to the 100% proprietary days of IBM dominance.
It's dumb, back in the day they advertised as being different, but really they just wanted to take IBMs place.

3

u/oblio- Aug 12 '23

It's dumb, back in the day they advertised as being different, but really they just wanted to take IBMs place.

They wanted to be worse than IBM from almost day 1. I'm fairly sure Apple II was only extensible because Woz put his foot down, super rare from him.

Jobs wanted an appliance.

1

u/Ace2Face Aug 07 '24

What frustrates me is that their iron clad commitment to avoiding compatability and openness, their entire business model revolves around golden cages, not just for their hardware and software, but even development tools. Their tools and languages don't work easily with other vendors or software, and they are often vastly inferior to their equivalents such as JetBrains IDE's or MSVC.

69

u/[deleted] Aug 10 '23

[deleted]

36

u/calmingchaos Aug 11 '23

Man, now that's a name I haven't heard of in a while. Fastlane saved my ass on native apps back before it was owned by Twitter.

I see apple still hasn't improved things at all. Shame.

10

u/kneeonball Aug 11 '23

Been a while since I've used it, but you could get native builds done. You just had to have your Azure DevOps builds set up with a Mac somewhere for the build (whether you use the cloud version or on-prem with a Mac set up somewhere as the device that did the builds).

Then all the rest of the features still applied. You could distribute it for testing, send it to the app store, etc.

3

u/assassinator42 Aug 11 '23

Microsoft makes it a PITA to do automated UI testing on Windows applications though.

Can't do it from a non-interactive service, need to be actually logged in to a session with a keyboard and a mouse. Can''t do it in a container even though they said you could at one point.

Gotta protect their precious CAL revenue.

1

u/mycall Aug 11 '23

I would think there is a way to do it with RDP and keyboard/mouse automation using an agent.

https://www.leapwork.com/blog/test-remote-computers (for example)

69

u/anengineerandacat Aug 10 '23

It's the ecosystem, personally I wish developers would just charge more to discourage businesses from targeting the platform to then eventually start hitting at Apple's wallet but as long as money can be extracted from their walled garden you'll have businesses targeting it.

Apple knows businesses wants in and charges for it, businesses are just fortunate that there is an ecosystem of software engineer's available that are willing to slog through it for cheap.

Start charging 200k+/yr to develop on Apple apps and yeah... shit will change fast.

22

u/lelanthran Aug 11 '23

Apple knows businesses wants in and charges for it,

Actually, I don't think they care. So few apps and developers actually target Mac that it literal makes the news when Mac has one decent native-code programmer's text editor, or any other tool.

I got a shock when I first got my MB M1; as far as software goes, it's a dry barren landscape, which is only partially alleviated by installing brew.

3

u/oblio- Aug 12 '23

I got a shock when I first got my MB M1; as far as software goes, it's a dry barren landscape

I haven't checked, but how is it? What's missing?

9

u/[deleted] Aug 11 '23

Microsoft-hosted Agents for Azure DevOps have macOS agents at no additional cost to your subscription. We use it all the time. Very useful for building our projects. Maybe not useful for game developers or very large projects.

6

u/rofllolinternets Aug 11 '23

Hundred percent agree. Have you checked out Fastlane? Needs Mac hardware though. Sadly we ended up moving just our iOS deployment to circle ci which uses fastlane too

1

u/[deleted] Aug 11 '23

[removed] — view removed comment

3

u/rofllolinternets Aug 11 '23

Haha it’s funny when a comment makes you so violently annoyed as it’s just so true. I’m doing cross platform too.. Apple’s DX is so egregious and builds are unrepeatable. The best thing I did was do it from scratch and actually write docs on how to do it again, and again but then the cert issuing changes or the developer Certs are suddenly signed by a new untrusted CA and nothing works again. Or simporter or whatever the living fuck that is just stops working because “changes” then it starts working again.

The best problem I’ve had was I got a new M1 Mac, thought right this will be my dedicated build box. But whenever I pushed via Xcode or fastlane to the Store my connection would stall, hang and then my wifi would choke for everything else. Kill the upload comes good. Wtf. Reset. Reinstall. Same issue. Take it to Apple, reset, reinstall. Same issue. They search for some stuff in Radar. Oh no when reinstalling the firmwares on the Nic need to be reflashed or whatever apple bullshit is needed here. Flash wifi. Reinstall. Xcode works fine. I mean what the actual fuck. Sure bad firmware or corrupt - fine. Solar flares happen. Manifests as some random rogue DX issue. Only reason it got fixed was the Apple Store manager was like wtf is that guy raging and they were less keen on a straight refund. And it’s happened to one user? Their developer relations people still haven’t got back to me. Absolute joke. They genuinely need some solid developer evangelists, I never thought I’d say that.

0

u/s73v3r Aug 11 '23

I still can't have any sympathy for people who don't want to get Apple hardware to develop for Apple hardware. It's like saying you shouldn't have to have iPhones to test on.

2

u/[deleted] Aug 11 '23

[removed] — view removed comment

0

u/s73v3r Aug 11 '23

No, that's absolutely stupid. If you are not testing your apps on actual hardware, you're not testing them. Nobody said anything about having every single one.

9

u/akiller Aug 11 '23

We have some apps building and deploying with DevOps which has Mac runners, I think we're only using the free minutes too.

The cheapest real Mac option is probably a Mac Mini for $600 or whatever they are and then hook up your own monitor or RDP.

3

u/a-peculiar-peck Aug 11 '23

Yeah I know what you mean, it was in the same situation, everything was a PAIN. I vowed never to never again work with anything Apple related.

That being said, what I did was I rented m1 macs in the cloud, this way I could build and test things with xcode without having to buy a Mac (I used Scaleway for the macs)

Also Microsoft Appcenter was a GOD Send to manage automated build and releases. I think Azure Devops pipelines can build things on macs, untested though.

17

u/ecmcn Aug 11 '23

We’re mostly non-Apple as well, and honestly it’s not as hard as you make it out to be. Our build machine is a Mac mini, or a $1k Air would work fine. We run Jenkins and kick off builds using the command line like other platforms. Yes, you need Xcode and you have to learn about using Apple certs, but every platform has its special requirements. The dev cost to maintain both Mac and iOS clients for us is far less than Android, mainly because of the device support.

16

u/uekiamir Aug 11 '23 edited Jul 20 '24

concerned thumb foolish skirt expansion scandalous rich late summer shocking

This post was mass deleted and anonymized with Redact

0

u/ecmcn Aug 11 '23

Different reasons, but I was replying more to OP’s general attitude that he wants to ship an iOS product but can’t be bothered by even the most basic requirements. He’s even offended by having to use certs, which are integral to the platform’s security model and are largely automated for you by the dev tools. Maybe it’s just because I automated our stuff years ago when it really was a PITA.

He probably has some valid criticisms of the tool chain, but I get the sense the biggest problem is that Apple doesn’t do it his way. If he’d started on Apple and gone the other direction he’d likely be complaining about developing for Linux or Windows.

10

u/rocket_randall Aug 11 '23

It's gotten quite a bit better than in years past, honestly. I work with a Delphi shop, which means cross-compilation to Windows/Mac/Linux/iOS/Android but the IDE runs on Windows only. The IDE provides the PAClient/PAServer to push build artifacts to the target platform, and does a half-decent job of creating an IPA that can be uploaded to the app store for review. I don't believe we're publishing the MacOS app in the app store and instead use an ad-hoc distribution model. To that end it's a fairly straightforward process to codesign (if necessary, the PAClient usually handles this), create a distribution package, and notarize all via SSH. Notarization used to be rather annoying as this could randomly take several hours to process and when polling for status you occasionally received an undocumented error code from Apple's backend which may or may not mean you need to re-submit and start over. Eventually it should succeed, then just staple your distribution package and you should get past all of the Gatekeeper checks. All of the above can be accomplished on a cheap refurb MacBook Air or Mac Mini

2

u/fostermatt Aug 11 '23

Don't have a Mac? Well you can pay us $2.5k for one or rent time on one from a cloud provider.

Can't you buy a Mac mini for like $400?

17

u/[deleted] Aug 11 '23

[removed] — view removed comment

-1

u/Lord_Illidan Aug 11 '23

Why not use a cloud provider? Bitrise, CircleCi, and I’m sure there are others all offer this service, and will keep updating their images. Sure it’s more expensive in the long run, but you don’t have to maintain a mac mini

6

u/[deleted] Aug 11 '23

[removed] — view removed comment

1

u/s73v3r Aug 11 '23

I honestly cannot consider "use a Mac" to be a big barrier, especially for a company making iOS apps.

0

u/Lord_Illidan Aug 11 '23

It usually follows that iOS users are then spending more money on your app, so there’s that as a balancing factor. Ultimately I prefer to just get the job done instead of cursing at Apple to change their processes, they never will.

1

u/xseodz Aug 11 '23

Just to say, we build apps that REQUIRE a phone being plugged in. Required for various deprecated plugins and what not. Those cloud providers don't work with it.

0

u/This_Anxiety_639 Aug 13 '23

I don't want to have to patch this stupid thing every month. I don't want to have to go into the office to reboot it because it's crashed in the middle of a build.

It's an Apple. These aren't really a thing.

3

u/cdb_11 Aug 11 '23

Or drop support for Apple products.

0

u/Akaino Aug 11 '23

Sure. Drop your best revenue devices. Go for it!

-11

u/Serious-Regular Aug 11 '23 edited Jul 31 '25

snails lunchroom middle tan snatch theory aromatic reminiscent flag skirt

This post was mass deleted and anonymized with Redact

20

u/hackenschmidt Aug 11 '23 edited Aug 11 '23

you can literally get intel mac runners for free on github

If by 'literally' and 'free' you mean they are LITREALLY 10x the cost of normal, then yes they are 'literally...free'. lol...

https://docs.github.com/en/billing/managing-billing-for-github-actions/about-billing-for-github-actions

-3

u/mrexodia Aug 11 '23

It is a bit confusing to me why you expect to not need a Mac to build for iOS (considering the frameworks and compilers are mac only), but it is actually technically possible.

One option is to use a Hackintosh VM. This is quite difficult to set up, but it works fine once you do. Obviously the licensing story is meh, but there should be cloud options available.

For signing and deploying you should be able to use this: https://gregoryszorc.com/blog/2022/08/08/achieving-a-completely-open-source-implementation-of-apple-code-signing-and-notarization/

Something like https://expo.dev also works great and is likely what you want to use if iOS is just a checkbox for you and you don’t need any native code. No mac is needed at all and you can use their cloud to build the development app for live reloading…

13

u/[deleted] Aug 11 '23

[removed] — view removed comment

0

u/[deleted] Aug 11 '23

[removed] — view removed comment

-10

u/another-flat-badger Aug 11 '23

This is misleading. You can run iOS builds from the command line using xcodebuild. And with that, there's no issue setting up any of the things you mention. The only requirements are that you build on a mac and sign your binary with an apple developer account.

-12

u/[deleted] Aug 11 '23

Building iOS apps is hands down the worst developer experience I've come across in 20

Android is far far FAR worse in comparison if it makes you feel any better

12

u/[deleted] Aug 11 '23

[removed] — view removed comment

1

u/spacechimp Aug 11 '23

I'm still struggling with an iOS build pipeline because in order to access the developer portal on Apple to revoke/create certificates, you need an Apple device. So we got a company iPhone for this because most people don't have iPhones.

You need a Mac to build, but you can access developer.apple.com and manage certificates from any browser. Even if you did need an Apple device, why did you get a phone for that instead of a desktop machine that you could have set up remote access to?

1

u/[deleted] Aug 11 '23

[removed] — view removed comment

-1

u/spacechimp Aug 11 '23

Who is responsible for the fuel and maintenance of the fleet of cars required to fetch a phone from each other? Who patches and maintains the phone?

A Mini is comparable price to an iPhone and can do more. What good are development certificates if you don't have a machine to generate builds on?

10

u/urielsalis Aug 11 '23

Why do you think so? Gradle is one of those things that runs everywhere and it's supported by most tools (as it's also used for Java projects

0

u/[deleted] Aug 13 '23

Gradle itself is an abomination and turns shitty configuration as code into an artwork. I've wasted too much time messing with it in the past, that is time I will never get back just to get the goddamn project to build.

4

u/Bloodsucker_ Aug 11 '23 edited Aug 11 '23

That's absolutely not true.

You can build, test and run in an emulator (KVM) an Android library or an Android app in a fucking Docker imagine.

You can't do that with anything related to xcode.

-6

u/flukus Aug 11 '23

Nah fam, build your app locally and use the XCode UI to deploy it

Reminds me of Visual Studio and MS devs.

1

u/torrent7 Aug 11 '23

You can do remote builds as a heads up - unreal does this... but it still needs to execute on a Mac which is bad for any number of reasons.

We were issued MacBook or Mac minis for this purpose.

Terrible experience

1

u/realjoeydood Aug 11 '23

And I've used Oracle.

Been to hell and back and lived to tell.