Open secondtruth opened 1 month ago
Thanks for the detailed write-up of the discord discussion. It's becoming more and more clear to me that we need a purpose-built IDE for Puter for the reasons you've summarized above. I'm working on a few UI components that could make the development of the IDE easier but if somebody wants to start work on the IDE they should do so and not wait for the components.
Super exciting ✌️
Wow this is an amazingly well drafted and comprehensive write-up! If I had any comments I would say that compatibility / interop with VSCode might be a more nice to have feature vs a requirement. A lot of people will have familiarity with VSCode but it does many things in an ideomatic way that might not jive with Puter's web based sensibilites. I would say instead of using VSCode as a guidebook, look at popular web based tools and try to do things the web native way.
@triptych Thank you for your feedback! I really appreciate it. I've taken your thoughts into account and made some updates to the proposal.
@jelveh What do you think about the idea to turn this into a collaborative project between multiple web OS communities?
@jelveh What do you think about the idea to turn this into a collaborative project between multiple web OS communities?
I'm fine with that. Is there any web os out there with FS/KV/AI support? I'm wondering what the API looks like.
I'm fine with that. Is there any web os out there with FS/KV/AI support? I'm wondering what the API looks like.
Pluto (not the one by stretch07 :D), for example, is a relatively well-developed system. It has an FS lib available, but (currently) no native KV and AI support. AI should be implemented relatively easily, potentially your KV implementation, maybe with some minor modifications, too. So also Pluto could profit from this.
daedalOS uses BrowserFS as its FS API according to the README (deprecated; active fork: ZenFS).
anuraOS uses Filer as FS API. ^1
Idea: The IDE system could be designed so that certain services don't necessarily need to be supported by the parent OS. For OSes that don't natively support KV and/or AI, the IDE could supplement these services.
This is why we need something like POSIX for web operating systems.
This is why we need something like POSIX for web operating systems.
You're absolutely right!
In your opinion, which services and features besides KV and AI should this Web-POSIX cover?
Well, FS for sure! We're adding more drivers which would be nice if standardized but we're also learning as we go.
Well, FS for sure! We're adding more drivers which would be nice if standardized but we're also learning as we go.
Oh, forgot the most important one. 😀
Btw: I discussed potential Web OS standardization with @stretch07 some time ago. I will think about how to integrate ideas from that with a Web-POSIX.
I'm fine with that. Is there any web os out there with FS/KV/AI support? I'm wondering what the API looks like.
Pluto (not the one by stretch07 :D), for example, is a relatively well-developed system. It has an FS lib available, but (currently) no native KV and AI support. AI should be implemented relatively easily, potentially your KV implementation, maybe with some minor modifications, too. So also Pluto could profit from this.
Hi! Pluto now has a KV store through the new Registry API https://github.com/zeondev/pluto/blob/main/docs/libs-and-components.md#registry. As for the AI feature, Pluto currently does not support any AI features directly through an API. For the app to be compatible, the user would have to add their own ai provider (e.g. openai, meta, ollama, etc.) probably making the user add an API key. We hope to maybe talk more about a specialized webOS specification that me and my developers are working on. Let me know if you have any questions.
Hi @ItsLap! I'd really like to know more about the specification that you and your team are working on.
This is why we need something like POSIX for web operating systems.
Filesystem wise there is the html5 filesystem API, I saw anura mentioned earlier in this thread and wanted to mention anura v2.0 (not prod version but available on beta.anura.pro) has a filesystem API compatible interface at anura.fs.whatwgfs
I will say I'm not the biggest fan of the API, but it is the standard for the browser and chrome and Firefox actually have it built in at navigator.storage.getDirectory(), the API is like to get /working/foo.txt
you have to do handle = await (await (await navigator.storage.getDirectory())).getDirectoryHandle("working")).getFileHandle("foo.txt")
Since it's already included in major browsers (and already an html standard, no longer just a draft) I personally forsee this being the standard for browsers going on and think web environments which serve to contain multiple web apps should be using it
Edit: I should mention anura currently uses Filer as a backend to anura.fs but it can actually run off of opfs or Filesystem access API as well
@jelveh What do you think about the idea to turn this into a collaborative project between multiple web OS communities?
I'm fine with that. Is there any web os out there with FS/KV/AI support? I'm wondering what the API looks like.
Anura has a nodejs like FS interface at anura.fs and a whatwg html5 filesystem fs interface at anura.fs.whatwgfs. It also has a key value store at anura.settings.get() and anura.settings.set().
The one thing it doesn't have is an AI mainly because it doesn't align much with our goals, anura doesn't depend on any cloud services by design (browser OS, not cloud OS) and has a target hardware of a Dell Chromebook 3100, so running a local LLM is mostly infeasible.
I mentioned this on Discord but I'll mention it here as well to keep things in sync. The description on issue #289 is relevant to anything related to filesystem adapters on Puter. Any discussion about that should happen under that issue so we can keep things organized. Files on Puter have unique identifiers which apps aren't allowed to change (this is by design, and in contrast with lower-level OSes; consider vim
changing the inode number of a file because of swapping), which has clear advantages but also will require careful consideration for compatibility.
This idea is inspired by a discussion that took place on Puter's Discord server:
Develop a fully-featured, web-native Integrated Development Environment (IDE) tailored for Puter. Optionally this project can be turned into a collaborative one that can also be integrated into other WebOS platforms.
Details
Rationale for Building from Scratch
Key Features
Optional Collaborative Development Approach
While the Puter IDE can be developed independently, there's an option to make this a collaborative project, as this is a huge endeavor:
Goal
To create a powerful, flexible, and extensible web-based IDE tailored for Puter, providing a rich, VS Code-like experience for end-users while deeply integrating with Puter's unique features. Additionally, to design the project in a way that optionally allows for collaboration with other WebOS platforms, potentially benefiting the broader WebOS ecosystem.
Potential Future Enhancements
Related