Sandox IDE: new Polkadot development experience

Hi, Polkadot community!

I would like to hear your thoughts and feedback on our IDE for the Polkadot ecosystem called Sandox!

Who we are

Sandox team (Sander, Aleksej, Dmitriy, Joseph) is a group of experts and crypto development enthusiasts who always search for opportunities to leverage our day to day life with blockchain capabilities. Our journey with Sandox has started when we joined together to discuss DEX development ideas and opportunities inspired by the Polkadot ecosystem abilities. Yes, quite far from where we are now and what we are building) digging deeper into technology and the ecosystem we all came to the idea of the need and great interest in contributing to DOT by expanding the capabilities of developers through convenient tools. One appropriate RFP on the W3f Grants page ( Alternative javascript console for Polkadot JS API) hasn’t left us a chance to refuse: we started the Sandox project to build an integrated development environment that will include all the necessary options for comfortable development in the Polkadot space.

About the Sandox IDE

Currently, we have delivered the main skeleton of the IDE, a feature-rich JS code editor, compilation capabilities and integration with the Polkadot.js library. This tool is already helpful in developing a frontend with JS.

You can find the project Git page here and here’s the entire web IDE: https://sandox.io

Why we are confident in the value of Sandox? If you’ve seen the Open Source Polkadot Stack there are several quite functional Ink! plugins for known IDEs and some frontend development tools, but mostly they are already not supported due to several reasons. We see customization and plug-in based architecture of Sandox IDE as a key to product viability for future support and constant development.

Short roadmap introduction
To expedite the development of the IDE, introduce flexibility and allow different teams to create their own add-ons, enhancements and various panels for particular parachains we see the necessity to implement a plug-in support. This is seen by us as the next big step in the Sandox development.

Along the plug-in architecture we plan to add features like an embedded wallet, Ink! support, automatic contract deployment, setting up custom nodes, saving projects on the blockchain, debugging and tracing, a UI panel for interacting with RPC, import from NPM, PWA, code autocomplete and much more.

To secure user data, it is essential that all plug-ins should operate independently. The chosen concept for plug-in operation is WASM, which ensures isolation of a plug-in’s executable code, data protection between different plug-ins, and the required performance. Plug-ins should have the ability to be written in any WASM compiled language (we plan to start from TypeScript SDK and add Rust, Go, Zic or other languages in later stages of the project, if there will be an appropriate request from the community, or the community itself can add the desired languages).

User’s wallet access will be implemented through an API in such a way that the plug-ins themselves will not have direct access to the user’s private key.

appeal to the DOT community

The aim of this topic is, first of all, to introduce the new IDE to the Polkadot developers community and discuss opinions and possible development roadmap. So, it will be very significant if interested community members can use the Sandox tool and share your thoughts on the functionality, UX and all other stuff. We will strive to find the right direction for Sandox future development.

Cool project, but I fear for many (including myself), writing code outside of their usual editor and in a browser tab is a non-starter.

If you’ve seen the Open Source Polkadot Stack there are several quite functional Ink! plugins for known IDEs and some frontend development tools, but mostly they are already not supported due to several reasons.

Why is the solution to this to build a new browser IDE instead of fixing existing tools or building new ones that work with existing popular editors?

The plugin ideas you mentioned are cool… but I am not sure what advantage there is for them to be baked into a web editor rather than being developed as standalone CLI tools.

@liamaharon thank you for your prompt reply.
Let me try to answer point by point

We believe that the current implementation of Sandox within a browser actually adds versatility, as later it can be easily wrapped into a PWA or Electron, thereby creating a full-fledged desktop application. Moreover, if we come to a planned feature like storing a project source code straight on the blockchain (naturally encrypted), and allowing users/developers to access projects with authorization through a private key, adding an ability to work without device dependency will be a logical step forward.

The conceptual distinction of Sandox from other well-known IDEs is to tailor it specifically for working with blockchains and hence isolate plug-in code execution with an ability to use each other through a plug-in API. Additionally, our goal was to enable expanding IDE capabilities by writing plug-ins in any language - a sum of capabilities we did not find in any other IDE.
We’ve explored a possibility of forking existing IDEs, but for various reasons, they didn’t suit - partly due to legacy code presence and mostly because some functionality was deeply embedded in the core, making necessary changes too drastic. Therefore, starting from scratch seemed simpler.

We see several advantages:

  1. CLI lacks a user-friendly interface, making many tasks inconvenient or sometimes impossible, especially when developing user-facing applications with a UI. Also, not everyone finds it convenient to use command-line utilities - this is one of the reasons why, we assume, MetaMask is used by far more people than Geth, despite the last one has many more capabilities. In our vision, Sandox will provide a simple and easy API for creating any functionality. For instance, one plugin could facilitate blockchain connection and chain selection, while another plugin, through its API, could utilize the established connection to any blockchain and provide the necessary UI rendering if needed.
  2. It’s much easier to open a single IDE and explore various features through intuitive interfaces than to locally install all the necessary tools and learn how to use them. We understand, there will be a need for some sort of “marketplace” where programmers can view all available tools/plug ins. Moreover, Polkadot has lists of projects but lacks detailed descriptions and reviews and one of our thoughts on future milestones is some sort of examples libraries (e.g. a library of polkadot.js code examples with automated creation of projects / templates / example files). We think, this could be extremely useful as every developer needs to go through all these projects and understand what will actually be useful for his/her entire project development.