From ca0b544251c42e3b320f38c039ef52e7efab461e Mon Sep 17 00:00:00 2001 From: redoomed1 <161974310+redoomed1@users.noreply.github.com> Date: Sat, 30 Nov 2024 04:49:58 +0000 Subject: [PATCH 1/3] update: IzzyOnDroid section obtaining apps (#2818) Signed-off-by: blacklight447 Signed-off-by: Jonah Aragon Signed-off-by: Daniel Gray --- docs/android/obtaining-apps.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/android/obtaining-apps.md b/docs/android/obtaining-apps.md index 7f60cd49..f50b8dc7 100644 --- a/docs/android/obtaining-apps.md +++ b/docs/android/obtaining-apps.md @@ -114,9 +114,9 @@ If you download APK files to install manually, you can verify their signature wi Due to their process of building apps, apps in the *official* F-Droid repository often fall behind on updates. F-Droid maintainers also reuse package IDs while signing apps with their own keys, which is not ideal as it gives the F-Droid team ultimate trust. Additionally, the requirements for an app to be included in the official F-Droid repo are less strict than other app stores like Google Play, meaning that F-Droid tends to host a lot more apps which are older, unmaintained, or otherwise no longer meet [modern security standards](https://developer.android.com/google/play/requirements/target-sdk). -Other popular third-party repositories for F-Droid such as [IzzyOnDroid](https://apt.izzysoft.de/fdroid) alleviate some of these concerns. The IzzyOnDroid repository pulls builds directly from GitHub and is the next best thing to the developers' own repositories. However, it is not something that we can fully recommend, as apps are typically [removed](https://github.com/vfsfitvnm/ViMusic/issues/240#issuecomment-1225564446) from that repository if they are later added to the main F-Droid repository. While that makes sense (since the goal of that particular repository is to host apps before they're accepted into the main F-Droid repository), it can leave you with installed apps which no longer receive updates. +Other popular third-party repositories for F-Droid such as [IzzyOnDroid](https://apt.izzysoft.de/fdroid) alleviate some of these concerns. The IzzyOnDroid repository pulls builds directly from code forges (GitHub, GitLab, etc.) and is the next best thing to the developers' own repositories. They also offer [reproducible builds](https://android.izzysoft.de/articles/named/iod-rbs-mirrors-clients) for hundreds of applications and have developers who verify the reproducibility of developer-signed APKs. Furthermore, the IzzyOnDroid team conducts [additional security scans](https://android.izzysoft.de/articles/named/iod-scan-apkchecks) of apps housed in the repo, which usually result in [deliberations](https://github.com/gouravkhunger/QuotesApp/issues/22) between them and app developers toward privacy improvements in their apps. Note that apps may be removed from the IzzyOnDroid repo in [certain circumstances](https://gitlab.com/IzzyOnDroid/repo#are-apps-removed-from-the-repo--and-when-does-that-happen). -That said, the [F-Droid](https://f-droid.org/en/packages) and [IzzyOnDroid](https://apt.izzysoft.de/fdroid) repositories are home to countless apps, so they can be a useful tool to search for and discover open-source apps that you can then download through other means such as the Play Store, Aurora Store, or by getting the APK directly from the developer. You should use your best judgement when looking for new apps via this method, and keep an eye on how frequently the app is updated. Outdated apps may rely on unsupported libraries, among other things, posing a potential security risk. +The [F-Droid](https://f-droid.org/en/packages) and [IzzyOnDroid](https://apt.izzysoft.de/fdroid) repositories are home to countless apps, so they can be useful places to search for and discover open-source apps that you can then download through other means such as the Play Store, Aurora Store, or by getting the APK directly from the developer. You should use your best judgment when looking for new apps via this method, and keep an eye on how frequently the app is updated. Outdated apps may rely on unsupported libraries, among other things, posing a potential security risk.

F-Droid Basic

From 455f18be13a944051be13d6e75441b8691d3db8f Mon Sep 17 00:00:00 2001 From: Jonah Aragon Date: Fri, 20 Sep 2024 02:34:13 -0500 Subject: [PATCH 2/3] feat: Generate homepage topics on server side (#2766) --- .github/workflows/build.yml | 18 ++ .github/workflows/update-discussions.yml | 82 ++++++++ index-generation.sh | 89 +++++++++ mkdocs.net.yml | 197 +++++++++++++++++++ net/index.md | 42 ++++ theme/assets/javascripts/discourse-topics.js | 170 ---------------- theme/home.html | 22 +-- 7 files changed, 436 insertions(+), 184 deletions(-) create mode 100644 .github/workflows/update-discussions.yml create mode 100755 index-generation.sh create mode 100644 mkdocs.net.yml create mode 100644 net/index.md delete mode 100644 theme/assets/javascripts/discourse-topics.js diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 26edc9ac..6d99dc1b 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -176,6 +176,24 @@ jobs: run: | eval ./run.sh --build --lang=${{ inputs.lang }} "$EXTRA_FLAGS" + - name: Run index-generation.sh for top posts + if: inputs.lang == 'en' + run: | + bash index-generation.sh \ + --source='https://discuss.privacyguides.net/top.json?period=weekly' \ + --tag="top posts" \ + --destination="./site/en/index.html" \ + --count=3 + + - name: Run index-generation.sh for latest posts + if: inputs.lang == 'en' + run: | + bash index-generation.sh \ + --source='https://discuss.privacyguides.net/latest.json' \ + --tag="latest posts" \ + --destination="./site/en/index.html" \ + --count=12 + - name: Package Website run: | tar -czf site-${{ inputs.config }}-${{ inputs.lang }}.tar.gz site diff --git a/.github/workflows/update-discussions.yml b/.github/workflows/update-discussions.yml new file mode 100644 index 00000000..226d714e --- /dev/null +++ b/.github/workflows/update-discussions.yml @@ -0,0 +1,82 @@ +# Copyright (c) 2024 Jonah Aragon + +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to +# deal in the Software without restriction, including without limitation the +# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or +# sell copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: + +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. + +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS +# IN THE SOFTWARE. + +name: 🔄 Update Discussions + +on: + workflow_dispatch: + schedule: + - cron: "*/30 * * * *" + +permissions: + contents: read + +jobs: + generate: + runs-on: ubuntu-latest + permissions: + contents: read + environment: + name: production + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + persist-credentials: "false" + fetch-depth: 1 + + - name: Create site/en directory + run: mkdir -p site/en + + - name: Update Discussions + uses: yakubique/minio-download@v1.1.1 + with: + endpoint: https://${{ vars.PROD_GARAGE_HOSTNAME }} + access_key: ${{ secrets.PROD_GARAGE_KEY_ID }} + secret_key: ${{ secrets.PROD_GARAGE_SECRET_KEY }} + bucket: ${{ vars.PROD_GARAGE_BUCKET }} + source: /en/index.html + target: ./site/en/ + + - name: Run index-generation.sh for top posts + run: | + bash index-generation.sh \ + --source='https://discuss.privacyguides.net/top.json?period=weekly' \ + --tag="top posts" \ + --destination="./site/en/index.html" \ + --count=3 + + - name: Run index-generation.sh for latest posts + run: | + bash index-generation.sh \ + --source='https://discuss.privacyguides.net/latest.json' \ + --tag="latest posts" \ + --destination="./site/en/index.html" \ + --count=12 + + - name: Upload modified index + uses: yakubique/minio-upload@v1.1.3 + with: + endpoint: https://${{ vars.PROD_GARAGE_HOSTNAME }} + access_key: ${{ secrets.PROD_GARAGE_KEY_ID }} + secret_key: ${{ secrets.PROD_GARAGE_SECRET_KEY }} + bucket: ${{ vars.PROD_GARAGE_BUCKET }} + source: ./site/en/index.html + target: /en diff --git a/index-generation.sh b/index-generation.sh new file mode 100755 index 00000000..89acc744 --- /dev/null +++ b/index-generation.sh @@ -0,0 +1,89 @@ +#!/bin/bash + +DATE_CMD="date" + +# Check if the script is running on macOS +if [[ "$OSTYPE" == "darwin"* ]]; then + DATE_CMD="gdate" +fi + +# Defaults +source="https://discuss.privacyguides.net/top.json?period=weekly" +tag="top posts" +destination="./site/en/index.html" +count=3 + +for arg in "$@" +do + case $arg in + --source=*) + source="${arg#*=}" + shift + ;; + --tag=*) + tag="${arg#*=}" + shift + ;; + --destination=*) + destination="${arg#*=}" + shift + ;; + --count=*) + count="${arg#*=}" + shift + ;; + esac +done + +# URL of the Discourse top.json +DISCOURSE_URL="$source" + +# Fetch the JSON data +json_data=$(curl -s $DISCOURSE_URL) + +# Extract the first 3 topics +topics=$(echo $json_data | jq -r ".topic_list.topics[:$count]") + +users=$(echo $json_data | jq -r ".users") +# Generate HTML for the first 3 posts +html_output="" +for row in $(echo "${topics}" | jq -r '.[] | @base64'); do + _jq() { + echo ${row} | base64 --decode | jq -r ${1} + } + + title=$(_jq '.title') + id=$(_jq '.id') + like_count=$(_jq '.like_count') + reply_count=$(_jq '.posts_count') + views=$(_jq '.views') + + author_id=$(_jq '.posters[0].user_id') + author_info=$(echo "${users}" | jq -r ".[] | select(.id==$author_id)") + author_username=$(echo "${author_info}" | jq -r ".username") + + html_output+="
  • " + html_output+="

    ${title}

    " + html_output+="
    " + html_output+="

    " + html_output+="" + html_output+="" + html_output+=" Posted by $author_username" + html_output+="" + html_output+="

    " + html_output+="

    " + html_output+="eye" + html_output+=" ${views} " + html_output+="heart" + html_output+=" ${like_count} " + html_output+="reply" + html_output+=" ${reply_count} " + html_output+="

    " + html_output+="
  • " +done + +tempfile=$(mktemp) +echo "$html_output" > $tempfile + +# Insert the HTML output between the comments in index.html +sed -i'.bak' "//,//{//!d;}; //r $tempfile" $destination diff --git a/mkdocs.net.yml b/mkdocs.net.yml new file mode 100644 index 00000000..ee7ccf75 --- /dev/null +++ b/mkdocs.net.yml @@ -0,0 +1,197 @@ +# Copyright (c) 2022-2024 Jonah Aragon + +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to +# deal in the Software without restriction, including without limitation the +# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or +# sell copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: + +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. + +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS +# IN THE SOFTWARE. + +docs_dir: "net" +site_url: "https://www.privacyguides.net/" +site_dir: "site/net" + +site_name: Privacy Guides Community +site_description: "Discover privacy tools and resources, ask questions, and stay informed at the biggest digital rights and privacy tech community online." +edit_uri_template: blob/main/net/{path}?plain=1 + +extra: + privacy_guides: + footer: + intro: + !ENV [ + FOOTER_INTRO, + "Privacy Guides is a non-profit, socially motivated website that provides information for protecting your data security and privacy.", + ] + note: + !ENV [ + FOOTER_NOTE, + "We do not make money from recommending certain products, and we do not use affiliate links.", + ] + copyright: + author: + !ENV [FOOTER_COPYRIGHT_AUTHOR, "Privacy Guides and contributors."] + date: !ENV [FOOTER_COPYRIGHT_DATE, "2019-2024"] + license: + - fontawesome/brands/creative-commons + - fontawesome/brands/creative-commons-by + - fontawesome/brands/creative-commons-sa + homepage: https://www.privacyguides.org/en/ + generator: false + context: !ENV [BUILD_CONTEXT, "production"] + offline: !ENV [BUILD_OFFLINE, false] + deploy: !ENV DEPLOY_ID + social: + - icon: simple/mastodon + link: https://mastodon.neat.computer/@privacyguides + name: !ENV [SOCIAL_MASTODON, "Mastodon"] + - icon: simple/matrix + link: https://matrix.to/#/#privacyguides:matrix.org + name: !ENV [SOCIAL_MATRIX, "Matrix"] + - icon: simple/discourse + link: https://discuss.privacyguides.net/ + name: !ENV [SOCIAL_FORUM, "Forum"] + - icon: simple/github + link: https://github.com/privacyguides + name: !ENV [SOCIAL_GITHUB, "GitHub"] + - icon: simple/torbrowser + link: http://www.xoe4vn5uwdztif6goazfbmogh6wh5jc4up35bqdflu6bkdc5cas5vjqd.onion/ + name: !ENV [SOCIAL_TOR_SITE, "Hidden service"] + +repo_url: + !ENV [BUILD_REPO_URL, "https://github.com/privacyguides/privacyguides.org"] +repo_name: "" + +theme: + name: material + language: en + custom_dir: theme + font: + text: Public Sans + code: DM Mono + palette: + - media: "(prefers-color-scheme)" + scheme: default + accent: deep purple + toggle: + icon: material/brightness-auto + name: !ENV [THEME_DARK, "Switch to dark mode"] + - media: "(prefers-color-scheme: dark)" + scheme: slate + accent: amber + toggle: + icon: material/brightness-2 + name: !ENV [THEME_LIGHT, "Switch to light mode"] + - media: "(prefers-color-scheme: light)" + scheme: default + accent: deep purple + toggle: + icon: material/brightness-5 + name: !ENV [THEME_AUTO, "Switch to system theme"] + favicon: assets/brand/logos/png/favicon-32x32.png + icon: + repo: simple/github + features: + - announce.dismiss + - navigation.tracking + - navigation.tabs + - navigation.sections + - navigation.expand + - navigation.path + - navigation.indexes + - navigation.footer + - content.action.edit + - content.tabs.link + - content.tooltips + - search.highlight + +extra_css: + - assets/stylesheets/extra.css?v=20240829 + +watch: + - theme + - includes + +plugins: + tags: {} + privacy: + enabled: !ENV [BUILD_PRIVACY, true] + offline: + enabled: !ENV [BUILD_OFFLINE, false] + group: + enabled: !ENV [BUILD_INSIDERS, true] + plugins: + macros: {} + meta: {} + optimize: + enabled: !ENV [OPTIMIZE, PRODUCTION, NETLIFY, false] + typeset: {} + social: + cards: !ENV [CARDS, true] + cards_dir: assets/img/social + cards_layout_dir: theme/layouts + cards_layout: page + +markdown_extensions: + admonition: {} + pymdownx.details: {} + pymdownx.superfences: + custom_fences: + - name: mermaid + class: mermaid + format: !!python/name:pymdownx.superfences.fence_code_format + pymdownx.tabbed: + alternate_style: true + pymdownx.arithmatex: + generic: true + pymdownx.critic: {} + pymdownx.caret: {} + pymdownx.keys: {} + pymdownx.mark: {} + pymdownx.tilde: {} + pymdownx.snippets: + auto_append: + - !ENV [BUILD_ABBREVIATIONS, "includes/abbreviations.en.txt"] + pymdownx.tasklist: + custom_checkbox: true + attr_list: {} + def_list: {} + md_in_html: {} + meta: {} + abbr: {} + pymdownx.emoji: + emoji_index: !!python/name:material.extensions.emoji.twemoji + emoji_generator: !!python/name:material.extensions.emoji.to_svg + tables: {} + footnotes: {} + toc: + permalink: true + toc_depth: 4 + +nav: + - !ENV [NAV_HOME, "Home"]: https://www.privacyguides.org/en/ + - !ENV [NAV_KNOWLEDGE_BASE, "Knowledge Base"]: + https://www.privacyguides.org/en/basics/why-privacy-matters/ + - !ENV [NAV_RECOMMENDATIONS, "Recommendations"]: + https://www.privacyguides.org/en/tools/ + - !ENV [NAV_BLOG, "Articles"]: https://www.privacyguides.org/articles/ + - !ENV [NAV_ABOUT, "About"]: https://www.privacyguides.org/en/about/ + - "Donate": https://www.privacyguides.org/en/about/donate/ + - !ENV [NAV_CHANGELOG, "Changelog"]: + "https://github.com/privacyguides/privacyguides.org/releases" + - !ENV [NAV_FORUM, "Forum"]: "https://discuss.privacyguides.net/" + +validation: + nav: + not_found: info diff --git a/net/index.md b/net/index.md new file mode 100644 index 00000000..24e271ab --- /dev/null +++ b/net/index.md @@ -0,0 +1,42 @@ +--- +title: Weekly Discussions +meta_title: Privacy Guides Community +hide: + - footer + - toc + - navigation +schema: + - + "@context": https://schema.org + "@type": Organization + "@id": https://www.privacyguides.org/ + name: Privacy Guides + url: https://www.privacyguides.org/ + logo: https://www.privacyguides.org/en/assets/brand/logos/png/square/pg-yellow.png + sameAs: + - https://twitter.com/privacy_guides + - https://github.com/privacyguides + - https://www.wikidata.org/wiki/Q111710163 + - https://www.youtube.com/@privacyguides + - https://mastodon.neat.computer/@privacyguides + - + "@context": https://schema.org + "@type": WebSite + name: Privacy Guides + alternateName: ["Privacy Guides Community", "Privacy Guides Forum", "Privacy & Security Forum", "Privacy Discussions", "Privacy Community", "PG Community"] + url: "https://www.privacyguides.net/" + isPartOf: "https://www.privacyguides.org/" +--- + +Discover privacy tools and resources, ask questions, and stay informed at the biggest digital rights and privacy tech community online. + +[Open Forum](https://discuss.privacyguides.net){.md-button .md-button--primary} +[View Resources](https://www.privacyguides.org/en/tools/){.md-button} + +
    +
      + + + +
    +
    diff --git a/theme/assets/javascripts/discourse-topics.js b/theme/assets/javascripts/discourse-topics.js deleted file mode 100644 index 325aaf4f..00000000 --- a/theme/assets/javascripts/discourse-topics.js +++ /dev/null @@ -1,170 +0,0 @@ -/** - * @overview Generates a list of topics on a Discourse forum. - * @author Jonah Aragon - * @version 3.1.0 - * @license - * Copyright (c) 2023 - 2024 Jonah Aragon - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ - -async function getData(url) { - const response = await fetch(url); - return response.json() -} - -async function main() { - const elements = document.querySelectorAll("ul[data-forum]"); - - for (let j = 0; j < elements.length; j++) { - - var topics = elements[j]; - var dataset = topics.dataset; - - console.log("Fetching data from " + dataset.feed) - const data = await getData(dataset.feed); - var list = data['topic_list']['topics']; - var profiles = data['users']; - var count = dataset.count; - - for (var i = 0; i < count; i++) { - - if (list[i]['pinned'] == true) { - count++; - continue; - } - - var title = list[i]['title']; - var id = list[i]['id']; - - var topic = document.createElement("li"); - topic.className = "discourse-topic"; - - var h3 = document.createElement('p'); - h3.className = "discourse-title"; - var a1 = document.createElement('a'); - - a1.href = dataset.forum + '/t/' + id; - - var boldTitle = document.createElement('strong'); - boldTitle.innerText = title; - a1.appendChild(boldTitle); - h3.appendChild(a1); - - var authorinfo = document.createElement('p'); - authorinfo.className = "discourse-author"; - - var author_id = list[i]['posters'][0]['user_id']; - var author_data = profiles.find(profile => profile['id'] == author_id); - var author = document.createElement('span'); - author.className = "discourse-author"; - var avatar = document.createElement('img'); - avatar.src = dataset.forum + author_data['avatar_template'].replace("{size}", "40"); - avatar.width = 20; - avatar.height = 20; - avatar.className = "middle"; - avatar.loading = "lazy"; - avatar.ariaHidden = "true"; - avatar.alt = ""; - author.appendChild(avatar); - var namespan = document.createElement('span'); - namespan.innerText = " Posted by " + author_data['username']; - author.appendChild(namespan); - authorinfo.appendChild(author); - - var postinfo = document.createElement('p'); - postinfo.className = "discourse-data"; - - var dateIcon = document.createElement('span'); - dateIcon.className = "twemoji"; - dateIcon.innerHTML = ''; - - var date = document.createElement('span'); - date.className = "discourse-date"; - var datestring = list[i]['bumped_at']; - var dateobject = new Date(datestring); - var now = new Date(); - var diff = now - dateobject; - var minutes = Math.floor(diff / 60000); - var hours = Math.floor(minutes / 60); - var days = Math.floor(hours / 24); - if (days > 0) { - if (days == 1) { - date.innerText = " 1 day ago "; - } - else { - date.innerText = " " + days + " days ago "; - } - } - else if (hours > 0){ - if (hours == 1) { - date.innerText = " 1 hour ago "; - } - else { - date.innerText = " " + hours + " hours ago "; - } - } - else { - if (minutes == 1) { - date.innerText = " 1 minute ago "; - } - else { - date.innerText = " " + minutes + " minutes ago "; - } - } - postinfo.appendChild(dateIcon); - postinfo.appendChild(date); - - var likesicon = document.createElement('span'); - likesicon.classList = "twemoji pg-red"; - likesicon.innerHTML = ''; - - var likes = document.createElement('span'); - likes.className = "discourse-likes"; - likes.innerText = " " + list[i]['like_count'] + " "; - postinfo.appendChild(likesicon); - postinfo.appendChild(likes); - - var replyIcon = document.createElement('span'); - replyIcon.classList = "twemoji"; - replyIcon.innerHTML = ''; - - var replies = document.createElement('span'); - replies.className = "discourse-replies"; - - var reply_count = list[i]['posts_count'] - 1; - if (reply_count == 1) { - replies.innerText = "1 Reply" - } - else { - replies.innerText = " " + reply_count - } - postinfo.appendChild(replyIcon); - postinfo.appendChild(replies); - - topic.appendChild(h3); - topic.appendChild(document.createElement('hr')); - topic.appendChild(authorinfo); - topic.appendChild(postinfo); - topics.appendChild(topic); - } - } -} - -main(); diff --git a/theme/home.html b/theme/home.html index 49315419..3fa6a186 100644 --- a/theme/home.html +++ b/theme/home.html @@ -52,11 +52,10 @@ {% if config.theme.language == "en" %}

    Top discussions this week

    -
      +
        + + +
    @@ -103,11 +102,10 @@

    Latest discussions

    -
      +
        + + +
    {% endif %} {% endblock %} -{% block scripts %} - - {{ super() }} -{% endblock %} From b04fe6a16de20b03b19561bdbf38855a000e226f Mon Sep 17 00:00:00 2001 From: fria <138676274+friadev@users.noreply.github.com> Date: Thu, 21 Nov 2024 13:38:31 -0600 Subject: [PATCH 3/3] update(blog)!: State of the Web App (#2821) Signed-off-by: blacklight447 Co-Authored-By: redoomed1 <161974310+redoomed1@users.noreply.github.com> --- blog/assets/images/pwa-vs-iwa/iwa-diagram.png | Bin 0 -> 96568 bytes blog/posts/pwa-vs-iwa.md | 45 ++++++++++++++++++ 2 files changed, 45 insertions(+) create mode 100644 blog/assets/images/pwa-vs-iwa/iwa-diagram.png create mode 100644 blog/posts/pwa-vs-iwa.md diff --git a/blog/assets/images/pwa-vs-iwa/iwa-diagram.png b/blog/assets/images/pwa-vs-iwa/iwa-diagram.png new file mode 100644 index 0000000000000000000000000000000000000000..a8d4b8c97d65e8e402d7941201412a6d60e48fbc GIT binary patch literal 96568 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 *!-zH9YrHn1S2-f)QIsc^q@0iO;3|2 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 JE7Wla{~uQl&ffq4 literal 0 HcmV?d00001 diff --git a/blog/posts/pwa-vs-iwa.md b/blog/posts/pwa-vs-iwa.md new file mode 100644 index 00000000..28d0d5d5 --- /dev/null +++ b/blog/posts/pwa-vs-iwa.md @@ -0,0 +1,45 @@ +--- +date: + created: 2024-11-30 +categories: + - Opinion +authors: + - fria +tags: + - PWA + - IWA + - Web +license: BY-SA +--- +# State of the Web App: Current Woes and Promising Futures + +The concept of a [progressive web app](https://developer.mozilla.org/en-US/docs/Web/Progressive_web_apps) is enticing: an application using web technologies that is inherently cross platform (since it runs in a browser) and acts like a native app, even functioning offline. Support for PWAs in traditionally locked-down platforms like iOS means that PWAs can give users the freedom to install apps without having to go through Apple’s App Store. But there are problems with web content that PWAs haven't solved. + +## Current Web-Based Apps + +Attempts at similar things have been made before, the most infamous of which is [Electron](https://www.electronjs.org). Electron is a software framework that allows developers to easily create cross-platform apps by essentially bundling an entire Chromium browser in with the app. This approach has its [drawbacks](https://usa.kaspersky.com/blog/electron-framework-security-issues/28952/?srsltid=AfmBOor_UcYY-84soHz5K2ULTmhlX44-DsIfJp_StotBrusD63MweSGO), though. Browsers have huge attack surface so it's important to keep them updated with the latest security fixes, but many Electron apps ship outdated versions, leaving those apps vulnerable. Each Electron app has its own version of Chromium with its own attack surface, amounting to a performance and security nightmare. In contrast, PWAs use the browser that you already have installed, so as long as you keep it updated, all your apps will have the latest security fixes. + +So why isn't every Electron app shipping as a PWA? The answer is an age-old problem with web content: the fact that you have to trust the server fully. You make an HTML GET request and you're served the content (i.e., the site's HTML, CSS, and JavaScript), but if the server is compromised, you'll be served a compromised website. You also need to rely on the security of DNS name resolution and the [certificate authority](https://www.digicert.com/blog/what-is-a-certificate-authority) system. This is a huge problem for security-sensitive applications like messengers. An attacker that gains access to their server—even just temporarily—could distribute compromised clients to millions of people, potentially breaking E2EE or executing a host of other malicious actions. + +## Improving Web Apps + +A typical native app is downloaded onto your computer from some kind of trusted place like an app store and only receives updates when the developers push them out. Additionally, there's usually a process of checks and verification before that happens, like Apple's [App Review](https://developer.apple.com/distribute/app-review) and the Google Play [App Review](https://support.google.com/googleplay/android-developer/answer/9859455) process. In contrast to PWAs, with which the threat of an attacker with server access constantly looms, it's much more difficult to target a particular person. In other words, a malicious app update is much less likely to escape scrutiny than a highly targeted attack via compromised servers. + +Isolated Web Apps (IWAs) build on the work done on PWAs and [Web Packaging](https://github.com/WICG/webpackage). They are a specification that allows web content to be distributed offline outside of a browser, much like a traditional app. It can be signed just like a regular app too, allowing you to verify that it came from the proper place and hasn't been modified. You could install an IWA from your favorite app store just like any other app and have the same security assurances. This would be incredibly useful in allowing for cross-platform E2EE web apps that don't need to trust a server every time you use them. + +Google [distinguishes](https://chromeos.dev/en/web/isolated-web-apps) between the drive by web, PWAs, and IWAs. The drive by web requires more conservative access to the system as the most accessible and is therefore least trusted. PWAs are a bit more trusted and can integrate a bit more deeply into the system as a result. IWAs are the most trusted and, as such, can have deeper access into the system and more powerful capabilities. + +
    + ![Diagram showing the drive by web, a PWA, and then a dotted line separating them from IWAs](../assets/images/pwa-vs-iwa/iwa-diagram.png) +
    source: chromeos.dev
    +
    + +This higher security assurance from isolated and signed web applications and the inherently more trusted nature of a natively installed app will allow for IWAs to safely access APIs which wouldn't be safe to allow normal websites to access, like [Direct Sockets](https://github.com/WICG/direct-sockets/blob/main/docs/explainer.md). + +IWAs use a totally new [URL scheme](https://github.com/WICG/isolated-web-apps/blob/main/Scheme.md) since they're not relying on HTTPS certificate authorities or DNS. They're totally isolated from each other and the web using enforced Content Security Policy and Cross-Origin Isolation, hence the name. + +## Issues + +The [Worldwide Web Consortium](https://www.w3.org) currently has an open issue on their GitHub for IWAs with some interesting discussions that are worth checking out. There are some [criticisms](https://github.com/w3ctag/design-reviews/issues/842#issuecomment-1989631915) of IWAs, at least in their current form. A big point of contention is giving IWAs access to more powerful features like raw TCP and UDP socket access, similar to what a natively installed app might be able to do, which Martin Thomson at Mozilla argues is dangerous even with user consent. Martin wrote a nice in-depth [article](https://lowentropy.net/posts/bundles) on bundling web content that's worth checking out on their website. It'll be a long process of iterating on the design before a version of this idea that's secure and available across browsers. + +Right now, Chrome ships the feature [enabled by default](https://chromestatus.com/feature/5146307550248960) but only on ChromeOS for admin-controlled machines and select development partners of Google. Safari and Firefox haven't implemented the feature, with [Firefox](https://github.com/mozilla/standards-positions/issues/799#issuecomment-2342084330) taking a stance against it. Perhaps in its trial run, the technology will prove its potential, or maybe IWAs aren't the best solution after all and another attempt at improving web apps will come along. I'll be watching with great interest either way.