6 ms·
Is this the first time this is being done? Why isn’t this getting more attention? This would be amazing!
by ianwalter 8y ago
Is this the first time this is being done? Why isn’t this getting more attention? This would be amazing!
- saagarjha 8y ago> Is this the first time this is being done? No. There have been multiple efforts to do something like this before; I seem to recall one app on the App Store that attempted to simulate commands being run by parsing arguments and performing the correct actions as they were entered. Personally, I have an experimental shell that abuses cross-compiled Mach-O ARM64 shell binaries, but there are some limitations to this approach that I need to resolve regarding codesigning, App Store guidelines, and advanced shell features such as piping which are difficult to emulate in the single process that iOS gives you. I might get around to posting it online if I get the time.
- saurik 8y agoThis is an obvious approach that absolutely has been done before (though maybe not as efficiently), but is not App Store complaint (as you can use this to download new functionality that the app did not ship with that is then executed on the device using a virtual machine that is not JavaScriptCore) and so is being distributed via Test Flight (which apparently has way more open terms of use than I would ever have expected). This really isn't that interesting (to some very real extent, "sadly": it sucks that Apple is allowed to say these kinds of apps can't exist).
- saagarjha 8y ago> is not App Store complaint (as you can use this to download new functionality that the app did not ship with that is then executed on the device using a virtual machine that is not JavaScriptCore) Apple has recently added an exception to this rule if you’re willing to classify your app as an “educational” app, and allow for the viewing and editing of the source code you download. Since this shell allows for grabbing a copy of the source code of the packages you install, and compiling them yourself, I think it just barely falls within the rules: > 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. > is being distributed via Test Flight (which apparently has way more open terms of use than I would ever have expected) There is no exemption for TestFlight apps; they should comply with the App Store Review Guidelines as usual: > Any app submitted for beta distribution via TestFlight should be intended for public distribution and should comply with the App Review Guidelines. Note that any builds that go through TestFlight are subject to a review process.
- saurik 8y agoBut I can use this to download things that are not open source... I can use this to download SOCKS proxies (that despite not being VPNs I believe are still banned in the Chinese App Store, though I might be wrong about that: they are definitely illegal in China)... hell: I can use this to download other (even less efficient) emulators for other architectures. I mean, this is literally "an emulator", which is a core example of a thing that Apple wants to not exist. I mean: this is a great implementation of an emulator. I have downloaded and tried iSH, and it is actually "kind of epic". This isn't exactly what I thought it would be, glancing at the source code: it sounded like it would be running the Linux kernel (so actually be Linux) in console mode, but this is a library operating system and is very similar in many ways to the project I sometimes talk about (which also provided a library operating system, but was going to distribute pre-compiled code as part of the application to avoid needing an emulator), but this is clearly better as an emulator (and is much easier to do, despite this emulator being a slightly harder emulator to build than most). So, this is a great implementation of this--this is even a "heroic" implementation of this--but, at the end of the day, this is the thing Apple was trying to stop (as much as I hate Apple for that).
- saagarjha 8y ago> But I can use this to download things that are not open source. Ok, let's widen our view of open source then. Pythonista lets you download Python code and then it interprets it, and iSH lets you download compiled x86 code and then interprets that. So it's still open source, see! > I can use this to download SOCKS proxies (that despite not being VPNs I believe are still banned in the Chinese App Store, though I might be wrong about that: they are definitely illegal in China) I'm not following you. How would iSH be able to actually apply these proxies system-wide unless it's a VPN app, which as far as I'm aware it's not? All it can do is possibly download VPN profiles, but I can do that in Safari too. Perhaps I'm misunderstanding how SOCKS works, but I don't see how this could change anything except traffic you're sending in-app at the most. > I mean, this is literally "an emulator", which is a core example of a thing that Apple wants to not exist. You're going to have to provide evidence for that–Apple used to do this by citing 2.5.2 in their App Store Review Guidelines, which explicitly forbid this kind of thing, but as I mentioned there is now an exception poked in it for "educational use". Has any "educational" (i.e. non-piracy) emulator recently been rejected by Apple, and if so, under what grounds? > at the end of the day, this is the thing Apple was trying to stop Again, I disagree that Apple would try to stop this, at least under the current set of rules that they have. The fact that it made it through TestFlight review is pretty telling, I think.
- k__ 8y agoI don't understand the problem here. Maybe it isn't App Store compliant, but who cares? I don't install my dev tools on the desktop via app stores either. For all I care, someone could port Homebrew for iOS and force me to install it via Xcode.
- saagarjha 8y agoYou do not have to sign your development tools on your desktop machine to get them to install. To have a semi-usable situation, i.e. one where you’re not forced to reinstall your tools every week, you need to pay a non-negligible amount to Apple regularly so that you can sign and run this software. Porting Homebrew would never work, at least in it’s current state, not the least because it seems to be designed around everything going in /usr/local and breaking violently if you don’t stick everything in there and forcefully chmod/chown it to yourself ;P
- jsjohnst 8y ago> not the least because it seems to be designed around everything going in /usr/local and breaking violently if you don’t stick everything in there This hasn’t been true for a long time.
- saagarjha 8y agoHomebrew themselves recommend against installing software anywhere else: https://docs.brew.sh/Installation https://docs.brew.sh/Installation. It just isn’t built for installing to anywhere else, regardless of the security and usability issues this causes.
- jsjohnst 8y agoI booted full Linux (Also Windows 95, albeit very very very slowly) on Bochs using the first gen iPad six or seven years ago, so definitely been done. This just seems more polished and user friendly. With the performance of the latest iPad Pro, I’ve been meaning to dust off that code and see what’s possible now.