GithubHelp home page GithubHelp logo

Comments (6)

userrand avatar userrand commented on May 13, 2024 2

documentation looks very cool 👍

from wolfram-js-frontend.

JerryI avatar JerryI commented on May 13, 2024 1

Great idea!
For now it is more like there is a sort of package folder and API, so all graphic and etc are delivered like that.

I think, for the first step I will probably introduce loading "plugins" via links to GitHub repos in the settings via web UI.

from wolfram-js-frontend.

userrand avatar userrand commented on May 13, 2024 1

The "plugins" via links to GitHub repos sounds like a cool idea.

I do not really know the architecture needed for plugin support. I found this question via google: https://stackoverflow.com/questions/10763006/plugin-architecture-in-web-apps-examples-or-code-snippets#:~:text=A%20good%20plugin%20architecture%20is%20difficult%20to%20achieve,polymorphism%2C%20Demeter%27s%20Law%20and%20the%20related%20Hollywood%20principle.

Ideally, the system should be flexible enough to naturally support the type of plugins that vscode and Obsidian can support without having to think a lot and hard code functionalities for the plugin implementation in advance. Examples of such plugins may include :

  • change the color theme

  • maybe allow the usage of vim or emacs keybindings (I have not used emacs in a while I do not remember if they look like the usual keybindings)

  • something like GitHub copilot to work on code using chatgpt

  • Latex document typing

  • Highlighting and organizing highlights in a separate window

  • web development plugins such as automatically adding the closing tag for an opened tag or maybe even a full no code drag and drop HTML building interface like Wix (this seems particularly hard as I am not sure even obsidian or vscode has that kind of flexibility I think).

  • Automatic code formatting

  • code linting and documentation hovering for other languages

  • allow an interactive-only mode that does not allow editing the code (to avoid editing by mistake when working with many versions of a file)

This looks like way too much work for even a team of 30 people maybe. But if the development of the plugin is not too hindered by the architecture design of this application, then if the project gains popularity** people will have the incentive to make and share their implementations.

(**) Specifically with plugin support in a popular language like javascript with the convenience of the Wolfram language, I think the project could be quite popular if it's published on Reddit (if they allow that) and your post on stack exchange is updated when the app is more stable.

from wolfram-js-frontend.

userrand avatar userrand commented on May 13, 2024 1

I asked ChatGPT 3.5 about creating plugin support. The prompt and answer are given below (note the security item in the list) (I do not know how reliable its answer is) :


Prompt:
what kind of code architecture is needed for plugin support ?


To support plugins in a software application, you will need to use a modular architecture that allows the application to load and use external modules dynamically. Here are some key architectural principles to consider when designing your plugin system:

  • Plugin API: Define a clear, well-documented API that plugins can use to interface with the application. This API should provide a set of functions, methods, or classes that allow plugins to interact with the application in a consistent and reliable manner.

  • Plugin Manager: Implement a plugin manager that can dynamically load and unload plugins at runtime. This manager should be responsible for discovering available plugins, loading them into memory, and managing their lifecycle.

  • Plugin Interface: Define a common interface that plugins must implement to be compatible with the application. This interface should define a set of methods or events that the application can call or trigger to communicate with the plugin.

  • Plugin Security: Ensure that plugins are loaded in a secure manner and cannot compromise the security of the host application or the system as a whole. This may involve sandboxing plugins or running them in a separate process.

  • Plugin Communication: Establish a communication mechanism between the host application and plugins that allows them to exchange data and events. This may involve using an event system, messaging system, or other forms of inter-process communication.

Overall, the architecture you choose will depend on the specific requirements of your application and the plugins you plan to support. By following these principles, you can design a robust and flexible plugin system that enhances the functionality of your application and enables third-party developers to extend it with new features and capabilities.

from wolfram-js-frontend.

JerryI avatar JerryI commented on May 13, 2024 1

It will also be great to a sort of palettes like in VScode or obsidian. In general I d like to pack it as a self-installing electron app.

PS: I am working on mostly to make it stable and user - friendly.

from wolfram-js-frontend.

JerryI avatar JerryI commented on May 13, 2024 1

Kinda done. Please, see the documentation on it ;)

Palettes are also available now in a form of snippets plugin wljs-snippets
(shipped with a frontend)

And ChatGPT has arrived already wljs-chatbook developed by @KirillBelovTest. Now it is a core package of a system

adv2.mp4

from wolfram-js-frontend.

Related Issues (20)

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.