1.0 Release Web3.js
The goal of this Medium post is to announce the 1.0 release, to give deeper insights into the development process, to explain the Web3.js team and to show what’s planned next.
What’s happened since the last announcement?
The newly introduced architecture (1.0.0-beta.38) of Web3.js is under active development and is improving day by day. We have implemented the possibility to pass a custom transaction signer, to configure the transaction confirmation workflow, new modules (Admin, TxPool, Miner, Debug), and some new methods for the Eth module (getChainId, requestAccounts, getPendingTransactions). To allow the new architecture to succeed, we’re allowing breaking changes by moving this work to a 2.0-alpha version of Web3.js. Because version 1.0.0-beta.37 is widely used and to allow bug fixes for them, we’ve decided to define beta.37 as v1.0. This gives us the possibility to enable bug fixes for the old architecture of Web3.js while co-existing peacefully with the new and exciting 2.0-alpha architecture.
In Numbers:
📝 1486 commits
🔧 244 fixed issues
🏆 ~135000 lines of code added and ~165000 removed
1.0 Release:
The decision to split the new and old architecture up was made jointly with Truffle, OpenZeppelin, Nomic Labs and Embark.
The reason for this was that many projects were relying on the internal architecture and some other undocumented possibilities of the Web3 code-base. This invisible dependency on the Web3 code architecture made it impossible for some projects to update to the latest version of Web3.
The projects mentioned above will now support the Web3 project while maintaining and providing patches for the 1.0 code base. The new architecture with the old API layer can be used with downloading version 2.0-alpha from npm but be aware of the potential breaking changes 2.0 will have. Version 1.0.0-beta.55 as it is won’t be released as a stable version.
Organization between all the contributors:
- There are two new labels 1.0 and 2.0.
- There is an additional project in the GitHub repository for managing v2.0 related tasks.
- A changelog markdown file is existing.
- A pull request requires two approvals and has to be merged from a code owner (@nivida).
- Releases for the 1.0 version can be triggered by creating a release pull request that we’ve started.
New Contributors with extended access rights:
- Santiago Palladino (OpenZeppelin)
- Patricio Palladino (Nomic Labs)
- Iuri Matias (Embark)
- G. Nicholas D’Andrea (Truffle)
A BIG thank you to Truffle, Embark, OpenZeppelin, and Nomic Labs for supporting the Web3.js project! 🙏
Team
Recent Ethereum Foundation changes brought some changes to the Web3.js project. The first approved additional hiring from EF is currently not possible because of the way EF is allocating their funds in the foundation-wide budget. Namely, Ethers, EthereumJS, and Web3 will together have a fixed budget to guarantee the base funding of these projects and to improve the collaboration between them, rather than individually approving additional hires.
To guarantee the success of the Web3.js project we do still require a new developer hire. This means that we are open to any additional support and it would be great to work more closely together with the community to bring the Web3.js project to the next stage. For anyone interested in becoming more involved in the on-going process, feel free to contact Samuel Furter or create a GitHub issue with your idea here.
2.0 First Insights:
We will be able to re-use all existing core modules from the new architecture for 2.0. Most work will be focused on exporting methods as single methods, bringing folders together, writing the documentation, implementing the context handling, and adding the new wallet module.
We will start working on 2.0 from today on by creating a specification for the Web3 architecture and writing the first POC’s. The specification will give the community the possibility to be involved in the planning processes of the new architecture and public API of v2.0.
These are the topics we need to specify:
- Architecture
- Types
- Quality Assurance
- Public API
- Security Concept
The Web3.js team will publish the initial specification of version 2.0. The specification will be served and managed by a public GitHub repository. Further details will be announced in a separate Medium blog post.
The current base idea of the Web3.js Team for a possible 2.0 public API:
Thanks for reading the announcement and feel free to support the on-going development processes of the Web3.js project! 🙏