% SPDX-License-Identifier: GPL-3.0-or-later OR CC-BY-SA-4.0
\chapter{Introduction}\label{ch:introduction} %%##$introduction-chapter-title>>
%%!!intro<<
App Manager is an advanced package manager for Android. It offers countless features, and consequently, requires a user
manual to assist its users. This document acts as a user manual for App Manager in the sense that it aims to describe
every feature that App Manager has to offer. This document can also be considered as the ``official'' guidelines for
App Manager, and represents the expected behaviour of App Manager. Translations can misinterpret this document (which is
written in English). Therefore, every capable user should read the English version of the document to get the best out
of App Manager. There might as well be other unofficial or third-party resources such as blog articles, videos, chat
groups, etc. While these resources might be useful for many people, they might not be up-to-date with the current
version of App Manager. If any deviations are detected in App Manager from this document, they should be reported in the
\href{https://github.com/MuntashirAkon/AppManager/issues}{App Manager issue tracker}.
%%!!>>


\section{Terminologies}\label{sec:terminologies} %%##$terminologies-title>>
%%!!terminologies<<
\begin{itemize}
    \item \textbf{AM} --- Short name for App Manager.
    \item \textbf{Block/Unblock} --- Used for component blocking or unblocking. How components are blocked depends on
    the user preferences.
    \item \textbf{IFW} --- Short form of Intent Firewall.
    \item \textbf{Ops} --- Short name for operations, e.g.\ app ops, batch ops, 1-click ops
    \item \textbf{SAF} --- Short for Storage Access Framework, an abstraction used by Android to allow apps to use or
    serve files without worrying about the underlying file system.
    \item \textbf{SSAID} --- Short form of \texttt{Settings.Secure.ANDROID\_ID}. It is a device identifier assigned to
    each app (Android Oreo and onwards). It is generated from the combination of the signing certificate of the app
    and the SSAID set for the package \texttt{android}. As a result, it is guaranteed to be the same for an app unless
    the user choose to format the device. It is widely used for tracking.
    \item \textbf{Tracker} --- Denotes tracker components throughout the document and in App Manager except in the
    \hyperref[sec:scanner-page]{scanner page}. Trackers include libraries such as crash reporters, analytics,
    profiling, identification, ad, location, etc. Thus, they are not equal in functions. There is no distinction or bias
    between open source and closed source libraries that promote tracking.
\end{itemize}
%%!!>>


\section{Supported Versions}\label{sec:supported-versions} %%##$supported-versions-title>>
%%!!supported-versions<<
At present, the supported versions are v3.0.4 and v3.1.0 (stable), v3.2.0 (alpha and debug releases).
Previous versions of App Manager may contain security vulnerabilities and should not be used.
%%!!>>


\section{Official Sources}\label{sec:official-sources} %%##$official-sources-title>>

\subsection{Binary Distribution Sources}\label{subsec:binary-distribution-sources} %%##$bin-sources-title>>
%%!!bin-sources<<
App Manager is distributed using the following sources. Unofficial sources may distribute modified versions of App
Manager, and none but you shall be responsible for the consequences of using such distributions.
\begin{enumerate}
    \item Official F-Droid repository.\footnote{For distributing normal releases only}\\
    \textit{Link:} \url{https://f-droid.org/packages/io.github.muntashirakon.AppManager}
    \item GitHub repository.\\
    \textit{Normal releases:} \url{https://github.com/MuntashirAkon/AppManager/releases}\\
    \textit{Debug releases:} \url{https://github.com/MuntashirAkon/AppManager/actions}
    \item Telegram.\\
    \textit{Normal releases:} \url{https://t.me/AppManagerChannel}\\
    \textit{Debug releases:} \url{https://t.me/AppManagerDebug}
\end{enumerate}
%%!!>>

\subsection{Links to Source Code}\label{subsec:links-to-source-code} %%##$source-code-links-title>>
%%!!source-code-links<<
All but GitHub are the mirror links. The tags should always be up-to-date, but the master branch is not guaranteed to be
up-to-date. If the target is to clone the master branch, use the GitHub link instead of the others.
%%!!>>
\begin{enumerate}
    \item GitHub: \url{https://github.com/MuntashirAkon/AppManager}
    \item GitLab: \url{https://gitlab.com/muntashir/AppManager}
    \item Codeberg: \url{https://codeberg.org/muntashir/AppManager}
    \item Riseup: \url{https://0xacab.org/muntashir/AppManager}
\end{enumerate}

\subsection{Translations}\label{subsec:translations} %%##$translations-title>>
%%!!translations<<
App Manager does not accept translations directly via pull/merge requests. Translations are managed via Hosted Weblate.
To translate App Manager, visit \url{https://hosted.weblate.org/engage/app-manager/}.
%%!!>>


\section{Contributing}\label{sec:contributing} %%##$contributing-title>>
%%!!contributing<<
There are multiple ways a user can contribute, such as creating helpful issues, attending discussions, improving
documentations and translations, adding unrecognised libraries or trackers, reviewing the source code as well as
reporting security vulnerabilities.
%%!!>>

\subsection{Build Instructions}\label{subsec:build-instructions} %%##$buiding-title>>
%%!!buiding<<
Build instructions are available in the BUILDING file located at the root directory of the source.
%%!!>>

\subsection{Submitting patches}\label{subsec:submitting-patches} %%##$submit-patches-title>>
%%!!submit-patches<<
Repositories located in sites other than GitHub are currently considered mirrors, and pull/merge requests submitted in
those sites will not be accepted.\footnote{GitHub pull requests will be merged manually using the corresponding patches.
As a result, GitHub may wrongfully mark them closed instead of merged.} Instead, patches (as \texttt{.patch} files) can
be submitted via email attachments. \textit{Signing-off is a requirement.} See the CONTRIBUTING file located at the root
directory of the source for more information.

\begin{warning}{Notice}
    In case of submitting patches via email, the whole conversation may be publicly accessible in the future. So, do not
    include any personally identifiable information (PII) other than your name or email address.
\end{warning}
%%!!>>


\section{Donation \& Funding}\label{sec:donation-&-funding} %%##$donation-title>>
%%!!donation<<
\emph{Donation or purchasing is not a requirement in order to use App Manager.} While App Manager does not support any
purchases, donations can be sent to the owner of App Manager through Open Source Collective.

Open Source Collective is a fiscal host in the Open Collective platform which helps the open source projects manage
their finances. At present, it supports payments through bank accounts, PayPal, credit or debit cards and
cryptocurrencies.

\textit{Link:} \url{https://opencollective.com/muntashir}.

By sending donations, the senders agree that they shall not use the donations as a leverage to prioritise their
requested features. Feature requests do not require any bounties or donations, and they are prioritised in accordance
with the preferences of the owner.

\emph{App Manager accepts any offers of funding or grants.} Representatives of the interested organization can contact
the owner directly using the options given in \Sref{sec:contact}.
%%!!>>


\section{Contact}\label{sec:contact} %%##$contact-title>>
%%!!contact<<
Muntashir Al-Islam\footnote{You can also address me as ``Muntashir Akon''}\\
Email: \href{mailto:muntashirakon@riseup.net}{muntashirakon [at] riseup [dot] net}\\
Key Fingerprint: \texttt{7bad37c2981e41f8f6abea7f58f0b4f26c346fce}\\
GitHub: \url{https://github.com/MuntashirAkon}\\
Twitter: \url{https://twitter.com/Muntashir}
%%!!>>

