diff --git a/.github/workflows/ci-cd.yml b/.github/workflows/ci-cd.yml new file mode 100644 index 0000000..718e10a --- /dev/null +++ b/.github/workflows/ci-cd.yml @@ -0,0 +1,30 @@ +name: Run CI and potentially release +on: + pull_request: + push: + branches: [master] +jobs: + ci: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-node@v4 + with: + node-version: 20 + cache: npm + - uses: ruby/setup-ruby@v1 + with: + ruby-version: '3.3' + bundler-cache: true + - name: Generate docs + run: | + npm install + JEKYLL_ENV=production bundle exec jekyll build + + - name: Upload static site + uses: peaceiris/actions-gh-pages@v4 + if: github.ref == 'refs/heads/master' + with: + commit_message: "${{ github.event.head_commit.message }} [skip ci]" + github_token: ${{ secrets.GITHUB_TOKEN }} + publish_dir: ./_site/ diff --git a/.gitignore b/.gitignore index b223891..6c68117 100644 --- a/.gitignore +++ b/.gitignore @@ -2,5 +2,6 @@ _site .bundle .sass-cache .jekyll-metadata -_vendor/ vendor +.jekyll-cache/ +node_modules/ diff --git a/.nojekyll b/.nojekyll new file mode 100644 index 0000000..e69de29 diff --git a/Gemfile b/Gemfile index ed3ced0..93e19f2 100644 --- a/Gemfile +++ b/Gemfile @@ -1,10 +1,8 @@ source "https://rubygems.org" -ruby RUBY_VERSION -gem "jekyll", "3.8.5" +gem "jekyll", "4.3.3" -gem "minima", "2.5.0" +gem "kramdown-parser-gfm" -group :jekyll_plugins do - gem "jekyll-feed", "~> 0.6" -end +# Work around https://github.com/jekyll/jekyll/issues/8523 +gem "webrick", "~> 1.8.1" diff --git a/Gemfile.lock b/Gemfile.lock index 55bdfe8..9de71d8 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,74 +1,78 @@ GEM remote: https://rubygems.org/ specs: - addressable (2.7.0) - public_suffix (>= 2.0.2, < 5.0) + addressable (2.8.7) + public_suffix (>= 2.0.2, < 7.0) + bigdecimal (3.1.8) colorator (1.1.0) - concurrent-ruby (1.1.6) - em-websocket (0.5.1) + concurrent-ruby (1.3.3) + em-websocket (0.5.3) eventmachine (>= 0.12.9) - http_parser.rb (~> 0.6.0) + http_parser.rb (~> 0) eventmachine (1.2.7) - ffi (1.12.2) + ffi (1.17.0-x86_64-linux-gnu) forwardable-extended (2.6.0) - http_parser.rb (0.6.0) - i18n (0.9.5) + google-protobuf (4.27.2-x86_64-linux) + bigdecimal + rake (>= 13) + http_parser.rb (0.8.0) + i18n (1.14.5) concurrent-ruby (~> 1.0) - jekyll (3.8.5) + jekyll (4.3.3) addressable (~> 2.4) colorator (~> 1.0) em-websocket (~> 0.5) - i18n (~> 0.7) - jekyll-sass-converter (~> 1.0) + i18n (~> 1.0) + jekyll-sass-converter (>= 2.0, < 4.0) jekyll-watch (~> 2.0) - kramdown (~> 1.14) + kramdown (~> 2.3, >= 2.3.1) + kramdown-parser-gfm (~> 1.0) liquid (~> 4.0) - mercenary (~> 0.3.3) + mercenary (>= 0.3.6, < 0.5) pathutil (~> 0.9) - rouge (>= 1.7, < 4) + rouge (>= 3.0, < 5.0) safe_yaml (~> 1.0) - jekyll-feed (0.13.0) - jekyll (>= 3.7, < 5.0) - jekyll-sass-converter (1.5.2) - sass (~> 3.4) - jekyll-seo-tag (2.6.1) - jekyll (>= 3.3, < 5.0) + terminal-table (>= 1.8, < 4.0) + webrick (~> 1.7) + jekyll-sass-converter (3.0.0) + sass-embedded (~> 1.54) jekyll-watch (2.2.1) listen (~> 3.0) - kramdown (1.17.0) - liquid (4.0.3) - listen (3.2.1) + kramdown (2.4.0) + rexml + kramdown-parser-gfm (1.1.0) + kramdown (~> 2.0) + liquid (4.0.4) + listen (3.9.0) rb-fsevent (~> 0.10, >= 0.10.3) rb-inotify (~> 0.9, >= 0.9.10) - mercenary (0.3.6) - minima (2.5.0) - jekyll (~> 3.5) - jekyll-feed (~> 0.9) - jekyll-seo-tag (~> 2.1) + mercenary (0.4.0) pathutil (0.16.2) forwardable-extended (~> 2.6) - public_suffix (4.0.5) - rb-fsevent (0.10.4) - rb-inotify (0.10.1) + public_suffix (6.0.1) + rake (13.2.1) + rb-fsevent (0.11.2) + rb-inotify (0.11.1) ffi (~> 1.0) - rouge (3.19.0) + rexml (3.3.2) + strscan + rouge (4.3.0) safe_yaml (1.0.5) - sass (3.7.4) - sass-listen (~> 4.0.0) - sass-listen (4.0.0) - rb-fsevent (~> 0.9, >= 0.9.4) - rb-inotify (~> 0.9, >= 0.9.7) + sass-embedded (1.77.8-x86_64-linux-gnu) + google-protobuf (~> 4.26) + strscan (3.1.0) + terminal-table (3.0.2) + unicode-display_width (>= 1.1.1, < 3) + unicode-display_width (2.5.0) + webrick (1.8.1) PLATFORMS - ruby + x86_64-linux-gnu DEPENDENCIES - jekyll (= 3.8.5) - jekyll-feed (~> 0.6) - minima (= 2.5.0) - -RUBY VERSION - ruby 2.5.5p157 + jekyll (= 4.3.3) + kramdown-parser-gfm + webrick (~> 1.8.1) BUNDLED WITH - 2.1.4 + 2.4.20 diff --git a/LICENSE b/LICENSE deleted file mode 100644 index 0e259d4..0000000 --- a/LICENSE +++ /dev/null @@ -1,121 +0,0 @@ -Creative Commons Legal Code - -CC0 1.0 Universal - - CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE - LEGAL SERVICES. DISTRIBUTION OF THIS DOCUMENT DOES NOT CREATE AN - ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS - INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES - REGARDING THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS - PROVIDED HEREUNDER, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM - THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED - HEREUNDER. - -Statement of Purpose - -The laws of most jurisdictions throughout the world automatically confer -exclusive Copyright and Related Rights (defined below) upon the creator -and subsequent owner(s) (each and all, an "owner") of an original work of -authorship and/or a database (each, a "Work"). - -Certain owners wish to permanently relinquish those rights to a Work for -the purpose of contributing to a commons of creative, cultural and -scientific works ("Commons") that the public can reliably and without fear -of later claims of infringement build upon, modify, incorporate in other -works, reuse and redistribute as freely as possible in any form whatsoever -and for any purposes, including without limitation commercial purposes. -These owners may contribute to the Commons to promote the ideal of a free -culture and the further production of creative, cultural and scientific -works, or to gain reputation or greater distribution for their Work in -part through the use and efforts of others. - -For these and/or other purposes and motivations, and without any -expectation of additional consideration or compensation, the person -associating CC0 with a Work (the "Affirmer"), to the extent that he or she -is an owner of Copyright and Related Rights in the Work, voluntarily -elects to apply CC0 to the Work and publicly distribute the Work under its -terms, with knowledge of his or her Copyright and Related Rights in the -Work and the meaning and intended legal effect of CC0 on those rights. - -1. Copyright and Related Rights. A Work made available under CC0 may be -protected by copyright and related or neighboring rights ("Copyright and -Related Rights"). Copyright and Related Rights include, but are not -limited to, the following: - - i. the right to reproduce, adapt, distribute, perform, display, - communicate, and translate a Work; - ii. moral rights retained by the original author(s) and/or performer(s); -iii. publicity and privacy rights pertaining to a person's image or - likeness depicted in a Work; - iv. rights protecting against unfair competition in regards to a Work, - subject to the limitations in paragraph 4(a), below; - v. rights protecting the extraction, dissemination, use and reuse of data - in a Work; - vi. database rights (such as those arising under Directive 96/9/EC of the - European Parliament and of the Council of 11 March 1996 on the legal - protection of databases, and under any national implementation - thereof, including any amended or successor version of such - directive); and -vii. other similar, equivalent or corresponding rights throughout the - world based on applicable law or treaty, and any national - implementations thereof. - -2. Waiver. To the greatest extent permitted by, but not in contravention -of, applicable law, Affirmer hereby overtly, fully, permanently, -irrevocably and unconditionally waives, abandons, and surrenders all of -Affirmer's Copyright and Related Rights and associated claims and causes -of action, whether now known or unknown (including existing as well as -future claims and causes of action), in the Work (i) in all territories -worldwide, (ii) for the maximum duration provided by applicable law or -treaty (including future time extensions), (iii) in any current or future -medium and for any number of copies, and (iv) for any purpose whatsoever, -including without limitation commercial, advertising or promotional -purposes (the "Waiver"). Affirmer makes the Waiver for the benefit of each -member of the public at large and to the detriment of Affirmer's heirs and -successors, fully intending that such Waiver shall not be subject to -revocation, rescission, cancellation, termination, or any other legal or -equitable action to disrupt the quiet enjoyment of the Work by the public -as contemplated by Affirmer's express Statement of Purpose. - -3. Public License Fallback. Should any part of the Waiver for any reason -be judged legally invalid or ineffective under applicable law, then the -Waiver shall be preserved to the maximum extent permitted taking into -account Affirmer's express Statement of Purpose. In addition, to the -extent the Waiver is so judged Affirmer hereby grants to each affected -person a royalty-free, non transferable, non sublicensable, non exclusive, -irrevocable and unconditional license to exercise Affirmer's Copyright and -Related Rights in the Work (i) in all territories worldwide, (ii) for the -maximum duration provided by applicable law or treaty (including future -time extensions), (iii) in any current or future medium and for any number -of copies, and (iv) for any purpose whatsoever, including without -limitation commercial, advertising or promotional purposes (the -"License"). The License shall be deemed effective as of the date CC0 was -applied by Affirmer to the Work. Should any part of the License for any -reason be judged legally invalid or ineffective under applicable law, such -partial invalidity or ineffectiveness shall not invalidate the remainder -of the License, and in such case Affirmer hereby affirms that he or she -will not (i) exercise any of his or her remaining Copyright and Related -Rights in the Work or (ii) assert any associated claims and causes of -action with respect to the Work, in either case contrary to Affirmer's -express Statement of Purpose. - -4. Limitations and Disclaimers. - - a. No trademark or patent rights held by Affirmer are waived, abandoned, - surrendered, licensed or otherwise affected by this document. - b. Affirmer offers the Work as-is and makes no representations or - warranties of any kind concerning the Work, express, implied, - statutory or otherwise, including without limitation warranties of - title, merchantability, fitness for a particular purpose, non - infringement, or the absence of latent or other defects, accuracy, or - the present or absence of errors, whether or not discoverable, all to - the greatest extent permissible under applicable law. - c. Affirmer disclaims responsibility for clearing rights of other persons - that may apply to the Work or any use thereof, including without - limitation any person's Copyright and Related Rights in the Work. - Further, Affirmer disclaims responsibility for obtaining any necessary - consents, permissions or other rights required for any use of the - Work. - d. Affirmer understands and acknowledges that Creative Commons is not a - party to this document and has no duty or obligation with respect to - this CC0 or use of the Work. diff --git a/README.md b/README.md new file mode 100644 index 0000000..75de344 --- /dev/null +++ b/README.md @@ -0,0 +1,5 @@ +# Awala website + +## Conventions + +- Custom styles use the `rn-*` prefix. diff --git a/_config.yml b/_config.yml index 75c7c72..232798d 100644 --- a/_config.yml +++ b/_config.yml @@ -1,16 +1,48 @@ title: "Awala" -description: "La red más resistente y moderna" -author: "Relaycorp, Inc." -lang: es +description: "The network on which humankind can truly rely" +permalink: /blog/:slug -twitter_username: LaRedAwala -facebook_username: AwalaNetwork +defaults: + - values: + description: null + breadcrumbs: null + pagination: + previous: null + next: null + js: + libraries: [] + scripts: [] + - scope: + path: "" + type: pages + values: + layout: page markdown: kramdown -theme: minima -plugins: - - jekyll-feed +liquid: + strict_variables: true + strict_filters: true +sass: + load_paths: + - node_modules exclude: - Gemfile - Gemfile.lock - vendor + - node_modules + - .idea + - README.md + +# Custom variables + +javascript_libraries: + cash-dom: + # https://www.jsdelivr.com/package/npm/cash-dom + version: 8.1.5 + digest: "sha256-mgRBiO/bYlxeBNEiBpjAmZJ/8Wv7Q0w3zX8E3V7hrh8=" + path: "dist/cash.min.js" + mustache: + # https://www.jsdelivr.com/package/npm/mustache + version: 4.2.0 + digest: "sha256-1/0GA1EkYejtvYFoa+rSq4LfM4m5zKI13Z1bQIhI4Co=" + path: "mustache.min.js" diff --git a/_includes/awala_download.html b/_includes/awala_download.html new file mode 100644 index 0000000..ab6c557 --- /dev/null +++ b/_includes/awala_download.html @@ -0,0 +1,6 @@ +
+

