Giter Site home page Giter Site logo

play-os / playos Goto Github PK

View Code? Open in Web Editor NEW
49.0 3.0 4.0 9.33 MB

๐Ÿ–ฅ Web Operating System for mobile & desktop

Home Page: https://playos.io/

License: GNU General Public License v3.0

HTML 0.96% JavaScript 20.99% CSS 3.07% TypeScript 61.49% Dockerfile 0.18% SCSS 13.31%
os webos desktop react mobile webassembly storage wasi

playos's Introduction

PlayOS - Web Operating System ๐Ÿš€

Node.js CI Discord Chat Dependencies

PlayOS gives users an easy way to access their apps, games, storage, data, notifications and more. It is accessible from any device that has an internet browser. This allows you to pick up from any app where you left off. This is done by synchronizing the state between devices. Giving users a seamless experience.

PlayOS allows applications to communicate with each other in a sandboxed environment. This way apps can be integrated with each other, without building the infrastructure for it. Take for example the files app. It allows users to click on the file and choose which app to give access to that specific file/folder.

PlayOS can be integrated with any storage/server architecture there is through providers.

We are still porting code over to a provider based manner, any help is greatly appreciated.

All designs can be viewed at https://www.figma.com/file/lGE9MAcc7EuwUFI6oj45L9/PlayOS?node-id=3%3A115

โš™๏ธ Running PlayOS

npm i && npm start

PlayOS will be available at http://localhost:3000/

๐Ÿ”Œ Providers

PlayOS is based on providers. It allows you to switch backends where needed. This way you can couple PlayOS to Dropbox, Amazon, Azure or even a decentralized solution such as Ethereum. We want you to be able to choose where to use PlayOS.

All execution is done on the client. Providers should only provide basic functionality such as file storage. Our default provider is based on Rutile which can be forked and be privatly used.

๐Ÿ“ Contributing to PlayOS

We accept contributions to the repository. Feel free to fork and send in a PR. You can check the issues for any known tasks (or add your own).

playos's People

Contributors

dependabot[bot] avatar franklinwaller avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

playos's Issues

charset is not defined

Describe the bug
A clear and concise description of what the bug is.

To Reproduce
Steps to reproduce the behavior:

  1. Go to 'os.playos.io'
  2. Press on 'F2'
  3. See error

Expected behavior
No error

Desktop (please complete the following information):

  • OS: Windows 10 Home Single Language
  • Browser Firefox
  • Version 75.0 (64 bit)

Additional context
Add charset?

Discussion: Decoupling apps from PlayOS windows

Is your feature request related to a problem? Please describe.
Currently, PlayOS runs all apps in its container (container here meaning on the domain playos.io). This is good for technological reasons since we can keep track of all the processes and easily manage them. This only gives a few problems:

  1. Users don't want an OS in another OS experience.
    Since most users run already an OS of their choice it defeats the purpose to run yet another OS in the browser. This is pretty much overkill for a user who just wants to get the job done.

  2. Less space for the actual app.
    Since we have to figure out how we can let the user return home from an app adds it unnecessary UI components to the window. This can quickly feel cramped for the user as well as the developer.

  3. Developers need to follow our rules, locking them too much in.
    We don't want developers to have to rewrite their entire app to be able to play nice with PlayOS. It does not encourage developers to start writing apps for the platform. Of course, WASM solves most of these issues. But at the current stage, WASM is not optimal for UI apps. HTML, CSS, and JavaScript are still king here.

Now, this does not mean PlayOS is not useful. The features such as giving an easy way to connect an app to a storage unit and allow it to make purchases give developers a quick way to market. We should focus more on that aspect and expose a set of API's to make web app development easier. In other terms include the PlayOS Kernel in every app and tie them all together.

Describe the solution you'd like
1 & 2. Use actual windows
We should use actual windows with real URLs as a replacement for our PlayOS window. These hold a connection through post messages with PlayOS. This would still allow us to let it communicate with other apps and keep track of running processes.

  1. Since we use real windows developers can just include the PlayOS SDK with an easy to use API for authentication, notifications, and file storage. This is just a simple integration library so a developer could swap this out (just like the Facebook sign-in, Google sign in) and have their app standalone.
    The WASM VM will still be available and actively maintained for PlayOS and will remain a crucial component. This would allow for a drop-in replacement of a regular WASI runtime and be able to use all the PlayOS features out of the box.

