{"id":13929747,"url":"https://github.com/SolidOS/solidos","last_synced_at":"2025-07-19T11:32:58.745Z","repository":{"id":38319420,"uuid":"276090011","full_name":"SolidOS/solidos","owner":"SolidOS","description":"The operating system for Solid","archived":false,"fork":false,"pushed_at":"2024-06-12T03:46:04.000Z","size":43297,"stargazers_count":127,"open_issues_count":59,"forks_count":19,"subscribers_count":17,"default_branch":"main","last_synced_at":"2024-11-21T17:46:17.007Z","etag":null,"topics":["running-code"],"latest_commit_sha":null,"homepage":"https://solidos.solidcommunity.net/","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/SolidOS.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2020-06-30T12:18:30.000Z","updated_at":"2024-11-20T10:05:34.000Z","dependencies_parsed_at":"2024-01-17T05:23:56.051Z","dependency_job_id":"ffb28473-dc02-42d3-853d-fcd518af077a","html_url":"https://github.com/SolidOS/solidos","commit_stats":null,"previous_names":[],"tags_count":42,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SolidOS%2Fsolidos","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SolidOS%2Fsolidos/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SolidOS%2Fsolidos/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SolidOS%2Fsolidos/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/SolidOS","download_url":"https://codeload.github.com/SolidOS/solidos/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":226597809,"owners_count":17657213,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["running-code"],"created_at":"2024-08-07T18:02:31.688Z","updated_at":"2025-07-19T11:32:58.734Z","avatar_url":"https://github.com/SolidOS.png","language":"Shell","readme":"# 🤗 Welcome to the repo of SolidOS\n\n\u003cimg src=\"https://raw.githubusercontent.com/solid/community-server/main/templates/images/solid.svg\" alt=\"[Solid logo]\" height=\"150\" align=\"right\"/\u003e\n\n[![MIT license](https://img.shields.io/github/license/solidos/solidos)](https://github.com/solidos/solidos/blob/main/LICENSE.md)\n[![SolidOS issues](https://img.shields.io/github/issues/solidos/solidos)](https://github.com/solidos/solidos/issues)\n[![Matrix](https://img.shields.io/matrix/solid_solidos:gitter.im.svg?label=Join%20the%20chat%20at%20Matrix\u0026logo=matrix\u0026server_fqdn=matrix.org)](https://app.element.io/#/room/#solid_solidos:gitter.im)\n\nIf you made it here you must already have heard about [Solid](https://solidproject.org).\nThis space is home to the SolidOS code. Keep reading if you want to know:\n\n- 🤔 [What is SolidOS](#-What-is-SolidOS)\n  - [What you can do today with SolidOS](#What-you-can-do-today-with-SolidOS)\n  - [SolidOS vision, mission and roadmap](#solidos-vision-mission-and-roadmap)\n- 👩🏽‍💻 [SolidOS technical intro](#-solidos-technical-intro)\n  - [SolidOS deeper technical topics](#solidos-deeper-technical-topics)\n- 👯 [How the SolidOS team works](#-How-the-SolidOS-team-works)\n  - [SolidOS team meetings](#SolidOS-team-meetings)\n  - [SolidOS team instant chat](#SolidOS-team-instant-chat)\n  - [SolidOS team discussions](#SolidOS-team-discussions)\n  - [SolidOS tasks](#SolidOS-tasks)\n- 🙋🏻 [How you can contribute and help SolidOS thrive](#-How-you-can-contribute-and-help-SolidOS-thrive)\n  - [For anyone up to writing some code](#For-anyone-up-to-writing-some-code)\n  - [For anyone who likes builds or releases or GitHub CI or deployments](#for-anyone-who-likes-builds-or-github-ci-or-releases-or-deployments)\n  - [For anyone who likes writing text](#For-anyone-who-likes-writing-text)\n  - [For anyone with an eye for design](#For-anyone-with-an-eye-for-design)\n- 🆕 [Getting started with the SolidOS code](#-Getting-started-with-the-SolidOS-code)\n  - [SolidOS first time setup of code](#SolidOS-first-time-setup-of-code)\n  - [How to use SolidOS on localhost](#How-to-use-SolidOS-on-localhost)\n  - [How to make changes in repos](#How-to-make-changes-in-repos)\n  - [Developing SolidOS code](#Developing-SolidOS-code)\n  - [Testing SolidOS code](#Testing-SolidOS-code)\n  - [SolidOS build \u0026 release](#SolidOS-build-and-release)\n- 📜 [License](#-License)\n- 🎤 [Feedback and questions](#-Feedback-and-questions)\n\nFor experimenting with SolidOS implementations, you can:\n\n- try SolidOS on a [test-pod](https://test-pod.solidcommunity.net:8443/) (provider: `https://solidcommunity.net:8443`, user and password: `test-pod`)\n- take a pod on \u003chttps://solidcommunity.net\u003e or [another provider](https://solidproject.org/users/get-a-pod#get-a-pod-from-a-pod-provider)\n- check out the [SolidOS WebApp](https://solidos.github.io/mashlib/dist/browse.html)\n- use as a stand-alone desktop app with [Data-Kitchen](https://github.com/solidos/data-kitchen)\n\nIf you are looking for something else, let us try and guide you:\n\n- for learning about Solid, read [about Solid](https://github.com/solid/solid) and visit [solidproject.org](https://solidproject.org)\n- to try out Solid, head over to [getting started with Solid](https://solidproject.org/developers/tutorials/getting-started)\n- for how SolidOS works, [visit the user guide](https://github.com/solidos/userguide) and [SolidOS project Pod](https://solidos.solidcommunity.net/)\n- for how the community works, go over to [Solid process](https://github.com/solid/process)\n- chat with others about Solid on the [forum](https://forum.solidproject.org/) and on [instant chats](https://gitter.im/solid/home)\n- join an event over at [Solid events](https://solidproject.org/events) or sign up for the [Solid newsletter](https://solidproject.org/newsletter) to not miss any news\n- read the Solid community code of conduct at [Solid CoC](https://github.com/solid/process/blob/main/code-of-conduct.md)\n\nFurther links:\n\n- [SolidOS explanation video](https://vimeo.com/643594034#t=9m39s)\n- [SolidOS goals \u0026 roadmap](https://solidos.solidcommunity.net/Team/docs/SolidOSNorthStar.html)\n- [SolidOS FAQs](https://github.com/solidos/solidos/wiki/FAQs)\n- [SolidOS Wiki](https://github.com/solidos/solidos/wiki)\n- [SolidOS Guidelines](./documentation/guidelines/)\n- report a problem with SolidOS by [creating a git issue](https://github.com/solidos/solidos/issues)\n- have a new idea? Create a Solid [user story/new idea ticket](https://github.com/solid/user-stories)\n- check out the in-progress [Solid specification](https://solidproject.org/TR/protocol) and in-progress [Solid specification repo](https://solid.github.io/specification/). Find the previous specifications, now outdated but still in use if you work with NSS: [https://github.com/solid/solid-spec](https://github.com/solid/solid-spec).\n- [Glossary](https://github.com/solid/solidcommunity.net/wiki/Glossary) of terms frequently used in Solid environment\n\n## 🤔 What is SolidOS?\n\n_**🌟🌟🌟 SolidOS is an Operating System for Solid. 🌟🌟🌟**_\n\n[Solid](https://solidproject.org) is developing into a booming ecosystem which involves specifications 📃, tech stack 🛠, servers 💻, and apps 🕹. We, the SolidOS team, believe that this ecosystem also needs an Operating System.\n\nWhen you get a new phone, PC, or tablet, they usually come with an operating system that provides some basic functionality to get started and be productive. More importantly, you can personalize your OS to your needs, by installing apps, managing content, and much more.\n\nSolid is not shipped with a piece of hardware (who knows, maybe in the future it will...). For now, you get into the ecosystem once you create a WebID and provision your own personal data store (often called a \"Pod\") ([see getting started with Solid - get a pod](https://solidproject.org/users/get-a-pod#get-a-pod-from-a-pod-provider)). Immediately after getting your new Solid WebID and Pod space, SolidOS is helping you to navigate the Solid ecosystem.\n\nSolidOS is much more. SolidOS showcases the possibility of [Solid](https://solidproject.org) for the future, by which we mean —\n\n- **true data ownership** — management of personal data \u0026 authorization control\n- **avoidance of vendor lock-in to services** — easy moving to a different Pod or WebID provider\n- **data reuse between applications** — with help of data interoperability and data discoverability\n\nWatch a [SolidOS explanation video](https://vimeo.com/643594034#t=9m39s) as part of the [Solid World event series](https://solidproject.org/events).\n\n### What you can do today with SolidOS\n\nTake a look at an example: [SolidOS project Pod](https://solidos.solidcommunity.net/). SolidOS implemented features:\n\n- 📰 create a personal webpage\n- 📝 manage your WebID and the data about yourself\n- 📝 manage personal data/files on your Pod\n- 🤝 directly connect and engage with other people who are part of the ecosystem (add friends, chat, ...)\n- 💡 make use of interconnected apps\n- 🔧 create your own app [with Inrupt's Solid Reach SDK](https://docs.inrupt.com/developer-tools/javascript/react-sdk/application/) or [get inspired from a blog post](https://solidos.solidcommunity.net/public/2021/BuildingSolidAppsUsingPublicData-V3.html)\n- and more ([see SolidOS user guide](https://github.com/solidos/userguide))\n\n### SolidOS vision, mission and roadmap\n\nRead more about the current SolidOS 🌟 vision, goals 🎯, and roadmap 🚗 on the [SolidOS project Pod](https://solidos.solidcommunity.net/Team/docs/SolidOSNorthStar.html).\n\n_**Note:** SolidOS is also known by names like Data Browser (default) or Databrowser, and at times as mashlib._ Which name is used depends on which flavour of SolidOS you are referring to:\n\n- The SolidOS Databrowser Frontend - a frontend for Solid Servers like [solidcommunity.net](https://solidcommunity.net), represented by this codebase;\n- The SolidOS Databrowser Webapp - a stand-alone web app served from mashlib: [https://solidos.github.io/mashlib/dist/browse.html](https://solidos.github.io/mashlib/dist/browse.html);\n- The SolidOS Data-Kitchen - a stand-alone desktop app: [https://github.com/solidos/data-kitchen](https://github.com/solidos/data-kitchen);\n- The SolidOS software stack - a set of libraries that may be used independently of the databrowser, see next section.\n\n## 👩🏽‍💻 SolidOS technical intro\n\nThe SolidOS stack contains —\n\n- [Node.js](https://nodejs.dev/)\n- [Javascript](https://www.w3schools.com/js/)\n- [Typescript](https://www.typescriptlang.org/)\n- [npm](https://www.npmjs.com/)\n- [Node Version Manager (nvm)](https://github.com/nvm-sh/nvm)\n- [Lerna](https://lerna.js.org/)\n- [GitHub CI](https://docs.github.com/en/actions/automating-builds-and-tests/about-continuous-integration)\n- [bash scripts](https://www.gnu.org/software/bash/manual/html_node/index.html)\n\nIt also makes use of —\n\n- [Storybook](https://storybook.js.org/)\n- [Webpack](https://webpack.js.org/)\n- [Jest](https://jestjs.io/)\n- [Cypress](https://www.cypress.io/)\n- [ESLint](https://eslint.org/)\n- [Babel](https://babeljs.io/)\n- [Travis](https://travis-ci.org/)\n\nLet's take a look at an architecture diagram of SolidOS:\n![SolidOS architectural overview](documentation/architecture.svg)\n\nA colorful dependency tree can be seen here:\n![SolidOS dependencies](documentation/solidos_dependencies.svg)\n\nAs you can see, SolidOS is composed of several repositories:\n\n- [**rdflib.js**](https://github.com/linkeddata/rdflib.js) — Javascript RDF library for browsers and Node.js\n- [**solid-logic**](https://github.com/solidos/solid-logic) — core business logic of SolidOS\n- [**mashlib**](https://github.com/solidos/mashlib/) — a solid-compatible code library of application-level functionality for the world of Solid\n- [**solid-panes**](https://github.com/solidos/solid-panes) — a set of core solid-compatible panes based on solid-ui\n- [**solid-ui**](https://github.com/solidos/solid-ui) — User Interface widgets and utilities for Solid. Building blocks for solid-based apps\n\nIn the above diagram, SolidOS is deployed on the [Node Solid Server (NSS)](https://github.com/solid/node-solid-server), but it can also be set up to run on the [Community Solid Server (CSS)](https://github.com/CommunitySolidServer) or on ANY Solid-compliant server. When you download and compile the SolidOS code, an NSS is also installed locally, to have everything ready to develop.\n\n### SolidOS deeper technical topics\n\nFor further details about each GitHub repository, please visit them via the links above for `Documentation`.\n\nWe collect SolidOS code good practices and know how in [SolidOS documentation pages](https://github.com/solidos/solidos/tree/main/documentation).\n\n[SolidOS FAQs](https://github.com/solidos/solidos/wiki/FAQs) part of the [SolidOS developer guide](https://github.com/solidos/solidos/wiki) also contains some Q\u0026A and technical troubleshooting infos.\n\n## 👯 How the SolidOS team works\n\nFirst and foremost who are the contributors of SolidOS?\n\nThe SolidOS codebase has a long history and there have been a lot of contributors over the years (see: [GitHub contributors](https://github.com/solidos/solidos/graphs/contributors)). The most active team members are mentioned in the SolidOS Team on the [SolidOS Pod Contacts](https://solidos.solidcommunity.net/Contacts/).\n\n### SolidOS team meetings\n\nThe SolidOS team meets every week for a 1h touchdown. We discuss what was done over the past week, what needs to be done next, and delegation of tasks. Find the meeting time and link on the [SolidOS project Pod](https://solidos.solidcommunity.net/Team/team%20meetings/schedule.html).\n\nWe take minutes on our meetings. You can find them on the [SolidOS pod](https://solidos.solidcommunity.net/public/SolidOS%20team%20meetings/).\n\n### SolidOS team instant chat\n\nIn between team meetings, we avidly communicate over at the [gitter SolidOS channel](https://gitter.im/solid/solidos). Drop by to chat with us, ask questions, or simply say \"Hi\".\n\n### SolidOS team discussions\n\nSometimes some ideas need an incubation period and further discussion. We make use of [GitHub discussions](https://github.com/solidos/solidos/discussions) for that.\n\n### SolidOS tasks\n\nFor daily tasks, we have a [Project Board](https://github.com/orgs/SolidOS/projects/1) with different views.\n\nFor a longer-term roadmap, we use a [Solid task manager](https://solidos.solidcommunity.net/public/Roadmap/Tasks/), and plan the next milestones on Kanban.\n\n### Additional useful information\n\n- Find answers over at [SolidOS FAQs](https://github.com/solidos/solidos/wiki/FAQs) or at the [SolidOS Wiki](https://github.com/solidos/solidos/wiki).\n- For an overall description of how the whole ecosystem works head over to [solid process](https://github.com/solid/process).\n- Make sure to get into discussions on the [forum](https://forum.solidproject.org/) and on Solid [instant chat channels](https://gitter.im/solid/home).\n- Join an event over at [Solid events](https://solidproject.org/events) or sign up for the [Solid newsletter](https://solidproject.org/newsletter) to not miss any news\n- Read the community code of conduct [Solid CoC](https://github.com/solid/process/blob/main/code-of-conduct.md).\n\n## 🙋🏽‍ How you can contribute and help SolidOS thrive\n\nThe SolidOS team is always looking for volunteers to help improve SolidOS. Pull Requests (PRs) and edits are always welcome from code, to text, to style. We are looking for UX designers, technical writers, frontend developers, backend developers, DevOps. Don't let these titles intimidate you; they are just some examples. You can find your own place no matter the level of knowledge you are at.\n\nTo check for tasks you might help with immediately, look at the [Newcomer View in the Project Board](https://github.com/orgs/SolidOS/projects/1/views/3). You are welcome to visit us at a [weekly team meeting](https://solidos.solidcommunity.net/Team/2021/schedule/solidos-schedule.html) or on the [ongoing Gitter-based chat](https://gitter.im/solid/solidos) to say 'Hi' or let us know about any blocker you might have encountered.\n\n### For anyone up to writing some code\n\nWe keep track of stuff to do in Git issues of each repo. [An overview](https://github.com/orgs/SolidOS/projects/1/views/4) you can find on the project board.\n\nWriting tests as a way to understand the code is always a good idea. Tests, in each repo, should be found in the `test` folder. One can start from there or/and add tests.\n\n_**Note:** Please get familiar with [coding](./documentation/guidelines/coding_guidelines.md) and [testing](./documentation/guidelines/testing_guidelines.md) guidelines._\n\n### For anyone who likes builds or GitHub CI or releases or deployments\n\nThere is an existing process and codebase in place to help with SolidOS releases. However, we would like to get better and automate as much as possible. Open issues can be found on the [Project Board](https://github.com/orgs/SolidOS/projects/1/views/4) under the CI category.\n\n_**Note:** Please get familiar with [release guidelines](./documentation/guidelines/dependencies_and_release_guidelines.md)._\n\n#### Builds\n\nSolidOS contains different repositories (mashlib, solid-logic, solid-ui, solid-panes, ...). Each repository contains a `package.json` with `scripts`. Most repos contain an `npm run build` which is used to build the project.\n\n#### GitHub CI\n\nWhen you push or PR a change to a repo, a git CI is activated and runs every time. An example is the [solid-panes workflow](https://github.com/solidos/solid-panes/blob/main/.github/workflows/ci.yml). This CI YML can contain instructions to test and build the repo on different Node versions. If upon push or PR, an instruction fails, one should take care to fix it and keep the branches green.\n\n#### Testing \u0026 releasing a new SolidOS version\n\nIn SolidOS, you will find a `bash scripts` under [scripts](https://github.com/solidos/solidos/tree/main/scripts) which is related to releasing a new SolidOS stack. The [release script](https://github.com/solidos/solidos/blob/main/scripts/release) is also used to update dependencies in each repo.\n\nFollowing best practices, we deploy the new version on the [testserver](https://solidcommunity.net:8443/) as mentioned [here](https://github.com/solid/solidcommunity.net/wiki#solidcommunitynet8443-test-server-instance).\n\n#### Deployment on solidcommunity.net server\n\nBefore you start, make sure you have access to all the GitHub repos and all the `npm` packages. Using Ubuntu or other Unix-like OS, `ssh` into the server as `root`.\n\n```sh\ntmux new\nadduser --shell /bin/bash --home /home/build --ingroup sudo build\nsu - build\nwhoami\nsudo whoami\n```\n\nThen:\n\n```s\ncurl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.37.0/install.sh | bash\nexport NVM_DIR=\"$([ -z \"${XDG_CONFIG_HOME-}\" ] \u0026\u0026 printf %s \"${HOME}/.nvm\" || printf %s \"${XDG_CONFIG_HOME}/nvm\")\"\n[ -s \"$NVM_DIR/nvm.sh\" ] \u0026\u0026 \\. \"$NVM_DIR/nvm.sh\" # This loads nvm\nnvm install 16\nnvm use 16\n\nssh-keygen -t ed25519 -C \"michiel+build@unhosted.org\"\ngit config --global user.name \"Solid OS Build (Michiel)\"\ngit config --global user.email \"michiel+build@unhosted.org\"\ncat .ssh/id_ed25519.pub\nnpm login\n```\n\nLog in to npm with your npm account and add the SSH public key to your GitHub account. Then continue:\n\n```sh\ngit clone https://github.com/solidos/solidos\ncd solidos\nnpm run install-nvm\nnpm run release\n```\n\nMore information can be also found over at the [server, solidcommunity.net, repo](https://github.com/solid/solidcommunity.net/wiki).\n\n### For anyone who likes writing text\n\nSolidOS has quite some documentation around that needs constant improvement.\nPlaces to start:\n\n- for how SolidOS works [visit the user guide](https://github.com/solidos/userguide) and [SolidOS project Pod](https://solidos.solidcommunity.net/);\n- [SolidOS FAQs](https://github.com/solidos/solidos/wiki/FAQs);\n- [SolidOS Wiki](https://github.com/solidos/solidos/wiki).\n\nWe are open to suggestions to improve these resources from structure, translation, UI to content in general.\n\n### For anyone with an eye for design\n\n[Solid-ui](https://github.com/solidos/solid-ui) does the heavy lifting to all things UI for SolidOS.\nCurrently, we use [Storybook](https://storybook.js.org/) to help develop components independent of other panes. Make sure to visit the [solid-ui readme](https://github.com/solidos/solid-ui) for information on how to set it up and get started.\nThere is a second option to run solid-ui on its own. Read about it at [Debugging solid-ui using Solid Pane Tester](https://github.com/solidos/solidos/wiki/1.-SolidOS-know-how#debugging-solid-ui-using-solid-pane-tester).\n\nYou can also find the current issues over at the [solid-ui issues](https://github.com/solidos/solid-ui/issues). And some more information over at the [SolidOS Wiki](https://github.com/solidos/solidos/wiki/2.-Solid-UI-know-how).\n\nSolidOS needs a lot of improvements on UI, including UX and style-guides. Maybe you are the one who can help out? Visit the [Project Board](https://github.com/orgs/SolidOS/projects/1/views/4) and look for UX and UI categories.\n\n## 🆕 Getting started with the SolidOS code\n\nBefore you start coding, please review our guidelines:\n\n- [coding guidelines](./documentation/guidelines/coding_guidelines.md);\n- [testing guidelines](./documentation/guidelines/testing_guidelines.md);\n- [dependency and release guidelines](./documentation/guidelines/dependencies_and_release_guidelines.md).\n\n### SolidOS first time setup of code\n\nIf you use for instance VSCode, you can open this repository in its Dev Container. In solidos folder run `sh ./scripts/dev`\n\nIf not, make sure you have the needed environment: [nvm for SolidOS](https://github.com/solidos/solidos/wiki/FAQs#setting-up-nvm-to-develop-for-solidos), npm, Node. If you have problems with node versions on the Apple M1 chip, in the [Troubleshooting SolidOS](https://github.com/solidos/solidos/wiki/Troubleshooting-SolidOS) you can find a solution.\n\n```\ngit clone https://github.com/solidos/solidos\ncd solidos\nnpm run setup\n```\n\n_**Note:** It might prompt you to install a specific `node` version, something like `nvm install xxx # version missing mentioned in console log`._\n\n_**Note:** In case of errors, try to follow what the output messages (errors) suggest in the console to fix the problems, and let us know on the [SolidOS team chat](https://gitter.im/solid/solidos)._\n\nRun the above lines in a terminal of your choice to setup your SolidOS project folder. By default, some dependent repos are also set up for you:\n\n- [rdflib.js](https://github.com/linkeddata/rdflib.js): Javascript RDF library for browsers and Node.js\n- [solid-logic](https://github.com/solidos/solid-logic): core business logic of SolidOS\n- [pane-registry](https://github.com/solidos/pane-registry): an index to hold all loaded solid panes\n- [mashlib](https://github.com/solidos/mashlib/): a solid-compatible code library of application-level functionality for the world of Solid\n- [solid-panes](https://github.com/solidos/solid-panes): a set of core solid-compatible panes based on solid-ui\n- [solid-ui](https://github.com/solidos/solid-ui): User Interface widgets and utilities for Solid. Building blocks for solid-based apps\n- [node-solid-server](https://github.com/solid/node-solid-server): the server that allows you to test your changes\n\nYou can start your server and test out your code with:\n\n```\nnpm start\n```\n\nIf you get into problems check out [SolidOS FAQs](https://github.com/solidos/solidos/wiki/FAQs) or ask us directly at [SolidOS team chat](https://.im/solid/solidos).\n\n_**Note:** The NPM scripts are using `bash` scripts. These might not work if you're developing on a Windows machine. Let us know, over at [SolidOS team chat](https://gitter.im/solid/solidos) if you want support for this._\n\n### How to use SolidOS on localhost\n\nOnce you managed to get SolidOS running locally (`npm start`) you can see it over at `https://localhost:8443/`. If you encounter any problems make sure to check the [Troubleshooting SolidOS page](https://github.com/solidos/solidos/wiki/Troubleshooting-SolidOS).\n\nTo work on localhost, first you need to register a local user, so hit `register` on `https://localhost:8443/`. After you have created your user, you can navigate to your new pod over at `https://username.localhost:8443/`.\nWhenever you need to login again, remember to put `https://localhost:8443/` in the `Enter the URL of your identity provider:` input field. Otherwise you will be logged in with a different provider and redirected out of the localhost environment.\n\n### How to make changes in repos\n\nAs a newcomer, you do not have direct access to the repos, but you can still contribute through Pull Requests (PRs). First, navigate to the repo you want to work on, and create a fork. Make your changes on your fork, and then create a PR. We will be notified, and you will receive feedback on your changes. For more details on how to do this, visit [the GitHub documentation](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request), which explains it much better than we ever could.\n\nIf you do have direct access to the repos, it is usual to create a branch for your changes and then a PR. A PR helps you receive feedback and lets us know easily about any changes to the code. Read more about Pull Requests over at the GitHub documentation.\n\nMake sure to read more about working with branches and missing repos over at the [SolidOS Wiki](https://github.com/solidos/solidos/wiki/1.-SolidOS-know-how#dealing-with-github-branches).\n\n### Developing SolidOS code\n\nVery likely you will want to make changes in the dependent packages/repos of SolidOS (mashlib, solid-logic, solid-ui, solid-panes...).\n\nYou have two choices:\n\n- [work directly in SolidOS](#Work-directly-in-SolidOS)\n- [work in the according dependent package](#Work-in-the-according-dependent-package)\n\n#### Work directly in SolidOS\n\nThe `npm start` script contains a lerna command: `npx lerna bootstrap --force-local` which makes sure that packages are bootstrapped/taken from your local machine even if versions don't match.\n\nIf you need to bootstrap any packages again (e.g. you've run `npm install` in any of the projects) and don't want to stop the server, you can do `npx lerna bootstrap --force-local` only. You do not need to stop the server and start it again (`npm start`).\n\nAnother option is to start SolidOS with the `npm run watch` script. This triggers the watch-script for mashlib, solid-ui, and solid-panes. If you want to run watch-script for rdflib or any of the panes, you'll have to open another terminal window, navigate to the respective project and start its watch-script doing `npm run watch`.\n\nThe output for the watch-script can be a bit difficult to interpret since all output for mashlib, solid-ui, and solid-panes are presented in the same window. You might also consider having each watch scripts running in a separate terminal window. The downside of using this approach is that at its worst, you'll have five separate watch-scripts running (in addition to the terminal window where you started the server) when working on a pane that needs to pick up a change in rdflib. If you find this unwieldy for your setup, or require too many resources, you should consider to [work in the according dependent package](#Work-in-the-according-dependent-package).\n\n#### Work in the according dependent package\n\nAny changes you do in a project need to be committed to their original repos and eventually be pushed to NPM manually (this is the part of Lerna that we do not use for this project).\n\nSome projects require you to build a package before you can see changes, so check the various package.json files to see which scripts are available. You can usually do `npm run build`, and some also support `npm run watch` which builds a new version each time you do a local change.\n\nBe aware, the packages depend on one another. Here's a simplified view of the dependencies:\n\n```\nnode-solid-server --\u003e rdflib\nnode-solid-server --\u003e mashlib --\u003e rdflib\nnode-solid-server --\u003e mashlib --\u003e solid-panes --\u003e rdflib\nnode-solid-server --\u003e mashlib --\u003e solid-panes --\u003e solid-ui --\u003e rdflib\nnode-solid-server --\u003e mashlib --\u003e solid-panes --\u003e [pane project] --\u003e solid-ui --\u003e rdflib\n```\n\nThis means that if you do a change in solid-panes and want to see the result on your local NSS, you need to make sure that mashlib compiles the changes as well. Similarly, if you do changes to solid-ui, and some pane relies on those changes, you need to make sure that the pane compiles those changes, that solid-panes compiles the changes from the pane, and finally that mashlib compiles the changes from solid-panes. This quickly becomes hard to track, so we've devised a couple of ways to mitigate this.\n\nRead about in detail how each pane can be debugged over at the [SolidOS Wiki](https://github.com/solidos/solidos/wiki/1.-SolidOS-know-how#debugging-panesrepos-standalone-without-running-whole-solidos).\n\n### Testing SolidOS code\n\nMost of the modules in SolidOS have a `test` script which can be called with `npm run test`.\nIn some cases the tests run an [ESLint](https://eslint.org/) command `eslint 'src/**/*.ts'` or a [jest](https://jestjs.io/) test or both.\n\nJest can also offer information related to test coverage by simply runnig `npm run coverage`.\n\nYou can find a repo's tests usually in a dedicated folder called `test`.\n\n### SolidOS build and release\n\nThe SolidOS code stack build and release are [described above](#For-anyone-who-likes-builds-or-GitHub-CI-or-releases-or-deployments).\n\n## 📜 License\n\nThe SolidOS code is available under the MIT License.\n\n## 🎤 Feedback and questions\n\nDon't hesitate to [chat with us on gitter](https://gitter.im/solid/home) or [report a bug](https://github.com/solidos/solidos/issues).\n","funding_links":[],"categories":["others"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FSolidOS%2Fsolidos","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FSolidOS%2Fsolidos","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FSolidOS%2Fsolidos/lists"}