Hacker News new | past | comments | ask | show | jobs | submit login
Push-Button Installer of macOS Guests in VirtualBox for Windows, Linux, macOS (github.com/myspaghetti)
358 points by miles 11 months ago | hide | past | favorite | 134 comments

I'm going to make one of those unpopular opinions, but alas, it must be said: It is far easier to just drop Apple support entirely.

Apple is an abusive relationship that gaslights developers for "holding it wrong". Many of you have internalized this abuse. Supporting OSX and iOS does not really win you many users, and if you're big enough where this really is an issue, then you can just afford a stand alone Mac who's job is to compile and test your app.

Apple does not care about small developers, and countless HN stories have spent their time on the front page detailing how Apple has shut apps off for not violating terms, and having zero recourse over this. By doing so, Apple has slandered many members of the HN community.

I am not saying other companies are not also guilty of it (Google seems to have recently learned there are no penalties for this, largely because Apple has never been penalized), but more and more people really are just dropping Apple and never going back.

If Apple truly cared about app development on their platform(s), they would just port their stuff to Windows and Linux, just like Microsoft did to OSX and Linux.

I read once that developers should stop focusing heavily on making their own lives easier and think more about making the user's lives easier, and the businessman in me agrees, and I think Apple is in the same court.

The sad part is Apple's market share is so great that to not support iOS is detrimental at best. Therefore Apple has us in a stranglehold: we're pretty much forced to support their platform, and they have no reason to make our lives any easier because we have no choice anyway.

That being said, though, I will probably still refuse to deploy any app I built personally to the App Store.

"You're holding it wrong" is not my version of making anyone's life easier, nor the slow but steady decline of their hardware.

OTOH, my mom figured out how to use an iPad and MacBook after struggling for years with windows PCs, so they are doing something right (or resting on the laurels of previously decent decisions).

You mention it yourself: there are hundreds of millions of people who use Apple products because they make their lives easier. If your software makes people’s lives easier, but you don’t offer it on that platform, you are not making those specific people’s lives easier.

> who use Apple products because they make their lives easier.

Cherry picking out of anecdotal evidence? I have read countless stories of Apple users who have had their beloved software broken by Apple updates. It goes both ways.

It doesn’t matter how many ways it goes: as long as there are people who use Apple products, and you are not providing your software to them, you are failing to make their lives better. Now, deciding if that is moral or relevant or whatever is an entirely different question, but I directly answered the one of “how are you making people’s lives better by developing for this platform?”

I have read countless stories of Apple users who have had their beloved software broken by Microsoft updates, and Windows bugs. It goes every way.

It depends on the software and market. My current job has native apps because they require hardware access not available to browsers. Another recent job was browser based only- our customers (businesses) needed their employees to use it, and did not want native apps because they knew getting everyone to install a company app would be a barrier to adoption.

In that sense, Apple fundamentally fails the "makes lives easier" bot again due to the extent to which they hold back the easiest-making platform (mobile web). From years old indexeddb bugs to penalizing the performance of websites saved to the home screen to slow-rolling other PWA features, Apple's success is a matter of history, marketing, and proprietary integration, not ease of use.

Apple's "walled garden" experience depends heavily on controlling as much of the software that gets into the user's hands as possible. Web applications just don't give them the control they want.

I wouldn't be surprised to find that if the app store hits some critical mass in terms of offerings that they decide to just get rid of a all mobile browsers. Christ I hope that doesn't happen...

I think most mobile operating systems are quite easy these days. An Android tablet isn't inherently more difficult than an iPad, except for the fact that there's no real Android competition for it (Android tablets are cheap and shit or expensive and with little support these days).

On the other hand, the last time I held an iPad it was because someone asked me to help them remove some apps from their tablet. I couldn't figure out how to remote anything because the little X that's supposed to appear when you want to uninstall something didn't show up. I was probably tapping it wrong (3d touch?) but I ended up giving it back and telling them to ask someone used to Apple devices.

There's a lot that iOS does right but there's also a lot that it does wrong. The same goes for macOS in my opinion.

The benefit macOS has is the same benefit ChromeOS has, in that it tries to show an interface with as few buttons and widgets as possible. There's a bunch of apps at the dock in the bottom and most people will probably never need more than that, aside from a decent browser maybe.

Windows tries to do the same but because it is Windows and people are used to button placements that have been the same since Windows XP, attempts at minimalism in the interface often meets friction. The Windows 7 control panel was, honestly, complex and difficult for many, but after so many years everyone who used it needed time to adjust to the new flatter, simpler design.