+ Descargando información acerca de los últimos lanzamientos... + +

+
diff --git a/_includes/embed_mp4_video.html b/_includes/embed_mp4_video.html new file mode 100644 index 0000000..ab59aef --- /dev/null +++ b/_includes/embed_mp4_video.html @@ -0,0 +1,3 @@ + diff --git a/_includes/embed_youtube_video.html b/_includes/embed_youtube_video.html new file mode 100644 index 0000000..017d1b8 --- /dev/null +++ b/_includes/embed_youtube_video.html @@ -0,0 +1,8 @@ +
+ +
diff --git a/_includes/footer.html b/_includes/footer.html new file mode 100644 index 0000000..3a442da --- /dev/null +++ b/_includes/footer.html @@ -0,0 +1,72 @@ + diff --git a/_includes/head.html b/_includes/head.html index 54112de..2961841 100644 --- a/_includes/head.html +++ b/_includes/head.html @@ -1,21 +1,92 @@ - - - - {%- seo -%} - - {%- feed_meta -%} - {%- if jekyll.environment == 'production' and site.google_analytics -%} - {%- include google-analytics.html -%} - {%- endif -%} - - - - - - - - - - + + + {{ page.title }} + + + + + {% capture description -%} + {%- if page.description && page.description!= "" -%} + {{ page.description }} + {%- else -%} + {{ page.excerpt }} + {%- endif -%} + {%- endcapture -%} + {% if description != "" -%} + + + {% endif %} + + + + + {% if jekyll.environment == "production" -%} + + {%- endif %} + + + + {% for library_name in page.js.libraries -%} + {% assign library = site.javascript_libraries[library_name] %} + + {%- endfor %} + + {% for script_name in page.js.scripts -%} + + {%- endfor %} + + + + + + + + + + diff --git a/_includes/navigation.html b/_includes/navigation.html new file mode 100644 index 0000000..6df9f03 --- /dev/null +++ b/_includes/navigation.html @@ -0,0 +1,59 @@ + diff --git a/_layouts/base.html b/_layouts/base.html new file mode 100644 index 0000000..a6a9914 --- /dev/null +++ b/_layouts/base.html @@ -0,0 +1,24 @@ +--- +layout: skeleton +breadcrumbs: null +--- + +
+ {% if page.breadcrumbs %} + + {% endif %} + + {{ content }} +
diff --git a/_layouts/page.html b/_layouts/page.html new file mode 100644 index 0000000..4b86015 --- /dev/null +++ b/_layouts/page.html @@ -0,0 +1,26 @@ +--- +layout: base +--- +
+ {{ content }} + + {% if page.pagination.previous or page.pagination.next %} + + {% endif %} +
diff --git a/_layouts/skeleton.html b/_layouts/skeleton.html new file mode 100644 index 0000000..190d5e8 --- /dev/null +++ b/_layouts/skeleton.html @@ -0,0 +1,11 @@ + + + {%- include head.html -%} + + {%- include navigation.html -%} + + {{ content }} + + {%- include footer.html -%} + + diff --git a/acerca.md b/acerca.md new file mode 100644 index 0000000..cb2af32 --- /dev/null +++ b/acerca.md @@ -0,0 +1,28 @@ +--- +title: Acerca de Awala +--- + +# Acerca de Awala + +El objetivo a largo plazo de Awala (anteriormente conocida como _Relaynet_) es complementar Internet proporcionando a todos los seres humanos una comunicación sin censura y oportuna en cualquier lugar del universo, sin que ello perjudique los [derechos fundamentales](https://www.un.org/en/universal-declaration-human-rights/) de otros seres humanos. +La primera prioridad es establecer conectividad en regiones donde Internet no está disponible debido a causas naturales o humanas. + +"Awala" significa "hermano" o "hermana" en wayúu (una lengua indígena de Venezuela), +y simboliza nuestro objetivo de _empoderar_ a los que se encuentran en una situación vulnerable. + +## Estado actual + +El proyecto está siendo incubado por [Relaycorp](https://relaycorp.tech) -- una empresa de código abierto orientada a la misión, fundada por el autor de Awala, [Gus Narea (inglés) 🡵](https://gustavo.engineer) -- con el único propósito de apoyar la red. + +Awala ha estado completamente operativa en Android, Linux, macOS y Windows desde 2021, +y completamos la implementación de la primera aplicación compatible ([Letro](https://letro.app/es/)) a finales de 2023. + +## Evaluaciones independientes + +El [Open Technology Fund](https://www.opentech.fund/) ha encargado las siguientes evaluaciones independientes: + +- [Auditoría de seguridad de los protocolos (2019)](https://awala.network/archives/security-audit-2019-03.pdf). Todos los problemas fueron abordados antes de comenzar la implementación de los protocolos. +- [Experiencia de Usuario (2021)](https://awala.network/archives/ux-assessment-2021.pdf). + +Una auditoría de seguridad de las implementaciones ha comenzado en julio del 2024. +Esperamos que el informe esté disponible para finales de año. diff --git a/android-chrome-192x192.png b/android-chrome-192x192.png deleted file mode 100644 index 1f99828..0000000 Binary files a/android-chrome-192x192.png and /dev/null differ diff --git a/android-chrome-384x384.png b/android-chrome-384x384.png deleted file mode 100644 index 10b220e..0000000 Binary files a/android-chrome-384x384.png and /dev/null differ diff --git a/assets/diagrams/non-tech-overview.mp4 b/assets/diagrams/non-tech-overview.mp4 new file mode 100644 index 0000000..f64e753 Binary files /dev/null and b/assets/diagrams/non-tech-overview.mp4 differ diff --git a/assets/images/favicons/android-chrome-192x192.png b/assets/images/favicons/android-chrome-192x192.png new file mode 100644 index 0000000..13a3403 Binary files /dev/null and b/assets/images/favicons/android-chrome-192x192.png differ diff --git a/assets/images/favicons/android-chrome-512x512.png b/assets/images/favicons/android-chrome-512x512.png new file mode 100644 index 0000000..c857a5a Binary files /dev/null and b/assets/images/favicons/android-chrome-512x512.png differ diff --git a/assets/images/favicons/apple-touch-icon-120x120.png b/assets/images/favicons/apple-touch-icon-120x120.png new file mode 100644 index 0000000..844a355 Binary files /dev/null and b/assets/images/favicons/apple-touch-icon-120x120.png differ diff --git a/assets/images/favicons/apple-touch-icon-152x152.png b/assets/images/favicons/apple-touch-icon-152x152.png new file mode 100644 index 0000000..6b96747 Binary files /dev/null and b/assets/images/favicons/apple-touch-icon-152x152.png differ diff --git a/assets/images/favicons/apple-touch-icon-180x180.png b/assets/images/favicons/apple-touch-icon-180x180.png new file mode 100644 index 0000000..136c781 Binary files /dev/null and b/assets/images/favicons/apple-touch-icon-180x180.png differ diff --git a/assets/images/favicons/apple-touch-icon-60x60.png b/assets/images/favicons/apple-touch-icon-60x60.png new file mode 100644 index 0000000..f8a7e64 Binary files /dev/null and b/assets/images/favicons/apple-touch-icon-60x60.png differ diff --git a/assets/images/favicons/apple-touch-icon-76x76.png b/assets/images/favicons/apple-touch-icon-76x76.png new file mode 100644 index 0000000..933e81a Binary files /dev/null and b/assets/images/favicons/apple-touch-icon-76x76.png differ diff --git a/assets/images/favicons/apple-touch-icon.png b/assets/images/favicons/apple-touch-icon.png new file mode 100644 index 0000000..136c781 Binary files /dev/null and b/assets/images/favicons/apple-touch-icon.png differ diff --git a/browserconfig.xml b/assets/images/favicons/browserconfig.xml similarity index 69% rename from browserconfig.xml rename to assets/images/favicons/browserconfig.xml index 1a4035c..c6bf18b 100644 --- a/browserconfig.xml +++ b/assets/images/favicons/browserconfig.xml @@ -2,7 +2,7 @@ - + #da532c diff --git a/assets/images/favicons/favicon-16x16.png b/assets/images/favicons/favicon-16x16.png new file mode 100644 index 0000000..4cc27cd Binary files /dev/null and b/assets/images/favicons/favicon-16x16.png differ diff --git a/assets/images/favicons/favicon-32x32.png b/assets/images/favicons/favicon-32x32.png new file mode 100644 index 0000000..8146551 Binary files /dev/null and b/assets/images/favicons/favicon-32x32.png differ diff --git a/assets/images/favicons/favicon.ico b/assets/images/favicons/favicon.ico new file mode 100644 index 0000000..15ebc35 Binary files /dev/null and b/assets/images/favicons/favicon.ico differ diff --git a/assets/images/favicons/mstile-150x150.png b/assets/images/favicons/mstile-150x150.png new file mode 100644 index 0000000..8965fcb Binary files /dev/null and b/assets/images/favicons/mstile-150x150.png differ diff --git a/assets/images/favicons/safari-pinned-tab.svg b/assets/images/favicons/safari-pinned-tab.svg new file mode 100644 index 0000000..233f4cf --- /dev/null +++ b/assets/images/favicons/safari-pinned-tab.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/custom-assets/site.webmanifest b/assets/images/favicons/site.webmanifest similarity index 62% rename from custom-assets/site.webmanifest rename to assets/images/favicons/site.webmanifest index a1553eb..e847049 100644 --- a/custom-assets/site.webmanifest +++ b/assets/images/favicons/site.webmanifest @@ -3,13 +3,13 @@ "short_name": "", "icons": [ { - "src": "/android-chrome-192x192.png", + "src": "/assets/images/favicons/android-chrome-192x192.png", "sizes": "192x192", "type": "image/png" }, { - "src": "/android-chrome-384x384.png", - "sizes": "384x384", + "src": "/assets/images/favicons/android-chrome-512x512.png", + "sizes": "512x512", "type": "image/png" } ], diff --git a/assets/images/logo-with-text.png b/assets/images/logo-with-text.png new file mode 100644 index 0000000..c0b48f0 Binary files /dev/null and b/assets/images/logo-with-text.png differ diff --git a/assets/images/logo.png b/assets/images/logo.png new file mode 100644 index 0000000..f657744 Binary files /dev/null and b/assets/images/logo.png differ diff --git a/assets/js/private_gateway_download.js b/assets/js/private_gateway_download.js new file mode 100644 index 0000000..3269bae --- /dev/null +++ b/assets/js/private_gateway_download.js @@ -0,0 +1,85 @@ +'use strict'; + +const ORG_NAME = 'relaycorp'; +const DESKTOP_GW_REPO = `awala-gateway-desktop`; +const ANDROID_GW_REPO = `relaynet-gateway-android`; +const DESKTOP_GW_RELEASE_ASSET_PREFIX = + `https://github.com/${ORG_NAME}/${DESKTOP_GW_REPO}/releases/download`; + +const downloadSection = $('.rn-gw-download'); + +document.addEventListener('DOMContentLoaded', async () => { + const templateResponse = await fetch('/assets/templates/gw-download.mustache'); + const releaseData = await getReleaseData(); + downloadSection.html(Mustache.render(await templateResponse.text(), releaseData)); + + setActiveOS(getCurrentOS()); +}); + +async function getReleaseData() { + const desktopRelease = await fetchLatestRepoRelease(DESKTOP_GW_REPO); + + const desktopVersion = desktopRelease['tag_name'].replace(/^v/, ''); + const linuxDownloadURL = + `${DESKTOP_GW_RELEASE_ASSET_PREFIX}/v${desktopVersion}/Awala-${desktopVersion}.AppImage`; + const macosDownloadURL = + `${DESKTOP_GW_RELEASE_ASSET_PREFIX}/v${desktopVersion}/Awala-${desktopVersion}.dmg`; + const windowsDownloadURL = + `${DESKTOP_GW_RELEASE_ASSET_PREFIX}/v${desktopVersion}/Awala.Setup.${desktopVersion}.exe`; + return { + android: { + githubRepoName: `${ORG_NAME}/${ANDROID_GW_REPO}`, + githubRepoURL: `https://github.com/${ORG_NAME}/${ANDROID_GW_REPO}`, + }, + desktop: { + githubRepoName: `${ORG_NAME}/${DESKTOP_GW_REPO}`, + githubRepoURL: `https://github.com/${ORG_NAME}/${DESKTOP_GW_REPO}`, + linuxDownloadURL, + macosDownloadURL, + windowsDownloadURL, + version: desktopVersion, + } + }; +} + +async function fetchLatestRepoRelease(repoName) { + const latestReleaseURL = `https://api.github.com/repos/${ORG_NAME}/${repoName}/releases/latest`; + const releaseDataResponse = await fetch(latestReleaseURL); + + if (!releaseDataResponse.ok) { + throw new Error( + `Failed to retrieve release data for ${repoName}: ${releaseDataResponse.statusText}`, + ); + } + + return await releaseDataResponse.json(); +} + +function getCurrentOS() { + let osName; + if (navigator.userAgent.match(/android/i)) { + osName = 'android'; + } else if (navigator.userAgent.match(/linux/i)) { + osName = 'linux'; + } else if (navigator.userAgent.match(/macintosh/i)) { + osName = 'macos'; + } else { + osName = 'windows'; + } + return osName; +} + +function setActiveOS(osName) { + downloadSection.trigger(new CustomEvent('setActiveOS', { detail: osName })); +} + +downloadSection.on('setActiveOS', (event) => { + const osName = event.detail; + + // Deactivate previous OS (if any) + $('.os-selector li').removeClass('is-active'); + $('.os-body > div').addClass('is-hidden'); + + $(`.os-selector li.${osName}`).addClass('is-active'); + $(`.os-body .${osName}`).removeClass('is-hidden'); +}); diff --git a/assets/style.scss b/assets/style.scss new file mode 100644 index 0000000..1ea5511 --- /dev/null +++ b/assets/style.scss @@ -0,0 +1,307 @@ +--- +--- +@charset "utf-8"; + +// Bulma overrides + +$light: hsl(0, 0%, 21%); + +$navbar-item-hover-color: $light; + +$footer-padding: 3rem 1.5rem; + +@import "bulma/bulma.sass"; + +// Top navigation + +.navbar { + a.is-active:link, .navbar a.is-active:visited { + font-weight: 500; + } +} + +// Breadcrumbs + +nav.breadcrumb { + @extend .mb-3; +} +nav.breadcrumb ul { + @extend .m-0; +} +nav.breadcrumb li { + @extend .mt-0; +} + +// Main content of page + +.rn-main { + @extend .section; + @extend .content; + @extend .container; + @extend .is-size-5; + @extend .px-5; + + h1:first-of-type, h1.title { + @extend .title; + @extend .is-size-2; + } + h1:not(:first-of-type), h1:not(.title) { + @extend .is-size-3; + } + h2 { + @extend .is-size-4; + } + h3 { + @extend .is-size-5; + } + h4 { + @extend .is-size-6; + } + + ul { + @extend .my-2; + } + + pre { + @extend .mb-4; + } + + .buttons { + @extend .is-centered; + + a { + @extend .button; + @extend .is-link; + + text-decoration-line: none; + + .fas { + margin-right: 0.5rem; + } + } + } + + a { + text-decoration-line: underline; + } + + .pagination { + @extend .mt-6; + } +} +.rn-main > * { + @extend .mx-0; + @extend .px-0; +} + +// Footer + +.rn-footer { + @extend .footer; +} +.rn-footer-container { + @extend .container; + @extend .is-max-desktop; +} + +.rn-footer-legal { + @extend .content; + @extend .has-text-centered; + @extend .is-size-7; + + a { + text-decoration-line: underline; + } +} + +// Homepage + +.rn-homepage { + section { + @extend .pt-0; + @extend .section; + @extend .content; + } + + .rn-homepage-hero { + .title { + @extend .is-size-2; + } + + ul { + @extend .mx-0; + @extend .my-4; + + li { + display: block; + @extend .icon-text; + + .icon { + @extend .mr-1; + @extend .has-text-success; + } + } + } + } + + .rn-homepage-stakeholders { + @extend .columns; + @extend .is-variable; + @extend .is-6; + @extend .mb-0; + + .rn-stakeholder { + @extend .column; + @extend .block; + + h2 { + @extend .has-text-centered; + } + + p { + @extend .has-text-justified; + } + } + } +} + +// Pages + +.rn-page { + p > img:not(.rn-side-image) { + display: block; + margin: auto; + } + + img.rn-side-image { + @extend .is-pulled-right; + @extend .ml-3; + } + h1, h2, h3, h4, h5, h6 { + @extend .is-clearfix; + } +} + +// Blog posts + +.rn-blog-post { + @extend .section; + @extend .content; + + .date { + @extend .is-size-7; + @extend .has-text-weight-light; + @extend .mb-2; + } + + .date + h2, .title { + @extend .mt-0; + @extend .mb-2; + } + + .authorship { + @extend .is-size-6; + @extend .has-text-weight-light; + @extend .mb-6; + } + + .rn-author-bio { + @extend .section; + @extend .pb-0; + + @extend .is-size-6; + + .rn-author-bio-header { + @extend .has-text-weight-semibold; + } + + .rn-author-bio-content { + figure { + @extend .is-pulled-left; + @extend .is-hidden-mobile; + + img { + @extend .image; + @extend .is-96x96; + @extend .is-rounded; + } + } + + div { + p { + @extend .mb-0; + } + + ul { + @extend .ml-5; + + li { + list-style-type: none; + + a { + @extend .icon; + } + } + } + } + } + } +} +article.rn-blog-post .authorship { + @extend .mb-6 +} +section.rn-blog-post { + @extend .px-0; +} + +// Page: Private gateway download +.rn-gw-download { + @extend .container; + @extend .box; + @extend .mx-5; + + .pending { + @extend .mx-5; + @extend .is-size-6; + } + + .os-selector { + @extend .tabs; + @extend .is-centered; + + ul { + @extend .mx-0; + } + } + + .os-body { + p { + @extend .is-size-6; + } + } +} + +// Mailing list subscription + +.rn-mailing-list-subscription { + @extend .container; + @extend .box; + @extend .mt-6; + @extend .mx-5; + @extend .is-size-6; +} + +// Other widgets + +.rl-youtube-video { + @extend .image; + @extend .is-16by9; +} +.rl-youtube-video iframe { + @extend .has-ratio; +} + +video { + display: block; + margin: 1em auto; +} diff --git a/assets/templates/gw-download.mustache b/assets/templates/gw-download.mustache new file mode 100644 index 0000000..1833a7d --- /dev/null +++ b/assets/templates/gw-download.mustache @@ -0,0 +1,107 @@ +
+ +
+ +
+ + +
+ + +

