You find a lot of tutorials on the web, how to install macOS. It is not much harder than to install Ubuntu.
Sure you can mitigate it by not doing updates, having a test machine to receive the updates and verify that it still works, yadda yadda.
I managed CI infrastructures for IOS/Android developers a few years ago and the hoops we had to jump through with xcode / EULA-breaking virtualization, etc was something I'd never experienced before. Hopefully it's different now, but we used to have to run farms of mac minis because we couldn't have jenkins/bamboo trigger more than one xcode test/build run at a time. So we'd have these $1500 mac minis sitting around doing ONE job at a time whilst the Android builds could easily do 1-10 things simultaneously.
Everything felt like Apple was fighting our developer experience. It was even worse for our business model as we developed 3rd party applications for other companies which brought it's own headaches with signing, testflight, getting demo/beta apps to clients before release to app store, etc.
As someone who is interested in OSX testing like this - ie, not arguing with you - would it be possible to have a mac mini use virtualbox with real OSX installations running in parallel?
From what i've heard in this thread, Virtualbox/etc support OSX just fine, on OSX machines. Hypothetically, you could parallel-ize on a single machine via virtualbox, no?
I understand Apple is still making it a PITA though. Not disagreeing, just learning why you were only running a single instance per box. :)
Our initial goal was to have one OSX system running multiple xcode builds/tests. I think at some point we may have gotten it working by having different targets set up but I don't recall the specifics.
Sorry I can't be of more help. We worked with 3-4 other app developers and it seemed like all of us were doing completely different work arounds to reach the same goal. I'd love to know how King or any of the other huge (number of apps) developers deal with these things. It doesn't seem like it's talked about much.
I never sshed into them.
Apple isn't trying to make that way of working easier... they are trying to make life easier for macOS-specific devs. Apple is looking for well integrated applications, and as I'm sure you know, that's really hard to do well cross-platform as you often end up coding to the lowest-common interface.
Again, that's from the Apple point of view...
You're right - they did have a Java-Cocoa bridge early in OS X, but deprecated it quickly when it was difficult to translate Obj-C semantics into Java. I remember trying it, but it wasn't really that easy to use. Even in this case though, the idea was to write Mac-specific applications, just in a different language. Most of the application's magic was still in the ObjC/Cocoa layers, which weren't cross-platform (or were they - I can't remember if there was a Windows port at sometime??).
While this would have made it easier to write cross-platform applications, realistically, that was never the goal. I think the goal of the Java-Cocoa bridge was to offer a backup plan in case too many devs didn't like Obj-C. At the time, Objective C was a novel language for many people. Once Obj-C got enough mindshare and it looked like it got enough of a buy-in from developers, Apple ditched Java quickly. I'm sure the licensing issues from Sun in the early 2000's didn't help matters here.
Also, it's only been fairly recently that Apple turned over the Mac Java port back over to Oracle. For the longest time, Java developers on Macs were always a version or two behind because they were on the OS X release schedule, rather than the Oracle/Sun release schedule.
They dropped it the moment they realized most of them were happy to use Objective-C and somehow they were the first company to turn back the tide from JIT to AOT compilation.
Yes, back in the NeXT days there was a Windows version of the whole Objective-C dev environment for Windows, and also an initial port of Cocoa to Windows when it was still called Rhapsody.
As for fairly recent, it was almost 10 years ago. :)
Which again is hardly different from UNIX culture, which doesn't matter what the hardware is capable of, as long as, it runs UNIX and given that the UNIX culture never cared for the desktop experience (Xlib and Motif really?!) that gives a clash of cultures.
Of course.
Back in the day we had to buy Commodore 64, Spectrum, Spectrum +, Spectrum +2A, Spectrum +3, Atari ST, Atari Falcon, Amiga 500, Amiga 1200, PC, .... and Mac.
So those of us that enjoy a packaged experience of OS + Software + Dev Tools are more than used to it.
The culture of the hardware doesn't matter, just give me a CLI and a 2D frame buffer isn't the culture of the desktop computers.
That's not an "Of course" situation. It's a "bang your head against the wall in frustration" situation. The hardware is commodity hardware, so the software runs on the same hardware that everyone owns, but you're legally required to pretend that it doesn't.
Not in any of my pockets or devices at home, besides the laptop.
But, we digress. Tell me again how it's reasonable that hardware that will run OSes 1, 2, and 3 shouldn't be allowed to run OS 1, because the hardware doesn't have a fruit sticker on the side.
Old hardware was inherently incompatible software-wise, due to widely varying CPU and system architectures. ARM and MIPS hardware today somewhat mirrors that on a device-by-device level; every model has different interconnections between its components and often different mixes of components connected in. Luckily, we've got OSes that provide relatively robust hardware abstraction layers, so that the same software package from my 2010 device is highly likely to run on my 2016 device. I think that strengthens my argument: when even widely varied hardware isn't much of a barrier to software interoperability, why should we be satisfied with legal limitations?
And anyhow, the point was software development. Going into the definition of what is and isn't a PC is a bunch of BS semantics. Let's drill down to the devices that are pertinent to the discussion: The set of devices that are technically capable of native (as opposed to web) OSX and iOS development, and the set of devices that are legally capable of the same. Those are what the discussion is about.