Microsoft tried to go the "make it as simple as possible" route with Windows 8, where they used the same paradigms on desktop as people were already using on mobile. This failed miserably and now they're doing a weird mix of keeping the old and reintroducing the interface for common programs every big update. It's a mess but I don't know what I'd do differently.

The sad reality is that now that Microsoft has lost the mobile OS wars, they'll never have the shared ecosystem they so direly need to properly compete with Apple. Their Xbox integration might prove to be a game changer here, though, because an Xbox and a few Windows PCs have the potential to compete with Apple TV and a few Macbooks.

or maybe windows was just terrible.

It isn't any more terrible than linux is terrible- which is to say that it requires a bit more practice and patience. Macos just happens to present the few things she uses it for front and center.

A chromebook would have suited her just as well if only it had enough hard drive space to store her pictures and was easier to connect to her iphone- one of those are not Apple's fault, one is.

Catalina highlights this as utterly untrue.

With a 47% market share in the US, I can hardly agree that supporting iOS won’t win you a lot of users.

Users != Money

As far as I'm concerned, you can sell desktop enterprise software for $500+ per license, but good luck trying to sell a $5 iOS app.

So even if it was 90% of the app market, it might still be financially better to ignore iOS and do desktop instead.

> but good luck trying to sell a $5 iOS app

i think the studies and evidence suggests that you'll have a much better time selling a $5 iOS app compared to $5 android app.

I don't really see how the two markets are even remotely comparable? If you're going to be selling $500/license enterprise software, its probably not suitable for phones. Likewise, there are whole classes of software that make the most sense as a phone app.

For me, the maker and distributor of the app, they cost similar amounts of money. So I need them to be similarly profitable, or else choosing the wrong one might ruin my business.

And while there are classes of software that make the most sense as a phone app, there are also classes of software that only make sense from an idealistic point of view, but not financially.

For example, the average indie phone game costs more money to make than what it'll bring in.

I would never try to build a business on either app store but even if you target the web you can't afford to ignore Apple, at least not in the U.S. On my last project Apple/iOS users made up half of our revenue.

Unfortunately this means it's hard to be a web developer these days without owning Apple hardware.

That's why he said:

if you're big enough where this really is an issue, then you can just afford a stand alone Mac who's job is to compile and test your app.

A lot of us are working remote these days. That means everybody needs a Mac.

*everybody needs ACCESS TO a Mac.

Exactly! Reason why websites such as https://virtualmacosx.com are a thing.

There isn’t a huge crossover between desktop apps and mobile ones. If you’re making a mobile app and you want to make money, you want to be on iOS. It’s been documented plenty that iOS apps make a lot more money than Android ones do.

iOS users = money

= you can afford to buy a Mac

Not disagreeing with that, but DiabloD3 was specifically talking users, not money.

This is nuts. If we broke mobile safari for our app we'd lose 50% of our traffic

If you are targeting US market with iPhone having 45% and increasing y2y, you cannot afford ignoring iOS and mobile Safari. What you can is not paying a dime for Apple hardware, though.

That's the developer perspective. As a user, macOS looks interesting due to the underlying UNIX, the consistent user interface and the high quality applications that are available. I've spend 200€ on Final Cut Pro X and it works very well. There'd have to be some really significant issues for me to switch.

PS: I develop but not on macOS and not for iOS.

> the consistent user interface

Have they fixed the utterly inconsistent way of moving/selecting words/lines since Snow Leopard?

Back then, depending on application I think you'd have to use ctrl-shift, cmd-shift, alt-shift or fn-shift to select words or lines of text depending on which application you used.

And yes, this inconsistency included their own software.

And yes, this is an honest question, I don't know the answer. I left Mac behind around 2012 because of a number of such things that kept wasting my time and my focus, but I enjoyed other parts of the experience and would be happy to pay (or get someone else to pay) for a premium non-Windows experience.

I think this part of macOS has always been consistent.

- shift- anchors the selection as you move the cursor and can be combined with any of the below.

- left/right jumps characters. (backspace/delete deletes characters.) up/down jumps lines.

- opt-left/right jumps words. (opt-backspace/delete deletes words.) opt-up/down jumps paragraphs (unless the app overrides this).

- cmd-left/right/up/down jumps to the edges of the document (unless the app overrides this).

