2013-10-28 Каким бы мог быть Андроид

Материал из YourcmcWiki
Перейти к: навигация, поиск
(Массовая правка: добавление Category:VitaliPrivate)
м
Строка 1: Строка 1:
Гугл — лицемеры. Говорить что-то о свободном ПО в то время, как делаете такой огороженный и несовместимый с обычным linux’ом андроид — аморально.
+
Каждый раз, когда думаю об обновлении прошивки на телефоне, я задумываюсь об устройстве Андроида и испытываю сильный рвотный рефлекс. Ну почему там внутри такое уродство? Зачем лицемерный гугл, болтающий что-то об опенсорсе, делает его таким монолитным, неудобным для ковыряния и не открытым нормально?
  
* Модульность и пакетная организация системы, как в любом нормальном linux’е. Возможность обновления по кускам.
+
Короче, вот каким бы, по-моему, мог быть ПРАВИЛЬНЫЙ андроид:
* Встроенные В ЛЮБУЮ СИСТЕМУ ВСЕГДА ДОСТУПНЫЕ root права для пользователя. Любые способы «защиты телефона от пользователя» (например, selinux) должны быть ОТКЛЮЧАЕМЫМИ.
+
* Первое, что должно быть — модульность и пакетная организация системы, как в любом нормальном linux’е. Возможность обновления '''системной части''' по кускам или установки различных версий интерфейса: захотел — воткнул TouchWiz, захотел — воткнул гугловскую оболочку, захотел — MIUI, захотел — от Sony… без извращений со скачиванием идиотских «Zver Edition» сборок с бестолковых файлообменников. Без сбросов, без бэкапов. Опять-таки, как в любом нормальном linux’е!!!
* Отсутствие DRM. Ну не было бы без DRM фильмов в play — И НЕ НАДО. Каждый, кто делает DRM — проприетарная сволочь, и я бы предпочёл, если бы этих людей не стало (как Столлман сказал про Джобса — я не рад, что он умер, но я рад, что его больше нет).
+
* Вот эту фичу, кстати, в последнем андроиде почти реализовали: возможность выбора конкретных разрешений, предоставляемых приложениям, при установке, вместо безальтернативного «согласиться». «Почти» реализовали потому, что вроде-как возможности отрубить приложению доступ в интернет всё равно нет.
* Работа на стандартном ядре Linux, отсутствие костылей типа binder’а и «зиготы». Вместо первого — сокеты, вместо второго — dalvik assembly (которые надо было бы, конечно, сначала запилить, чтобы они работали).
+
* Работа на стандартном ядре Linux, отсутствие костылей типа binder’а, «зиготы», эмуляции регистронезависимой ФС через fuse. Вместо первого — тоненькая обёртка над банальными unix сокетами, вместо второго (с целью экономии памяти) — assembly, то есть «разделяемые библиотеки» на dalvik’е — насколько я понимаю, это есть в .NET — нужно было бы запилить аналогично.
* Лицензия GPLv3 на всю систему вместо текущей Apache! Причём, вреда бы это не принесло никакого, а наоборот — уменьшило бы фрагментацию, потому что производители вынуждены были бы открывать свои идиотские костыльные доработки типа изменённых интерфейсов и прочего, и их было бы гораздо легче поддерживать и обновлять. И это бы позволило изначально использовать нормальные linux’овые компоненты, например, busybox и нормальный uclibc вместо bionic.
+
* Естественно, наличие mass storage (выпиленного в 4-ом андроиде каким-то идиотом), хоть даже напрямую в ext4, чтобы мелкософт своим убогим патентом на FAT32 LFN не потрясывал.
 +
* Коли уж APK приложения не имеют зависимостей, вполне нормально было бы поддержать установку приложений '''вместе с данными''' в собственный каталог или раздел, не затрагиваемый при обновлении системы, а также поддержать произвольное разбиение диска.
 +
* Root права для пользователя должны быть доступны ВСЕГДА! Телефон должен защищать пользователя, а не ЗАЩИЩАТЬСЯ ОТ пользователя. То есть все selinux’ы и прочее фуфло должно быть отключаемым.
 +
