Русский
Русский
English
Статистика
Реклама

F-droid

Упаковка приложения в F-Droid

10.09.2020 12:19:55 | Автор: admin


tl;dr: упаковываю и отправляю приложение без троянов для управления своими лампами в F-Droid без каких-либо знаний в разработке для Android.

У меня есть политическая позиция, я сторонник СПО во многом согласен со Столлманом. Как это часто бывает, такая позиция дополняется лёгкой паранойей. Я стараюсь избавляться от проприетарных приложений, особенно, если они работают через сторонние сервера.

А ещё у меня есть умные лампы Xiaomi Yeelight, которые контролируются приложением, работающим через сервера Xiaomi. Но в нём есть возможность включить в лампе API, работающее внутри локалки. Чтобы чувствовать себя спокойней, я пошёл искать приложение в Github и Gitlab и теперь намереваюсь продвинуть его в F-Droid, чтобы поддержать наше параноидальное сообщество.

Сборка и проверка


Для того, чтобы приложение попало в каталог, оно должно хотя бы собираться и, по-хорошему, работать. Мой выбор оказался скудным, а на Gitlab ничего не нашлось ни одного приложения. Из доступных приложений я смог собрать лишь два, а запустилось в итоге только одно из них. Я очень далёк от разработки под Android, за несколько дней я освоил только простую сборку с помощью Gradle, её дальше и опишу.

Нам понадобится: git, Java Runtime Environment, Android SDK, Android Debugging Bridge и свежий Gradle. JRE, ADB и git для Debian Testing можно установить из пакетов apt install git adb openjdk-11-jre-headless.

Android SDK обычно устанавливается вместе с Android Studio, но я воспользовался консольной утилитой sdkmanager:

unzip commandlinetools-linux-6609375_latest.zipexport PATH=$PATH:$PWD/tools/bin/mkdir android-sdkexport ANDROID_SDK_ROOT=$PWD/android-sdk/

Если вам показалось, что я пропустил установку собственно Android SDK, то вам не показалось. Потом объясню. В репозиториях Debian лежит протухшая версия Gradle, сборка с ней не работает, свежую тоже придётся устанавливать с сайта:

wget https://services.gradle.org/distributions/gradle-6.6.1-bin.zipunzip gradle-6.6.1-bin.zipexport PATH=$PATH:$PWD/gradle-6.6.1/bin/

Репозиторий я форкнул к себе и почистил автосгенерированный мусор. Собирается всё так:

yes | sdkmanager --licenses --sdk_root=$ANDROID_SDK_ROOTgit clone https://github.com/asz/OpenLight.gitcd OpenLight/gradle wrapper./gradlew assemble

Первой командой принимаем оптом принимаем все лицензионные условия, как того требует sdkmanager для неинтерактивной установки. При автогенерации обёртки (gradle wrapper) Gradle сам распарсит и установит все необходимые зависимости. Скачивание нужной версии Android SDK, сборочного инструментария и других специфичных для Android зависимостей выполняется именно с помощью sdkmanager, поэтому руками это делать не обязательно, а лицензии придётся принять заранее.

image

Самое время включить API в официальном приложении. Включите в смартфоне отладку по USB, подключите его к компьютеру и устанавливайте сгенерированный отладочный пакет: adb install app/build/outputs/apk/debug/app-debug.apk. Не забудьте разрешить отладку с вашего компьютера во всплывающем окне на телефоне. Если приложение на телефоне демонстрирует признаки жизни, то можно продолжать.

Подготовка патча в F-Droid


У F-Droid есть правила для включения приложения в каталог. Основные довольно простые: никаких несвободных зависимостей сборки, проблемы с приватностью и любые несвободные зависимости самого приложения должны быть помечены. Я не стал проверять зависимости самостоятельно, ведь у F-Droid есть CI и собственная система сборки, это позволяет просто прогнать коммит через пайплайн.

Теперь пойдём на GitLab, где ведётся разработка F-Droid. Сначала обязательно проверьте, что вашим приложением ещё никто не занимается. Подобная активность сосредоточена в запросах на упаковку и в запросах на слияние. Форкайте репозиторий Data и клонируйте его из своего профиля.

Для того, чтобы приложение оказалось в F-Droid, достаточно одного YML-файла. Найдите любой подходящий YML-файл в подкаталоге metadata/ вашего репозитория и скопируйте его в аналогичном формате: applicationId.yml. Значение applicationId для вашего приложения можно достать из какого-нибудь build.gradle его же репозитория, в моём случае из app/build.gradle. Не помню, какой из файлов я взял в качестве референса, покажу лишь итоговый файл metadata/grmasa.com.open_light.yml:

AntiFeatures:
- NonFreeDep
Categories:
- Connectivity
License: GPL-2.0-or-later
AuthorWebSite: https://github.com/grmasa
SourceCode: https://github.com/grmasa/Open_light
IssueTracker: https://github.com/grmasa/Open_light/issues
Changelog: https://github.com/grmasa/Open_light/tags

AutoName: Open Light
Summary: Control Xiaomi Yeelight WiFi smart bulbs
Description: |-
Control Xiaomi Yeelight smart bulbs within your Local Area Network.
Only fits WiFi controlled bulbs.

This app requires enabled LAN control for bulbs: open the official app, set up
all the bulbs, go to LAN control in the menu, and enable it for every device.

RepoType: git
Repo: https://github.com/grmasa/Open_light.git

Builds:
- versionName: 1.1.2
versionCode: 1
commit: v1.1.2
subdir: app
gradle:
- yes

AutoUpdateMode: Version v%v
UpdateCheckMode: Tags
CurrentVersion: 1.1.2
CurrentVersionCode: 1