- fn- and ctrl- are not typically used when editing text. In particular, the fn key is specifically used to invoke keys that are only available the extended keyboards, like home, page up, and forward delete. (Extended keyboards don't have the fn key.) I think there was a point where ctrl- did the same thing same thing as opt- or cmd-, probably as a convenience to users coming from other platforms.

Every single modern app has honored this in native text widgets since the first Mac OS X, I believe.

If you remember it being inconsistent, it's possible that you were using apps that use non-Cocoa UI like GTK/Qt/X11 (and possibly Carbon too). It might have been an app from Microsoft or Adobe, who seem to use their own UI toolkits. Or you could have been using a terminal app or developer tool with custom keybindings that didn't conform to these conventions. (VSCode, Atom, and Sublime Text's default keybindings do conform to this, and in Terminal and iTerm, there is a setting you can turn on to make the opt- modifer also conform.)

Which apps do you remember being inconsistent?

It is 8 years ago, so it is hard to remember exactly, but I found something on my old blog:

> Appendix: The hopeless keyboard addicts guide to the Mac keyboard:

> I was about to make a table here, detailing how to get at least home/end and pageup/down in the most used programs. But then some programs even differ inside of the program (like, "home" and "end" are mapped to different key combos depending on if you are located in the address bar of you browser or in a text area. This is especially funny when you've almost finished some writing on a blog, a company intranet etc, you want to select one line of text to move it around, and you forget that the key combo that means mark to start of line in one application means go to previous page in the browser. This particular one has hit me twice.)

> Here are a few hints anyway:

> - ctrl+a go to start of line. Works in almost every program, including terminal, but doesn't work together with shift.

> - ctrl+e go to end of line. Works in almost every program, including terminal, but doesn't work together with shift.

> - cmd + arrows/fn + arrows - may or may not works for either home/end. Depends on mood of programmer, moon phase when program was written or some other, unknown parameter. If one doesn't work, try another, they rarely do anything really wrong except triggering the web browser back action.

> ...

from https://techinorg.blogspot.com/2010/04/swithing-to-mac-one-y...

I'll admit that I haven't written anything about selecting words, and I don't trust my memory to be perfect, but I am also not sure I misremember that part. If it was only home/end I think I could have dealt with it by using shift-up/down.

Your opinion is popular and unfounded.

Until another platform performs better, I'll enjoy this bath like the boiling frog I am.

Pro: iOS users monetize more than Android.

Con: Pushing updates to an iOS app is a pain (review process).

I made a small puzzle game for mobile. It's free, with opt-in ads. I released it to both Android and iOS. It only got ~100 installs and didn't go viral or anything.

iOS somehow made 10x more than Android in ad revenue, which is to say, I made about $30 off of iOS ads, and $3 on Android ads. However, it was free to publish on Android, and $100 to publish on iOS, so actually I'm still at -$70 for apple and +$3 for Android. If your app doesn't make more than $100, it isn't worth publishing on iOS, even if your app is a public service.

In my experience they monetize like 500% better than Android users.

Not supporting iOS users is just baffling.

They're rich people plain and simple. They can afford $800 iPhones or $1,800 phone + iPad combos, to people who need to buy $200 Android devices.

Maybe I've been gaslit. But just don't push buggy updates. QA is not hard. Update all the time is a symptom of test-driven development, of affectless people who never use the software they make and look at their job description as, "cram algorithms questions, output git commits." The kind term for the right approach called "product oriented."

Test-driven development is a weird thing to blame for low quality.

There is certainly a false sense of security in test-only approaches. You only have tests for what you expect to go wrong, so every wrong assumption you make becomes a bug. Dedicated QA can help catch these, and are practically a requirement if your customers aren't content with things randomly breaking.

My previous job was just that... one QA person for a 50ish person team, focusing only on writing user acceptance tests. The leads thought that if we just had enough coverage, we could deploy continually without needing QA reviews, and were continually surprised at the number of bugs getting through.

That isnt to say that automated testing is bad, but rather that it is easy to be over-confident in what it will do for you.

>There is certainly a false sense of security in test-only approaches.

Assuming you mean automated-tests-only, then sure. But not only are full-stack approaches to testing encouraged by TDD best practice (i.e. unit to integration to e2e/BDD), it's also still compatible with doing functional QA, and I would recommend it. So I don't think we're in disagreement here, I think moderate amounts of functional QA and TDD are both parts of a healthy testing culture. (I'm a software testing and verification enthusiast, and formal methods have not yet exceeded the utility of these practices. When and if they do, I expect them to be far superior to both in most aspects, and fully replacing TDD with something like proof-driven-development.)

Not to mention that adding tests to a codebase vs starting with TDD from the ground up tend to result in pretty different results over the same time period; the former takes a longer time to start fully reaping the benefits.

Google Play allows for different "tracks" for publication: internal testing, closed alpha, closed/open beta, and production.

My approach is to keep releases in sync with Git branches (master is to production, staging is to closed alpha, etc). Although I don't often push things to master, I publish on any of these tracks at least once a day. I'm looking into the Apple ecosystem now, so I'm not sure if I can use a similar approach (my main concern is having a Mac as CI server).

If you already happen to be running Jenkins you can run an agent on the Mac and tag iOS builds to always run there. I’ve had decent experience with that approach, using Fastlane to build/upload different releases based on git branch like you describe.

Keep in mind you’ll need a graphical connection for occasional updates, which is likely different from the rest of the build system. You may also need it to fetch an Apple 2FA code every 30 days, that’s used to refresh your token to upload releases to App Store Connect.

> But just don't push buggy updates. QA is not hard.

I initially thought that you meant to just never write any buggy code, but I'm not sure that "just catch all the bugs in testing" is a whole lot more realistic. I guess maybe if your app is so simple that you can meaningfully exercise every part of it every time that you have an update?

I don't know; having recently submitted apps (and multiple updates) to both platforms, Apple consistently has updates approved within 24 hours (almost always much faster than that). The initial review for Google Play took nearly a week, and the messaging around its status was extremely vague and confusing. There's plenty of things Apple could do better around the developer UX for iOS, but the review process feels like the lesser of any of the evils these days.

The review process on Google Play is worse than iOS these days, both in regards to waiting time and in dealing with clarifications

People frequently overlook how nice the nix experience is on macOS. I had a new mac user complain about iTunes opening when they hit the play button like its some kind of conspiracy against him. I asked if he tried `sudo chmod -x /Applications/iTunes.app`. We tried it, and I don't understand why he was so surprised that it worked, and remained a permanent solution to his issue.

Your choices are the worlds most prevalent OS which is laden in telemetry and spyware by default, an OS that costs a fortune in hardware but comes backed by a company who has always stood behind their hardware mistakes (arguably after some period of denial each time), or to chose Linux. In this case, Linux means choosing from at least two variants* of distributions, and praying that everything works. I have an Intel NUC Hades Canyon that I run linux on, so that I always have a fallback if Apple significantly changes from their current course of treating users really well in exchange for a cash premium. First, my linux experience dates back to 1997/8 before the Linksys BEFSR41 ( the first hardware router under $300 ) became available, and installing a 56k modem or ethernet card meant re-compiling the kernel. Somehow, that was less painful than trying to get the amd gpu to work properly, and persist against breaking on updates and reboots. Yesterday, the author of i3, a window manager, shared a posting of his gear. I dug through his blog (cool stuff), and noticed on another of his posts that getting an amd gpu to work well on a debian distro was an issue for him as well. Again, I chose reference intel hardware expecting support for Ubuntu.

Being opinionated about design is not 'gaslighting' developers. And sure Apple is not perfect, I for one refuse to by a touch bar mac. I can't stand it, its annoying, and you have to pay extra for someone that for my computing preferences is a giant regression. But of the top 10 companies in the world (by market cap), which ones actually care about end users. Apple was started to put the power of computing in the hands of users, and they were damn successful at it.

Finally, in regards to Apple not caring about app development on their platform. Have you not used XCode? On the internet, you can find Steve Jobs demonstrating making a database driven application in 1989 using drag and drop components to design the UI. That is XCode, or its predecessor Project Builder. That is why Xcode Projects have files with the suffix pbxproj nestled within. Its all XML, and all of the build tools and chains are command line driven. You don't need to run XCode to develop an iOS app, but every year they add more and more of what developers want to it. Sometimes I wish that I could develop python inside of XCode, but I'm more than happy to stick with vim.

Swift and Swift UI are the real love letters to developers however. Swift, is open source, and runs on linux. Swift UI, is basically the react pattern of UI development, and they built it to solve the pain points of developers who were struggling with outdated development patterns on something that didn't even have color when it was first invented (Project Builder).

Sure, the iOS experience maybe too much of a "Disneyland" style experience of a great swath of the HN crowd. I for one love playing with Android phones that can run docker containers and X11 over USB-C. But at the end of the day, I am willing to pay extra money for a company that actually respects my privacy?

> I asked if he tried `sudo chmod -x /Applications/iTunes.app`. We tried it, and I don't understand why he was so surprised that it worked, and remained a permanent solution to his issue.

Now, if you had tried to do the same with pretty much any other app that shipped with the system you would be unable to.

You're right:

   $ sudo chmod -x "Font Book.app"/
   chmod: Unable to change file mode on Font Book.app/: Operation not permitted

   $ sudo chmod -x "App Store.app"/
   chmod: Unable to change file mode on App Store.app/: Operation not permitted

   $ sudo chmod -x TextEdit.app/
   chmod: Unable to change file mode on TextEdit.app/: Operation not permitted

   $ sudo chmod -x Reminders.app/
   chmod: Unable to change file mode on Reminders.app/: Operation not permitted

Doesn't even work on iTunes as the GP suggested:

   $ sudo chmod -x iTunes.app/
   chmod: Unable to change file mode on iTunes.app/: Operation not permitted

I’m not at my computer, so I gave myself a little bit of leeway: all the other applications are certainly on the read-only system partition so I know they are not going to change at all. Certain apps like Safari and iTunes are not on that as they can be updated, so I wasn’t sure if there was anything additional for those :)

ITunes doesn't seem to actually work either.

My apologies. That may have changed with SIP. A _fully optional_ feature that is great for security, and can be turned off if its too prescriptive.

A little disappointed to see the apple hate on this thread, especially as I spent the morning fighting with debian install on a raspberry pi to just have a clean upgrade. Again, these linux issues are much less common when dealing with linux on a server, meant to run a single program, or collection of production programs. But trying to maintain an ubuntu desktop is not without work, and Windows is loaded with telemetry and ads.

Apple puts users before developers which is why they have such a large market share. If you can't reach their high standards, just develop for another platform. There's no need to whine on HN about it.

I recently wanted to test something on macOS, but I don't own a Mac. I kinda assumed that I could just type "macos vm image" into Google and download an official image for VMWare, VirtualBox, Hyper-V or whatever from Apple's website. Nope.

Instead, I ended up reading through several third-party guides, downloading images from random people's Google Drives and feeding magic incantations to VBoxManage - only to end up with a slow, crashy, barely functional system. Of course, the thing I originally wanted to test wasn't working at all, because... who knows.

I'm really amazed at how shitty Apple's developer experience is for people who don't own a Mac. Well, I'm going to give this script a try tomorrow - maybe that will work, somehow.

> I kinda assumed that I could just type "macos vm image" into Google and download an official image for VMWare, VirtualBox, Hyper-V or whatever from Apple's website.

What gave you that idea?

That's how it works with Windows and obviously Linux. Why would a company not want to make it as easy as possible for people to try out, develop for and test on their OS?

Because their official stance is "there is no try. Buy a mac if you want to develop for mac". MacOS on any non-apple hardware is against the EULA so any VM you find is technically illegal. The OS sold on USB sticks for a while, but that stopped: the only way you get MacOS now is by buying a mac, and then using the app store to get new versions of MacOS when they come out.

Before I knew this I didn't know this.

The license for Windows' free downloadable VM images does not allow you to develop software.


"You may use the software in the virtual hard disk image only to demonstrate and internally evaluate it. You may not use the software for commercial purposes. You may not use the software in a live operating environment."

The original poster wanted to test something. Apple actively makes that difficult. Microsoft makes it very easy and actively supports it. Ex:


The license for those VMs:

"b. You may use the software for testing purposes only. You may not use the software for commercial purposes. You may not use the software in a live operating environment."

>> The original poster wanted to test something.

> The license for those VMs: "b. You may use the software for testing purposes only.

Basically you (and Microsoft) agree?

This was for a non-commercial hobby project and there was no actual development involved.

Even if using a Windows VM in that way violated some Microsoft license, I don't think I'd care much. It's not like Microsoft is gonna sue an individual using one of their VMs for an hour over some licensing technicality. I'm sure they'd care if this was in a commercial setting (and then I'd actually care about the license), but for personal, non-commercial use, I don't see it. Worst case scenario I'd actually buy a Windows license. At least for me, this is more about the technical ability to run an OS in a VM than about the legal details behind it.

