What does HackerNews think of Docker-OSX?

Run macOS VM in a Docker! Run near native OSX-KVM in Docker! X11 Forwarding! CI/CD for OS X Security Research! Docker mac Containers.

Language: Shell

#48 in Docker
#60 in macOS
#5 in Mobile
Google is “friendlier”, because they run some automated scans on the apk and you’re good. Apple has humans run your app to confirm it does what you claim, as well as a battery of automated scans and since they are using the app I’d imagine they look at network traffic as much as possible. I know iOS isn’t shielded from malicious apps, but there’s malware and viruses all over the play store. That’s because it’s free and “friendlier”.

> At Apple things have gotten way worse. Trying to automate release building is practically impossible and will require hours or CI pipeline debugging with error messages that don't mean what they say.

This isn’t Apple’s fault… every build system sucks up a decent amount of time during initial setup. You can cut down massive amounts of time between iterations by adding some common optimizations:

1. Cache artifacts when that step or job succeeds, so if a subsequent step/job fails, you can adjust it and start up where you left off, using the caches artifact to restore the workspace state. This complicates debugging efforts and I personally don’t do any optimization until the pipeline is reliably green each time. I just deal with slow builds and switch to other stuff or work ahead while they run.

2. Fail fast. The CI run should bail out if any critical steps don’t pass, so anything further down doesn’t run for no reason, burning compute time and delaying queued jobs waiting for a runner. While developing the pipeline, watch the logs and when you see something you don’t like, slap the cancel button, or collect a couple things you need to change and iterate with passes with 2-3 changes.

3. Use adequately spec’s hardware. Xcode is resource heavy and compiles need plenty of memory and cpu cores. Play around with what is a good compromise between power and cost. See if your project builds faster with more cpu cores, or faster cpu cores, etc.

4. Cache build dependencies. Mac builds have cocoapods or something close to that, and whatever that package system pulls down can be reused between builds, just remember that cache issues are a pita to spot, reproduce, and regression test, so I’d again not add this in until you’re green.

5. Write your pipeline steps in a regular bash script. Then make your CI jobs and steps just execute the shell scripts. This allows you to develop them all locally, executing the script/step you need and then CI becomes just a wrapper to glue it all together and do some caching and optimization. The more of the process you can work on locally the less you have to run on CI and wait for. Once the scripts are all working locally, wire them into CI and see what breaks. ProTip: whatever breaks on CI due to missing software, deps, configurations, is going to break for any new hire engineer trying to get up and running, so document those things and make sure your getting started readme has them, and you’ll make new hires onboarding suck less :)

As for useful error messages, or lacktherof, I’d like to introduce you to programming, we’ve been waiting for you ;) but for real, useful error messages are the rare exception, and many apis are this way. That’s not to say it’s ok, but you kinda gotta learn to work around it. I’m sure there is enough context to point you in the right direction. Also, the errors might be from random pieces in your build pipeline and not necessarily from the actual Xcode build, so make sure you know what is erroring in addition to what the error is trying to say.

> At least Googles process is quite simple and can be dockerized.

One man’s simple is another man’s “practically impossible”. Simple comes from familiarity/exposure which builds knowledge and confidence. Anyway, you can totally run your builds in docker if you want to, and many do, but I’d personally not introduce more complexity until you have your pipelines running the slow way with the least amount of mental modeling to do. Once you know it all works, then have a go at running the build you know is good, inside a docker container (which in this case is just packing up kvm/qemu/libvirt to facilitate the running of a vm back on the host, but it means you can run mac containers on Linux runners, which will be much cheaper than Mac runners since those are usually Mac hardware)

https://github.com/sickcodes/Docker-OSX

> Also why do I have to pay Apple $125 a year when it costs $100 in the US? The exchange rate from CHF to USD should be in my favor.

Couple theories. 1. They have additional processing or tax expenses when dealing with your currency which they aren’t going to eat the cost of. 2. The higher price could be to deter abuse if for some reason there is an abnormal amount originating from accounts who pay with that currency.

I think they are trying to get out of the market of being everybody's dev machine. There's probably some interesting stuff maybe coming for mac pro. I'd be really surprised if they refresh that line in the next 4 years. I think the headset with the watch and the new M series processor they are angling for a shift in how computing is done and they've taken it really slow to make sure they can roll something like that out without huge system shock. The Apple watch sucked for about as long as the iphone did. Let the heads come in and pay a preminum and make it flash enough that the people who won't buy one early won't get one and complain.

If they mess this up though, AR the way I've been thinking should have been here for a while now and in some circles is here, but the dream of that mass adoption is dead for 10 years IMO. Everyone else bailed but they were all doing VR modified aside from Magic Leap, but Magic Leap changed what they were trying to do (peizo driven fiber laser retina projection) to the same (but a nice implimentation) of a waveguide setup. Well produced. Also ugly, stupid, too expensive, and not good enough.

Anyway, looking forward to seeing the release. I'm 100% with you on the native container support. I think with how any of this stuff works to break the rectangle, native container support is crucial. Does it start going through the browser? WebASM? WebGPU? WebRTC? Vulkan not CUDA? OSX via Docker with Nvidia GPU passthrough over mTLS and then run docker containers in a yet to be released version of OSX that has native container support.

https://github.com/sickcodes/Docker-OSX

Anyone from Uber here that works on this? You ever expect a DevPod for iOS developers? I've been toying with idea of doing this in work for our devs on Intel MacBooks, using -> https://github.com/sickcodes/Docker-OSX, which enables local running on iOS devices.

I think it's hampered by licensing though, maybe that's why it's not used or mentioned in this post.