+ Actualmente, Awala se distribuye como un AppImage, pero también planeamos + publicar Awala en Snapcraft. ¡Mantente atento! +

+ +

+ Si eres una persona técnica buscando el código fuente, lo encontrarás en + {{ desktop.githubRepoName }}. +

+
+ +
+ + +

+ El soporte para macOS es actualmente experimental y su instalador aún no está firmado por Relaycorp. + También planeamos publicar Awala en la App Store eventualmente. ¡Mantente atento! +

+ +

+ Si eres una persona técnica buscando el código fuente, lo encontrarás en + {{ desktop.githubRepoName }}. +

+
+ +
+ + +

+ Windows debería mostrar Relaycorp, Inc. como el editor del instalador. No + procedas con la instalación si se muestra un editor diferente. También planeamos publicar Awala en + la Microsoft Store eventualmente. ¡Mantente atento! +

+ +

+ Si eres una persona técnica buscando el código fuente, lo encontrarás en + {{ desktop.githubRepoName }}. +

+
+
diff --git a/comunidad.md b/comunidad.md new file mode 100644 index 0000000..50b6c5f --- /dev/null +++ b/comunidad.md @@ -0,0 +1,13 @@ +--- +title: Comunidad de Awala +description: Conéctate con la comunidad de Awala en Reddit o GitHub +--- + +# Conéctate con la comunidad de Awala + +Estamos muy interesados en ayudarte a comenzar con Awala y escuchar tus comentarios en los siguientes canales: + +- Para discusiones generales, incluyendo problemas al usar Awala, ve al [grupo de usuarios y mensajeros en Facebook 🡵](https://www.facebook.com/groups/awala.es). + Por tu seguridad, **te recomendamos publicar tus comentarios de manera anónima**. +- Si estás interesado en contribuir al desarrollo de Awala, es mejor consultar [nuestro sitio en inglés 🡵](https://awala.network/community), ya que todo se coordina en ese idioma. +- Finalmente, si eres una organización interesada en una colaboración o servicios de consultoría, [contacta directamente con Relaycorp 🡵](https://relaycorp.tech). diff --git a/custom-assets/apple-touch-icon.png b/custom-assets/apple-touch-icon.png deleted file mode 100644 index 135606b..0000000 Binary files a/custom-assets/apple-touch-icon.png and /dev/null differ diff --git a/custom-assets/custom.css b/custom-assets/custom.css deleted file mode 100644 index 6bad3b8..0000000 --- a/custom-assets/custom.css +++ /dev/null @@ -1,16 +0,0 @@ -.embedded_video { - position: relative; - padding-bottom: 56.25%; - height: 0; - overflow: hidden; - max-width: 100%; - text-align: center; -} - -.embedded_video iframe { - position: absolute; - top: 0; - left: 0; - width: 100%; - height: 100%; -} diff --git a/custom-assets/favicon-16x16.png b/custom-assets/favicon-16x16.png deleted file mode 100644 index 0d92cdb..0000000 Binary files a/custom-assets/favicon-16x16.png and /dev/null differ diff --git a/custom-assets/favicon-32x32.png b/custom-assets/favicon-32x32.png deleted file mode 100644 index a76275d..0000000 Binary files a/custom-assets/favicon-32x32.png and /dev/null differ diff --git a/custom-assets/logo.png b/custom-assets/logo.png deleted file mode 100644 index cc2d05d..0000000 Binary files a/custom-assets/logo.png and /dev/null differ diff --git a/custom-assets/mstile-150x150.png b/custom-assets/mstile-150x150.png deleted file mode 100644 index 702a6be..0000000 Binary files a/custom-assets/mstile-150x150.png and /dev/null differ diff --git a/custom-assets/safari-pinned-tab.svg b/custom-assets/safari-pinned-tab.svg deleted file mode 100644 index ec3504a..0000000 --- a/custom-assets/safari-pinned-tab.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/favicon.ico b/favicon.ico deleted file mode 100644 index c5fd5c5..0000000 Binary files a/favicon.ico and /dev/null differ diff --git a/index.html b/index.html new file mode 100644 index 0000000..2148642 --- /dev/null +++ b/index.html @@ -0,0 +1,82 @@ +--- +layout: skeleton +title: "Awala: The computer network on which humankind can truly rely" +description: "Awala is a new computer network that can circumvent Internet blackouts." +--- + +
+
+
+