Google "windows vm image" and see the first link.

Theres this https://www.macincloud.com, haven't used it myself but seems like it will do the job there's a few others around to. Search for "Mac in cloud"

The easiest way I did it was a certain Vagrant image.

Do you have more details or link? Like the grandparent comment, I have gone through so many incarnations of Google searches and guides and sketchy scripts just to wind up with a half-working mess if I get anything running at all

Not sure why I got downvotes for that but here ya go, I didnt share a link cause if you google / duckduckgo "MacOS Vagrant Image" it was the first result:


Once you pull it I open the virtualbox UI so I can get a GUI. I think it runs in headless but you can just click 'Show' or something to that effect.

Apple is not alone there. A lot of people don't realize, but Windows is (or at least for the longest time, was) in the same boat. You need to have a Windows machine to build Windows app.

I believe, but I might be wrong, a similar thing applies to a large number of Linux systems especially if you wish to build GUI apps.

P.S. Windows even used to require a paid version of their IDE Visual Studio for the longest time and a hefty subscription fee for MSDN. And, don't forget the concept of "Developer License" for things like SQL server.

Yeah no, this one is very Apple-specific. Just google "windows 10 vm image" and see what comes up. Obviously with Linux distros, getting images isn't a problem either.

I'm sure there's some dumb shit that MS does too, but Apple is completely alone in not even giving you any way to run their OS in a VM for development purposes.