Мне было сложно выбрать конкретную AntiFeature, но доскональная точность не требуется, указал NonFreeDep. Категория Connectivity подходит для приложений-компаньонов устройств. Ключ Build описывает, из какого коммита/тега собирать приложение. versionCode также можно найти в build.gradle. Если вы не хотите обновлять приложение вручную, то можно заполнить UpdateCheckMode и AutoUpdateMode (v%v описывает формат тега).

Для базовой проверки файла потребуется утилита fdroid из репозитория F-Droid Server, его зависимости и переменная ANDROID_HOME:

git clone https://gitlab.com/fdroid/fdroidserver.gitexport PATH=$PATH:$PWD/fdroidserverapt -y install python3-git python3-pyasn1 python3-pyasn1-modules python3-yaml python3-requestsexport ANDROID_HOME=$ANDROID_SDK_ROOT

Можно вернуться в директорию fdroiddata и проверить, рабочие ли метаданные:

fdroid readmetafdroid lint grmasa.com.open_lightfdroid build -v -l grmasa.com.open_light

Первые две команды проверяют синтаксис, третья собирает приложение. На выходе у вас должен появиться APK: unsigned/grmasa.com.open_light_1.apk.

Можно на всякий случай запустить fdroid checkupdates grmasa.com.open_light для проверки обновлений и fdroid rewritemeta grmasa.com.open_light для корректного перезаполнения файла с метаданными, после чего перепроверить сборку.

Почти счастливый конец


Теперь можно коммитить и проверять пайплайн Gitlab CI. У меня всё прошло!

Я заполнил Merge Request, его проверили и попросили уведомить автора оригинального приложения. Если автор будет игнорировать меня больше двух недель, я просто перепишу ссылки в метаданных на свой форк и тогда его примут.

image

Теперь я могу убрать подальше свой специальный телефон для троянов. И у меня даже останется возможность извращённым образом управлять ими из интернета даже забанив им локалку!

Как ни печально, в иллюстрации в заголовке есть доля правды. В приложении обнаружился неприятный баг на втором шаге визарда: из списка обнаруженных ламп, чаще всего добавляется не та, которую я выбрал. Из-за этого лампы в основном списке. Чтобы обойти эту проблему, я заводил лампы в приложение поочерёдно. Надеюсь, когда-нибудь я разберусь, в чём проблема, или упакую другое приложение.



Подробнее..

Почти unGoogled Android

28.09.2020 12:18:44 | Автор: admin
Image by andrekheren from Pixabay.Image by andrekheren from Pixabay.

Раз уж астрологи объявили месяц статей про прошивки для Android без гугловых сервисов, поделюсь и я своим опытом. Чтобы предвосхитить возможные вопросы к статье, сразу хочу сказать какие именно цели я преследовал при перепрошивке, а где приходилось срезать углы.


Желаемые (основные) цели:

  • Избежать vendor lock-а.

  • Не хранить все яйца в одной корзине.

  • Свобода внутри своего устройства.

  • Использовать приложения с открытым исходным кодом.

  • Возможностью хостить данные на своих мощностях.

  • Не убирать возможность пользоваться проприетарным ПО.

  • Иметь возможность ограничивать приложения в доступе у данным.

  • Увеличить время жизни устройства от подзарядки до подзарядки.

Цели, к которым я не стремился (но некоторые частично достигнуты за счёт предыдущих):

  • Приватность и анонимизация.

  • Блокировка слежки.

  • Шифрование везде и во всём.

Я не считаю что достиг максимума в основных целях, но я осознаю срезанные углы, и получившийся результат меня более чем устраивает.

Немного подроблей про каждую цель.

Избежать vendor lock-а чтобы внезапно не потерять доступ ко всему, только потому что какой-то ИИ (или не ИИ) меня решил заблочить. Я осознаю что вероятность этого весьма мала, но в прошлом у меня был негативный опыт в подобного характера, и я бы не хотел его повторения со своим личным телефоном.

Не хранить все яйца в одной корзине полностью избежать vendor lock-а не получится, абсурдный пример при полностью своём софте, и серверах у себя в квартире, всё равно есть lock на электрика, который в самый неподходящий момент может отключить электричество. Так что вторая цель попытка баланса между хранением разных данных в разных местах, и преодолением неудобств от этого.

Свобода внутри своего устройства тут подразумевается рут, а так же дополнительные надстройки к нему.

Использовать приложения с открытым исходным кодом, а так же с возможностью хостить данные на своих мощностях я уже давно большой поклонник решений с отрытым кодом. Осознаю, что я не буду изучать код каждого на предмет закладок, и более того, я не буду их лично компилировать, а предпочту скачивание, скажем, с F-Droid (где какой-нибудь злой гений мог бы внедрять закладки при сборке). Тем не менее, у меня на душе светлей от использования OSS-приложений, а ещё в прошлом я, бывало, пересобирал какие-то приложения с изменениями необходимыми лично мне.

Возможностью хостить данные на своих мощностях это продолжение избегания vendor lock-а. Если софт предполагает хранение данных вне устройства, то хотелось бы чтоб эти данные хранились либо у меня на сервере, либо, на крайний случай, была возможность выгрузки данных в неком читаемом формате.

Не убирать возможность пользоваться проприетарным ПО приятнось для души это одно, а работа и жизнь это другое. Я не Столлман, и не готов настолько радикально сменить работу, банк, страну и многое другое, чтобы была возможность пользоваться исключительно OSS-софтом. Достаточно часто приходится пользоваться проприетарным ПО.

Иметь возможность ограничивать приложения в доступе у данным в Android всегда был механизм permissions, а так же уже достаточно давно runtime permissions, где приложения могут в рантайме запрашивать необходимые им доступы. Но этим часто злоупотребляют, и приложение может просто отказаться запускаться если не предоставить все необходимые доступы. Хотелось бы, скажем, дать доступ к контактам, но к фейковым.

