Wow. This gave me a flashback to the early days of iOS jailbreaking, back in late 2000's. Wasn't "alpine" the password for the original jailbreak (that you downloaded over a safari/web PDF link if I recall). I never did learn exactly why "alpine" was the password...
Yes, alpine was the password. I'm hoping ipadOS (not iOS) will eventually get some ability to compute/develop/run software without the hacks, just because the current state is absurd. I've made a collage to illustrate this: https://imgur.com/a/CQwApt8
Text summary:
iSH - enable location services to run things in the background.
A couple youtube videos talking about having yet another device to do things like terminal access (via having a raspi over usb-c) or
UTM (virtual machine host) - which from my understanding requires a paid 99/yr developer profile to run.
I really like the iPad form factor and carry one around with me for almost all work and study because I really like the digital writing experience on that. Much more than on a Surface, for example.
So I wanted to make this work, I really wanted to be able to use it for light development so I could leave my notebook at home some/most days (depending on what I'm currently working on). But it doesn't stop with all the things in your collage. i(Pad)OS doesn't natively support my keyboard layout, so I was looking at getting a QMK-compatible keyboard so I could do all the remapping before the signal ever reaches the iPad. Only after sinking a non-trivial amount of time into researching that I realized how absurd this was.
A device so powerful and yet so limited by its software. I have since made my peace with the fact that my iPad is a glorified notepad and PDF viewer, but I wish it didn't have to be.
Depending on exactly what you want to work on, also look into using something like Blink[0].
I have several servers set up that I can now easily access from my iPad (or anything with an internet connection and an SSH client). I have one "bastion" server that basically acts as a headless dev box with mosh and tmux set up. As long as I have internet, I can quickly access machines that are far more capable than any laptop I've owned.
Even when I inevitably do need my laptop for something, having this setup is great for continuity [1].
Of course, this is not a drop-in replacement for a proper desktop OS, especially if you aren't a heavy CLI user [2]. However, in a similar vein to "Linux is NOT Windows" [3], you can't expect a mobile experience to be significantly better without being significantly different.
Over the past couple years where I've been dabbling with it, I have made a couple of mentality shifts about how I want to use computers going forward. Even if I don't every use an iPad as my main/only physical device, I now happily carry around one of the 12" Macbooks since I don't need all the computing power on my person.
None of these ideas are particularly new, but I haven't seen many other people really taking it past "SSH into server, run command(s), exit".
[0]: A very well-made SSH client for iOS that supports mosh): https://blink.sh/
[1]: I can shut my laptop even if a large/long job is running since the job is running on a server.
[2]: For some things, I've used VNC or other remote desktop type tools, but this experience also comes with heavy tradeoffs. YMMV.
[3]: http://linux.oneandoneis2.org/LNW.htm
My setup is Cloudflare in front that works as DDNS (https://github.com/punnerud/cloudflare-ddns), 5-10 VMs with Ubuntu running under Windows 10 Pro using Hyper-V, all VMs have dedicated MAC-address on my router so I easily can make snapshot or reinstall. One of the machines is dedicated for Reverse SSH port forwarding, with a script that auto-reconnect on disconnect. I often use RDP to the Windows through the reverse SSH-proxy.
In a normal workweek I have tree days at the office with 9h of commute in total, all where I work (and get paid) on the train. Done this the last 5 years so the setup it starting to get solid on a variable 4G connection.
Thank you for the pointers! I have Blink installed on my iPad and use it occasionally to restart a system service or similar, but any serious work that requires typing is impossible for me due to the keyboard layout issue.
I use the Neo-layout [0] which has both a different layout for the letters, as well as using additional modifier keys, such as Caps Lock, to access extra "layers" which map more symbols. I like it very much, but it's so different from the more standard ones such as QWERTY, that I'm now significantly slower in the latter and loathe using it.
Ahh yeah, I use the Apple keyboard cover and that's a bit cramped even for English. I can't imagine typing in German on it would be fun.
Not sure if it covers everything you need, but have you tried using the Alt/Option key for typing certain things? e.g. Alt+u and then o gives ö. Alt+s gives ß.
QWERTZ Bluetooth keyboards work, so I can type most things I need if I ever need to write German, which is honestly rather rare. But I still need to deal with a significantly different keyboard layout and it's just neither fun nor productive.
I'd rather carry an extra device that works the way I want it to rather than deal with either QWERTY or QWERTZ for extended periods of time.
It turns my Android devices into a powerful and versatile programming environment.
ISH looks great. If I was still using any iOS devices, I would give it a try.
I really wish iOS / iPadOS supported better software development environments and tools like ISH. Hopefully ISH does not get pulled by Apple App Store regulators.
Termux is much, much better than iSH. iSH is not bad, it's just that it doesn't run any code natively, everything runs through a software emulation layer (I believe x86 to the Apple Axxx processors). So it's slow. Whereas Termux is native and very snappy. I tried running emacs on my iPad Pro (2017) and gave up because it was too slow. On Termux emacs is great, even on a midrange phone from several years ago (Moto G5 Plus).
Hardware-wise the best Android tablet right now is the Samsung Tab S6. I think it's at least as exciting as some of Apple's offerings -- although the android tablet experience is probably not as good as iOS. However, for the purposes of this discussion the "Linux" experience is much better on Android.
It is, but the writing and app experience was so much worse when I last tried it.
If I were okay with other hardware, I could use a Surface, which requires no workarounds for almost all of my work scenarios. But I'd rather carry two devices than make that compromise, to be honest.
This is a common approach and I use many apps that use this trick. Examples being Termius, Pythonista, and any app that can log sensor data in background. I hope apple doesn't give a shit about your report.
All those apps clearly state why they want the permissions.
Because they, like some people I know, think that Apple should enforce their rules consistently but fail to realize that the position they’re in means they will never do so, and as such their actions are merely petty regardless of their end goal.
I remember the initial iPhone Simulator release was called "Aspen Simulator" and another codename for the iPhone hardware was "Purple" appearing somewhere as "Purple is the new Orange" or something... Is there a list of those?
And it still is the root password of the iPhone/iPad etc. So when you install an ssh server on your jailbroken iDevice, you should change this password. ;)
The biggest problem is that iOS completely bans executing native code that isn’t code signed, with the sole exception of the Safari JIT (and possibly Swift Playgrounds - not sure how that works). There’s weird hacks to get around this, e.g. a JIT compiler that compiles native code into ROP chains that jump around gadgets precompiled into your native binary, but otherwise there’s really no way to run arbitrary CPU-native code. Hence, the emulator. And if you have to emulate the CPU, you might as well emulate the most popular CPU for compatibility.
Apple is in a bit of an odd place right now with respect to development and end-user programming. Ever since they released Swift Playgrounds they’ve seemingly decided to be much nicer to programming apps.
Pythonista is probably the most prominent such app, with deep integration with iOS features and full access to every API (thanks to ctypes you can even dlopen private APIs and use them...shhh). But there are some new ones too, like Play.js (full node.js environment), Scriptable, and probably dozens of others that I haven’t tried.
It’s a bit of an interesting time. The real question will be whether Apple continues the slow path towards openness or whether they choose to go back to locking things down. I suspect their push to make the iPad more “pro” will inevitably force them towards the former.
Pythonista is really very good, and it is easy to pip install pure Python libraries. Too bad Python is not one of my favorite languages. The Raskell app used to provide a decent Haskell environment in iOS, but, file access stopped working. Really too bad since it was fun to hack Haskell on airplanes, etc.
Swift Playgrounds on iOS are very interesting and makes me wonder if XCode might someday live in iOS, with appropriate code sandboxing.
Apple has made iOS and macOS app development much simpler with SwiftUI, simple enough that I enjoy using it. I think Apple will jump through hoops in the coming years to make app development easier.
Chrome OS handles this quite gracefully by having container support baked in. You can just install whatever distro you need in the container and get rolling with it. It would make iPad Pro my perfect device (I’d replace my MBP in a heartbeat).
ChromeOS can do that because it has already booted a Linux-kernel and the container is also a Linux-distro, so it’s essentially just a chroot. I.e. computationally really cheap.
An iPad boots a (modified?) XNU kernel and can’t just “chroot” into a Linux-distro because the right kernel won’t be there to support the Linux userspace.
By now, iPhones, iPads and Apple Watches boot XNU proper (meaning their kernel is no longer compiled from a fork but from the proper XNU code base).
It’s still a modified kernel in a broader sense: platform-and architecture-dependent modules, ifdefs, a different set of kernel modules, exclusive/missing system calls and other extraneous/missing features (e. g. no kext loading infrastructure).
Then let us chroot into a Darwin container, which supports the GNU coreutils and most every programming language anyway (well, presuming they were recompiled for ARM64, but that's very little work for the maintainers of those projects). If I need to test against a Linux system, I can just SSH, but this would be a bare minimum for working on stuff without bringing the laptop.
It looks interesting, great work!
I'm curious why you chose x86 emulation instead of arm emulation though, provided that this is running on an arm processor?
The FAQ answer only answers one very specific aspect of things.
The broader question is that emulating a foreign chipset (especially one as complex as x86), in order to have a local terminal, is ridiculous. Why be so ridiculous?
The answer is that it has to be that way, due to Apple's restrictions on what is allowed to run, so iSH is a very clever hack on top of those restrictions, in order to get a "blessed" local unix environment on an iOS device.
In practice, RISC-V emulation would likely show better performance than either x86 or ARM. Though Alpine support for that architecture is not there yet, so I can see why ISH isn't using it at this time.
I'm quite sure this kind of application is against Apple store rules and would be banned if published:
2.5.2 Apps should be self-contained in their bundles, and may not read or write data outside the designated container area, nor may they download, install, or execute code which introduces or changes features or functionality of the app, including other apps. Educational apps designed to teach, develop, or allow students to test executable code may, in limited circumstances, download code provided that such code is not used for other purposes. Such apps must make the source code provided by the Application completely viewable and editable by the user.
It's up in the air, since Apple's guidelines are not consistently interpreted or enforced. It has, however, been approved to be on TestFlight thus far. (Which has little bearing on whether it will continue to be available, or if it will ever pass App Store review.)
I joined the testflight beta for this a while ago, then got a "the developer removed you" message and could never get back in. But it was convenient to have on hand.
I love this, got removed due to inactivity and am lazy enough to not bug anybody with an email. Does anybody know why they don’t offer this as an app? I’m sure people would be willing to pay quite a bit for it.
iSH is pretty great. I've been using it for a while, and (even with all its shortcomings) it really drives home the point that the iPad (even the Mini 5) is a beast of a machine.