As others have pointed out, those official MS VMs are for evaluation only. You are not legally allowed to use them for development. Of course, you could pay MS for a license and do your Windows development in a VM on Linux (or Mac), so that is something that MS supports that Apple doesn't. But to develop for Windows or Mac/iOS you will most likely need to give some money to MS or Apple.

This was non-commercial and there wasn't any development involved. Even if doing this in a Windows VM technically violated some license, I wouldn't care much for something that's just a hobby project.

As you pointed out, with Windows there's at least no technical barrier to running it in the VM. Even if I had to buy a license, that would be like a hundred times cheaper than buying a Mac.

And even without that, it is and has been easy to install windows and not give it a key. With windows 10 you don't even need to reinstall quarterly.

Microsoft provided the command line build tools for free, ad you could always target Windows using MinGW.

You're completely wrong about targeting Linux as well.

MacOS (and then iOS) have always been the only OS you can't freely target.

Apple is totally alone there.

Microsoft provide virtual machine images to download on their website.

> I believe, but I might be wrong, a similar thing applies to a large number of Linux systems especially if you wish to build GUI apps.

This is just bizarre. Where on earth did you get this idea from???

This is likely illegal. The psystar case[0] was a very clear ruling that attempts to circumvent apple's restrictions on hardware are a violation of the DMCA.