* DRM, разумеется, быть не должно, в частности потому, что при наличии рута (который в итоге-то всё равно всем доступен) он всё равно БЕСПОЛЕЗЕН. На половые проблемы проприерастов, занимающихся продажей приложений (и фильмов, и прочего), мне в целом положить, но если уж им очень хочется, пусть делают свою защиту через привязку к серверу — способ вполне адекватный для смартфонов: уже сейчас нехилая часть приложений — тупо UI для чего-нибудь. Ну, калькуляторы продавать, конечно, уже не получится — НУ ТАК И НЕ ХРЕН. Ну не будет фильмов в маркете — охренеть потеря, всегда мечтал их смотреть за деньги на 5" экране мобилы. Через мобильный интернет, ага.
 +
* Маркет должен быть более ориентирован на интеграцию с процессом разработки приложения: пусть там будет багтрекер, исходники в git, wiki, история версий, информация о лицензии… Или просто интеграция с github’ом.
 +
* НОРМАЛЬНАЯ опенсорсность самой системы. Сейчас андроид под лицензией Apache, и это создаёт огромные неудобства — каждый производитель городит свою закрытую оболочку со своими патчами, своей системой обновления, да что там системой обновления… зачастую вообще без обновлений! Чтобы такого не было, нужно либо поменять лицензию на GPLv3 и вынудить производителей открывать все доработки, либо просто административным ресурсом загнать всех в ОДИН общий репозиторий, в котором и поддерживать. По сути, всё должно разрабатываться как CyanogenMod — система общая, а для разных девайсов различаются только специфичные части. Ещё лучше, если сделать и лицензию нормальную (GPLv3), и загнать всех в общий репозиторий. И поддерживать было бы проще, и обновлялись бы все охотно, и «фрагментации» бы пресловутой не было, и можно было бы изначально использовать нормальные компоненты, например, busybox и нормальный uclibc вместо bionic.
  
Дальше уже другая фантазия: скрестить какой-нибудь декларативный язык описания UI с JS и загрузкой из веба.
+
P.S: Ещё есть идея по поводу кроссплатформенных HTML/JS приложений — так как их очевидная проблема это непосредственно сам HTML, с его reflow’ами и отсутствием нативных контролов — нужно просто придумать другой нормальный скриптуемый язык описания интерфейсов. Типа как стандартный андроидовский язык описания интерфейсов, только более приведённый к «вебовому» виду со скриптами и даже, наверное, возможность грузить описания с сервера аналогично HTML страницам сайтов. Было бы, по-моему, очень круто — многие мобильные приложения сейчас представляют из себя просто нативные интерфейсы к сайтам, а так их даже не нужно было бы оборачивать в приложения — нативный интерфейс появлялся бы прямо в процессе просмотра интернетов.
 
+
{{wl-publish: 2015-06-02 23:35:51 +0300 | VitaliyFilippov }}
Типа «html5» приложение с JS, но вместо HTML — QML (там JS уже какой-то есть, с другой стороны это не XML), ну или андроидовский язык (XML, но не очень удобный, может и не подойти, ибо не особо заточен на динамическое создание)… Activity («экраном») будет та же страница, открытая по какому-то адресу (URL). В JS предоставить DOM и вообще API, похожие на обычный браузерный JS настолько, чтобы этого было достаточно для запуска всяких стандартных JS фишек.
+
Плюс видимо как-то эти «описания страниц» кэшировать, чтобы всё-таки не каждая активити из инета открывалась, либо чтобы вообще была возможность завернуть её в пакет приложения.
+
То есть очевидная идея: в чём проблема html5 приложений? В самом html5. Ну так заменить его на что-то и чики-пуки.
+
Как это натянуть на андроид — ХЗ, явно нужна какая-то дополнительная прослойка, т.к по дефолту активити описываются в манифесте и только в нём.
+
Но сама идея по-моему хорошая, так как максимально упрощается вообще ВСЁ, появляется вариант генерить страницы на лету бэкендами (или может наоборот он не особо нужен), плюс есть теоретический шанс суметь сделать это кроссплатформенно.
+
[[Category:VitaliPrivate]]
+

Версия 23:35, 2 июня 2015

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