Увеличить время жизни устройства от подзарядки до подзарядки без комментариев.

Анонимизация, блокировка слежки и шифрование везде и во всём по этим пунктам отвечу старым добрым комиксом https://xkcd.com/538/. Если кто-нибудь, ну вдруг, получит доступ ко всем моим данным, то будет обидно, досадно, но моя жизнь глобально не ухудшиться. А если государство захочет меня нагнуть, то ему для этого достаточно лишь собственного желания.

Выбор ОС и телефона

Будучи разработчиком под Android для меня выбор ОС был прост (хотя изначально я немного думал в сторону Sailfish OS). В качестве форка я выбирал между LineageOS и /e/.

Ранее у меня уже был положительный установки и использования CyanogenMod и LineageOS, а /e/ базируется на LineageOS. У /e/ есть некоторое преимущество в виде microG искаропки, но и у microG есть собственные билды LineageOS.

Spoiler
  • LineageOS свободный (как в понятии free as freedom так и в понятии free as beer) форк Android. От AOSP отличается готовыми сборками под большое количество устройств и некоторыми дополнительными плюшками (улучшенный рабочий стол, твики в настройках).

  • microG свободная (open source) реимплементация некоторых частей GSF (Google Services Framework). Особая ценность для пользователя в том, что microG добавляет поддержку PUSH-уведомлений, которые отправляются по механизму GCM.

  • /e/ если LineageOS представляет собой просто улучшенный AOSP без экосистемы, то /e/ предоставляет экосистему в виде /e/ account-а, email-хостинга, магазина приложений, карт, а так же предоставляет улучшенные основные приложения (т.к. я сам /e/не устанавливал, то возможны неточности).

Для помощи себе в выборе телефона, я написал небольшой скрипт, который скачивает список устройств, для которых есть LineageOS, проверяет наличие /e/ и microG для этого устройства, парсит onliner и 4pda на предмет даты выхода устройства и максимальной доступной версии Android под неё у производителя и затем выводит список, отсортированный по привлекательности устройства (код не ахти какой, по этому вместо нормального репозитария выложил в gist).

Spoiler
  • хотя microG теоретически может устанавливаться на любой форк Android-а, на LineageOS её сходу установить нельзя, т.к. мейнтейнеры LineageOS не хотят добавлять в апстрим небольшой патч, который необходим для корректной работы microG. Того патча, там, буквально несколько строчек, но придётся пересобрать LineageOS самостоятельно. К счастью, мейнтейнеры microG предоставляют свои сборки LineageOS уже с патчем, с самим microG а так же с предустановленным F-Droid.

  • F-Droid так называется и репозитарий свободного ПО для Android, и приложение-магазин, которая позволяет их из этого репозитария скачивать и устанавливать.

Взяв десяток устройств из верхушки списка, я добавил их в сравнение на онлайнере (не сочтите за рекламу, как мне кажется там действительно удобное сравнение), и выбрал наиболее подходящий для меня вариант. Несмотря на предубеждение у телефонам из поднебесной, это оказался Xiaomi Mi 8.

Использую этот телефон уже пол года, и каких-либо нареканий кроме слишком большого размера экрана у меня к нему нет. Но ни в коем случае на нём не настаиваю, тем более что у вас могут быть другие предпочтения, да и за эти пол года появилось больше моделей с поддержкой LineageOS.

Для этого телефона доступно как LineageOS for microG так и /e/, но я отдал предпочтение более чистому Android-у (LineageOS for microG).

Установка

Детально описывать установку я не буду, т.к. во-первых это было уже давно и я мог что-то подзабыть, а во-вторых вы можете выбрать другое устройство. Поэтому, лучше найдите ветку форума про интересующий вас телефон на 4pda там будут более чем подробные инструкции и отзывчивое community.

Но чтоб не оставлять раздел совсем пустым, вот что вспомнилось про установку для моего телефона:

  1. Разблокировать загрузчик по инструкции с 4pda.

  2. Обновить официальную прошивку (MIUI) до версии Android, соответствующей той, которую будете прошивать (осторожно, версии самого MIUI и Android на которм он базируется не совпадают). Кажется что виртуалка с Windows не понадобилась, но точно не помню.

  3. Установить TWRP по инструкции с 4pda (там под Windows, но bat-ники очень простые, и можно всё сделать в любой OS).

  4. Устанавливаем LineageOS по инструкции с 4dpa, но только без OpenGApps. Хоть название намекает на открытость, но открыт там лишь код, которые устанавливает GSF, а сами GSF как были проприетарными и под контролем у Google, так и остаются.

  5. Устанавливаем Magisk, и перезагружаем устройство.

Spoiler
  • MIUI форк Android-а использующийся с телефонах Xiaomi (а так же в некоторых других благодаря кастомным прошивкам). Отличается красивым внешним видом и обилием рекламы прямо в пришивке (sic).

  • TWRP Team Win Recovery Project, кастомное рекавери для андроид, с широкими возможностями и управлением тачем (в отличие от некоторых других, где управление производится кнопками громкости).

  • Magisk systemless root для Android (не требуется модификации никаких файлов в разделе system). Так же Magisk предоставляет API для плагинов, которые реализуют и другие (кроме root) вещи.

Сразу после перепрошивки и перезагрузки, нужно установить несколько важных приложений. Большинство из них находится в основном репозитории F-Droid, но некоторые в дополнительных (список других популярных репозиториев можно взять из приложение Aurora Droid).

Magisk Manager