Apple checks a certain devicekey while booting, so that key is an anti-circumvention techniques. Any use of that string in a form where apple's software may read it is probably a violation of the DMCA. This script uses that string[1] in order to circumvent apple's checks, and thus is legally dubious at best.

There are numerous other likely DMCA violations as well, from copying GUIDs with the intent to circumvent checks to downloading copyrighted material from apple's servers which they only give you license to download for an actual mac machine.

[0]: https://en.wikipedia.org/wiki/Psystar_Corporation#Legal_issu...

[1]: https://github.com/myspaghetti/macos-virtualbox/blob/44a21f7...

This is definitely not legal, but the fact that the apple ecosysten is still stuck in the pre-vm era in 2020 for the purely stupid business model of jailling developers in an apple ecosystem as soon as they need to create an ios app (which should never require an apple computer in the first place) is an absolute ridiculous waste of time and resources.

Any company that deals with cross platform products has to build a modern CI/CD and a medieval stuff on the side to deal with apple.

Sorry for the rant, just had to get this out.

Enterprises have two choices: a closet full of mac minis (or similar) or violating the letter (but not necessarily the spirit) of the EULA. At the last Big Tech Company You've Definitely Heard Of I worked at, our Mac build farm was deemed noncompliant by everyone including Apple and our legal team, but nobody actually told us to stop using it. Quite the opposite actually.

I think you can run Mac OS in a VM as long as the VM runs on Apple hardware.

The problem is that there is no way to run proper infrastructure that involves Macs since removal of Xserve platform, and even that wasn't particularly great when it came to lights out operation from what I heard.

Even if you pay ridiculous amounts of money for latest Mac Pro in a rack, it's stil the kind of joke machine that I chortled over in 2008 for being the cause for crash carts to be present in server room, when every serious machine had you in the comfort of nice office.

I hope we'll get some VM-friendly features as a byproduct of x86-ARM transition.

It may the EULA, but it is not illegal. Contract violations are the same as breaking the law. I'm not trying to be a pedant, but it's important to push back against the corporate effort to change language to benefit them. Copyright violations are violating the law, illegal, but violating a contract is not illegal.

> Contract violations are the same as breaking the law.

Just noting a likely typo here - from the context I think you meant "are not the same".

(If you make the edit I will delete this message to reduce clutter.)

No, you're 100% correct. I should have proofread it!

In what way is making an unauthorized copy of software not copyright violation?

You are allowed to run OSX in a VM if you're on a Mac. It's running that VM on an OS that isn't MacOS that's the EULA violation. It's not necessarily an unauthorized copy, it's unauthorized operation of a VM.

Where does it argue that you have to make an unauthorized copy of software?

Any use of that string in a form where apple's software may read it is probably a violation of the DMCA.

That reminds me of these cases, which ruled in the opposite direction:



