Push-Button Installer of macOS Guests in VirtualBox for Windows, Linux, macOS
github.com
github.com
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.
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.
Unfortunately this means it's hard to be a web developer these days without owning Apple hardware.
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.
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.
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.
Con: Pushing updates to an iOS app is a pain (review process).
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."
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.
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).
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.
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.
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?
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.
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.
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).
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.
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.
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...
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.
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.
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?
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.
$ 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 permittedA 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.
PS: I develop but not on macOS and not for iOS.
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.
- 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?
> 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.
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.
https://github.com/AndrewDryga/vagrant-box-osx
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.
What gave you that idea?
https://windowsdev.azureedge.net/eulas/WindowsDeveloperVirtu...
"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."
https://developer.microsoft.com/en-us/microsoft-edge/tools/v...
"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 license for those VMs: "b. You may use the software for testing purposes only.
Basically you (and Microsoft) agree?
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.
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.
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???
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 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.
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 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...
That reminds me of these cases, which ruled in the opposite direction:
https://en.wikipedia.org/wiki/Sega_v._Accolade
https://en.wikipedia.org/wiki/Lexmark_International,_Inc._v.....
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.
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.
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.
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.)
Yep.
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.
Virtual machines on Apple hardware are explicitly allowed in the OSX EULA.
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.
by these words guarded
You Wouldn't Download A Car
https://github.com/myspaghetti/macos-virtualbox/issues/192#i...
https://github.com/myspaghetti/macos-virtualbox/issues/134#i...
(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.
it's quite likely against the TOS... in countries where the Apple TOS is legal.
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.
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!
Not all macOS users are the same and it's preposterous to call out "you mac users" as if they are one group.
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.
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.)
Because it could bring more sweet recurring iCloud income without the hassle of creating hardware for every niche there is.
Might have to build Electron apps on it, I assume on Windows that excludes Home editions…
> 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...