Короче, вот каким бы, по-моему, мог быть ПРАВИЛЬНЫЙ андроид:

  • Первое, что должно быть — модульность и пакетная организация системы, как в любом нормальном linux’е. Возможность обновления системной части по кускам или установки различных версий интерфейса: захотел — воткнул TouchWiz, захотел — воткнул гугловскую оболочку, захотел — MIUI, захотел — от Sony… без извращений со скачиванием идиотских «Zver Edition» сборок с бестолковых файлообменников. Без сбросов, без бэкапов. Опять-таки, как в любом нормальном linux’е!!!
  • Вот эту фичу, кстати, в последнем андроиде почти реализовали: возможность выбора конкретных разрешений, предоставляемых приложениям, при установке, вместо безальтернативного «согласиться». «Почти» реализовали потому, что вроде-как возможности отрубить приложению доступ в интернет всё равно нет.
  • Работа на стандартном ядре Linux, отсутствие костылей типа binder’а, «зиготы», эмуляции регистронезависимой ФС через fuse. Вместо первого — тоненькая обёртка над банальными unix сокетами, вместо второго (с целью экономии памяти) — assembly, то есть «разделяемые библиотеки» на dalvik’е — насколько я понимаю, это есть в .NET — нужно было бы запилить аналогично.
  • Естественно, наличие mass storage (выпиленного в 4-ом андроиде каким-то идиотом), хоть даже напрямую в ext4, чтобы мелкософт своим убогим патентом на FAT32 LFN не потрясывал.
  • Коли уж APK приложения не имеют зависимостей, вполне нормально было бы поддержать установку приложений вместе с данными в собственный каталог или раздел, не затрагиваемый при обновлении системы, а также поддержать произвольное разбиение диска.
  • Root права для пользователя должны быть доступны ВСЕГДА! Телефон должен защищать пользователя, а не ЗАЩИЩАТЬСЯ ОТ пользователя. То есть все selinux’ы и прочее фуфло должно быть отключаемым.
  • DRM, разумеется, быть не должно, в частности потому, что при наличии рута (который в итоге-то всё равно всем доступен) он всё равно БЕСПОЛЕЗЕН. На половые проблемы проприерастов, занимающихся продажей приложений (и фильмов, и прочего), мне в целом положить, но если уж им очень хочется, пусть делают свою защиту через привязку к серверу — способ вполне адекватный для смартфонов: уже сейчас нехилая часть приложений — тупо UI для чего-нибудь. Ну, калькуляторы продавать, конечно, уже не получится — НУ ТАК И НЕ ХРЕН. Ну не будет фильмов в маркете — охренеть потеря, всегда мечтал их смотреть за деньги на 5" экране мобилы. Через мобильный интернет, ага.
  • Маркет должен быть более ориентирован на интеграцию с процессом разработки приложения: пусть там будет багтрекер, исходники в git, wiki, история версий, информация о лицензии… Или просто интеграция с github’ом.
  • НОРМАЛЬНАЯ опенсорсность самой системы. Сейчас андроид под лицензией Apache, и это создаёт огромные неудобства — каждый производитель городит свою закрытую оболочку со своими патчами, своей системой обновления, да что там системой обновления… зачастую вообще без обновлений! Чтобы такого не было, нужно либо поменять лицензию на GPLv3 и вынудить производителей открывать все доработки, либо просто административным ресурсом загнать всех в ОДИН общий репозиторий, в котором и поддерживать. По сути, всё должно разрабатываться как CyanogenMod — система общая, а для разных девайсов различаются только специфичные части. Ещё лучше, если сделать и лицензию нормальную (GPLv3), и загнать всех в общий репозиторий. И поддерживать было бы проще, и обновлялись бы все охотно, и «фрагментации» бы пресловутой не было, и можно было бы изначально использовать нормальные компоненты, например, busybox и нормальный uclibc вместо bionic.

P.S: Ещё есть идея по поводу кроссплатформенных HTML/JS приложений — так как их очевидная проблема это непосредственно сам HTML, с его reflow’ами и отсутствием нативных контролов — нужно просто придумать другой нормальный скриптуемый язык описания интерфейсов. Типа как стандартный андроидовский язык описания интерфейсов, только более приведённый к «вебовому» виду со скриптами и даже, наверное, возможность грузить описания с сервера аналогично HTML страницам сайтов. Было бы, по-моему, очень круто — многие мобильные приложения сейчас представляют из себя просто нативные интерфейсы к сайтам, а так их даже не нужно было бы оборачивать в приложения — нативный интерфейс появлялся бы прямо в процессе просмотра интернетов.