downloading copyrighted material from apple's servers which they only give you license to download for an actual mac machine.

I guess the CFAA could apply, but Apple's servers don't actually do any authentication. You also don't need to have agreed to anything to access the URLs.

For both of those cases, that's controlling access to a piece of hardware, not unlocking access to a copyrighted work. That's the big difference as far as the DMCA is concerned.

This script can be used to set up a macOS VM using Virtual Box running on a macOS Host. Running macOS guest on Apple-branded hardware is explicitly permitted by the EULA. I wonder if using the "secret" string still violates anything here.

Looking through the issues for words like “legal”, “illegal” and “DMCA”, it looks to me as though it goes to some length to avoid including probably‐illegal content, only telling you how to get the necessary values to make it work on a real Mac, where it would I believe be acceptable under Apple’s EULA to install it.



I believe there's a proviso in the apple license agreements that allow you to virtualize macos - if you run on apple hardware.

(iii) to install, use and run up to two (2) additional copies or instances of the Apple Software within virtual operating system environments on each Mac Computer you own or control that is already running the Apple Software, for purposes of: (a) software development; (b) testing during software development; (c) using macOS Server; or (d) personal, non-commercial use.

A search on that keyword is a good way to find other similar repos: https://github.com/search?q=ourhardworkbythesewordsguardedpl...

As a victim of an act of stealing a few years ago, I am deeply offended by people using the verb "steal" when there is no actual stealing, just sharing information.

Great, now Hacker News is going to get a DMCA takedown request as a result of your URL being here.

I wonder if a user maliciously posted URLs that were later editable and linked to pirated content would yield a significant amount of DMCA requests to be sent. Seems easy to abuse or troll and highlight how insane the DMCA is.

Bahahaha, really? This DMCA nonsense sounds ridiculous!

Would it be legal for this script to accept that "secret" string and GUID as configuration parameters rather than hardcoded values? That way end user would be responsible for actual violation and Apple is unlikely to pursue end users.

If the primary purpose of something is for circumvention, the DMCA still applies I think.

In real life, does anyone care?

You mean as a hobbyist? I sure wouldn’t use this at work.

> You mean as a hobbyist?


I had a much longer comment about this, then grew tired of writing up the caveats - because HN :).

So, me neither, not if I relied on it for revenue generating work.

As long as it's on Apple hardware, I don't see the issue at work.

Virtual machines on Apple hardware are explicitly allowed in the OSX EULA.

> As long as it's on Apple hardware, I don't see the issue at work.

Sure as long as it's stable and actually supported and doesn't live in Apple's realm of "experimental".

> Virtual machines on Apple hardware are explicitly allowed in the OSX EULA.

Kinda feel you're missing my, admittedly and ashamedly, overly pithy point about "persevering" with this on non-Apple hardware for real life revenue generating work.

you forgot to say where this is illegal. maybe i'm in Mexico or Russia or even somewhere in EU?

it's quite likely against the TOS... in countries where the Apple TOS is legal.

our hard work

by these words guarded

You Wouldn't Download A Car

Indeed. Helped me get Mojave running on a 8-core, 16GB Ryzen VM. No working audio in and out (which given that I write audio software could be viewed as a pain), but in every other way, it's the bees knees. A faster and bigger mac than I've ever owned in physical form, with the same kbd and mouse, just sitting over there in workspace 5. Barely even notice it running if I forget to shut it down.

fwiw, I personally got around this by using JACK (netjack server outside the VM, netjack client inside the VM). Somewhat fiddly to set up, but works flawlessly once it's running!

PSA: On Windows, this script downloads and runs an .exe files which is (contained within a .zip file which is) downloaded via unencrypted HTTP; cf. ~L306.

Wow, great work! I'm reading through the script's source right now to learn about how it works.

This is a godsend! I'm using it and it works perfectly, especially with headless mode (once you have setup ssh).

Gone are the sad days of asking my mac-using colleague to pip install my shit and send me back the error messages. Now I can test it myself like a civilized person.

Wow, that script so does not work under MacOS!

The first hurdle is that it errs out on the bash version. Yes, yes, I know, Apple supplies v3.x something and you have to upgrade to v4.x something or higher. But when I upgraded using 'brew install bash' I got to v5.x something. Voila, the script still thinks we're in the wrong version.

The path is good, the test, run manually in the terminal, is good, the script looks good, but still fails. Not sure why.

Never mind, I modified the script to remove the 'exit' on wrong bash version, and all was well until the install crashed with an utterly incomprehensible "./macos-guest-virtualbox.sh: line 1400: -: syntax error: operand expected (error token is "-")"