Make PlayOS.io just the dashboard for viewing files, notifications, apps marketplace, and installed apps. It's still an essential part, but the user would just notice it less. And IMO that's what a good UX should be.

Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.

Additional context
https://www.figma.com/file/lGE9MAcc7EuwUFI6oj45L9/PlayOS?node-id=10%3A134

Files that got uploaded via Disk should be synced

Is your feature request related to a problem? Please describe.
Using the desktop provider the files are not synced back to PlayOS and included in the fs_map

Describe the solution you'd like
Watch the whole PlayOS folder and sync the files back to the fs_map

Create application package file

Is your feature request related to a problem? Please describe.
Currently, there is no visual representation in the files app when there is an actual executable WASM file.

Describe the solution you'd like
We should create a format where the icons, wasm, and manifest are stored. This will be a standard ZIP file that ends with the '.wapp' extension.

Support previews inside explorer

Is your feature request related to a problem? Please describe.
Currently, there is no preview for files so you are not sure which file to open.

Describe the solution you'd like
Show a preview of the file in explorer, using the extension.

Couple file system to a provider

Is your feature request related to a problem? Please describe.
Currently, files are stored in memory. They should all be stored somewhere in the cloud. A Provider must take care of that.

Describe the solution you'd like
Overwrite some of the functions from WasmFs and sent the files to the provider function.

Add ability to upload folders

Is your feature request related to a problem? Please describe.
When you upload a folder only the contents are uploaded but not the folder structure.

Describe the solution you'd like
All folders and content should be uploaded

Support commands such as cd

Is your feature request related to a problem? Please describe.
Currently, the terminal does not have any context of what folder it is in. This is because some environment variables are not available such as $PWD.

Describe the solution you'd like
Set environment variables before launching the terminal

Additional context
We are waiting for wasmerio/wasmer-js#144 to be resolved.

Encrypt files before they get stored

Is your feature request related to a problem? Please describe.
Currently, files are stored without encryption. When we move to cloud storage it should be encrypted and decrypted beforehand.

Describe the solution you'd like
We should use a middleware between storing in the cloud and reading on the client.

Make coupling with Rutile

Is your feature request related to a problem? Please describe.
All files are currently deleted when you close your session. We need coupling with a server in order to persist in storage and session data.

Describe the solution you'd like
There's multiple tasks needed to be done:

  • Store files inside IPFS
  • Encrypt files before storing
  • A lookup for a user where their files are stored
  • A store like API to CRUD and find apps.

Describe alternatives you've considered
We could use a simple node.js infrastructure to achieve this. But the full backend could not be stored offline.

Additional context
Dependency on Rutile-io/Rutile#20

Add notification support

Is your feature request related to a problem? Please describe.
Currently, a messaging app can't notify a user of new messages.

Describe the solution you'd like
Design & Develop a notification center to centralize all notifications.

Firefox does not run PlayOS

Describe the bug
1: Files and folders don't load.
2: My bug report from 2 months(?) ago is still not fixed.

To Reproduce
Steps to reproduce the behavior:
Log in to playos.
See error.

Expected behavior
1: Charset shouldn't be US-ASCII
2: I should be able to use it.

Screenshots
http://prntscr.com/stk1jp
http://prntscr.com/stk2j8
http://prntscr.com/stk2rh

Desktop (please complete the following information):

  • OS: Windows
  • Browser: Firefox
  • Version: 76.0.1 64-bit

Additional Context
I use Windows 10 Home Single Language so my display language is fixed to Turkish and cannot be changed. It may be trying to load something in Turkish characters if toLocaleLowerCase or things like that are used. Just a guess.

Support code splitting

Is your feature request related to a problem? Please describe.
Currently, everything is bundled in one .js file. Dynamic imports are in place but setting the correct config messes up the other static imports...

Describe the solution you'd like
Correctly setting up the webpack/tsconfig

Describe alternatives you've considered
Using parcel, but that comes with it's own problems.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.