Closed mikeseese closed 6 years ago
Hi Mike, thanks for the feedback.
There are other reasons for porting over just keeping accurate type information. The main issue for me was the very large assets that were produced by webpack with web3.js due to the package structure / dependencies and lack of ES6 module support. There is a branch in web3.js for ES6 support but it appears to be stale and/or incomplete.
Digging into the code for web3.js reveals it's written in a style reflective of JavaScript development of about 5 years ago. Things have come a long way since then. The truth is I feel web3.js has accumulated a degree of technical debt that will hinder rapid development in the future. I intend to maintain this project to a degree that should satisfy any web3.js user, and of course it's open source so anyone else can contribute. Working with blockchains requires the highest degree of safety, and that includes in client libraries that should be easy to analyse, reason about, and modify. I quickly ran into my own issues with web3.js, namely size, synchronous scrypt calls, confusing code paths and api decisions I wasn't fond of, this is the result.
I will maintain a degree of API alignment with web3.js, to ensure any web3.js adopter can port to web3x without too much pain, but I will also be treating this as an independent development project that can make it's own API decisions and go in it's own direction. It's good to have choices after all. The other main library I've seen written in typescript is ethers.js (which ironically both web3.js and web3x are dependent on), however it's API is significantly removed from that of web3.js so there is no easy porting solution for existing projects.
Who knows, maybe with enough traction this project and web3.js can unite, or this project could join the ethereum organisation.
Great response! I'll keep my eye on this project
This is awesome work! However, I can't really use this as I rely on the support of the existing Web3 team; this repo will likely not port every commit and release, and isn't part of the main
ethereum
organization.Part of your 'why' in the readme is that the typings are not perfect. Why did you vote for porting all of Web3 to TypeScript instead of improving the existing DefinitelyTyped web3 typings (which in my mind is a pretty standard to get typings for several repos)? I totally get it if you just wanted to do this project for funsies, but I want to make sure the community at large benefits from your awesomeness as much as possible.
Will you be contributing to the DefinitelyTyped bindings as well to get those up to speed with your "lessons learned" from creating this port?
Thanks!! Also, thanks again for making this awesome port; I wish it was something I could use.