diff --git a/.github/workflows/update-contributors.yml b/.github/workflows/update-contributors.yml deleted file mode 100644 index 602c60a8..00000000 --- a/.github/workflows/update-contributors.yml +++ /dev/null @@ -1,41 +0,0 @@ -name: Update Contributors - -on: - schedule: - - cron: '0 0 * * 0' - workflow_dispatch: - -env: - token: ${{ secrets.GITHUB_TOKEN }} - -permissions: - contents: write - - -jobs: - update-contributors: - runs-on: ubuntu-latest - - steps: - - name: Checkout code - uses: actions/checkout@v4 - - - name: Set up Node.js - uses: actions/setup-node@v4 - with: - node-version: latest - - - name: Install dependencies - run: npm install - - - - name: Run script - run: npm run start - - - name: Commit and push if it changed - run: | - git config user.name github-actions - git config user.email github-actions@github.com - git add . - git commit -m "chore: Update Contributors List" - git push diff --git a/articles/2024-01-03-vanilla-os-orchid-update.md b/articles/2024-01-03-vanilla-os-orchid-update.md new file mode 100644 index 00000000..97198b36 --- /dev/null +++ b/articles/2024-01-03-vanilla-os-orchid-update.md @@ -0,0 +1,39 @@ +--- +title: "Vanilla OS 2 Orchid Stable, some clarifications" +description: "Our journey developing Vanilla OS Orchid, and what's next." +published: true +date: 2024-01-03 +keywords: + - Vanilla OS + - Vanilla OS Orchid + - Orchid + - News +layout: article +comments: true +--- + +Vanilla OS is an ambitious and young project with just one year of existence. The development of the first version took about four months, a relatively short time compared to other projects. Many expected to see Vanilla OS 2 Orchid released in a similar timeframe, but that wasn't possible. Orchid is an even more ambitious release, presenting a complete rewrite of the project with a substantial amount of new technologies, developed from scratch to achieve our desired results. + + + +In Orchid, we have rethought the entire system from its foundations. The construction itself occurs through a tool we invented called [Vib](https://github.com/Vanilla-OS/Vib) (Vanilla image builder), which assembles Linux distribution images using modules. We have created seven OCI images used at various points in the system. One of these images is [Pico](https://github.com/Vanilla-OS/pico-image), used in all building queues to ensure each component is built precisely for Vanilla OS. We have developed and improved numerous tools and technologies for this release, including [ABRoot](https://github.com/Vanilla-OS/ABRoot), [Albius](https://github.com/Vanilla-OS/Albius), [Vib](https://github.com/Vanilla-OS/Vib), [Differ](https://github.com/Vanilla-OS/Differ), [VSO](https://github.com/Vanilla-OS/vanilla-system-operator), [Apx](https://github.com/Vanilla-OS/apx), [Apx GUI](https://github.com/Vanilla-OS/apx-gui), [EtcBuilder](https://github.com/linux-immutability-tools/EtcBuilder), [FsGuard](https://github.com/linux-immutability-tools/FsGuard), [Prometheus](https://github.com/Vanilla-OS/Prometheus), [Chronos](https://github.com/Vanilla-OS/Chronos), [Eratosthenes](https://github.com/Vanilla-OS/Eratosthenes), [Atlas](https://github.com/Vanilla-OS/Atlas), [First Setup](https://github.com/Vanilla-OS/first-setup), [Installer](https://github.com/Vanilla-OS/vanilla-installer), support for Android via Waydroid and F-Droid, and many more. + +We redesigned [ABRoot](https://github.com/Vanilla-OS/ABRoot) to manage the system from boot to the user's initial interactions, handling boot management, fstab, and initramfs. We created [Albius](https://github.com/Vanilla-OS/Albius), the tool responsible for installing an operating system compatible with [ABRoot](https://github.com/Vanilla-OS/ABRoot) and [its complex structure](http://abroot-dev.vanillaos.org/), [LVM Thin Provisioning](https://vanillaos.org/blog/article/2023-11-22/vanilla-os-orchid---devlog-22-nov) and [LUKS2](https://vanillaos.org/blog/article/2023-06-11/vanilla-os-orchid---devlog-11-jun#albius-the-new-installer-backend). [Apx](https://github.com/Vanilla-OS/apx) and [VSO](https://github.com/Vanilla-OS/vanilla-system-operator) have undergone a similarly complex redesign, [redefining their roles](https://vanillaos.org/blog/article/2023-06-11/vanilla-os-orchid---devlog-11-jun#apx-v2-and-vso-v2). Apx is now a flexible and powerful tool and library for developers, whereas [VSO](https://github.com/Vanilla-OS/vanilla-system-operator) is the actual environment where the user operates with the system shell using an isolated and mutable environment, allowing the preservation of the host system. + +This extensive work also includes system configuration, systemd units, containers (which play a crucial role in Orchid), and Polkit rules. Speaking of Polkit, we removed sudo, a task that took a considerable amount of time to implement. We had to create Polkit policies to let users use tools requiring administrative privileges without using sudo; we have written [a paragraph](https://vanillaos.org/blog/article/2023-06-11/vanilla-os-orchid---devlog-11-jun#sudont) on this. + +Over these months, we have given talks at [GUADEC](https://www.youtube.com/live/hv-bkYpHSbQ?si=YbBzq_nXQTok2-DI&t=634) and conducted several interviews[[1]](#see-also) which, in turn, required time to plan and create the necessary assets. + +It's important to note that we develop everything with a distro-agnostic approach, designing all our technologies to be used by any Linux distribution. This process increases development time as we need to consider customization and scalability. For Orchid, we chose to take our time, conduct extensive research, and engage in many discussions. Orchid is not just a pretty reskin of Debian; it is a complex project that revisits many aspects we take for granted in Linux distributions. It required effort, patience, and the **willingness to question everything every single day**. + +The beta version will be released on the 30th of January, marking a milestone that we will approach with great passion. On that date, the project will enter a feature freeze, and we will focus on addressing reported bugs and refining the edges for a seamless experience. We don't know how long the beta window will last; it depends on the number of bugs that arise (hopefully few). One thing is certain: 2024 is the year Orchid will see the light, and we are confident it will be on your PCs before this summer, possibly much sooner. + +We hope that all our efforts contribute to an excellent user experience. Of course, we do not rule out the existence of bugs even after the stable release, but Orchid is still a young project ready to learn from its mistakes. + +_The Vanilla OS Team. + +## See also + +1. [GUADEC presentation: Vanilla OS is not just another distribution](https://cdn.vanillaos.org/assets/Vanilla%20OS%20-%20GUADEC%202023.pdf) +2. [Vanilla OS Team interview with Nicco Loves Linux](https://www.youtube.com/watch?v=pR5ZEbyv0ZM) +3. [FLOSS Weekly: Vanilla OS on a Stick (Interview with Cofounder)](https://twit.tv/shows/floss-weekly/episodes/725?autostart=false) diff --git a/package-lock.json b/package-lock.json index 190274e9..acf4a5ee 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,10 +10,8 @@ "dependencies": { "@types/marked": "^5.0.1", "@vueuse/head": "^1.1.26", - "fs.promises": "^0.1.2", "js-yaml": "^4.1.0", "marked": "^5.1.1", - "node-fetch": "^3.3.2", "slugify": "^1.6.6", "vue": "^3.2.47", "vue-router": "^4.1.6" @@ -981,14 +979,6 @@ "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz", "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==" }, - "node_modules/data-uri-to-buffer": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz", - "integrity": "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==", - "engines": { - "node": ">= 12" - } - }, "node_modules/de-indent": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/de-indent/-/de-indent-1.0.2.tgz", @@ -1176,28 +1166,6 @@ "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==" }, - "node_modules/fetch-blob": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.2.0.tgz", - "integrity": "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/jimmywarting" - }, - { - "type": "paypal", - "url": "https://paypal.me/jimmywarting" - } - ], - "dependencies": { - "node-domexception": "^1.0.0", - "web-streams-polyfill": "^3.0.3" - }, - "engines": { - "node": "^12.20 || >= 14.13" - } - }, "node_modules/for-each": { "version": "0.3.3", "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", @@ -1282,25 +1250,6 @@ "node": ">= 8" } }, - "node_modules/formdata-polyfill": { - "version": "4.0.10", - "resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz", - "integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==", - "dependencies": { - "fetch-blob": "^3.1.2" - }, - "engines": { - "node": ">=12.20.0" - } - }, - "node_modules/fs.promises": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/fs.promises/-/fs.promises-0.1.2.tgz", - "integrity": "sha512-LNfkXdN6EToumV455EbdJaNxqLmEFqKqNZVIEyI2whtdpIppTsne2fHWgx05s+B2Aif29Lhzdz0AaOXKLvMGsA==", - "engines": { - "node": ">=8.9" - } - }, "node_modules/fsevents": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", @@ -1942,41 +1891,6 @@ "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", "dev": true }, - "node_modules/node-domexception": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz", - "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/jimmywarting" - }, - { - "type": "github", - "url": "https://paypal.me/jimmywarting" - } - ], - "engines": { - "node": ">=10.5.0" - } - }, - "node_modules/node-fetch": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.2.tgz", - "integrity": "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==", - "dependencies": { - "data-uri-to-buffer": "^4.0.0", - "fetch-blob": "^3.1.4", - "formdata-polyfill": "^4.0.10" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/node-fetch" - } - }, "node_modules/normalize-package-data": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", @@ -2863,14 +2777,6 @@ "node": ">=10" } }, - "node_modules/web-streams-polyfill": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.2.1.tgz", - "integrity": "sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q==", - "engines": { - "node": ">= 8" - } - }, "node_modules/which": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", @@ -3707,11 +3613,6 @@ "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz", "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==" }, - "data-uri-to-buffer": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz", - "integrity": "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==" - }, "de-indent": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/de-indent/-/de-indent-1.0.2.tgz", @@ -3865,15 +3766,6 @@ "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==" }, - "fetch-blob": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.2.0.tgz", - "integrity": "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==", - "requires": { - "node-domexception": "^1.0.0", - "web-streams-polyfill": "^3.0.3" - } - }, "for-each": { "version": "0.3.3", "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", @@ -3936,19 +3828,6 @@ } } }, - "formdata-polyfill": { - "version": "4.0.10", - "resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz", - "integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==", - "requires": { - "fetch-blob": "^3.1.2" - } - }, - "fs.promises": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/fs.promises/-/fs.promises-0.1.2.tgz", - "integrity": "sha512-LNfkXdN6EToumV455EbdJaNxqLmEFqKqNZVIEyI2whtdpIppTsne2fHWgx05s+B2Aif29Lhzdz0AaOXKLvMGsA==" - }, "fsevents": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", @@ -4388,21 +4267,6 @@ "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", "dev": true }, - "node-domexception": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz", - "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==" - }, - "node-fetch": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.2.tgz", - "integrity": "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==", - "requires": { - "data-uri-to-buffer": "^4.0.0", - "fetch-blob": "^3.1.4", - "formdata-polyfill": "^4.0.10" - } - }, "normalize-package-data": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", @@ -5002,11 +4866,6 @@ } } }, - "web-streams-polyfill": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.2.1.tgz", - "integrity": "sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q==" - }, "which": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", diff --git a/package.json b/package.json index f487283a..6b02c922 100644 --- a/package.json +++ b/package.json @@ -7,16 +7,13 @@ "build": "npm run generate-articles && vite build", "preview": "vite preview", "generate-articles": "node scripts/generateArticlesJson.js", - "type-check": "vue-tsc --noEmit", - "start": "node scripts/fetchContributors.mjs" + "type-check": "vue-tsc --noEmit" }, "dependencies": { "@types/marked": "^5.0.1", "@vueuse/head": "^1.1.26", - "fs.promises": "^0.1.2", "js-yaml": "^4.1.0", "marked": "^5.1.1", - "node-fetch": "^3.3.2", "slugify": "^1.6.6", "vue": "^3.2.47", "vue-router": "^4.1.6" diff --git a/public/uploads/laptop-orchid.webp b/public/uploads/laptop-orchid.webp new file mode 100644 index 00000000..c6a868a1 Binary files /dev/null and b/public/uploads/laptop-orchid.webp differ diff --git a/scripts/fetchContributors.mjs b/scripts/fetchContributors.mjs deleted file mode 100644 index 7bf58054..00000000 --- a/scripts/fetchContributors.mjs +++ /dev/null @@ -1,41 +0,0 @@ -import fetch from 'node-fetch'; -import fs from 'fs/promises'; - -async function fetchContributorsData() { - let contributors = []; - - const headers = { - 'Authorization': `token ${process.env.token}` - }; - - try { - const orgReposResponse = await fetch('https://api.github.com/orgs/Vanilla-OS/repos', { headers }); - const orgReposData = await orgReposResponse.json(); - - for (const repo of orgReposData) { - const contributorsResponse = await fetch(repo.contributors_url, { headers }); - const contributorsData = await contributorsResponse.json(); - - for (const contributor of contributorsData) { - if (!contributors.some((c) => c.login === contributor.login)) { - const userDetailsResponse = await fetch(`https://api.github.com/users/${contributor.login}`, { headers }); - const userDetails = await userDetailsResponse.json(); - - contributors.push({ - id: contributor.id, - name: userDetails.name || contributor.login, - login: contributor.login, - avatar_url: contributor.avatar_url, - profile_url: contributor.html_url, - }); - } - } - } - - await fs.writeFile('contributors.json', JSON.stringify(contributors, null, 2)); - } catch (error) { - console.error('Error fetching contributors:', error); - } -} - -fetchContributorsData(); diff --git a/src/views/DownloadOrchidAlpha.vue b/src/views/DownloadOrchidAlpha.vue index a5fd6ab3..f420f273 100644 --- a/src/views/DownloadOrchidAlpha.vue +++ b/src/views/DownloadOrchidAlpha.vue @@ -60,7 +60,7 @@
You must be logged on GitHub to download the alpha builds. Once logged in, you will be able to - download the choosen build from the artifacts section.
+ download the chosen build from the artifacts section.