Replace redundant table-link classes with body-link classes.
This commit is contained in:
parent
3d377ed6fc
commit
688077eb4c
96
about.html
96
about.html
@ -5,7 +5,7 @@
|
|||||||
<!-- Copyright 2022-2023 Jake Winters -->
|
<!-- Copyright 2022-2023 Jake Winters -->
|
||||||
<!-- SPDX-License-Identifier: BSD-3-Clause-Clear -->
|
<!-- SPDX-License-Identifier: BSD-3-Clause-Clear -->
|
||||||
|
|
||||||
<!-- Version: 3.3.0.67 -->
|
<!-- Version: 4.0.0.68 -->
|
||||||
|
|
||||||
|
|
||||||
<html>
|
<html>
|
||||||
@ -291,62 +291,62 @@
|
|||||||
<br>
|
<br>
|
||||||
Google Pixel</td>
|
Google Pixel</td>
|
||||||
<td>Google Pixel devices are the best Android devices available on the market for
|
<td>Google Pixel devices are the best Android devices available on the market for
|
||||||
<a class="table-link" href="https://security.googleblog.com/2021/10/
|
<a class="body-link" href="https://security.googleblog.com/2021/10/
|
||||||
pixel-6-setting-new-standard-for-mobile.html"
|
pixel-6-setting-new-standard-for-mobile.html"
|
||||||
>security and privacy</a>.<br>
|
>security and privacy</a>.<br>
|
||||||
<br>
|
<br>
|
||||||
They allow locking the bootloader with a
|
They allow locking the bootloader with a
|
||||||
<a class="table-link" href="https://android.googlesource.com/platform/external/avb/+/
|
<a class="body-link" href="https://android.googlesource.com/platform/external/avb/+/
|
||||||
master/README.md#pixel-2-and-later"
|
master/README.md#pixel-2-and-later"
|
||||||
>custom Android Verified Boot (AVB) key</a> in order to preserve security and privacy
|
>custom Android Verified Boot (AVB) key</a> in order to preserve security and privacy
|
||||||
features when installing a custom operating system, such as
|
features when installing a custom operating system, such as
|
||||||
<a class="table-link" href="https://source.android.com/docs/security/features/
|
<a class="body-link" href="https://source.android.com/docs/security/features/
|
||||||
verifiedboot/"
|
verifiedboot/"
|
||||||
>verified boot</a> which verifies that the OS has not been corrupted or tampered with,
|
>verified boot</a> which verifies that the OS has not been corrupted or tampered with,
|
||||||
and
|
and
|
||||||
<a class="table-link" href="https://source.android.com/docs/security/features/
|
<a class="body-link" href="https://source.android.com/docs/security/features/
|
||||||
verifiedboot/verified-boot#rollback-protection"
|
verifiedboot/verified-boot#rollback-protection"
|
||||||
>rollback protection</a> which prevents an adversary from rolling back the OS or
|
>rollback protection</a> which prevents an adversary from rolling back the OS or
|
||||||
firmware version to a previous version with known security vulnerabilities.<br>
|
firmware version to a previous version with known security vulnerabilities.<br>
|
||||||
<br>
|
<br>
|
||||||
They also include a
|
They also include a
|
||||||
<a class="table-link" href="https://developer.android.com/training/articles/
|
<a class="body-link" href="https://developer.android.com/training/articles/
|
||||||
keystore#HardwareSecurityModule"
|
keystore#HardwareSecurityModule"
|
||||||
>hardware security module</a> (Titan M2, improving on the previous generation
|
>hardware security module</a> (Titan M2, improving on the previous generation
|
||||||
<a class="table-link" href="https://security.googleblog.com/2018/10/
|
<a class="body-link" href="https://security.googleblog.com/2018/10/
|
||||||
building-titan-better-security-through.html"
|
building-titan-better-security-through.html"
|
||||||
>Titan M</a>) which is extremely resistant to both remote and physical attacks due to
|
>Titan M</a>) which is extremely resistant to both remote and physical attacks due to
|
||||||
being completely isolated from the rest of the system, including the operating system.
|
being completely isolated from the rest of the system, including the operating system.
|
||||||
Titan M2 ensures that the device cannot be remotely compromised by requiring the side
|
Titan M2 ensures that the device cannot be remotely compromised by requiring the side
|
||||||
buttons of the device to be physically pressed for some sensitive operations. Titan M2
|
buttons of the device to be physically pressed for some sensitive operations. Titan M2
|
||||||
also takes the role of
|
also takes the role of
|
||||||
<a class="table-link" href="https://source.android.com/docs/security/best-practices/
|
<a class="body-link" href="https://source.android.com/docs/security/best-practices/
|
||||||
hardware#strongbox-keymaster"
|
hardware#strongbox-keymaster"
|
||||||
>Android StrongBox Keymaster</a>,
|
>Android StrongBox Keymaster</a>,
|
||||||
a <a class="table-link" href="https://source.android.com/docs/security/features/keystore"
|
a <a class="body-link" href="https://source.android.com/docs/security/features/keystore"
|
||||||
>hardware-backed Keystore</a> containing sensitive user keys which are unavailable to
|
>hardware-backed Keystore</a> containing sensitive user keys which are unavailable to
|
||||||
the OS or apps running on it without authorisation from Titan M2 itself.
|
the OS or apps running on it without authorisation from Titan M2 itself.
|
||||||
<a class="table-link" href="https://android-developers.googleblog.com/2018/05/
|
<a class="body-link" href="https://android-developers.googleblog.com/2018/05/
|
||||||
insider-attack-resistance.html"
|
insider-attack-resistance.html"
|
||||||
>Insider attack resistance</a> ensures that Titan M2 firmware can be flashed only if the
|
>Insider attack resistance</a> ensures that Titan M2 firmware can be flashed only if the
|
||||||
user PIN/password is already known, making it impossible to backdoor the device without
|
user PIN/password is already known, making it impossible to backdoor the device without
|
||||||
already knowing these secrets.<br>
|
already knowing these secrets.<br>
|
||||||
<br>
|
<br>
|
||||||
Google Pixel device kernels are compiled with
|
Google Pixel device kernels are compiled with
|
||||||
<a class="table-link" href="https://android-developers.googleblog.com/2018/10/
|
<a class="body-link" href="https://android-developers.googleblog.com/2018/10/
|
||||||
control-flow-integrity-in-android-kernel.html"
|
control-flow-integrity-in-android-kernel.html"
|
||||||
>forward-edge control-flow integrity</a> and
|
>forward-edge control-flow integrity</a> and
|
||||||
<a class="table-link" href="https://security.googleblog.com/2019/10/
|
<a class="body-link" href="https://security.googleblog.com/2019/10/
|
||||||
protecting-against-code-reuse-in-linux_30.html"
|
protecting-against-code-reuse-in-linux_30.html"
|
||||||
>backward-edge control-flow integrity</a> to prevent code reuse attacks against the
|
>backward-edge control-flow integrity</a> to prevent code reuse attacks against the
|
||||||
kernel. MAC address randomisation is
|
kernel. MAC address randomisation is
|
||||||
<a class="table-link" href="https://android-developers.googleblog.com/2017/04/
|
<a class="body-link" href="https://android-developers.googleblog.com/2017/04/
|
||||||
changes-to-device-identifiers-in.html"
|
changes-to-device-identifiers-in.html"
|
||||||
>implemented well, along with minimal probe requests and randomised initial sequence
|
>implemented well, along with minimal probe requests and randomised initial sequence
|
||||||
numbers</a>.<br>
|
numbers</a>.<br>
|
||||||
<br>
|
<br>
|
||||||
Google releases
|
Google releases
|
||||||
<a class="table-link" href="https://source.android.com/docs/security/bulletin/pixel/"
|
<a class="body-link" href="https://source.android.com/docs/security/bulletin/pixel/"
|
||||||
>guaranteed monthly security updates</a>, ensuring Google Pixel devices are up-to-date
|
>guaranteed monthly security updates</a>, ensuring Google Pixel devices are up-to-date
|
||||||
and quickly protected against security vulnerabilities.<br>
|
and quickly protected against security vulnerabilities.<br>
|
||||||
<br>
|
<br>
|
||||||
@ -354,16 +354,16 @@
|
|||||||
secure and private previous generation Pixel devices. They replace ARM-based Titan M
|
secure and private previous generation Pixel devices. They replace ARM-based Titan M
|
||||||
with RISC-V-based Titan M2, reducing trust by removing ARM from the equation. Titan M2
|
with RISC-V-based Titan M2, reducing trust by removing ARM from the equation. Titan M2
|
||||||
is more resiliant to attacks than Titan M, and is
|
is more resiliant to attacks than Titan M, and is
|
||||||
<a class="table-link" href="https://www.tuv-nederland.nl/assets/files/cerfiticaten/2022/
|
<a class="body-link" href="https://www.tuv-nederland.nl/assets/files/cerfiticaten/2022/
|
||||||
09/nscib-cc-22-0228971-cert-final.pdf"
|
09/nscib-cc-22-0228971-cert-final.pdf"
|
||||||
>AVA_VAN.5 certified</a>, the highest level of vulnerability assessment. Google's
|
>AVA_VAN.5 certified</a>, the highest level of vulnerability assessment. Google's
|
||||||
in-house Tensor SoC includes Tensor Security Core, further improving device security.<br>
|
in-house Tensor SoC includes Tensor Security Core, further improving device security.<br>
|
||||||
<br>
|
<br>
|
||||||
Pixel 6-series and 7-series devices are supported for a
|
Pixel 6-series and 7-series devices are supported for a
|
||||||
<a class="table-link" href="https://support.google.com/nexus/answer/
|
<a class="body-link" href="https://support.google.com/nexus/answer/
|
||||||
4457705#zippy=%2Cpixel-and-later"
|
4457705#zippy=%2Cpixel-and-later"
|
||||||
>minimum of 5 years from launch</a>, an increase from previous generations'
|
>minimum of 5 years from launch</a>, an increase from previous generations'
|
||||||
<a class="table-link" href="https://support.google.com/nexus/answer/
|
<a class="body-link" href="https://support.google.com/nexus/answer/
|
||||||
4457705#zippy=%2Cpixel-xl-a-a-g-and-a-g"
|
4457705#zippy=%2Cpixel-xl-a-a-g-and-a-g"
|
||||||
>support lifecycles of 3 years</a>.</td>
|
>support lifecycles of 3 years</a>.</td>
|
||||||
</tr>
|
</tr>
|
||||||
@ -393,7 +393,7 @@
|
|||||||
width="100px" height="100px"/><br>
|
width="100px" height="100px"/><br>
|
||||||
<br>
|
<br>
|
||||||
Gentoo Linux</td>
|
Gentoo Linux</td>
|
||||||
<td><a class="table-link" href="https://www.gentoo.org/"
|
<td><a class="body-link" href="https://www.gentoo.org/"
|
||||||
>Gentoo Linux</a> is a highly modular, source-based Linux-based operating system which
|
>Gentoo Linux</a> is a highly modular, source-based Linux-based operating system which
|
||||||
allows vast customisation to tailor the operating system to suit your specific needs.
|
allows vast customisation to tailor the operating system to suit your specific needs.
|
||||||
There are many advantages to such an operating system, with the most notable being the
|
There are many advantages to such an operating system, with the most notable being the
|
||||||
@ -404,15 +404,15 @@
|
|||||||
I have focused on security hardening and privacy hardening, placing performance below
|
I have focused on security hardening and privacy hardening, placing performance below
|
||||||
those aspects, although my system is still very performant. Some of the hardening I
|
those aspects, although my system is still very performant. Some of the hardening I
|
||||||
apply includes
|
apply includes
|
||||||
<a class="table-link" href="https://en.wikipedia.org/wiki/Buffer_overflow_protection"
|
<a class="body-link" href="https://en.wikipedia.org/wiki/Buffer_overflow_protection"
|
||||||
>stack protection</a>,
|
>stack protection</a>,
|
||||||
<a class="table-link" href="https://en.wikipedia.org/wiki/Integer_overflow"
|
<a class="body-link" href="https://en.wikipedia.org/wiki/Integer_overflow"
|
||||||
>signed integer overflow wrapping</a>, and GrapheneOS'
|
>signed integer overflow wrapping</a>, and GrapheneOS'
|
||||||
<a class="table-link" href="https://github.com/GrapheneOS/hardened_malloc/"
|
<a class="body-link" href="https://github.com/GrapheneOS/hardened_malloc/"
|
||||||
>hardened_malloc</a> memory allocator.<br>
|
>hardened_malloc</a> memory allocator.<br>
|
||||||
<br>
|
<br>
|
||||||
You can find my personal Gentoo Linux configurations in my personal
|
You can find my personal Gentoo Linux configurations in my personal
|
||||||
<a class="table-link" href="https://git.inferencium.net/inference/cfg/"
|
<a class="body-link" href="https://git.inferencium.net/inference/cfg/"
|
||||||
>configuration respository</a>.</td>
|
>configuration respository</a>.</td>
|
||||||
<td class="table-main">Open source<br>
|
<td class="table-main">Open source<br>
|
||||||
<br>
|
<br>
|
||||||
@ -424,21 +424,21 @@
|
|||||||
width="100px" height="100px"/><br>
|
width="100px" height="100px"/><br>
|
||||||
<br>
|
<br>
|
||||||
Chromium</td>
|
Chromium</td>
|
||||||
<td><a class="table-link" href="https://chromium.org/"
|
<td><a class="body-link" href="https://chromium.org/"
|
||||||
>Chromium</a> is a highly secure web browser which is often ahead of other web browsers
|
>Chromium</a> is a highly secure web browser which is often ahead of other web browsers
|
||||||
in security aspects. It has a dedicated security team and a very impressive
|
in security aspects. It has a dedicated security team and a very impressive
|
||||||
<a class="table-link" href="https://www.chromium.org/Home/chromium-security/brag-sheet/"
|
<a class="body-link" href="https://www.chromium.org/Home/chromium-security/brag-sheet/"
|
||||||
>security brag sheet</a>.
|
>security brag sheet</a>.
|
||||||
Chromium's security features include a strong
|
Chromium's security features include a strong
|
||||||
<a class="table-link" href="https://code.google.com/p/chromium/wiki/LinuxSandboxing"
|
<a class="body-link" href="https://code.google.com/p/chromium/wiki/LinuxSandboxing"
|
||||||
>multi-layer sandbox</a>,
|
>multi-layer sandbox</a>,
|
||||||
strong <a class="table-link" href="https://www.chromium.org/Home/chromium-security/
|
strong <a class="body-link" href="https://www.chromium.org/Home/chromium-security/
|
||||||
site-isolation"
|
site-isolation"
|
||||||
>site isolation</a>,
|
>site isolation</a>,
|
||||||
<a class="table-link" href="https://www.chromium.org/Home/chromium-security/
|
<a class="body-link" href="https://www.chromium.org/Home/chromium-security/
|
||||||
binding-integrity"
|
binding-integrity"
|
||||||
>Binding Integrity</a> memory hardening, and
|
>Binding Integrity</a> memory hardening, and
|
||||||
<a class="table-link" href="https://www.chromium.org/developers/testing/
|
<a class="body-link" href="https://www.chromium.org/developers/testing/
|
||||||
control-flow-integrity/"
|
control-flow-integrity/"
|
||||||
>control-flow integrity (CFI)</a>.</td>
|
>control-flow integrity (CFI)</a>.</td>
|
||||||
<td class="table-main">Open source<br>
|
<td class="table-main">Open source<br>
|
||||||
@ -466,32 +466,32 @@
|
|||||||
width="100px" height="100px"/><br>
|
width="100px" height="100px"/><br>
|
||||||
<br>
|
<br>
|
||||||
GrapheneOS</td>
|
GrapheneOS</td>
|
||||||
<td><a class="table-link" href="https://grapheneos.org/"
|
<td><a class="body-link" href="https://grapheneos.org/"
|
||||||
>GrapheneOS</a> is a security-hardened, privacy-hardened, secure-by-default
|
>GrapheneOS</a> is a security-hardened, privacy-hardened, secure-by-default
|
||||||
Android-based operating system which implements extensive, systemic security and privacy
|
Android-based operating system which implements extensive, systemic security and privacy
|
||||||
hardening to the Android Open Source Project used as its base codebase. Its hardening
|
hardening to the Android Open Source Project used as its base codebase. Its hardening
|
||||||
includes closing gaps for apps to access sensitive system information, a secure app
|
includes closing gaps for apps to access sensitive system information, a secure app
|
||||||
spawning feature which avoids sharing address space layout and other secrets AOSP's
|
spawning feature which avoids sharing address space layout and other secrets AOSP's
|
||||||
default Zygote app spawning model would share,
|
default Zygote app spawning model would share,
|
||||||
<a class="table-link" href="https://github.com/GrapheneOS/kernel_gs-gs101/"
|
<a class="body-link" href="https://github.com/GrapheneOS/kernel_gs-gs101/"
|
||||||
>hardened kernel</a>, hardened memory allocator
|
>hardened kernel</a>, hardened memory allocator
|
||||||
(<a class="table-link" href="https://github.com/GrapheneOS/hardened_malloc/"
|
(<a class="body-link" href="https://github.com/GrapheneOS/hardened_malloc/"
|
||||||
>hardened_malloc</a>) to protect against common memory corruption vulnerabilties,
|
>hardened_malloc</a>) to protect against common memory corruption vulnerabilties,
|
||||||
<a class="table-link" href="https://github.com/GrapheneOS/platform_bionic/"
|
<a class="body-link" href="https://github.com/GrapheneOS/platform_bionic/"
|
||||||
>hardened Bionic standard C library</a>,
|
>hardened Bionic standard C library</a>,
|
||||||
<a class="table-link" href="https://github.com/GrapheneOS/platform_system_sepolicy/"
|
<a class="body-link" href="https://github.com/GrapheneOS/platform_system_sepolicy/"
|
||||||
>stricter SELinux policies</a>, and local and remote hardware-backed attestation
|
>stricter SELinux policies</a>, and local and remote hardware-backed attestation
|
||||||
(<a class="table-link" href="https://attestation.app/about/"
|
(<a class="body-link" href="https://attestation.app/about/"
|
||||||
>Auditor</a>) to ensure the OS has not been corrupted or tampered with.<br>
|
>Auditor</a>) to ensure the OS has not been corrupted or tampered with.<br>
|
||||||
<br>
|
<br>
|
||||||
GrapheneOS only supports
|
GrapheneOS only supports
|
||||||
<a class="table-link" href="https://grapheneos.org/faq#device-support"
|
<a class="body-link" href="https://grapheneos.org/faq#device-support"
|
||||||
>high security and well-supported devices</a> which receive full support from their
|
>high security and well-supported devices</a> which receive full support from their
|
||||||
manufacturers, including firmware updates, long support lifecycles, secure hardware, and
|
manufacturers, including firmware updates, long support lifecycles, secure hardware, and
|
||||||
overall high security practices.<br>
|
overall high security practices.<br>
|
||||||
<br>
|
<br>
|
||||||
For an extensive list of features GrapheneOS provides, visit its
|
For an extensive list of features GrapheneOS provides, visit its
|
||||||
<a class="table-link" href="https://grapheneos.org/features/"
|
<a class="body-link" href="https://grapheneos.org/features/"
|
||||||
>official features list</a> which provides extensive documentation.</td>
|
>official features list</a> which provides extensive documentation.</td>
|
||||||
<td class="table-main">Open source<br>
|
<td class="table-main">Open source<br>
|
||||||
<br>
|
<br>
|
||||||
@ -507,18 +507,18 @@
|
|||||||
utilises GrapheneOS' operating system hardening to implement stronger defenses to the
|
utilises GrapheneOS' operating system hardening to implement stronger defenses to the
|
||||||
already very secure Chromium web browser. Its hardening alongside Chromium's base
|
already very secure Chromium web browser. Its hardening alongside Chromium's base
|
||||||
security features includes
|
security features includes
|
||||||
<a class="table-link" href="https://github.com/GrapheneOS/Vanadium/blob/13/patches/
|
<a class="body-link" href="https://github.com/GrapheneOS/Vanadium/blob/13/patches/
|
||||||
0081-Implement-UI-for-JIT-site-settings.patch"
|
0081-Implement-UI-for-JIT-site-settings.patch"
|
||||||
>disabling JavaScript just-in-time (JIT) compilation by default</a>,
|
>disabling JavaScript just-in-time (JIT) compilation by default</a>,
|
||||||
<a class="table-link" href="https://github.com/GrapheneOS/Vanadium/blob/13/patches/
|
<a class="body-link" href="https://github.com/GrapheneOS/Vanadium/blob/13/patches/
|
||||||
0051-stub-out-the-battery-status-API.patch"
|
0051-stub-out-the-battery-status-API.patch"
|
||||||
>stubbing out the battery status API to prevent abuse of it</a>, and
|
>stubbing out the battery status API to prevent abuse of it</a>, and
|
||||||
<a class="table-link" href="https://github.com/GrapheneOS/Vanadium/blob/13/patches/
|
<a class="body-link" href="https://github.com/GrapheneOS/Vanadium/blob/13/patches/
|
||||||
0084-Toggle-for-navigating-external-URL-in-incognito.patch"
|
0084-Toggle-for-navigating-external-URL-in-incognito.patch"
|
||||||
>always-on Incognito mode as an option</a>.<br>
|
>always-on Incognito mode as an option</a>.<br>
|
||||||
<br>
|
<br>
|
||||||
Vanadium's source code, including its Chromium patchset, can be found in its
|
Vanadium's source code, including its Chromium patchset, can be found in its
|
||||||
<a class="table-link" href="https://github.com/GrapheneOS/Vanadium/"
|
<a class="body-link" href="https://github.com/GrapheneOS/Vanadium/"
|
||||||
>official repository</a>.</td>
|
>official repository</a>.</td>
|
||||||
<td class="table-main">Open source<br>
|
<td class="table-main">Open source<br>
|
||||||
<br>
|
<br>
|
||||||
@ -530,23 +530,23 @@
|
|||||||
width="100px" height="100px"><br>
|
width="100px" height="100px"><br>
|
||||||
<br>
|
<br>
|
||||||
Molly</td>
|
Molly</td>
|
||||||
<td><a class="table-link" href="https://molly.im/"
|
<td><a class="body-link" href="https://molly.im/"
|
||||||
>Molly</a> is a security-hardened, privacy-hardened
|
>Molly</a> is a security-hardened, privacy-hardened
|
||||||
<a class="table-link" href="https://signal.org/"
|
<a class="body-link" href="https://signal.org/"
|
||||||
>Signal</a> client which hardens Signal by using a variety of
|
>Signal</a> client which hardens Signal by using a variety of
|
||||||
<a class="table-link" href="https://github.com/mollyim/mollyim-android#features"
|
<a class="body-link" href="https://github.com/mollyim/mollyim-android#features"
|
||||||
>unique features</a>, allowing
|
>unique features</a>, allowing
|
||||||
<a class="table-link" href="https://github.com/mollyim/mollyim-android/wiki/
|
<a class="body-link" href="https://github.com/mollyim/mollyim-android/wiki/
|
||||||
Data-Encryption-At-Rest"
|
Data-Encryption-At-Rest"
|
||||||
>locking the database when not in use</a>, and
|
>locking the database when not in use</a>, and
|
||||||
<a class="table-link" href="https://github.com/mollyim/mollyim-android/blob/
|
<a class="body-link" href="https://github.com/mollyim/mollyim-android/blob/
|
||||||
a81ff7d120adc9d427be17239107343146bad704/app/src/main/java/org/thoughtcrime/securesms/
|
a81ff7d120adc9d427be17239107343146bad704/app/src/main/java/org/thoughtcrime/securesms/
|
||||||
crypto/MasterSecretUtil.java#L91"
|
crypto/MasterSecretUtil.java#L91"
|
||||||
>utilising Android StrongBox</a> to protect user keys using the device's hardware
|
>utilising Android StrongBox</a> to protect user keys using the device's hardware
|
||||||
security module.<br>
|
security module.<br>
|
||||||
<br>
|
<br>
|
||||||
Molly is available in
|
Molly is available in
|
||||||
<a class="table-link" href="https://github.com/mollyim/
|
<a class="body-link" href="https://github.com/mollyim/
|
||||||
mollyim-android#free-and-open-source"
|
mollyim-android#free-and-open-source"
|
||||||
>2 flavours</a>:<br>
|
>2 flavours</a>:<br>
|
||||||
<ul>
|
<ul>
|
||||||
@ -566,9 +566,9 @@
|
|||||||
width="100px" height="100px"><br>
|
width="100px" height="100px"><br>
|
||||||
<br>
|
<br>
|
||||||
Conversations</td>
|
Conversations</td>
|
||||||
<td><a class="table-link" href="https://conversations.im/"
|
<td><a class="body-link" href="https://conversations.im/"
|
||||||
>Conversations</a> is a well-designed Android
|
>Conversations</a> is a well-designed Android
|
||||||
<a class="table-link" href="https://xmpp.org/"
|
<a class="body-link" href="https://xmpp.org/"
|
||||||
>XMPP</a> client which serves as the de facto XMPP reference client and has great
|
>XMPP</a> client which serves as the de facto XMPP reference client and has great
|
||||||
usability.</td>
|
usability.</td>
|
||||||
<td class="table-main">Open source<br>
|
<td class="table-main">Open source<br>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user