
В начале ноября 2020 года сразу два разработчика эмуляторов терминала под iOS заявили (1, 2), что Apple собирается удалить их мобильные приложения iSH и a-Shell из магазина приложений App Store.
Причем создатель iSH уточнил, что приложение будет удалено из App Store уже завтра 10 ноября. По обновленным данным, Apple решила отложить эту процедуру на некоторое время.
Существование в магазине Apple приложения a-Shell также под угрозой, если разработчики срочно не выпустят обновление с удалением из программы команд curl, pip и wasm. Разработчики a-Shell подали апелляцию по этому требованию Apple.
Автор Linux терминала iSH Теодор Дюбуа (Theodore Dubois) пояснил, что Apple совсем недавно одобрила его приложение, а затем сообщила, что собирается его удалить. Разработчик пытался в течение двух недель понять, что там нужно исправить, но так и не разобрался в претензиях и логике системы App Review.
Ранее в мае этого года при первой попытке отправить iSH на рассмотрение был получен отказ. Apple отклонила приложение в соответствии с пунктом 2.5.2 руководства App Store Review Guidelines. В ответе компании также говорилось, что «в частности, ваше приложение позволяет пользователю устанавливать исполняемый код Linux...». Чуть позже Apple пояснила — в данном случае недопустимым является «управление пакетами или загрузка любого кода из локальных или удаленных источников». Обнаружилось, что у Apple существует неписаное правило, касающееся функций управления пакетами.
В июне этого года Дюбуа решил выяснить детали этого запрета на конференции для разработчиков WWDC 2020. Apple позволила в онлайн-чате лично общаться со своими сотрудниками в рамках этого мероприятия. И в одной из таких встреч Дюбуа смог пообщаться напрямую с разработчиком компании. Он пояснил, что Apple не нужны приложения, которое могут изменять свои функции после утверждения. Также не разрешен удаленный импорт пакетов, хотя в App Store есть популярные приложения, где запускается код на Python и поддерживается графический интерфейс для pip.
Дюбуа тогда спросил Боба (так назвался сотрудник Apple) — если он удалит apk из iSH, то поможет ли такое действие в его случае. На что Боб ушел от ответа, но посоветовал отправить исправленное приложение на одобрение.
Через пару месяцев Дюбуа удалил apk из iSH и отправил приложение 20 октября, на следующий день его одобрила Apple, а 22 октября оно появилось в App Store. Спустя четыре дня Apple без предупреждения позвонила разработчику и Майкл (так назвался сотрудник Apple) рассказал, что wget также является формой управления пакетами и эту функцию нужно убрать.
Оказалось, что за несколько дней в магазине App Store пользователи оценили приложение, а некоторые из них успешно попробовали его усовершенствовать — с помощью wget смогли установить apk. Причем разными способами.
cd
wget http://dl-cdn.alpinelinux.org/alpine/latest-stable/main/x86/apk-tools-static-2.10.5-r1.apk
cd /
tar xvzf ~/apk-tools-static-2.10.5-r1.apk
ln -s /sbin/apk.static /sbin/apk
cd
apk
Или таким:
wget -qO- http://dl-cdn.alpinelinux.org/alpine/v3.12/main/x86/apk-tools-static-2.10.5-r1.apk | tar -xz sbin/apk.static && ./sbin/apk.static add apk-tools && rm sbin/apk.static && rmdir sbin 2> /dev/null
Тем более, что исходный код эмулятора терминала для iOS iSH выложен на GitHub.
Дюбуа пояснил, что никто из его команды не говорил пользователям, как получить apk, но они все равно разобрались. Природа разработки iSH означала, что эта проблема была фундаментальной, поскольку пользователи всегда могут добавить обратно функцию, которую удалял автор. Дальше пользователи бы смогли придумать способ вернуть обратно wget, точно так же, как они смогли так легко добавить обратно apk.
Разговор с Apple ни к чему не привел. Специалисты компании не поняли, что в этом приложении wget просто загружает файлы, причем Safari разрешено скачивать файлы, а wget — нет. Apple стояла на своем — запрещен удаленный и локальный импорт кода. Специалист компании позже пояснил — можно выполнять код, который пользователь вводит в приложении, но не код, полученный из внешних источников. Специалист не пояснил, чем от автоматического скачивания отличается ситуация, когда код копирует из внешних источников и вставляет в приложение сам пользователь.
Закончив читать пункты в списке отказа, специалист Apple прояснил главную проблему — это приложение терминал Linux на iOS представляет собой угрозу безопасности. В посте в личном блоге Дюбуа цитирует шутку xkcd, что это уязвимость «атакующий может выполнить вредоносный код на собственной машине».
Дальнейшие апелляции Дюбуа в App Review не сыграли никакой роли — Apple собралась удалить его приложение из App Store.
Автор iSH подытожил, что его команда потеряла две недели на безрезультатные попытки договориться с Apple. Похоже, что процесс общения разработчиков и прохождения App Review был разработан компанией для максимального удобства Apple без особого внимания к тому, насколько это неудобно для сторонних авторов приложений. Apple может и должна давать больше возможностей, а не просто так отфутболивать разработчиков.
Разработчики a-Shell столкнулись с такой же проблемой. Их приложение может быть тоже удалено, если апелляция будет отклонена. Сейчас приложение a-Shell проходит еще одну проверку в Apple. Оказалось, что пользователи используют в нем pip install для добавления пакетов Python. Это также запрещено в пункте 2.5.2 в Руководстве App Store Review Guidelines: «Приложения должны быть автономными в своих пакетах и ??не могут читать или записывать данные за пределами обозначенной области контейнера, а также они не должны загружать, устанавливать или выполнять код, который представляет или изменяет функции или возможности приложения, включая другие приложения". Apple делает исключение этого пункта для «образовательных приложений, предназначенных для обучения, разработки или предоставления студентам возможности тестировать исполняемый код».
Программист Саагар Джа (Saagar Jha) из команды iSH отметил, что несмотря на кажущуюся мощь сред этих двух эмуляторов терминала, они исполняются в песочнице, как и любое другое приложение iOS.
RanmaSao
Будущее Apple: при покупке пользователь получает всего лишь фотографию устройства в стильной рамочке с закругленными углами, и все. На обратной стороне фотографии написан текст: "Приобретенное Вами реальное устройство в течение всего срока эксплуатации остается в специальном помещении надежно контролируемом компанией Apple, потому что только так мы можем гарантировать подлинную безопасность устройства для потребителя. Покупайте устройства компании Apple — самые безопасные устройства в мире! А еще рамочка для этой фотографии сделана из биоразлагаемого пластика и начнет распадаться через месяц. Apple — на страже безопасности и экологии!"
Arris
Фотография — это уже неэкологично.
Вспомните "Generation "П"" — вы получите бумажку (самораспадающуюся) с текстом: "Это фотография вашего реального устройства, приобретенного… " (и далее по тексту).
RanmaSao
"Ceci n’est pas une pipe"
Oplkill
в следующей версии уберут рамочку из коробки и её нужно будет покупать отдельно
da411d
При этом без рамочки бумажка будет разлагатся в 20 раз быстрее
house2008
Apple отложил удаление приложения, но мне не ясно на какой срок и на каких условиях.
betony
Вот этот лучший из бесплатных:
https://apps.apple.com/ru/app/libterm/id1380911705?l=en
simplix
«Те, кто готов променять свободу на безопасность, не достойны ни свободы, ни безопасности». Выбрал закрученную со всех сторон платформу — страдай.
Gugic
Иногда выбирают за тебя: habr.com/ru/news/t/527086
i360u
И после этого Apple пытается нам рассказывать, что iPad Pro — это устройство которое может заменить комп. В Google Play есть замечательный Termux, благодаря которому у меня в телефоне есть полноценные git, node.js, typescript и т. д. А iOS — платформа крайне недружественная к разработчикам. Причем ни к тем, кто разрабатывает для iOS, ни к тем, кто использует их девайсы для разработки. И это за наши же деньги.
simplix
Вроде пока принудительно не заставляют покупать яблочную продукцию.
i360u
Иногда это необходимо в профессиональных целях.
psydvl
Чтобы разрабатывать под яблочную продукцию нужно купить яблочную продукцию.
adictive_max
Причем желательно самою новую. Чтоб до запланированного превращения в тыкву времени побольше оставалось.
General_Failure
Яблочная продукция, на которой можно вести разработку, не имеет проблем с терминалами (есть встроенный, возможно есть в сторе и точно можно опубликовать кастомный вне стора). Проблема на устройствах, под которые обычно ведётся разработка.
i360u
Помимо разработки непосредственно (я вообще использую Linux), есть еще куча сопутствующих задач. Начиная с тестирования.
General_Failure
Да, если разработка под айфоны/айпады/часы, отладка и тестирование без них затруднительная (часто вообще невозможна, в симуляторах есть далеко не всё).
Но чем может помешать отсутствие терминала в тестируемом устройстве, я не представляю. Если во время тестирования без него реально никак, никто не запрещает накидать самому или найти на гитхабе и запустить из икскода на нужном устройстве. Также, если приложение с терминалом нужно распространять, есть корпоративные приложения, где правила мягче (возможно, этого запрета там нет).
i360u
Это был ответ на вопрос зачем эти устройства вообще покупать. И разработка под iOS тут не ключевой момент, тестировать нужно вообще любые универсальные и более-менее сложные веб приложения. Есть куча вещей, которые отловить можно только на живом девайсе. Отсутствие терминала мешает не тестированию, а полноценному использованию устройства разработчиком. И в случае с корпоративными приложениями, там все tеще геморройнее, только немного с другой стороны: developer.apple.com/programs/enterprise
General_Failure
Хм, ну с мобильной разработкой с проблемой столкнётесь всё же только когда мобилы с огрызком. Бэкэнд, десктоп, мобильный андроид — ну там я думаю везде терминал можно найти, разве что админ ограниить мог.
А вот с вебом как-то сталкивался — фронтэндер попросил у меня посидеть в сафари на десктопе, чтобы отладить веб-приложение на айфоне. Когда-то Сафари выпускали и под Windows, но оказалось что к тому времени давно уже прекратили. Выходит, что фронт без десктопного Сафари невозможен или по крайней мере затруднён, если нужна поддержка айфонов.
За доллар нужно выложить 80 рублей, а рубли-то все у нас!А на десктопе Сафари сейчас есть только в Mac OS.Irgen
Mac OS вполне хорошо работает в виртуалках, для тестирования фронта в Сафари такого варианта, кмк, будет вполне достаточно
razielvamp
Это как-то оправдывает сложности возникающие при разработке на/под ios?
И, тем более, позиционирование ipad как заменителя компьютера.
Arris
Вы будете делать на этом устройстве только то, что вам разрешил Apple.
Вы хотите делать что-то другое?
Вы опасный для общества девиант. Устройство уже доложило в полицию, ждите, за вами уже выехали.
Loggus66
Если там можно выполнять код, то это всё пустое. Даже если есть copy-paste, то бесполезно: кодируем в b64 бинарник ftp-клиента, копировать, вставить, cat file | base64 -d > ftp и поехали за утилитами на домашний сервер. Если, конечно, буфер позволяет вместить 70КБ.
alex_shpak
Даже если не позволит — то не проблема копировать-вставить несколько раз и склеить несколько файлов вместе.
vikarti
Apple скажет что команда base64 позволяет использовать удаленный код. Все для безопасности. Поэтому надо удалить. И добавить ограничение на размер буфера обмена.
Arris
Ящитаю, буфера обмена длиной в 1 твит хватит всем! (ирония)
nochkin
Новая единица измерения информации — один твит.
(сообщение выше занимает примерно пол-твита)
vladkorotnev
Эх, а было время, когда плюсы и твиты были вещами сугубо негативными и предназначались для совсем уж заколебавших корреспондентов :-)
Arris
… а началось все с лошадиной задницы.
Loggus66
Там жёсткие ограничения на сроки запуска, неделю где-то сертификат работает. Но пересобирать его не надо, внутри .IPA архива сертификаты лежат рядом с приложением, поэтому переподписать можно любое приложение.
Zantiago
у него прямо в гитхабе написано как его установить
nochkin
Всё верно. Они не говорили, а просто написали. Но пользователи, о ужас, прочитали.
farafonoff
Кто-нибудь пояснит, почему предлагается качать образ alpine x86?
vladkorotnev
Потому что в этом приложении на самом деле эмулятор x86 работает, а не исполнение кода напрямую на хостовом процессоре.
Valsha
А так же было бы интересно узнать, зачем в телефоне терминал?
Я к тому что использую iPhone Max и он все равно маленький для таких вещей (работать в терминале)
Есть макбук про, в нем и работаю с терминалом.
А телефон, ну очень не удобно же (((
agmt
AppleTV + bluetooth mouse&kb. В iPhone12 такой же процессор, как и на новом маке. Было бы круто иметь возможность заиспользовать это.
MasMaX
Иногда бывает надо экстренно выполнить несколько команд на удаленном сервере например.
Ahen
ssh клиент не равно эмулятор командной строки
BlackSCORPION
случаи бывают разные )
Akuma
Ну например? Можно случай, когда вот прям надо на телефоне срочно что-то сделать в командной строке?
nochkin
Например, подразнить Apple в плане удаления приложения из магазина.
BlackSCORPION
Например немного поработать ) бывает так что очень надо а с собой только телефон. Да можно работать на удаленном сервере по ssh, но ведь бывает интернет не але. И это в принципе удобно иметь на телефоне, например можно юзать привычный youtube-dl вместо непонятных приложений с рекламой.
ведь кушать оно не просит, зато редко но метко упростит жизнь.
Akuma
А пример все же будет? Сейчас это что-то абстрактное, что по факту никогда не нужно оказывается.
youtube-dl не работает без интернета. К работе он не относится. Это пиратство, логично, что его так просто не пустят.
Кушать оно как раз просит. Ниже писал про «Мы из службы безопасности, вам надо срочно поставить приложение и выполнить вот этот добрейший код на вашем телефоне».
Возможность конечно забирают, но вреда от него больше, чем пользы.
PrinceKorwin
Почему между youtube-dl и «пиратство» знак равенства? На Youtube (и не только на нём) много интересных вещей лежит со свободной лицензией (Free Art license и Creative Commons, к примеру).
Я такую музыку себе на компьютер загружаю. В каком месте я пират?
Akuma
Потому что правила ютуба запрещают скачивать контент (ну только их средствами и по подписке). Вы пользуетесь бесплатным сервисом, который зарабатывает на рекламе. Скачали? Лишили их дохода со всеми вытекающими.
PrinceKorwin
У меня оплаченная подписка на Youtube. Он с меня каждый месяц получает деньги.
> Потому что правила ютуба запрещают скачивать контент
Но вот законодательство моей страны говорит о том, что я могу делать копии для себя. И что если пункт соглашения противоречит с законом, то данный пункт признаётся ничтожным.
Akuma
Вы от меня ждете разрешения что ли? :)
Напишите в ютуб, спросите что они думают.
Скорее всего вы не можете делать копии, т.к. видео вы арендуете, берете в займы, оно не ваше и вообще надо смотреть на выключенном мониторе, т.к. никто не читал соглашение на самом деле.
PrinceKorwin
Нет, конечно. Я просто написал, что меня удивило как вы лихо приравняли youtube-dl к пиратству.
Так видео и не принадлежит Youtube, оно автора и автор дал ему свободную лицензию, по которому не только скачивание, но и его использование в том числе и для коммерческих целей разрешено.
Я только указал, что не всё так просто как вы считаете и не стоит ставить знак равенства между софтом (вещь, инструмент) и пиратством (процесс, деятельность).
Akuma
Я и не ставлю знак равенства. А лишь объясняю причину, почему youtube-dl не любят. Софт под конкретные цели — скачивание того, что гугл не хочет давать скачивать просто так.
cepera_ang
Но заяву написал не гугл, он вроде даже не входит в RIAA.
msatersam11
«правила ютуба» в лице всех их хотелок и запретов, применимы для США.
Но они не являются «абсолютной истиной» где-бы ни было в мире.
Потому, не надо кого-то в чем-то обвинять( особенно, подобным образом ) только на основании того, что человек, находясь в одном государстве, может, «о, ужас», не соответствовать всем законам другого государства и основанным на них котелкам отдельных контор( которые, тем более, любят откровенно плевать на законодательство и законные требования других государств )
Crandel
Я обновляю все свои конфиги используя термукс, гит и баш скрипт.
SagePtr
Предлагаю Apple пойти дальше и запретить javascript в своём Safari, ведь он позволяет сайтам выполнять код.
vikarti
Вы не понимаете, это другое -:).
Но вот JIT-компилятор был только в Safari (потом сделали WKWebView (по сути более аккуратно движок Safari упаковали) который позволяет им пользоваться). Соответственно все браузеры на iOS — на движке от Safari.
Valsha
[шутка]
Так это было бы просто великолепно.
А там глядишь, и другие бы (разрабы браузеров) подтянулись бы!
[/шутка]
FTOH
Apple как раз запретила Microsoft выпускать облачный сервис xCloud, а они через браузер собираются обойти ограничения. Надо запрещать.
Business Insider: Microsoft выпустит браузерное приложение xCloud для iOS, чтобы обойти правила App Store
Gugic
И не только они:
Nvidia: appleinsider.com/articles/20/11/05/nvidia-game-streaming-service-geforce-now-coming-to-ios-safari
Amazon: www.theverge.com/2020/9/25/21455343/amazon-luna-apple-app-store-rules-cloud-gaming-streaming-google-nvidia
Google: 9to5google.com/2020/11/07/stadia-official-safari-ios-14-support
redsh0927
Ничего нового, вся ситуация соответствует определению до смешного точно.
cepera_ang
"Если бы браузеры не существовали к моменту появления App Store, то его правила запретили бы их изобретения"
Браузер может скачивать и выполнять произвольный код, доколе будем делать для них исключение?!
Akuma
Для ИТшников это конечно дико. Но посмотрите на обычного пользователя: его можно по телефону попросить поставить нужное приложение «для ваше безопасности» и запустить там произвольный код. Мало ли что там можно сделать.
«В массе» это действительно нафиг не нужно. Да даже ИТшникам далеко не всем нужен эмулятор на телефоне.
da411d
ainu
Не совсем произвольный. Он всё равно в песочнице будет (также как можно попросить пользователя поставить приложение из стора, которое тоже будет выполнять «произвольный» код).
Другими словами, Apple не добавили всякой безопасности своими требованиями. Да, формально пользователь может скачать приложение, которое будет ему в песочнице показывать на экран рекламу в обход каналов Apple, и просить денег в обход его каналов, и показывать детскую порнографию. Да, безопасно с точки зрения системного окружения, но опасно в плане user-story. Парадокс, но как раз этим и занимается браузер — и рекламу показывает, и порнографию может. А именно с точки зрения песочницы браузер с WASM, в котором есть busybox, имеет примерно тот же уровень безопасности/опасности.
Akuma
Я думаю было бы «можно», Эпл и браузеры бы сторонние выпилила с радостью. Но это уже будет перебор.
Формально я тоже против этих запретов, но вот знаете, все их моих знакомых с айфонами — пользуются не нарадуются, потому что «работает просто так». И никаких проблем у людей нет. И чем меньше у них будет возможности шагнуть влево, те меньше проблем появится. Эпл к этому и идет.
Сейчас они жертвуют удобством единичных людей, которым эта функция нужна (хотя мне еще никто не дал конкретных кейсов), ради остальной толпы. И для толпы это будет плюс.
redsh0927
Akuma
Как и тысячу раз до этого — ни у кого свободу не отбирают. Делайте свое устройство и ставьте туда любые эмуляторы. Но есть нюанс.
Тут тонкая грань между идиотами и безопасностью.
staticmain
Формально оно так и есть. Все браузеры там на движке сафари.
polar_yogi
> Эпл к этому и идет.
Точнее — Эпл из этого исходит. В биографии Стива Джобса Айзексона описан процесс создания первого компьютера, Возняк хотел добавить в него дополнительных портов, чтобы пользователь имел возможность расширять его функции, Джобс был против, его позицией было: полностью контролировать user experience. Вся история Apple — последовательное следование этой концепции.
Поэтому возмущения, на мой взгляд, выглядят несколько забавно.
www0z0k
Когда у меня был андроид, я пробовал кодить на телефоне, мне не понравилось. Сейчас хожу с айфоном (купил его для тестирования как раз и он как-то у меня задержался), но понимаю, что у него функционал — примерно как у нокии 3310, только можно веб и медиа смотреть еще. Для остального ноут в рюкзаке лежит, совсем не скучаю по возможности делать что-то айтишное на телефоне, хотя помню свой восторг, когда на андроиде оказалось, что можно делать всё, правда, оказалось, что это просто такая ачивка, практического смысла не увидел.
RiseOfDeath
«Здравствуйте, я монгольский вирус...»
upd.
Блин, мимо ветки промахнулся.
Akuma
Нет. Здравствуйте, я из службы безопасности сбербанка. Повторюсь. Меньше шагов влево — больше безопасность. Вариант с картонкой вместо телефона из комментов выше — утопия для Эпл, без шуток.
adictive_max
«Здравствуйте, я из службы безопасности сбербанка. Продиктуйте номер из СМС, пожалуйста.»
И без единой строчки кода.
Ndochp
Ну то есть ребятам надо научиться запускать код скачанный сафари и всячески это пиарить.
Gordon01
Хорошая поддержка разработчиков за 30% налог
arrakisfremen
А Тим Кук не хочет себе анус удалить для предотвращения несанкционированного входа?
Amareis
Ох как я орнул с этого комментария, пришлось даже написать об этом!
vikarti
А разве в его случае это несанкционированный вход? -:) см например edition.cnn.com/2018/10/24/tech/tim-cook-gay-apple/index.html
haword
если разработчики перестанут писать по iOS свои приложения то продажи резко начнут падать, и как следствие этого эпл пойдет на уступки. так что все в руках разработчиков. сама по себе эпл без стороннего софта долго не протянет.