Polkadot.JS API UI enhancements
Introduction:
At LimeChain, we propose the introduction of an a number of new features for the UI of Polkadot.js API. We understand the pivotal role that developer tools play at the adoption of blockchain protocols, simplifying developers' workflows and leaving a positive impression on their experience with building on top of the protocol. As frequent users of the current application, we recognize its usefulness, but also see opportunities for improvement in UX and functionality.
We envision creating an application that serves as a daily tool for a wide range of users, including Hosts, Runtimes, Dapp, and Parachain developers. Our plan is to enhance the positive aspects of the existing application while addressing its shortcomings. For example, we aim to elevate the existing JS Console into a custom-tailored IDE for Polkadot.js API prototyping. By combining intuitive UI with cutting-edge yet reliable technologies, we aim to create a next-gen developer tools application for Polkadot.js API.
Key Features include:
Enabling seamless exploration of the Polkadot Ecosystem: The application will serve as the primary platform for developers to explore on-chain information across the entire Polkadot ecosystem, including blocks, chain state, referenda, xcm, and more.
Introduction of an integrated IDE for Rapid Prototyping: Users will be able to create quick proof of concepts within the browser tab, with pre-loaded dependencies tailored to their requirements, facilitating a complete Polkadot experience.
The application will be designed with adaptability in mind, ensuring longevity and adaptability as the Polkadot ecosystem evolves over time. The codebase will be open source under the Apache 2.0 license and contributed as repositories to the Polkadot-js GitHub organization.
We outline the following milestones for our project:
- Polkadot.js API Sandbox IDE: Create an integrated development environment for Polkadot.js API prototyping.
- Real-time Block Explorer: Develop a tool for real-time exploration of blockchain data.
- Chain State, RPC, and Runtime Calls: Handle various types of calls related to chain state, RPC, and runtime operations.
- Polkadot.js API Support: Dedicate time to address high-priority issues in the Polkadot.js API ecosystem.
For a detailed description of our proposal, please visit: Proposal Document
Company Background:
LimeChain is a software development company founded in 2017. We are positioned to handle end-to-end product development, and we have the capability to manage projects from conceptualisation and design to the complete implementation of a certain product. We specialize in blockchain technology, with emphasis in developing blockchain-related and infrastructure solutions.
In the context of the Polkadot ecosystem, we possess considerable expertise in developing various tools, including
Gosemble, a framework for building Substrate compatible Runtimes in Go,
Fruzhin, a Host implementation in Java, a framework for runtimes in AssemblyScript, a framework for runtimes in AssemblyScript. On top of that, we have implemented a
Comments (8)
The current status of Polkasot.JS is that it is somewhat in maintenance mode owing to Jaco stepping back from it, with the focus being on bugfixes and necessary changes to keep it working.
One of the reasons for it being less actively developed is that it may prove difficult to port PolkadotJS to use the new JSON-RPC APIs that you mention in milestone 5 (https://github.com/paritytech/json-rpc-interface-spec/). Eg see this post: https://forum.polkadot.network/t/new-json-rpc-api-mega-q-a/3048. As such, new libraries like Polkadot-API are being developed which focus much more on using the new RPCs and being light client friendly (ie https://github.com/polkadot-api/polkadot-api).
With this in mind, there are a couple of potential issues that I'd like to raise:
One option might be to first attempt to port PJS API library to using the new APIs (which we are still in the process of stabilising). If this is attempted early on, then we will learn whether it's viable before building additional things on top of it.
Another option might be to fork or rework the PJS UI to use a library like PAPI instead, which is built on top of the new RPC methods and will accomodate changes to them as they stabilise. Then you have some future proofing.
A final option might be to start from scratch and build a new UI from the ground up on top of PAPI and related libraries.
In any case, I'd love to know your thoughts on this all :)
Hello @jsdw ,
Thank you for reviewing our proposal and the provided feedback!
As far as we know, there’s currently somebody working on stabilising and improving Polkadot.JS API (https://forum.polkadot.network/t/polkadot-js-moving-forward/6235). As for it, it currently doesn’t make sense for our team to lead the maintenance of Polkadot.JS API tooling. However, if that’s needed, we believe that we have the experience, track record and knowledge to do that. That’s why we’ve dedicated time in the proposal to contribute to Polkadot.JS API.
Migrating to using the new JSON-RPC API will certainly pave the path forward to other projects doing the same. Porting to the Polkadot-API you’re working on is certainly one way to do that and will probably happen in the future. As mentioned in the proposal, we’ll be working with extensibility in mind, and using Polkadot-API will certainly be in the back of our mind while coding. However, we’re not sure if we can rely on it for the initial implementation as it’s still in the early phases of development, judging from the README about documentation coming soon.
We’re open to discussing the integration of tooling like Polkadot-API inside our projects, as one of our main ideas, also highlighted in the proposal, is to provide users/developers with the best DX and UX possible.
Regards,
LimeChain team
Hi thanks for submitting this proposal. Could you provide what developer feedback you collected lead you to propose such milestones?
I have not talked to anyone in the polkadot devleoper ecosystem that expressed the need for a "Polkadot.js API Sandbox IDE", nor do i believe there is a need for one.
In addition for a "Real-time Block Explorer", we already have tools like Subscan.
https://www.subscan.io/
For "Chain State, RPC, and Runtime Calls", this is something the polkadotjs ui already supports so I don't seem the problem here.
With regards to "Polkadot.js API Support", I support what James wrote.
Hello @rryan ,
Thanks for the feedback!
The source of developer feedback we have is our team’s experience in building Fruzhin (Java Host) and Gosemble (Go Framework for building Substrate Runtimes). We frequently use Polkadot.JS API UI to help us test, troubleshoot and demonstrate newly added features. Additionally, we’re addressing a RFP regarding the developer console. Finally, this post is also about collecting developer feedback, we’re open to adjusting the proposal, based on it.
We believe that with this project, we can deliver a better DX and UX. Alternative implementation is a core concept for a decentralized protocol like Polkadot, which is why Polkadot-API will be a successor to Polkadot.JS API that looks to comply with the new JSON-RPC interface. Similarly, our project is a successor to the original Polkadot.JS API UI, aiming to improve its capabilities by first providing users with features they’re already familiar with. To demonstrate our ability to deliver such a project, we’ve reserved the distinguishing features for a follow-up proposal. After establishing a solid foundation, we have many ideas for distinguishing features.
Our initial proposal focuses on improving the DX and UX by creating a user-first design that’s easy for developers of all types to use. This approach is consistent with all the current pages in Polkadot.JS UI, aiming to lower the entry barrier for new developers and increase productivity for existing ones. Our first milestone will be to work with our designer to create such an application design. The first distinguishing feature we plan to introduce is transforming the JS console into a fully-fledged IDE for prototyping. As mentioned, we intend to follow this with more exciting features that will be communicated and aligned with the community and technical people.
Some of them are:
Regards,
LimeChain team