Если посмотреть на мир Android, с первого взгляда кажется, что между разработчиками приложений и Google царят мир-дружба-жвачка. Компания поддержала любовь разработчиков к Kotlin, сообщество в целом одобряет нововведения платформы, а на официальную IDE не обрушивается такая критика, как в iOS-мире — чего ещё желать-то?
Но это только часть картины. В последние месяцы всё чаще обсуждались ситуации, из-за которых часть Android-разработчиков жёстко критикует компанию. Дело доходило до массового призыва «давайте давить на Google через Евросоюз и медиа, раз по-хорошему там не понимают». В чём дело и что это за ситуации, которые страшно злят одних разработчиков, но остаются незаметными для других?
Для примера переведём пост из сабреддита /r/androiddev, появившийся в сентябре:
«Я получил письмо о том, что мой аккаунт разработчика удалён и мне не следует пытаться создать новый, а вместо этого надо найти новый способ дистрибьюции моего приложения. Я подал апелляцию, и она была отклонена. Причиной было указано просто «Ряд нарушений правил», ничего конкретнее. Я не получал никаких предупреждений, и моё приложение не удаляли до уничтожения моего аккаунта, так что понятия не имею, о каких нарушениях идёт речь.Подобные посты появлялись и раньше, но в последние полгода их на Reddit было особенно много — настолько, что в этом стали видеть тенденцию. Если просуммировать претензии из них, список получается таким:
У меня было только одно дурацкое приложение с картами таро, которое я сделал, чтобы попрактиковаться в размещении приложений в Google Play. Оно было бесплатным, без рекламы и внутренних платежей. Там не было ничего оскорбительного, кроме некоторых изображений на картах (люди, заколотые мечами). Оно точно не оскорбительнее десятков других приложений с картами таро.
Большинство попадавшихся мне постов об удалении аккаунта разработчика довольно удручающие. Есть ли хоть что-то, что я могу сделать, кроме как выбрать другую сферу деятельности?»
- В Google Play при борьбе с приложениями-нарушителями по ошибке попадают под раздачу ничего не нарушившие приложения и аккаунты.
- Помимо этого, Google ещё и удаляет те аккаунты, которые считает «связанными с нарушителем» — так что из-за личного проекта разработчика может пострадать аккаунт его работодателя или наоборот.
- Описания нарушений бывают невнятными, и тогда ничего не понятно: что вообще вменяется в вину, действительно ли ты виноват, как это можно исправить или оспорить.
- А когда всё же пытаешься оспорить и подаёшь апелляцию, получаешь шаблонные отказы без проблеска живой речи. Непонятно, видел ли вообще живой человек твою апелляцию, или всё сделала автоматика. А если человек и видел, невозможно связаться с ним и прояснить ситуацию.
- При этом популярные приложения от крупных компаний могут рассчитывать на нормальное отношение (понятно, что если вдруг Facebook по ошибке удалят, то это будет исправлено быстро и вручную). А вот инди-разработчику без команды юристов, даже если у него миллионы установок, остаётся только биться в стену и завидовать Фейсбуку.
То есть можно долгие годы совершенствовать полезное Android-приложение и зарабатывать им на жизнь, ничего не нарушая, а потом Google внезапно и без предупреждения лишит основного источника заработка, в который вложены годы труда. А когда попробуешь восстановить справедливость, даже не станет слушать, оставив общаться с роботами.
Конечно, прежде чем преисполняться праведного гнева, надо сделать поправку на то, что мы не можем проверить истинность всех заявлений разработчиков. Слова «да я ничего не нарушал» нередко можно услышать от нарушителей.
Но даже если разработчики лукавят, вряд ли они все обманывают, когда дружно говорят «в этой системе не достучаться до живого человека». А кроме того, обратимся к ещё одной истории:
«11 октября Google удалил моё приложение Always On AMOLED из Play Store из-за ошибки в их системе DMCA.Эта история отличается от многих других тем, что она закончилась хорошо: возникла шумиха, о ситуации написал известный сайт Android Police, в Google это заметили, и приложение было восстановлено в магазине. Повод порадоваться? Скорее повод понять, что это означает:
Судя по всему, компания Flipkart направила DMCA-уведомление с требованием удалить несколько клонов их приложений, и по ошибке вместе с ними удалили моё. <...> Вот эта DMCA-жалоба — как сами можете увидеть, она никак не связана с моим приложением, его даже нет в том списке приложений, которые Flipkart требует удалить.
Это явная ошибка, из-за которой удалено приложение с 7.5 миллионами установок и рейтингом 4.3. Разумеется, я попробовал связаться с Google <...> четырьмя днями позже получил стандартное (вероятно, сгенерированное ботом) сообщение «мы изучили вашу апелляцию, но по-прежнему не можем восстановить ваше приложение в магазине»».
- Раз в Google признали ошибку, то тут нам не требуется верить разработчику на слово, и теперь мы знаем доподлинно: да, действительно происходят случаи, когда оказываются удалены ничего не нарушившие приложения.
- Раз в Google на апелляцию ответили шаблонным отказом, который позже оказался ошибочным, то теперь мы знаем доподлинно: да, система апелляций действительно не работает так, как должна (похоже, что из-за чрезмерной автоматизации).
В общем, очевидно, что проблема есть. Вряд ли она очень распространённая: статистики нет, но интуитивно предположу, что с ней сталкивается меньше одного процента Android-разработчиков. Однако для столкнувшихся это настолько болезненно, что ситуация всё равно выглядит нездоровой.
К тому же, хотя /r/androiddev явно читают многие гуглеры, и порой они отвечают Android-разработчикам на некоторые вопросы, возмущённые посты о Play-произволе оставались без какой-либо реакции. Картина вырисовывалась такой: компания хорошо знает о проблеме, но игнорирует её, при этом продолжая говорить на презентациях о своей большой любви к разработчикам.
Неудивительно, что у многих это вызвало сильный негатив. Некоторые стали бояться «я могу оказаться следующим» и порой даже удалять из Google Play свои некоммерческие приложения, чтобы из-за них случайно не задело основные коммерческие. Количество критики в комментариях росло, а её градус повышался. Старожилы замечали «вообще говоря, годы назад всё было ещё хуже», но это не меняло ситуацию.
В то же время среди других Android-разработчиков всё это вообще не становилось темой для обсуждения. Во-первых, если не сидеть на Reddit, а просто заниматься разработкой, то можно и не узнать о проблеме. А во-вторых, если ты не инди-разработчик, а работаешь на компанию и просто пишешь код, то проблемы с её Play-аккаунтом — не твоя головная боль (если «за компанию» с её аккаунтом не удалят твой). В итоге возникла ситуация, когда одни Android-разработчики кипят гневом, а другие в ус не дуют.
У тех, которые кипят, апогеем стал программный пост «The Future of Android Development». Он читается прямо-таки как революционный манифест; основной посыл — «Хватит это терпеть, давайте объединимся и пойдём биться за свои права, обращайтесь в Еврокомиссию и привлекайте внимание прессы». В /r/androiddev нечасто можно увидеть пост с 200 апвоутами, а вот в этом случае число апвоутов превысило аж 2000 — то есть обращение очень срезонировало в сердцах.
А вскоре после этого проходил Android Dev Summit, и в нём увидели подходящую площадку для давления на Google. Компания хочет собрать в одном месте много Android-разработчиков? Вот там и призовём её к ответу, превратив мероприятие из милого уси-пуси в суровый разговор по делу. Звучали слова вроде «не давайте всяким developer advocate отвечать вам, что это дела другого отдела и их хата с краю. Developer advocate призван быть нашим сторонником внутри компании, он должен сделать всё возможное, даже вмешиваясь в работу другого отдела».
Посмотрев на такое, в Google решили сыграть на опережение, подготовиться к мероприятию и в кои-то веки высказаться. На Android Dev Summit проходила традиционная сессия вопросов и ответов Fireside Chat, и в число отвечающих гуглеров включили ответственного за Google Play, чтобы он прокомментировал ситуацию. Можете посмотреть это сами (начиная с 41:12), а можете прочитать сокращённый перевод ниже.
Стефани Катберсон: Ещё до мероприятия у сообщества возникали вопросы вроде «По каким принципам вы удаляете приложения» и «Куда мне обращаться, если моё удалено», мы тут позвали Пола, он сейчас об этом расскажет.Моё личное оценочное мнение: это не ответ, а уход от ответа, старательно притворяющийся, что никакой проблемы не существует. Нет, на самом деле у сообщества не возникал вопрос «по каким принципам вы удаляете приложения» — у него возникал вопрос «доколе будет продолжаться этот трэш». Нет, на самом деле никто не интересовался тем фактом, что «можно подать апелляцию» — интересовались тем, какого хрена апелляции не работают. Слова о скором улучшении вроде как должны обнадёживать, но когда в них нет никакой конкретики, они тоже звучат булшитом — «улучшением системы» можно назвать любой закрытый тикет. В итоге все острые вопросы остались неотвеченными, и ощущение такое, что и здесь Android-разработчики вместо живого человека пообщались с нейросетью: «оставайтесь на линии, ваше приложение очень важно для нас».
Пол Бэнкхед: Иногда мы удаляем приложения. Безопасность пользователей — это очень-очень важно. Мы магазин, и нам нужны приложения и пользователи. Поэтому мы благодарны вам за приложения. Есть нарушители, и у нас есть правила для защиты пользователей. Мы очень стараемся минимизировать число ложных срабатываний системы. А если ошибаемся-таки, можно подать апелляцию, мы смотрим на каждую. И думаю, в ближайший квартал вы можете ожидать улучшения в нашей системе защиты. Мы делаем всё, чтобы у вас оставалась ваша работа, а у пользователей безопасность.
С Android Dev Summit прошло полтора месяца — что происходит теперь? Истории об удалении аккаунтов/приложений не прекратились, а кроме того, нашумела другая ситуация.
Сначала Google сообщил разработчикам приложений, что для доступа к звонкам и SMS станет недостаточно согласия пользователя — ещё будет требоваться, чтобы этот доступ был обоснован функциональностью самого приложения. Есть стандартные условия, а также можно отправить запрос «сделайте исключение для моего приложения, оно не подходит под уже описанные условия, но ему этот доступ требуется по таким-то причинам». Всё это в целом звучит разумно. Но на практике оказалось не так гладко.
Приложение Tasker (больше миллиона установок, оценка 4.6) призвано автоматизировать различные смартфонные задачи, поэтому запрашивает доступ к звонкам/SMS, чтобы автоматизировать работу с ними. По утверждению его создателя, он отправил запрос об исключении («вы в условиях не учли приложения-автоматизаторы, но им же это явно нужно»), а спустя 40 дней (!) получил отказ (вероятно, от живого человека, но сформулированный формальным языком и не оставляющий возможности обсудить ситуацию).
Разработчик публично возмутился: «Работа с SMS — одна из самых популярных функций в Tasker, люди ради неё платят за приложение, а теперь Google хочет отнять её. Безопасность — это важно, но нельзя ли ради неё добавить крупное предупреждение, а не отнимать у людей то, чем они хотят пользоваться?»
Подавляющее большинство читателей оказалось на его стороне, поднялась большая шумиха. И в итоге, заметив происходящее, Google добавил в список «exceptions» пункт «task automation»: приложения-автоматизаторы официально стали считаться подходящими для того, чтобы запрашивать доступ к звонкам/SMS.
Хотя эта ситуация отличается от случайного удаления приложений, есть много параллелей:
- Разработчик внезапно обнаруживает, что по его добропорядочному приложению нанесён удар, ставящий под угрозу заработок.
- Разработчик пытается исправить ситуацию через предназначенный для этого канал и получает формальный отказ.
- Однако, когда поднимается шум и происходящее замечают живые люди в Google, они решают, что вообще-то отказывать не надо было.
То есть схожие проблемы дают о себе знать и здесь. И даже после того, как ситуация с Tasker разрешилась, у разработчиков приложений с доступом к звонкам/SMS остались вопросы и претензии: например, недавно появился пост с заголовком «Call/SMS permissions fiasco — Google why do you hurt us so?»
Тут и вправду можно задаться вопросом «почему ты так с нами». Google вкладывает много ресурсов в развитие Android, в том числе и в удобство для разработчиков. Когда Android Studio стала вызывать утечки памяти, её команда прямо признала проблему и пообещала предпринять меры. Почему тогда в другой ситуации, когда некоторым разработчикам ещё хуже (AS хотя бы перезапустить можно), компания не спешит менять всё и делает вид, что проблемы нет?
Снаружи невозможно знать наверняка, но вспоминается вот что. Компания Google вообще известна тем, что у неё всё печально с поддержкой, не только в случае с Android. И когда разработчик, отправивший апелляцию, получает автоматизированный отказ, это не особо отличается от того, как стучатся лбом в стену пользователи других гугловских продуктов.
Но есть отличие в том, насколько это отсутствие вменяемой поддержки болезненно: когда речь идёт о безосновательной потере основного заработка, этот вопрос куда острее, чем «я что-то нажал и всё исчезло». Это настолько существенно, что некоторые жалуются: «Я понимаю, что поддерживать такой магазин стоит дорого, но я охотно платил бы $100 в год, как iOS-разработчики, если бы за это мне гарантировали вменяемые жалобы и хорошее рассмотрение апелляций».
Любопытно, что недавно запустился платный пользовательский сервис Google One, и в числе того, что даёт подписка, называют «Экспертов Google» — возможность обратиться с вопросами к живому человеку.
Google, раз для пользователей вы такое сделали, можно тогда и для Google Play сделать платную нормальную поддержку, раз уж от бесплатной столько головной боли?
Минутка рекламы. Мы в курсе страстей, бурлящих в мобильной разработке, потому что проводим конференцию Mobius. Но сама она не про страсти, там вместо этого суровые технические доклады с кодом и конкретикой (можете убедиться по видеозаписям на YouTube). Если для вас это звучит интересно, обратите внимание: ближайший Mobius пройдёт в Петербурге 22-23 мая, билеты уже в продаже, и с 1 января они подорожают.