+ Awala ayuda a eludir los apagones de Internet +

+ +

+ Las aplicaciones compatibles con Awala utilizan Internet cuando está disponible y cambian a un medio alternativo cuando Internet ha sido cortado. +

+ +
    +
  • + + No se requiere hardware especial +
  • +
  • + + Protege contra intrusos +
  • +
  • + + Gratuito y de código abierto +
  • +
+
+ +
+ {% include embed_youtube_video.html id="LL1Z9EGiMVc" %} +
+
+ +
+
+

Usuarios

+ +

+ Mantente conectado incluso cuando Internet no está disponible con aplicaciones compatibles como + Letro. +

+ +
+ Usa Awala +
+
+ +
+

Mensajeros

+ +

+ Restablece la conectividad cuando Internet ha sido cortado. +

+ + +
+
+ +
+

Acerca de Awala

+ +

+ Awala (anteriormente conocida como Relaynet) es una red de computadoras incubada por + Relaycorp, y financiada por el + Open Technology Fund y el + Instituto Republicano Internacional. + Fue diseñada y prototipada en la Universidad de Oxford, y ganó el primer lugar en el + Mozilla Builders Open Lab. + Conoce más acerca de Awala. +

+
+
diff --git a/index.md b/index.md deleted file mode 100644 index a3df546..0000000 --- a/index.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -layout: home ---- - - - -# Awala - -Awala es una red de computadoras que hará posible que ciertas aplicaciones en tu celular o computadora mantengan la comunicación incluso si se pierde el acceso a Internet. - -La tecnología fue creada para evitar que dictaduras censuren a la población cortando el acceso a Internet, pero también se podrá usar para conectar a los sobrevivientes de desastres naturales y a comunidades remotas que carezcan de acceso a Internet permanentemente. - -Tendremos más información en castellano pronto. Mientras tanto, puedes seguirnos en [Twitter](https://twitter.com/LaRedAwala) o [Facebook](https://www.facebook.com/AwalaNetwork), o visitar el [sitio oficial de Awala en inglés](https://awala.network). diff --git a/mensajeros.md b/mensajeros.md new file mode 100644 index 0000000..b2fd65a --- /dev/null +++ b/mensajeros.md @@ -0,0 +1,37 @@ +--- +title: Mensajeros +description: Restablece la conectividad cuando Internet ha sido cortado. +--- + +# Mantente conectado y a quienes te rodean + +Cuando Internet no está disponible, restaura la conectividad a tu alrededor convirtiéndote en un mensajero de Awala. +El único equipo que necesitas es un teléfono o tableta. + +Tu trabajo es _retransmitir_ datos entre los dispositivos de los usuarios de Awala e Internet durante un apagón de Internet. +Tendrías una ruta, y en cada parada entregarías y recogerías datos. +Cuando te detengas en un lugar sin acceso a Internet, podrías intercambiar datos con las personas a tu alrededor haciendo que se conecten a tu dispositivo. +Cuando te detengas en un lugar con acceso a Internet, enviarías todos los datos que recolectaste y luego recogerías nuevos datos que deberían entregarse a las personas en tu ruta. + +Este video es una buena introducción al trabajo de un mensajero y termina con una demostración de [la aplicación de Android que usarán los mensajeros](https://play.google.com/store/apps/details?id=tech.relaycorp.courier): + +{% include embed_youtube_video.html id="UXuLz3q_6bo" %} + +Puedes cobrar a los usuarios de Awala por tus servicios para compensar los costos o incluso obtener ganancias. +Sin embargo, el software no admite pagos, y cualquier intercambio será estrictamente entre tú y el usuario. + +Naturalmente, tienes el trabajo más importante en la restauración de la conectividad en caso de un apagón, y entendemos que puedes estar poniéndote en un riesgo significativo. Por esta razón, tu seguridad ha sido una consideración crítica a lo largo del diseño e implementación de Awala. + +Es imposible para ti -- o cualquiera que te intercepte -- ver o cambiar los datos que transportas. +Solo el remitente puede cambiarlos y solo el destinatario puede verlos. +Eso significa que no puedes ser coaccionado para revelar o cambiar nada. +Todo lo que puedes hacer es eliminar los datos, si así lo deseas. + +También estamos trabajando en formas de ocultar el hecho de que eres un mensajero en primer lugar, en caso de que fueras interceptado. +Es posible que tales medidas no estén listas para cuando comencemos algunas pruebas iniciales, pero ciertamente se implementarían antes de que hagamos el software generalmente disponible. + +## Ayúdanos a servirte + +Queremos asegurarnos de que Awala te sirva bien como mensajero, así que por favor contáctanos si tienes alguna pregunta, preocupación o sugerencia. +Estamos particularmente interesados en escuchar sobre tu motivación para convertirte en mensajero, para que podamos adaptar nuestra hoja de ruta en consecuencia. +No dudes en enviarnos un mensaje privado en [Facebook](https://www.facebook.com/AwalaNetwork/) o [Twitter](https://twitter.com/LaRedAwala). diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..602905e --- /dev/null +++ b/package-lock.json @@ -0,0 +1,240 @@ +{ + "name": "awala-website", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "awala-website", + "version": "1.0.0", + "devDependencies": { + "bulma": "^0.9.4", + "sass": "^1.77.8" + } + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/binary-extensions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dev": true, + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/bulma": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/bulma/-/bulma-0.9.4.tgz", + "integrity": "sha512-86FlT5+1GrsgKbPLRRY7cGDg8fsJiP/jzTqXXVqiUZZ2aZT8uemEOHlU1CDU+TxklPEZ11HZNNWclRBBecP4CQ==", + "dev": true + }, + "node_modules/chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "dev": true, + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/immutable": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.7.tgz", + "integrity": "sha512-1hqclzwYwjRDFLjcFxOM5AYkkG0rpFPpr1RLPMEuGczoS7YA8gLhy8SWXYRAA/XwfEHpfo3cw5JGioS32fnMRw==", + "dev": true + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/sass": { + "version": "1.77.8", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.77.8.tgz", + "integrity": "sha512-4UHg6prsrycW20fqLGPShtEvo/WyHRVRHwOP4DzkUrObWoWI05QBSfzU71TVB7PFaL104TwNaHpjlWXAZbQiNQ==", + "dev": true, + "dependencies": { + "chokidar": ">=3.0.0 <4.0.0", + "immutable": "^4.0.0", + "source-map-js": ">=0.6.2 <2.0.0" + }, + "bin": { + "sass": "sass.js" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/source-map-js": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz", + "integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..6c790e9 --- /dev/null +++ b/package.json @@ -0,0 +1,8 @@ +{ + "name": "awala-website", + "version": "1.0.0", + "devDependencies": { + "bulma": "^0.9.4", + "sass": "^1.77.8" + } +} diff --git a/usuarios/descarga.md b/usuarios/descarga.md new file mode 100644 index 0000000..be00643 --- /dev/null +++ b/usuarios/descarga.md @@ -0,0 +1,31 @@ +--- +title: Descarga Awala +description: Cómo descargar Awala con y sin acceso a Internet +breadcrumbs: + - usuarios/index.md +js: + libraries: + - mustache + - cash-dom + scripts: + - private_gateway_download.js +--- + +# Descarga Awala + +**Awala en sí es solo una plataforma para ejecutar otras aplicaciones**, +así que aún necesitas otras aplicaciones como [Letro 🡵](https://letro.app/es/) para aprovecharla al máximo. + +Al descargar, distribuir o usar Awala, aceptas cumplir con [nuestros términos de servicio (inglés) 🡵](https://awala.network/legal/). + +{% include awala_download.html %} + +## Trabajamos duro para no decepcionarte + +Estamos comprometidos con los principios de libertad de expresión, privacidad personal, transparencia y neutralidad de la red. Cuando usas Awala, puedes estar seguro de que no hay nada turbio sucediendo entre bastidores: no hay _llamadas a casa_ ni molestos anuncios, y todo está cifrado de punta a punta. + +Lo mejor es que no tienes que confiar solo en nuestra palabra: + +- Todos los componentes de software que conforman la red son de código abierto. Si no puedes encontrarlo en [GitHub](https://github.com/search?q=topic%3Aawala+org%3Arelaycorp), no existe. +- El proceso para empaquetar y distribuir el software está completamente automatizado y también es de código abierto. +- Nuestros compromisos están realmente codificados en nuestros [Términos de uso y Política de privacidad 🡵](https://awala.network/legal/). diff --git a/usuarios/funcionamiento.md b/usuarios/funcionamiento.md new file mode 100644 index 0000000..bcdba9e --- /dev/null +++ b/usuarios/funcionamiento.md @@ -0,0 +1,54 @@ +--- +title: Cómo funciona Awala +description: Awala permite que las aplicaciones compatibles compartan datos con y sin Internet, y utilicen cifrado de punta a punta. +breadcrumbs: +- usuarios/index.md +--- + +# Cómo funciona Awala en términos simples + +Ya sea que te interese mucho la privacidad o simplemente tengas curiosidad, este documento te ayudará a entender cómo funciona Awala con un mínimo de jerga técnica. +Si buscas una explicación precisa, es posible que prefieras leer la [descripción técnica (inglés) 🡵](https://awala.network/tech-overview). + +Asumimos que has utilizado Awala o al menos has visto [la demostración](https://youtu.be/LL1Z9EGiMVc). + +## Por qué las aplicaciones de Internet necesitan una conexión a Internet y las aplicaciones de Awala no + +Las aplicaciones convencionales en tu teléfono o computadora, como Facebook y Google Chrome, requieren una conexión a Internet para enviar y recibir datos de un servidor porque la aplicación misma establece la conexión con el servidor remoto. + +En contraste, las aplicaciones compatibles con Awala delegan esa responsabilidad a otros componentes, como la [aplicación Awala en tu teléfono o computadora]({% link usuarios/descarga.md %}). De esta manera, tus aplicaciones favoritas pueden dejar que Awala use el mejor transporte disponible para ti en cualquier momento, y pueden concentrarse en lo que hacen mejor. + +Entre bastidores, tu aplicación Awala se conecta a una _puerta de enlace de Internet_, que es un servidor que actúa como puente entre tu dispositivo y el resto de Awala en Internet. Todos tus datos se enrutan a través de este servidor, por lo que puede retener los datos entrantes para ti mientras estás desconectado. Por defecto, estás emparejado con una puerta de enlace de Internet operada por Relaycorp, pero, en principio, puedes ejecutar la tuya propia. + +La animación a continuación muestra cómo la aplicación de Facebook para Android podría permitir que un usuario envíe datos a través de mensajeros de Awala cuando Internet no está disponible: + +{% include embed_mp4_video.html path="/assets/diagrams/non-tech-overview.mp4" %} + +Si Internet estuviera disponible, la aplicación Awala simplemente enviaría el mensaje a la puerta de enlace de Internet sin involucrar a los mensajeros. + +## Cifrado de punta a punta + +Similar a cómo tus conversaciones de WhatsApp están [cifradas de punta a punta 🡵](https://ssd.eff.org/es/glossary/cifrado-de-punta-punta), asegurando que solo tú y tus contactos puedan acceder a ellas, todos los datos intercambiados a través de Awala también están cifrados de punta a punta. Como resultado, ni los [mensajeros]({% link mensajeros.md %}) ni las puertas de enlace de Internet pueden leer o cambiar tus datos durante el tránsito. + +Awala también permite evitar servidores de terceros, como los operados por redes sociales, entregando datos directamente a los destinatarios sin que el desarrollador de terceros sea consciente de la comunicación. Esto significa que las aplicaciones de Awala pueden ser más descentralizadas que sus contrapartes de Internet. + +Sin embargo, depende del desarrollador de la aplicación decidir qué tan descentralizada será su aplicación. Algunas pueden no estar completamente descentralizadas si un servidor es esencial para ciertas funciones. [Letro](https://letro.app/es/), por ejemplo, omite su servidor para entregar conversaciones, pero aún utiliza el servidor para crear cuentas y conectar usuarios entre sí. + +## Tu privacidad es una prioridad + +Awala asigna a tu dispositivo un identificador único que se utiliza para enrutar datos hacia él, entre otras cosas. Puedes pensar en él como una dirección IP, pero una que no está vinculada a tu identidad o ubicación geográfica. Cualquiera en la red (por ejemplo, mensajeros, puertas de enlace de Internet, tus contactos de Letro) puede ver este identificador. + +Dado que tus datos pasan por una puerta de enlace de Internet, ni tus socios de comunicación ni los desarrolladores de aplicaciones de terceros pueden determinar tu dirección IP, a menos que también operen tu puerta de enlace de Internet elegida. + +Relaycorp está comprometida a proteger tu privacidad, por lo que solo guardamos la mínima cantidad de datos necesarios para operar nuestras puertas de enlace de Internet. Registramos las direcciones IP con fines de solución de problemas y prevención de abusos, pero no rastreamos a los usuarios ni compartimos lo poco que sabemos con terceros. Para más información, consulta [nuestra política de privacidad 🡵](https://awala.network/legal/). + +También hacemos público todo el código fuente de Awala, incluidos los sistemas que utilizamos para publicar automáticamente el software que usas. Esto significa que cualquier persona con las habilidades técnicas relevantes puede verificar independientemente nuestras afirmaciones, así que no tienes que confiar solo en nuestra palabra. + +## Las limitaciones que debes tener en cuenta + +**Awala debe considerarse experimental**. No solo debes esperar que las cosas se rompan ocasionalmente, sino que también debes tener en cuenta que puede haber problemas de seguridad de los que aún no somos conscientes. Sin embargo, en el momento de escribir esto, estamos solicitando una auditoría de seguridad exhaustiva y esperamos publicar los resultados a mediados de 2024. + +Independientemente de cualquier problema de seguridad presente en Awala, aún debes ser consciente de las siguientes limitaciones que se aplican a Awala y a cualquier otra cosa en tu dispositivo: + +- Si el dispositivo está comprometido, el atacante podría comprometer los datos de tus aplicaciones, incluidos los de Awala. +- Un atacante puede distribuir aplicaciones que parecen ser Awala o una aplicación compatible con Awala, pero que en realidad son maliciosas, por lo que solo debes [instalar Awala de fuentes confiables]({% link usuarios/descarga.md %}). diff --git a/usuarios/index.md b/usuarios/index.md new file mode 100644 index 0000000..71ebd9e --- /dev/null +++ b/usuarios/index.md @@ -0,0 +1,39 @@ +--- +title: Usuarios +description: Usa aplicaciones Awala para mantenerte conectado cuando Internet no está disponible durante días +--- + +# Mantente conectado con o sin Internet + +Por muy asombroso y ubicuo que parezca Internet, no podemos contar con él cuando más lo necesitamos: simplemente no fue construido para resistir regímenes represivos, desastres naturales, ataques terroristas o guerras. En contraste, Awala fue expresamente concebida para esos escenarios. + +Cuando estás conectado a Internet, las aplicaciones compatibles con Awala como [Letro](https://letro.app/es/) simplemente lo usarán, y no notarás ninguna diferencia. +Cuando estás desconectado de Internet, los [mensajeros]({% link mensajeros.md %}) pueden transportar de forma segura los datos de tus aplicaciones hacia y desde Internet -- sin tener que entregar tu dispositivo a nadie. + +¡No necesitas conocer ni confiar en los mensajeros en absoluto! Es imposible para los mensajeros -- o cualquiera que los intercepte -- ver o cambiar los datos de tus aplicaciones. Ni siquiera pueden ver qué aplicaciones estás usando o vincular esos datos contigo. El peor daño que un mensajero puede causar es perder tus datos en el camino, y aun así Awala lo detectará y corregirá sin problemas. + +Mira el siguiente video para tener una mejor idea de cómo funciona Awala con y sin Internet. + +{% include embed_youtube_video.html id="LL1Z9EGiMVc" %} + +También puedes [leer la descripción general de cómo funciona Awala]({% link usuarios/funcionamiento.md %}) si quieres saber más. + +Awala será la red en la que la humanidad puede confiar verdaderamente, +y proporcionar comunicación resiliente es solo el comienzo. Otros beneficios a corto plazo incluyen impulsar una nueva generación de aplicaciones que estarán 100% libres de spam y phishing, al tiempo que ofrecen mejor privacidad y seguridad. En el futuro, las aplicaciones de Awala eludirán la censura en línea sin que tengas que instalar Tor o VPNs por separado. + +
+ + + Descarga Awala + +
+ +## Ayúdanos a ayudarte + +Si te gusta cómo suena esto y quieres ayudar, la mejor manera de hacerlo es hacer que el software que usas agregue soporte para Awala. Por ejemplo, dile a [Facebook][cta_facebook], [Twitter][cta_twitter] o [WhatsApp][cta_whatsapp] que deseas que soporten Awala. + +Además, ¡no seas un extraño! Saluda en [Facebook](https://www.facebook.com/AwalaNetwork) o [Twitter](https://twitter.com/LaRedAwala), y cuéntanos por qué estás emocionado con Awala. Las preguntas y solicitudes también son bienvenidas. Preferimos las discusiones públicas, pero entendemos si prefieres chatear en privado. + +[cta_facebook]: https://twitter.com/intent/tweet?url=https%3A%2F%2Fawala.red%2F&via=LaRedAwala&text=.@Facebook%2C%20por%20favor%20agrega%20soporte%20para%20Awala%20para%20que%20pueda%20seguir%20usando%20Facebook%20cuando%20Internet%20est%C3%A9%20cortado&hashtags=KeepItOn +[cta_twitter]: https://twitter.com/intent/tweet?url=https%3A%2F%2Fawala.red%2F&via=LaRedAwala&text=.@Twitter%2C%20por%20favor%20agrega%20soporte%20para%20Awala%20para%20que%20pueda%20seguir%20usando%20Twitter%20cuando%20Internet%20est%C3%A9%20cortado&hashtags=KeepItOn +[cta_whatsapp]: https://twitter.com/intent/tweet?url=https%3A%2F%2Fawala.red%2F&via=LaRedAwala&text=.@WhatsApp%2C%20por%20favor%20agrega%20soporte%20para%20Awala%20para%20que%20pueda%20seguir%20usando%20WhatsApp%20cuando%20Internet%20est%C3%A9%20cortado&hashtags=KeepItOn