На этой странице описано, как новое приложение попадает в основной репозиторий F-Droid. Она включает в себя технические детали, о которых должен знать отправитель.
Предложение о включении в заявку
Чтобы предложить включение нового приложения в основной репозиторий F-Droid, можно разместить соответствующую информацию о приложении в очереди подачи заявок. Более продвинутая альтернатива - написать полный файл метаданных самостоятельно, протестировать и предложить включение (запрос на слияние) непосредственно в Git-репозиторий fdroiddata, что ускоряет процесс. Оба способа будут подробно описаны ниже.
Обратите внимание, что вы можете предложить включение, даже если вы не являетесь разработчиком или сопровождающим предлагаемого приложения. См. Inclusion Policy и Repository Style Guide для политического аспекта этого раздела.
Предложение по очереди подачи
Это самый простой способ включения заявки. Но из-за количества труда рецензента, необходимого для каждого приложения, это самый медленный метод.
Для этого создайте новый тикет на F-Droid Submission Queue on GitLab, добавьте все детали, требуемые минимальным шаблоном проблемы; и ждите, пока люди из команды F-Droid рассмотрят заявку и сделают все необходимые шаги за вас.
Предложение по запросу на слияние метаданных
Более продвинутая альтернатива для включения приложения - написать файл метаданных F-Droid для приложения самостоятельно и предложить включить его в репозиторий метаданных приложения F-Droid (fdroiddata GitLab repository) путем подачи git-запроса на слияние. Это приведет к гораздо более быстрому включению, поскольку уже имеющийся файл метаданных снизит нагрузку на рецензентов при проверке предложенных вами метаданных; податель заявки берет на себя ответственность за предоставление корректного файла метаданных.
Когда предложение о включении делается таким образом, предполагается, что:
- Вы хорошо понимаете, что означает Свободное программное обеспечение и для чего нужен F-Droid.
- Вы уже прочитали и поняли Политику включения.
- Вы уже прочитали и поняли Repository Style Guide.
- Вы уже прочитали и поняли соответствующие части документации F-Droid.
- Вы умеете пользоваться Git VCS и знаете, как работает запрос на слияние (он же “pull request” в терминологии GitHub) в целом.
- У вас есть учетная запись на GitLab.
- У вас есть локальный экземпляр серверного программного обеспечения F-Droid, и вы знаете, что делаете.
Рекомендуемые шаги для предложения включения таким образом записаны на F-Droid application metadata repository.
Процесс рассмотрения заявок
После подачи предложения о включении, приложение попадает в процесс рассмотрения, в ходе которого сотрудники F-Droid изучают исходный код приложения и определяют, подходит ли оно для включения (а если нет, то определяют все необходимые шаги, чтобы сделать его таковым).
Поскольку F-Droid является хранилищем программного обеспечения, которое обещает пользователям свободное программное обеспечение, процесс рецензирования предназначен для обеспечения того, что все приложения, распространяемые из главного хранилища F-Droid, являются свободным программным обеспечением.
Это неполный список того, что должен делать рецензент:
- They will go to your source code repository, and look for copyright notices in license files, including README, to check that the proposed application is released under a recognized Free Software and/or OSI license(s).
- Они посмотрят на ваш сценарий сборки, чтобы выяснить, какую систему сборки вы используете, и может ли сервер сборки F-Droid справиться с ней (Ant и Gradle - самые распространенные и простые).
- Они попытаются загрузить копию вашего исходного кода.
- Они будут просматривать все файлы исходного кода на предмет соответствия лицензий соответствующим файлам лицензий/README.
- Они проверят, использует ли ваше приложение какие-либо предварительно скомпилированные библиотеки или двоичные файлы.
- Они просмотрят ваши файлы не исходного кода, чтобы определить Несвободные ресурсы, используемые в вашем приложении.
- Они просмотрят исходный код на предмет того, использует ли ваше приложение несвободные зависимости, показывает ли рекламу, отслеживает пользователей, продвигает или зависит от несвободных сервисов/приложений или делает что-либо вредное или иным образом нежелательное для пользователей.
- Они перечислят краткое описание всех AntiFeatures в вашем приложении.
- Они попробуют внести исправления в ваше приложение, чтобы удалить использование стороннего проприетарного программного обеспечения (если таковое имеется).
- Они попытаются определить подходящий процесс обновления для вашего приложения (например, посмотрев, как ваши релизы соотносятся с тегами VCS и/или информацией о версии в AndroidManifest.xml).
- Они попробуют написать подходящий файл метаданных для вашего приложения
и добавят его в локальный экземпляр сервера сборки F-Droid. (
fdroid rewritemeta
,fdroid lint
используются для обеспечения правильного формирования метаданных) - Они попытаются собрать ваше приложение в изолированной среде, чтобы посмотреть, удастся ли процесс и получить функциональный APK.
- Если все прошло гладко, они добавят новый файл метаданных в свой локальный git-репозиторий fdroiddata и синхронизируют изменения с GitLab.
В случае, если заявка не прошла некоторые этапы рассмотрения, обратная связь будет предоставлена в потоке очереди оригинальной заявки, где она была размещена.
После обновления репозитория fdroiddata на GitLab официальный сервер сборки F-Droid получит, соберет и опубликует ваше приложение в основном репозитории F-Droid.
Вы можете подтвердить включение вашего приложения, просмотрев историю ревизий GitLab fdroiddata revision history.
Специальное рассмотрение запроса на слияние метаданных
Если включение происходит из запроса на слияние на GitLab, процесс
рассмотрения теоретически такой же. Они выполняются в основном для
подтверждения того, что предложенные метаданные соответствуют тому, что
действительно есть в исходном коде приложения. Шаги по написанию и фиксации
метаданных опускаются, так как будет использоваться исходный файл
метаданных, который вы предложили. Отзывы будут даны в оригинальной ветке
запроса на слияние, в которой было предложено приложение; и как только
процесс будет завершен, запрос будет объединен в ветку master
GitLab-репозитория fdroiddata.
В попытке оптимизировать процесс, когда вы предлагаете включение через запрос на слияние метаданных, сотрудники F-Droid полагаются на несколько предположений (описанных выше). Таким образом, процесс рассмотрения будет гораздо менее интенсивным по нескольким параметрам и займет гораздо меньше времени. Приложения, нарушающие правила, которые каким-то образом пробрались таким образом, будут рассматриваться постфактум.
Воспроизводимые сборки
Reproducible builds are not a requirement for apps being on F-Droid. But we do consider their use best practice. And unfortunately, one can’t easily switch to them later because Android doesn’t allow updates with a different signing key, meaning users would have to reinstall. So we mainly encourage their use for new apps.
The point of reproducible builds is that the developer’s signature (from the APK they publish) guarantees that our build is identical to theirs (and thus doesn’t contain anything it shouldn’t) and at the same time our build server verifies that the developer’s build matches the published source code (and thus doesn’t contain anything it shouldn’t either).
This increases trust and makes supply-chain attacks harder. It also makes it impossible for there to be a bug in the F-Droid version only (or vice versa). Using the developer’s key also means they have the option of providing updates to users themselves if we for some reason (temporarily) cannot.
Some apps – especially those without native code, using only Kotlin/Java – are very easy to make reproducible. Others may require more work. Sadly, some apps cannot be made reproducible at all.
We hope that developers agree with us that it’s at least worth attempting to make their apps reproducible given the various benefits, but if they are unable or unwilling to spend time/resources on this, we of course respect their decision.
For more information, see:
- Towards a reproducible F-Droid
- F-Droid’s Reproducible Builds documentation
- Reproducible Builds project
- HOWTO: diff & fix APKs for Reproducible Builds
Процесс строительства
После добавления метаданных приложения в репозиторий fdroiddata GitLab, следующим шагом будет получение исходного кода приложения и связанных с ним компонентов, сборка приложения и публикация его в главном репозитории F-Droid.
Этот процесс сборки выполняется ежедневно, и заявки обрабатываются пакетно. Все шаги выполняются за сценой и в основном автоматически; все, что нужно сделать подателю, - это дождаться окончания процесса.
Запись об успешном процессе сборки одного приложения приводится на странице сайта F-Droid для этого конкретного приложения (например, см. журнал сборки для F-Droid Client).
Apps that fail will have the log available during the build cycle on the F-Droid Monitor - Running page or, if in the previous cycle, on the Build page. This is useful to aid in diagnosing problems when the build unexpectedly failed.
Процесс обновления метаданных
Когда наступит запланированное время сборки, сервер сборки F-Droid получит
изменения из репозитория fdroiddata GitLab и объединит их с локальным
репозиторием. Затем будет выполнена проверка обновлений для всех
приложений. Если будет найдена новая версия, их файлы метаданных будут
обновлены и зафиксированы в репозитории автором F-Droid checkupdates
(@fdroidci)
.
После обновления файлов метаданных сервер F-Droid Server сверяет их со списком выпущенных APK, чтобы составить список новых приложений и/или версий, которые необходимо собрать. Затем начнется процесс предварительной обработки приложений, а затем процесс сборки для каждого из них.
Предварительная обработка приложений
Процесс сборки приложения
Процесс подписания APK
Процесс публикации репозитория
Что ожидать
Когда метаданные вашего приложения будут одобрены и приняты в git-репозиторий fdroiddata на GitLab, они не сразу появятся в основном репозитории F-Droid.
При условии, что у вашего приложения нет проблем со сборкой, потребуется от 24 до 48 часов с момента слияния fdroiddata до появления приложения в основном репозитории.1 Это ограничение по времени связано с частью процесса сборки - подписанием APK, которое требует вмешательства человека на этапе доступа к хранилищу ключей.2
Тем не менее, ваше приложение еще не появится в списке “Последние приложения” на f-droid.org, хотя люди уже могут искать и скачивать его: Как только приложение появится в основном репозитории F-Droid, пройдет еще один день, прежде чем оно появится в Списке последних приложений.
Внешние ссылки
- Очередь подачи заявок на F-Droid приложения на GitLab (для новых заявок)
- Очередь подачи заявок на F-Droid на форуме (для отслеживания старых заявок)
- Репозиторий на GitLab fdroiddata
- История проверок fdroiddata