Line 1400 is the end of some very obscure keyboard scancodes. No idea where to go with that.

When I manually formatted a virtual drive GUID and Mac OS Extended (journaled), the install inside the VM failed with some cryptic Mac error.

Fortunately, after a reboot, the Catalina installation seemed to proceed without problems and I achieved a working system. So, yay!

Apple really should make it easier to test on old versions of macOS. I recently had to track down a compile error on 10.9 [1] and it is not easy to get these old OSes working: there's dead links, expired certificates, etc. Hours wasted.

1: https://github.com/fish-shell/fish-shell/issues/7023

I am and will remain forever salty that Apple provides me with no way to download the copy of OS X Mountain Lion that I paid for. I don’t actually need it for anything right now, but it rubs me the wrong way that there is a gap between where you have physical disk and it’s still downloadable on the App Store, and you could have paid for the OS but can no longer access it for an old Mac if you happened to want to run it.

I am sorry, but you mac users had it coming. You have been enabling apple's callous behavior for many years. In the case of developers it is even worse, for this callousness has been always public, but you just didn't care (until it affected you personally in some way, as it seems to be the case).

I think you're making your point to the wrong person here. There's a lot of people inside the macOS ecosystem that continue to defend their bullshit but the parent seems angry that the purchasing decision he made when Apple was actually kind of good has been made useless by the change Apple has made over the last years.

Not all macOS users are the same and it's preposterous to call out "you mac users" as if they are one group.

Interestingly enough I’ve built the same kind of script for macOS up to and including Sierra (sans OpenCore, as I stopped when VirtualBox’s EFI stopped to cater for alternate boot.efi paths that are required for macOS install/update)

The goal was to have some GitLab CI runners For ArchMac.

The CI situation for macOS is just ridiculous and completely iOS focused:

- GitHub Actions has 10.15 only

- Azure Pipelines now has 10.14 and 10.15 only. At some point 10.14 was available only as macos-latest, which became 10.15 overnight with no way to lock.

- Travis CI older images don’t even boot as they fail to install or downright fetch home brew as an uncontrollable step. Newer images work but are slow as hell.

- CircleCI is the one that fares the best: fast, wide version support. The pricing has recently been revised and the previously free open source tier (that you had to manually request via support) is too limited in time for a mildly active project.

I got an iPad last summer and that made me dare to switch to iPhone last fall. I like both a lot.

Recently I found out that iMusic is available outside of the Apple ecosystem as well.

I wonder if Apple will - sooner or later - start targeting Windows and Linux with the rest of their software as well? (I know I can read and edit iCloud files online but I am thinking of native apps.)

Where it supports their services business (iTunes for Windows has existed for a long time) or hardware (my AirPort Time Capsule has Windows support). Otherwise why would they?

> Otherwise why would they?

Because it could bring more sweet recurring iCloud income without the hassle of creating hardware for every niche there is.

Well I did say where it supports their services

You did.

What's the easiest (and cheapest, price and disk space wise) way to do the opposite: install Windows/Linux on macOS for software testing purposes?

Might have to build Electron apps on it, I assume on Windows that excludes Home editions…

You can just download a Windows 10 Dev environment VM direct from Microsoft. Also, Windows home will work just fine for any sort of development not requiring Hyper-V.

Does it work under Fusion too?

According to VMware [0]:

> You can install Mac OS X, OS X, or macOS in a virtual machine. Fusion creates the virtual machine, opens the operating system installation assistant, and installs VMware Tools. VMware Tools loads the drivers required to optimize a virtual machine's performance.

Additionally [1]:

> You can use the recovery partition on your Mac to create virtual machines running macOS.


[0]: https://docs.vmware.com/en/VMware-Fusion/11/com.vmware.fusio...

[1]: https://docs.vmware.com/en/VMware-Fusion/11/com.vmware.fusio...

Yeah and it runs sooo much quicker under fusion than under oracle virtualbox, I’m amazed people still use virtualbox given its horrendous performance.

You don't need a special script to install Macos in Fusion.

Cloning for “research”

Doing the same, my girlfriend told me to tell her what font is being used in that image, gotta research it further.

I know you're probably being sarcastic, but Apple uses their own San Francisco Font throughout the OS [0]. It's personally one of my favorite fonts, though Apple has full rights. Some typographers allege that Roboto is fairly close.

[0] https://developer.apple.com/fonts/

Try Inter, it’s much closer.

This is going to be pretty slow, isn't it? There was a script here a few weeks ago that ran OS X in QEMU, I think that was supposed to be rather faster.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact