Skip to content

This issue was moved to a discussion.

You can continue the conversation there. Go to discussion →

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add a appstore? #722

Closed
Meowcat285 opened this issue Sep 2, 2019 · 60 comments
Closed

Add a appstore? #722

Meowcat285 opened this issue Sep 2, 2019 · 60 comments

Comments

@Meowcat285
Copy link

I feel like there should be a app store

@andersevenrud
Copy link
Member

It would be nice to have something like this indeed. The underlying functionality for doing such a thing is almost done. See: os-js/osjs-client#21

However, I sadly haven't found much time this year to actually complete that.... but saying that, I will be able to complete it ASAP, because my work schedule just got a lot lighter for the rest of the year 😅

But that's just one part of it all. There would also need to be some kind of back-end service (and website) for hosting all of this with some kind of registry. This part I would definitely need some help on, which I've tried in the past, but it never really went anywhere: https://github.com/os-js/store.os-js.org (I actually don't remember what's currently in there because it was made by a community member looong ago).

So if you (or know of anyone) that might wanna team up on this, let me know! :)

@Meowcat285
Copy link
Author

For something like this, as dumb as it sounds, you could use github pages or some sort of static hosting solution

@andersevenrud
Copy link
Member

The infrastructure part of this is not an issue. I have a few dedicated servers I can use for things like this.

When I was talking about the "hosting" I was thinking about the actual services etc. that runs the app store 😊

@Meowcat285
Copy link
Author

I can provide development related or temporary stuff using the google cloud platform for you. I dont know if thats useful in this case, but at least its some help I hope. I will send you my number and/or add you to a google cloud platform project with a monthly budget of 30-50 bucks.

@andersevenrud
Copy link
Member

I can provide an account on one of my servers if you're interested in developing for this idea (in the case you need CI/CD).. No need for GCS.

@Meowcat285
Copy link
Author

I could try, I am bad at back-end stuff doe, at most I could do bug hunting and fixing, I am better at that, so if you want help with bug hunting, I can do that, but back-end, sorry.

@andersevenrud
Copy link
Member

If you're into bug hunting and fixing then you could probably set up an installation of your own and dig into that.

As for open issues, look here https://github.com/search?q=org%3Aos-js+is%3Aopen+is%3Aissue+archived%3Afalse&type=Issues . It should contain all issues from all repos relating to this project.

And as for the app store related things, I'll let you know when that gets going -- because I'll need some testers 👼

@17lwinn
Copy link

17lwinn commented Jan 15, 2020

i have an idea that might work, use glitch.com

it is free and i have used OS.js on it with great functionality

@andersevenrud
Copy link
Member

@17lwinn It might be possible to have a glitch app that allows you to simply browse the contents over there and launch apps in an iframe. Because glitch is sort of like Codesandbox, yes ?

@17lwinn
Copy link

17lwinn commented Feb 16, 2020

Sorry for the wait.

It would work, I installed OSjs in a project and works fine

@17lwinn
Copy link

17lwinn commented Feb 21, 2020

You can see OS.JS running here:

https://pws-server.glitch.me/

Please wait while it loads

@andersevenrud
Copy link
Member

@17lwinn I must have misunderstood what you meant entirely here.

Yes, OS.js can run inside things like glitch, codesandbox, codepen, jsfiddle, etc. just fine (there's even official examples on this online which can be found in the manual).

What I thought you meant here was to create an OS.js application that allows you to browse projects on Glitch and then open them in windows or something.

@17lwinn
Copy link

17lwinn commented Feb 22, 2020

That could work! I could make an iframe application that links to a page full of projects to remix.

@andersevenrud how about i do this and name it something like 'app store'

@17lwinn
Copy link

17lwinn commented Feb 22, 2020

Ive made a prototype, glitch requires a few seconds to load its resources and we COULD try to lower this time through sandboxing

@andersevenrud
Copy link
Member

That could work! I could make an iframe application that links to a page full of projects to remix.

I was thinking of doing it using their open APIs https://glitchapi.glitch.me/ .

@17lwinn
Copy link

17lwinn commented Feb 22, 2020

I could use the glitch API, some people have added it to NPM

@17lwinn
Copy link

17lwinn commented Feb 22, 2020

Ive just had an idea, how about a page with lists of applications and buttons that trigger 'npm install'.

i'm confused however.

browse projects and open in windows

How do you mean? We would probably have to create a site that uses the glitch API to grab project details

@andersevenrud
Copy link
Member

@17lwinn My idea is pretty simple, really.

Just a basic interface where you can browse categories or search via an input field. This interactivity simply uses the API to get back and render the results from Glitch.

When you chose a result a window pops open that loads the application selected inside an iframe.

No need to install anything when the apps are already hosted on another platform.

@andersevenrud
Copy link
Member

@17lwinn The API link I pasted in a previous comment has everything needed to build something like that.

@17lwinn
Copy link

17lwinn commented Feb 22, 2020

Well, i'll get to work.

@17lwinn
Copy link

17lwinn commented Feb 22, 2020

Im going to clone the example iframe application as a starting point, mainly because of the limits i work under

@andersevenrud
Copy link
Member

@17lwinn I went through my notifications and was reminded of this thread. I just made a quick proof-of-concept for the Glitch application launcher that you might find interesting:

https://github.com/andersevenrud/osjs-glitch-application

OS js

I actually found that the documentation of the API is no longer correct, and didn't look any further into it, so this PoC just does a simple lookup taken from glitch.com website. But at least it demonstrates how this could be implemented 🙂

@17lwinn
Copy link

17lwinn commented Mar 5, 2020

thanks! i will give it a try!

@17lwinn
Copy link

17lwinn commented Mar 5, 2020

can you make it an NPM package so others can download it?

you could call it @osjs/glitch-poc

Edited by anders: andersevenrud/osjs-glitch-application#1

@Hoodgail
Copy link

i have an idea that might work, use glitch.com

it is free and i have used OS.js on it with great functionality

@17lwinn ive been trying to host it with glich... can i have a link to urs

@17lwinn
Copy link

17lwinn commented Mar 21, 2020

Yep, you can remix an osjs project I have setup here:

https://glitch.com/edit/#!/remix/pws-server

@Hoodgail
Copy link

Thank you

@17lwinn
Copy link

17lwinn commented Mar 22, 2020

no problem

@leopck
Copy link

leopck commented Apr 7, 2020

@andersevenrud are you still looking for help for the app store for OS.js? I'm thinking of making one

@andersevenrud
Copy link
Member

andersevenrud commented Apr 7, 2020

@leopck

Would something like https://hub.docker.com/search?q=&type=image be sufficient?

Yeah, just some kind of basic service that stores OS.js packages in its standard format with a database to do lookups. The OS.js metadata (metadata.json) should suffice here -- which could be simply put into a Mongodb or something as documents.

So there'll be three ways to interact with registry,

Indeed :)

There's another stretch goal that I can think off which is to create a .json/config file similar to package.json with all listed packages so that it can pull all the packages into your OS.js, but I'll put this aside for now.

This is not really needed if you look at my first section of this response, however it might be valuable to have this feature -- which basically would be a dump of the database.

Sounds good?

Sounds good to me :)

@andersevenrud
Copy link
Member

@leopck As for servers, that's not an issue. I can spin it up quite easily and just add a subdomain.

@leopck
Copy link

leopck commented Apr 7, 2020

Sure thing, I'll get this up and going using my own server for now. If it's good, then we can port over to your server. I'll keep you all updated. Stay tune.

@andersevenrud
Copy link
Member

@leopck Alrighty!

@leopck
Copy link

leopck commented Apr 7, 2020

@andersevenrud btw are we planning to store a copy of the maintainer's source code or binary in our servers?

Definitely a few things to consider, I'm going to use examples from existing OS implementation and community:

  1. Docker stores a copy of the binary uploaded by users from the community, this is great because it always ensures that the binary is "online" and users doesn't experience issues like some packages isn't able to be pulled. This comes in with a cost of space on server side.

  2. Yocto Project recipes only POINTS to the maintainer's source code and packages and doesn't keep a copy of community's packages with an exception of selected core packages that the YP community will sustain. This means very often/occasionally if a certain package isn't checked from time-to-time, and the maintainer removes the package, this will cause the package to break. But it's cheaper on the server side.

Personally I prefer Docker's implementation as it's better for user experience. What do you think?

@leopck
Copy link

leopck commented Apr 7, 2020

Of course docker also supports pointing to other registry by using command like --registry= which changes the server by which it's pulling from. Maybe we should do this as well.

Some enterprises/companies prefers sustaining their own registry as they have their own set of requirements like "proprietary codes" or having to support their own customers, especially since we are on the bleeding edge, perhaps some companies would want to "fork" a copy and sustain an LTS from OS.js's versions.

@andersevenrud
Copy link
Member

@leopck

btw are we planning to store a copy of the maintainer's source code or binary in our servers?

I was thinking just the actual build of the applications and nothing more.

and the maintainer removes the package,

I was thinking of having sort of the same policy as npm here. Basically removal is only allowed within a certain timeframe, and if it's outside that timeframe it would have to be a manual request that is evaluated. Since [at the moment] applications can't depend on each other there's no major risk of breaking something in a chain.

Of course docker also supports pointing to other registry by using command like --registry= which changes the server by which it's pulling from. Maybe we should do this as well.

Some enterprises/companies prefers sustaining their own registry as they have their own set of requirements like "proprietary codes" or having to support their own customers

Since I was thinking that installation of apps would just be an URL pointing to an archive, different "registries" will be supported out-of-the-box (meaning technically even apps hosted on npm could be installed without using npm itself).

Now that you mention this, I'll add a task to the issue relating to this that it might be a good idea to support private packages behind authentication (which could be handled over HTTP Authorization header).

@leopck
Copy link

leopck commented Apr 7, 2020

I was thinking just the actual build of the applications and nothing more.

Alright, sounds great. Though that means that we won't be able to rebuild the application if the source code disappears.

We would want to do this for security measures like if an application becomes so popular however the src is missing but it contains vulns.

This is model is often seen in Java. Lots of Java older modules contains vulns that are not patch but community are not able to patch them as the .jar files and the maven repo doesn't contain the source code for them. Just FYI, since many systems in the world still operates in this manner.

I was thinking of having sort of the same policy as npm here. Basically removal is only allowed within a certain timeframe, and if it's outside that timeframe it would have to be a manual request that is evaluated. Since [at the moment] applications can't depend on each other there's no major risk of breaking something in a chain.

I think this is a fine policy, would be great if these policies are written in black and white for others to review and comment. I guess we'll get to this once we get the entire app repo ready.

Since I was thinking that installation of apps would just be an URL pointing to an archive, different "registries" will be supported out-of-the-box (meaning technically even apps hosted on npm could be installed without using npm itself).

Makes sense, I think having a client to serve for the "app installation" on OS.js and disconnecting from npm is a good move. Would be like "apt-get" or "dnf" or "swupd" from Linux. This provides more flexibility than constantly installing into nodejs itself.

@andersevenrud
Copy link
Member

Alright, sounds great. Though that means that we won't be able to rebuild the application if the source code disappears.

We would want to do this for security measures like if an application becomes so popular however the src is missing but it contains vulns.

Since the applications installed this way won't have [by default] access to server-side scripts (with exception of internal APIs and third party services), this should be fine. But now that you mention this it would be nice to be able to flag applications that may potentially introduce any issues like this.

@17lwinn
Copy link

17lwinn commented Apr 8, 2020

When I was writing the registry, I was recommended to join netlify- which offers 100GB of space.

My registry is just zip files- not much magic going on server side

@17lwinn
Copy link

17lwinn commented Apr 8, 2020

I was thinking an app that when started:

  • installs the package
  • reloads osjs

@17lwinn
Copy link

17lwinn commented Apr 8, 2020

You can setup a caddy server, that's free and customisable
https://caddyserver.com/v1/download

@andersevenrud
Copy link
Member

@17lwinn

When I was writing the registry, I was recommended to join netlify- which offers 100GB of space.

As I've mentioned before in this thread, hosting is not an issue -- I have access to this for free.

I was thinking an app that when started:

What app ? Either way, don't need to reload osjs, it supports dynamically loading stuff.

You can setup a caddy server, that's free and customisable

I'm not sure how this is relevant.

@17lwinn
Copy link

17lwinn commented Apr 8, 2020

I mean like an app that says 'install noVNC' or something

And a caddy server allows you to create file servers with different capabilities. This could be used to hold the files for the store

@andersevenrud
Copy link
Member

@17lwinn

I mean like an app that says 'install noVNC' or something

This was discussed in this thread yesterday.

And a caddy server allows you to create file servers with different capabilities. This could be used to hold the files for the store

I would much rather prefer just using nginx or something like that and host files directly (which will be used as a reverse-proxy for APIs, website etc.)

@andersevenrud
Copy link
Member

FYI this is the issue that describes related tasks: os-js/osjs-client#106

@andersevenrud
Copy link
Member

Package installation APIs (and uninstallation) for users has been implemented in experimental branches of @osjs/client and @osjs/server (linked in previous comment)!

I'll probably throw together a dummy HTTP service for this and a proof of concept client application so it's easier to demonstrate the usage as well as test development on the actual hub/store.

@leopck
Copy link

leopck commented Apr 12, 2020

alright, I'll try to hook that up
Okay, some updates, I've been looking around for some off-the-shelf solution to get us started faster.

Among them is verdaccio
https://github.com/verdaccio/verdaccio

I'm thinking of re-using most of verdaccio and replacing some bits like the API uploading or API installing(downloading) from verdaccio.

Right now the majority of the commands are using "npm", I'll have to change that to @osjs/client's command and perhaps I'll have to make some changes to the client's code to call the API as well.

@17lwinn
Copy link

17lwinn commented May 21, 2020

one developer i know spent two months making an OS like OS.js, with simple API's and extremely easy ways to make apps and file extensions.

the point is, he said in 5.0 he would begin fixing the appstore and letting it download apps. So perhaps this could be a sign?:

https://support.glitch.com/t/auroraos-an-os-in-your-browser/24337

@andersevenrud
Copy link
Member

@17lwinn A sign ?

@andersevenrud
Copy link
Member

@17lwinn I'm a bit confused. What question ?

@17lwinn
Copy link

17lwinn commented May 23, 2020

Sorry, i'll explain

The OS has a market app- where you can download apps being fetched from an external backend. I'm saying we could do the same when download functionality is available

@hello-smile6
Copy link

@andersevenrud I figured it out. Create an Installer app which lets you install an app from a JSON manifest for standalone and normal versions. Additionally in both versions, create an appInstall function which will install an app. If you design a manifest spec and allow insertion from URLs both locally and externally, users can add apps easily and effectively.

@andersevenrud
Copy link
Member

@hello-smile6

What you describe has been implemented in a PR I commented on in this thread: #722 (comment)

I sadly haven't found any time to finish all of it. The only thing I merged was the ability to load external packages, but the actual installation procedure is in the linked PR.

@tansiret tansiret mentioned this issue Mar 26, 2021
@hello-smile6
Copy link

Ive just had an idea, how about a page with lists of applications and buttons that trigger 'npm install'.

i'm confused however.

browse projects and open in windows

How do you mean? We would probably have to create a site that uses the glitch API to grab project details

Wouldn't that require a custom WebSocket connection and a Node package to create an SSH connection with the server?

@not-amplify
Copy link

Is an Appstore still possible I would like to see this come into OS.js

@not-amplify
Copy link

Hello?

@os-js os-js locked and limited conversation to collaborators Jan 10, 2024
@andersevenrud andersevenrud converted this issue into discussion #843 Jan 10, 2024

This issue was moved to a discussion.

You can continue the conversation there. Go to discussion →

Labels
None yet
Projects
None yet
Development

No branches or pull requests

7 participants