Если он не был установлен сразу, нужно установить. Далее через него нужно включить Magisk Hide а так же переименовать имя пакета и название launcher-а это позволит более чем успешно скрывать наличие рута на устройстве. Только учтите, что Magisk Hide не применяется автоматически, и его нужно включать индивидуально для нужных приложений.

Вопросом прохождения успешной аттестации SafetyNet я особо не занимался, т.к. пока что не пользоватлся таким приложением, где это было бы проблемой. Если такое будет, то либо попробую всё-таки настроить, либо подумаю над сменой приложения.

Spoiler

Google SafetyNet механизм в GSF, который позволяет сторонним приложениям узнавать, насколько безопасно (по мнению Google) устройство, на котором работает приложение.

Есть два вида проверок basicIntegrity и ctsProfileMatch. Первая из них не очень строгая, и отвечает на вопрос не поддельное ли (что бы это ни значило) устройство. Вторая более строгая, и успешно пройти её могут только устройства, которые прошли Android compatibility testing.

Чтобы пройти ctsProfileMatch на кастомной прошивке, нужно делать очень много странных вещей, и то, нет никаких гарантий.

Проверку basicIntegrity должно быть пройти проще (если верить многочисленным статьям), но в моём случае не проходит даже она :(

Из модулей я поставил Riru (Riru - Core) и Riru - EdXposed (сам по себе Xposed не работает на новых версиях Android, но это обходной путь через Magisk). Другие модули мне не пригодились, хотя выбор очень большой.

Spoiler

XPosed фреймворк, который позволяет сторонним модулям внедряться в приложения, без необходимости модификации оных (XPosed внедряет себя в загрузчик приложений, позволяя на лету подменять классы и методы).

Для XPosed написаны тысячи (если не десятки или даже сотни тысяч) модулей, позволяющих кастомизировать Android до мельчайших деталей.

Через EdXposed я установил App Locale 2 для принудительной смены языка в приложениях (я предпочитаю интерфейс телефона и большинства приложений на английском, но некоторые приложения хочу видеть на русском. К сожалению, не все предоставляют такую возможность в настройках (например, Яндекс Деньги), так что приходится действоватб обходным путём.

Ещё я установил модуль XPrivacyLua для подсовывания фейковых данных особо любопытным приложениям, которые не запускаются если не разрешить пермишен, который бы мне не хотелось бы давать.

FoxyDroid, Aurora Droid

Сразу в системе будет установлен F-Droid (при условии установки LineageOS for microG). Мне приложение не кажется ни особо быстрым, ни особо удобным, по этому я дополнительно устанавливаю FoxyDroid и Aurora Droid.

FoxyDroid быстрый и минималистичный магазин приложений. Aurora Droid очень красив, но местами глючноват. Из хорошего там сразу есть список дополнительных репозиториев с OSS-программами. Я некоторые из них переношу в FoxyDroid (Bromite, IzzyOnDroid, microG), а сам Aurora Droid потом удаляю (но ни в коем случае не призываю делать точно так же).

Aurora Store

Полностью отказаться от магазина Google Play я пока не готов, по этому использую Aurora Store для скачки приложений оттуда. Там можно войти под своим аккаунтом, и получить доступ к купленным приложениям (внутри самого Aurora Store покупать нельзя, так что покупайте через Web либо с другого устройства). Осознаю что за использование своего аккаунта вне самого Google Play меня могут безвозбранно забанить, но я иду на этот риск.

Apple UnifiedNpl Backend, Deja Vu Location Service

Сам по себе microG не умеет определять координаты без GPS, но делегирует эту задачу сторонним приложениям через механизм UnifiedNlp. Сразу в прошивке уже есть Mozilla UnifiedNpl Backend, но по крайней мере в моём городе он не особо точен, по этому я устанавливаю дополнительные.

Apple Unified Nlp Backend может показаться что это шило на мыло (зачем избавляться от слежки Google, если будет слежка от Apple), но как я писал вначале статьи, цели приватности я не преследовал, а OSS-приложений с названием похожим на Google Unified Nlp Backend я не нашёл.

Deja Vu Location Service приложение ведёт локальную базу местоположений и их соответствия WiFi-точкам и мобильным вышкам. Через некоторое время использования, позиция без GPS будет определяться в тех местах, где вы часто бываете.

Flite TTS Engine

Синтезатор речи. Умеет только английский язык. Сразу после установки нужно скачать необходимые голосовые данные и настройть их. Хочу предупредить, что иногда кажется, что настройки не применяются. Тогда нужно смахнуть приложение, и открыть заново.

DAVx5

Это приложение служит для того, чтобы была возможность синхронизации контактов и календарей по протоколам CardDAV и CalDAV. Для календарей (и почты) я пользуюсь Fastmail, и там всё достаточно тривиально. Контакты же мои всё ещё в Google, и настроить DAVx5 для синхронизации контактов оттуда немного замороченно.

Адрес будет https://www.googleapis.com/carddav/v1/principals/<ваша почта>/lists/default/, а вот с паролем хитрее. Т.к. DAVx5 не умеет гугловскую авторизацию, а гугл больше не поддерживает вход по логину и паролю, придётся сделать специальный пароль для приложений.

В процессе создания пароля придётся включить 2-step verification, и для этого пригодится следующая программа.

Authenticator Pro

Это приложения для герерации кодов для двухфакторной авторизации. Альтернативно можно установить Google Authenticator, но тот который в F-Droid уже устарел (хотя и работает), а новый уже не open source.

Немного других приложений

Остальные приложения вы смело можете заменять на свой вкус, но мне нравятся именно эти:

  • QKSMS отличная программа для СМС.

  • Simple Calendar AOSP-календарь для меня не очень удобен, а вот Simple Calendar самое то красивый, функциональный, но не перегруженный (не хватает только возможности задавать цвет для события в рамках одного календаря).

  • Binary Eye сканнер штрих- и бар-кодов.

  • Fennec F-Droid мой основной браузер.

  • Bromite если для просмотра какого-нибудь сайта нужен браузет на основе Chroimum. К слову, команда Bromite так же предоставляет билды чистого Chromium-а.

  • LibreOffice Viewer просмотрщий документов.

  • Librera PRO читалка книг (дизайн немного инопланетный, но программа очень функциональная).

  • MuPDF viewer минималистичный просмотрщик pdf. В F-Droid есть несколько вариантой MuPDF, но именно этот более-менее работает на последних версиях Android, и в котором есть хоть какие-то приятные анимации.

  • NewPipe, SkyTube замена приложению YouTube.

  • OsmAnd на мой вкус самые функциональные offline-карты на базе open street maps.

  • Telegram FOSS просто чтоб вы знали, что есть отдельная OSS-сборка. Там есть нюанс с настройкой уведомлений (в OSS-версии не используются уведомления через GCM), и постоянно будет висеть нотификашка, но по тапу на неё в самом телеграме будут инструкции как её скрыть.

  • Tasks я всё ещё не перешёл на него (пользуюсь проприетарным Todoist), но выглядит многобещающе, и умеет синхронизироваться с CalDAV-сервером (с Fastmail работает).

  • Warden приложение, которое сканирует установленные приложения, и прогоняет их по разным базам, после чего выводит трекеры и логгеры, которые внедрены в приложение. Не могу сказать что я им пользуюсь по делу (например, не пользуюсь приложениями, если в них много трекеров), но бывает интересно просмотреть какие приложения больше собирают инфы, а какие меньше.

Это далеко не весь список моих приложений установленных из F-Droid и других свободных репозиториев, но остальные мне показались очень спецефичными, по этому я не стал их упоминать, как и приложения установленные из Google Play (тут у каждого будет свой набор любимых приложений).

Единственное, чего я не нашёл в Open Source, так это достойного почтового клиента, который умеет много email-аккаунтов, поддерживает Google-аутентификацию, не перенаправляет все письма на какие-то странные сервера, умеет unified inbox и прилично выглядит. K9-Mail мне неудобен, FairEmail выглядит интересно, но я пока не готов врываться в настройку (кроме того в OSS-версии недоступно много функций). По этому я продолжаю пользоваться проприетарным и платным приложением AquaMail (не сочтите за рекламу), но с радостью приму советы по смене приложения.

Итоги

Даже несмотря на то, что большинство желаемых целей было достингуто не на 100%, результатом я всё равно очень доволен, и возвращаться на прошивку с GSF или вообще на прошивку от вендора нет никакого желания. Подробней по каждой цели:

  • Избежать vendor lock-а и не хранить все яйца в одной корзине в какой-то мере удалось. Телефон теперь принадлежит мне (если не рассматривать возможные закладки в драйверах), а данные разнесены по разным провайдерам.

  • Свобода внутри своего устройства да, есть полноценный рут, мощное рекавери и много модулей для Magick и XPosed, что позволяет исследовать устройство, и изменять его поведение.

  • Использовать приложения с открытым исходным кодом частично удалось. Многие OSS-приложения ничуть не хуже, или даже лучше своих проприетарных аналогов (для моих сценариев использования), но для некоторых проприетарных приложений не удалось найти адекватную замену (Evernote, Pocket), а некоторые никогда не будут в OSS (приложения для банкинга). Ещё местами есть проблема, когда приложение open source, но билд, который есть в F-Droid либо устарел по сравнению с билдом в Google Play, либо не работает (привет, Rocket.Chat).

  • Возможностью хостить данные на своих мощностях частично удалось, и потенциально можно перенести ещё больше информации к себе. Почта, календари, контакты, задачи всё это можно хостить либо вообще на своём сервере, либо выбрать провайдера себе по вкусу. Так же можно огранизовать свои сервера для некоторых чатов и мессенджеров. Но из-за специфики рабочих процессов что-то остаётся проприетарным (скажем, не получается перейти с Google Docs на OwnCloud или NextCloud).

  • Не убирать возможность пользоваться проприетарным ПО всё хорошо, можно без проблем устанавливать приложения из Google Play, в том числе и когда-либо купленные. Но вот что касается возможности покупать приложения на самом устройстве, либо пользоваться in-app покупками, то тут не всё так однозначно. Чтобы покупать, нужно иметь какое-либо другое устройство с установленным GSF тогда можно будет покупать либо с этого устройства, либо через Web. С in-app-ами хуже, т.к. если статус покупки / подписки не хранится на сервере, то при оплате in-app-а на дополнительном устройстве, он не появится на вашем основном. Хотя с приложениями, которыми я пользуюсь (Todoist, Evernote, Яндекс.Музыка) всё хорошо.

  • Иметь возможность ограничивать приложения в доступе у данным да, это возможно через модули к XPosed.

  • Увеличить время жизни устройства от подзарядки до подзарядки это получилось, и да, это случилось после замены GSF на microG. Читал статьи, где авторы утверждают что GSF сами по себе отжирают совсем немного батареи, а вся вина на приложениях, которые часто получают пуши и / или просыпаются в фоне. Так вот, приложений у меня установлено очень много, большинство из них пользуются пушами через GCM, а некоторые и вовсе держат своё соединение. И несмотря на то, что я достаточно активно пользуюсь телефоном, заряжаю я его раз в несколько дней. Если хочется большего, то в настройках microG можно увеличить интервал проверки пушей, тогда батарея будет тратиться ещё меньше (но ценой того, что пуш-нотификация может прийти со значительно задержкой).

Подробнее..

Из песочницы Остановите Total Commander! или главная проблема свободного ПО

19.08.2020 16:20:48 | Автор: admin

Сегодня мы попробуем разобраться, почему Open Source приложениями никто не хочет пользоваться. Статья получилась довольно длинной, но не пугайтесь, будет интересно.


Поехали!


Предисловие. Почему я выбираю свободное ПО и какое право я имею его критиковать?


Я уже довольно долго наблюдаю за развитием свободного ПО, сам являюсь его сторонником и активным пользователем. СПО я заинтересовался примерно полтора года назад. Уже не помню что конкретно, очередной ли людоедский закон, крупная утечка данных или попавшаяся на глаза статья заставила меня задуматься о своей приватности, но с тех пор я начал поиск альтернатив проприетарному ПО и сервисам крупных корпораций, которыми в тот момент пользовался.


Критерий был простой: разработчик должен уважать моё право на частную жизнь. Впрочем, после историй, подобных сливу Сноудена, я не готов был верить компаниям на слово, поэтому обратился к FOSS.


Код открыт всё видно. Телеметрия и мутная активность не пройдет незамеченной. Кроме того, основной целью сбора данных всё-таки является заработок. СПО разрабатывается энтузиастами или НКО, принадлежит сообществу и заработать своим создателям не пытается. Ну и приятные бонусы: можно делать форки, участвовать в разработке, ничего не платить и прочее. В общем, с тех пор я действительно полюбил FOSS и перепробовал огромное количество решений, многими пользуюсь и сейчас, и потому считаю, что имею полное право хвалить и критиковать продукты, которыми пользовался сам, что и буду делать в сегодняшней статье.


Не подумайте, что это хейт. Я все ещё фанат СПО и считаю его нашим будущим, тем, что спасет мир от зверства государств и IT монополий. Я сам периодически помогаю разработчикам, как могу: открываю issues, рапортую о багах и сбоях, перевожу интерфейсы. Я пишу эту статью как раз потому, что желаю СПО развития и процветания и хочу ему в этом помочь.


Ну и дисклеймер: Все, что я пишу в этой статье моё личное мнение, я буду рад конструктивной дискуссии в комментариях. Довольно болтать, перейдем к основной теме этой статьи.


Причем тут Total Commander?


Думаю, все знают примеры продуктов, которые устроены или выглядят настолько странно и отталкивающе, что, кажется, ими невозможно пользоватьсявообще. И каждый может вспомнить своего знакомого/коллегу/преподавателя, который чем-то подобным пользуется и, что самое главное, искренне убеждён: нет ничего удобнее.


Каждый вспомнил что-то свое: кто-то VIM, кто-то 7-Zip, а кто-то, как я, Total Commander.


image

Но парадокс при этом в том, что зачастую эти программы хоть и сложны, но действительно здорово справляются со своей задачей, однако требуют много сил, времени и нервов чтобы разобраться с ними. Делает ли это их плохими? Нет. Есть своя ниша и для таких продуктов, они часто пользуются спросом у профессионалов и опытных пользователей, но с них не начинают к ним приходят со временем.


Никто не хотел бы писать свой первый "Hello world" в VIM'е. Никто не хотел бы, чтобы на его первом ПК стоял CLI Arch Linux. Это слишком сложно, непонятно, отталкивающе для новичка. Должна быть простая, приятная глазу, интуитивно понятная и дружелюбная альтернатива. Что-то, с чего можно начать, и только потом, если захочется, переходить к чему-то более сложному.


Так в чем же проблема СПО? А в том, что среди всего многообразия свободных программ красивых, дружелюбных и интуитивно понятных единицы. И это огромная проблема для всего FOSS движения.


Порог входа настолько высок, а UI/UX настолько уступает проприетарному ПО, что новых пользователей привлечь никак, кроме как запугиванием, невозможно.


Я и сам заинтересовался этой темой только потому, что переживал за приватность своих данных.


На самом деле, вы и сами можете взять телефон, поставить на него F-Droid и поустанавливать оттуда разные приложения (мы будем рассматривать только мобильные приложения, где удобный интерфейс особенно важен ввиду отсутствия мышки и характера использования устройства "на ходу"). Вы быстро поймёте, что дизайн у абсолютного большинства приложений, скажем так, сугубо утилитарный, лишён всяких украшательств и, зачастую, довольно неудобный, но я сделаю это за вас.


Давайте рассмотрим примеры, и вы сами в этом убедитесь


Сейчас я буду сравнивать интерфейсы популярных проприетарных программ и наиболее достойных свободных альтернатив. Альтернативы буду брать с сайта alternativeto.net. Всеми этими приложениями я пользуюсь уже довольно длительное время.


1. Google Play VS F-Droid


F-Droid это магазин приложений, такой же как Google Play, однако там распространяются исключительно приложения с открытым исходным кодом. Приложения также проходят модерацию и "проверку на открытость". Так, например, клиент для YouTube может получить пометку "Популяризирует несвободные сервисы". Звучит здорово, давайте посмотрим, как это выглядит.


Начнём сравнение со стартовой страницы:


image

В Google Play, едва зайдя в приложение, мы видим игры. Вверху и внизу мы видим кнопки филтров и категорий, строку поиска. Довольно удобно. Все иконки оформлены в едином стиле (прямоугольник со скруглёнными углами). Под каждым приложением сразу виден его рейтинг. К дизайну у меня вопросов нет.


Посмотрим теперь на домашнюю страницу F-Droid:



Мы видим множество плиток разного размера и формы с иконками приложений, их названиями и кратким описанием. Внизу мы видим кнопки вкладок и плавающую иконку поиска (который, кстати, работает так плохо, что вы можете не найти там приложение, даже если наберете его название буква-в-букву, не говоря уже о том, чтобы, как в


Google Play, набрать "редактор фотографий" и увидеть в выдаче подходящие варианты).


Сразу возникает множество вопросов. Почему плитки разных размеров? Почему все иконки разной формы? Почему какие-то иконки растянуты и потеряли четкость? Что значит "Последние"? Они недавно обновились? Разработку сворачивают и это их последний релиз? Их последними добавили на площадку? Ничего не понятно. Кстати, никаких анимаций, в отличие от Google Play, тут нет, все выглядит очень дергано и топорно. Кроме того, прежде чем сделать этот скриншот, мне пришлось подождать, пока иконки прогрузятся практически 10 секунд При скорости соединения в 90 мбит/с! Проекту 10 лет, с финансированием ему повезло больше, чем многим другим, ну почему всё так плохо?


Тут кто-то меня перебьёт и скажет: "Какие анимации? Работает и слава богу. Какой дизайн? Ну потерпи ты 10 секунд, пока загрузится. Тебе шашечки или ехать надо?"


В этом и есть проблема. Всем кажется, что дизайн и удовольствие от пользования продуктом излишества, на которые нет времени. Я напомню: F-Droid существует уже 10 лет, а времени все нет. Нет не времени, а понимания. Эту проблему я и пытаюсь поднять. О каком развитии Open Source можно говорить, если ворота в его мир выглядят так?


Продолжим наше сравнение. Посмотрим на страницу приложения в обоих магазинах:


image

В Google Play все четко, понятно и красиво. Вижу скриншоты, видео-презентацию, рейтинг, количество загрузок. Ниже описание, теги и категории, отзывы пользователей, похожие приложения. Вопросов никаких, все сделано на уровне.


Теперь F-Droid:


image

Четверть экрана занимает шапка. Хочу заметить, что я видел ее заполненной от силы 3 раза, чаще всего там просто ничего нет. Четверть экрана на выброс. Ниже у нас Не угадали! Changelog! Зачем он мне? Я еще никогда не устанавливал это приложение, я зашёл сюда прочитать про него и решить, нужно ли оно мне. Зачем мне знать, какие баги вы недавно исправили? Ниже мы видим скриншоты. Тут у меня много претензий. Не к этому приложению в частности, а к F-Droid в целом. Разработчики магазина добавили поля для описания и скриншотов, шапки, но не сделали их заполнение обязательным. Множество девелоперов оставляет их пустыми. Что еще страннее, я регулярно нахожу в F-Droid приложения, у которых есть скриншоты, но сделаны они были На Android 4.4 KitKat! Помните такой? Интерфейс на фото давным-давно был изменен, уже годы приложение выглядит по другому. При этом обновления выходят стабильно, там пишут изменения, но никто и не думает обновлять скриншоты. У меня это не укладывается в голове. Кстати, скриншоты, по доброй традиции, грузятся 10 секунд. Оценки или счетчик скачиваний отсутствуют в принципе. Я просто не знаю, как я должен судить о приложении до его загрузки.


2. Google Maps VS OsmAnd~


Представим, что вы ищете открытую и свободную альтернативу Google Maps. На ум, естественно, приходит Open Street Map (OSM), однако OSM это только сама карта. Для мобильного телефона нужно еще приложение-просмотрщик. Наиболее популярным является приложение OsmAnd, расширенную версию которого можно скачать в F-Droid. Давайте сравним его с популярнейшим Google Maps.


Попробуем выполнить поиск "Москва" в Google Maps:


image

Через долю секунды мы увидим Москву на карте, краткую справку о месте, фотографии, отзывы, и так далее. Приложение работает быстро и отзывчиво, не тормозит и не дергается, все изменения на экране сопровождаются приятными и плавными анимациями. Сам дизайн карты выглядит очень удобным: карта не перегружена деталями и информацией, а бледная цветовая схема позволяет сконцентрировать внимание в нужном месте.


Посмотрим на OsmAnd.


image

Цветовая схема более пестрая, чем в GMaps, но пользоваться этим можно. Шрифты легко читаются, карта как карта. Доп. информацией о месте приложение нас не балует, но бог с ним. В чем же проблема? А проблема в том, что приложение не умеет загружать карты в режиме реального времени Совсем! Когда я набрал в поиске "Москва", мне было предложено загрузить карту региона (90 МБ) с не самых быстрых серверов OSM. На это ушло в больше минуты моего времени. А жизнь ведь коротка Помимо этого, приложение работает ну очень так себе. Тормозит, дергается, подвисает, ни о какой плавности прокрутки карты речи не идет. Не подумайте, это работает, но плохо. Да, 5-7 лет назад, не имея возможности с чем-либо сравнить, я бы сказал, что это отличное приложение, но в 2020 году, зная, как могут и должны выглядеть качественные карты для Android, пользоваться OsmAnd совсем не хочется.


Не в пользу приложения играет и сам Open Street Map. К сожалению, проект, похоже, переживает не лучшие времена. Карты обновляются очень редко и выборочно, информация, даже в крупных городах, серьезно устарела: иногда на OSM не найти целых улиц и дорог, построенных за последние 5 лет. Большая часть заведений возле моего дома, отмеченных на карте, также уже давно не работают, а новых на картах нет. Довольно грустно, ведь это практически единственный проект открытых карт такого масштаба, и другого у нас просто нет.


3. Mi-Fit VS Gadget Bridge


Gadget Bridge это аналог проприетарным приложениям для работы с фитнес браслетами и умными часами (в нашем примере Mi-fit от Xiaomi). Без облаков, синхронизаций и отправки данных куда-либо. Идея крутая, посмотрим на реализацию.


Начнём с домашнего экрана:


image

В Mi-fit нас встречает экран со всеми основными показателями: сон, шаги, последняя тренировка, вес (для тех, кто пользуется умными весами). Отсюда же можно начать запись тренировки. Дизайн приятный глазу, хоть и пёстрый. Мне не к чему придраться.


Посмотрим на Gadget Bridge:


image

Нас встречает меню со списком подключенных гаджетов. Зачем? Я не знаю. Видимо, я один не пользуюсь пятью фитнес-трекерами одновременно, иначе я не понимаю, зачем это нужно. Из этого экрана мы можем извлечь ровным счётом ничего, кроме заряда батареи браслета. Сравните это с Mi-fit.


Лично я пользуюсь браслетом в основном для того, чтобы мониторить свой сон и шаги. Посмотрим на то, как эти экраны выглядят в Mi-fit.


image

image

Тут я ничего плохого сказать не могу. Все просто, понятно и наглядно. Есть приятные графики, детализация измерений, даже сравнение с другим пользователями (которое, впрочем, либо очень общее и не обновляется, либо взято с потолка, потому что приложению выключен доступ в интернет уже несколько месяцев).


А сейчас будет больно, приготовьтесь. Gadget bridge:


image

image

Я не знаю, как это комментировать. Я не знаю, как это читать. Я не знаю, кому пришло в голову вставить это в релизную версию приложения. Какую информацию я могу извлечь из этих экранов, помимо того, что разработчик сно дал понять, что ему наплевать на меня? Ну, я вижу, что, оказывается, глубокого сна у меня выдалось целых 12 минут за всю ночь. Звучит не очень убедительно. А еще у меня было 8 часов и 13 минут чего-то. Не знаю чего, надпись находится за пределами экрана. Наверное, речь о беге трусцой или занятиях кросс-фитом. Экран "Активность" я оставлю без комментариев и просто молча удалю приложение.


Есть и исключения


Но, к сожалению, их доля в общей массе исчезающе мала. Однако, эти продукты по-настоящему хороши, и с точки зрения UI/UX сделаны отлично. И потому популярны.


Приведу несколько примеров таких продуктов, которыми сам пользуюсь и получаю от этого удовольствие:


  • Рабочая среда KDE Plasma
  • Федеративная соц. сеть Mastodon (веб-клиент)
  • Менеджер паролей Bitwarden
  • Браузер Firefox от Mozilla
  • Офисный пакет LibreOffice

Наверное, есть и еще примеры, но факт остаётся фактом: качественный и продуманный интерфейс в СПО скорее исключение, чем правило, и это печально.


Почему так происходит?


Я вижу три причины:


  1. Нет понимания. Многие свободные программы пишутся энтузиастами-одиночками или маленькими группами программистов. Проблема в том, что программист не дизайнер и в дизайн не хочет, не может, не умеет и не должен. Дизайном должен заниматься профессионал, но программисты зачастую не имеют понимания, что этого профессионала нужно к делу привлечь. В итоге делают сами, как умеют.
  2. Нет ресурсов. СПО не коммерческий проект и разработчики, чаще всего, работают на голом энтузиазме и редких донатах. В таких условиях, конечно, никто не будет нанимать дизайнера (оплатить бы хостинг за следующий месяц).
  3. Нет мотивации. Тяжело работать, не получая никакой отдачи. Запал заканчивается, человек выгорает. Я видел десятки заброшенных проектов и проектов, которые годами ходят по рукам, их забрасывают одни, подбирают другие и так далее. Почему так случается? Я думаю, это наша вина, как пользователей. Разработчикам не донатят, в проекты не коммитят, большинство ленится даже написать хороший отзыв приложению в плей-маркете или на Alternativeto. В коммерческих проектах есть зарплаты, целые команды, менеджеры и HR'ы, занятые тем, чтобы команда была замотивирована, сплочена, и работала эффективно, потому что это приносит деньги. В сфере разработки СПО это большая редкость. Результат предсказуем: разработчики просто забивают на свои проекты, потому что не видят причин ими заниматься дальше.

Что можно с этим сделать?


Я не являюсь профессионалом, но поделюсь своими мыслями на этот счёт. Буду рад услышать ваши варианты в комментариях.


Опираясь на описанные выше проблемы, я могу предложить только одно решение создать НКО, занимающееся дизайном и UI/UX свободного ПО. Эдакий "FOSS Design foundation". В организации должны работать несколько штатных дизайнеров на зарплате, а также волонтеры (например студенты соответствующих направлений). Организация будет финансироваться за счёт пожертвований и будет заниматься просвещением разработчиков, выпуском инструментов и материалов для них, консультациями и курированием проектов.


Если разработчики понимают, что код нужно писать по PEP8, но не понимают, что UX важен, значит им просто никто этого не объяснил. Этим и может заняться новое НКО. Также важно дать разработчикам качественные инструменты: если в распоряжении девелопера только пыльный шаблон из Android Studio, слабое понимание того, как делаются интерфейсы и желания заниматься этим на час, то результат будет соответствующий. Команда профессионалов должна заняться разработкой шаблонов, рекомендаций и готовых материалов (например палитр и шрифтов), которые будут распространяться под свободными лицензиями. Организация также могла бы консультировать, курировать, брать на себя отдельные проекты, которые покажутся ей достойными.


Возможно я чего-то и не понимаю, но, на мой взгляд, запрос на такую организацию назрел уже давно.


Вместо вывода


Вместо вывода предлагаю всем сочувствующим FOSS движению поделиться своим мнением, взглядом на проблему и предложениями по ее решению в комментариях. Все-таки это и есть подход Open source сообщества: работать вместе ради достижения общей благой цели, то есть в интересах всего общества.


Спасибо за внимание!

Подробнее..

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru