Why is your project important?
web3.py is the standard for interacting with the Ethereum blockchain for Python developers. The open source library garners well over one million downloads per month and underpins many Python developer tools, including the Ape and Brownie development frameworks. web3.py-adjacent libraries, including py-evm, are dependencies in the Vyper/Titanoboa development stack.
More broadly, we value language diversity within Ethereum tooling, and believe the path to mass adoption requires meeting developers where they are. The web3.py API, documentation, blog, and reference repos place high priority on approachability for anyone comfortable with Python.
Milestones Achieved
- This month, we’ve released the first beta versions of the next major version, v7, which includes vastly improved asynchronous providers, a redesigned middleware API, and a long list of smaller breaking change UX improvements.
- Well over one million web3.py PyPI downloads per month
- Over 200 pull requests merged into web3.py in 2023
- 22 web3.py releases in 2023
- GitHub reports web3.py is a dependency of over 18k repos and 800 packages
- Designated as a “critical” project in PyPI - the project is in the top 1% of downloads over the prior 6 months.
Roadmap and Future Goals
- Work continues on v7 as we iterate towards the stable release in Q2.
- Benchmarking and performance improvements are a priority this year, particularly within py-evm.
- Research spikes on UX improvements to support L2 usage, account abstraction, and the Portal Network, as a few examples.
- Continuing a steady stream of ecosystem support, documentation upgrades, tutorials, hackathon starter kits, and so on.
- Additional context available in the roadmap.
Funding Sources and Goals
Today, the Ethereum Foundation covers the salaries of those maintaining web3.py and adjacent Python libraries. We’ve also benefitted from Drips including web3.py in their Octant Drip List in previous Epochs.
In the long term, the Ethereum Foundation seeks to gradually eliminate the ecosystem’s reliance on it for sustainability. We believe public goods funding protocols, such as Octant, will play an important role in supporting the continued maintenance of FOSS libraries like web3.py, eth-account, py-evm, and more that are stewarded by our team.
Team Information
Our team of five devs collectively has over 15 years of experience maintaining open source libraries within the Ethereum ecosystem, dating back to the Mist Browser in 2017.
Links
5 Likes
- Total Funds Received from Octant so far: 53.1 ETH
- Funds Spent: 53.1 ETH
- Detailed Utilization: The web3.py team maintains about a dozen open-source Ethereum Python libraries (e.g., web3py, eth-account, py-evm, eth-utils) and creates educational resources to promote the adoption of those tools. All funds received are distributed to the five full-time developers on the team.
Milestones and Deliverables
Recently updated team goals include: Aiding EIP implementation and testing
, Reducing UX friction
, and Educating and inspiring builders
. Broadly, our priorities are tasks that are in service of those goals.
- Milestone 1: Aiding EIP implementation and testing
- Description: Following a team retreat earlier this year, we identified that the biggest opportunity for us to make a meaningful impact in the ecosystem was to aid the EELS (execution specs) team in their pursuit of simplifying EIP implementation and testing.
- Research spike: Can eth-tester support EELS as a new back-end?
- Immediate Outcome:
- After much rabbit-holing, an experimental EELS back-end exists and passes the web3.py test suite. Polish and performance benchmarks remain.
- Milestone 2: Reducing UX friction
- Description:
- Spike: What private utilities within web3.py (and eth-utils) are useful and stable enough to expose publicly?
- Immediate Outcome:
- eth-utils received a major investment, exposing many previously private utilities and authoring a couple new ones. All methods are available within web3py, making life easier whenever needing to parse names, values, types, or function signatures from an ABI.
- Improved type support across many of our libraries. The common denominator, eth-typing, just had its stable v5 release.
- Milestone 3: Educate and inspire builders
- Description:
- Overarching goal is to build an “Ethereum Python Speedrun” workshop for Devcon, designed to help Python devs go from zero to hackathon participant.
- Immediate Outcome:
A couple of web3py-powered open source Python tools built in service of that goal:
- sneko - a clickable terminal application for compiling Vyper and Solidity contracts
- popupfaucet - an easy and reliable way for workshop hosts to offer testnet ether to attendees
- Karma Gap: https://gap.karmahq.xyz/project/web3py
Challenges
- Previous Challenges:
- Description: In general, prioritization. The industry moves fast and we try to balance bug reports, feature requests, network upgrades, research spikes, maintenance and moonshots. It’s not always obvious what should be next.
- Updates: During a team retreat, we brought in some additional ecosystem contributors to pick their brains about what they see as most important for the ecosystem and where we could step up.
- Resolution: It’ll always be a balancing act. We’ve identified some team goals to serve as North Stars, making it easier to evaluate whether a particular task is aligned with them. Another resolution was to explore how we could ease or accelerate the process of implementing and testing EIPs, resulting in the EELS collaboration.
- Lessons Learned: Its critical to regularly ask diverse ecosystem participants for their read on gaps and opportunities within Ethereum’s tooling and coordination layers. In short, stay connected, and find ways to routinely step back to view the wider picture.
Outputs and Outcomes
Outputs (Last Epoch):
- Output 1: Aiding EIP implementation and testing
- An experimental EELS back-end built and passing the web3.py test suite.
- Short-term Outcome: EELS team excited to collaborate and figure out next value-add for plugging the EELS back-end into web3py tooling, accelerate EIP implementation, and increase stakeholder confidence in changes to the network via improved testing.
- Output 2: Reduce UX Friction
- major improvements to ABI utilities
- lib releases:
- 3 web3.py v6
- 3 web3.py v7 (stable release set for 8/21)
- 1 eth-account
- 2 eth-utils
- 7 eth-typing
- Short-term Outcome: We’ve added 12 public utility methods for working with ABIs. While any metrics would be hand-wavy for this, we expect fewer ABI-related headaches reported in Discord and GitHub.
- Output 3: Educate and inspire builders
- A couple open-source Python repos, eventually supporting a Ethereum Python Speedrun workshop:
- sneko v1 - a clickable terminal application for compiling Vyper and Solidity contracts
- popupfaucet v1 - an easy and reliable way for workshop hosts to offer testnet ether to attendees
- Short-term Outcome: sneko included in Week In Ethereum, popupfaucet awarded 3rd place in Optimism’s “Just Improve It” category of the Superhack hackathon. Some buzz on socials.
Long-term Outcomes:
- A vastly more reliable and performant set of Python libraries over a steady set of releases, culminating in a stable web3py v7 release!
- While the PyPI downloads were regularly trending up, we’ve seen a …surprisingly large uptick over the last Epoch. For example:
- Traffic to the docs is down slightly month-to-month (13k visitors in July, down from 17k in March).
- No recent submissions of our feedback form on the docs.
Plans for Potential Funds Raised in the Next Octant Allocation Window
- Goal 1: Aiding EIP implementation and testing
- Description: 1) Research spike: coordinate with EELS team on reducing friction for the execution specs behaving as a dependency to other libraries. 2) Implement the EELS back-end, accessible via eth-tester.
- Expected Outcome: An EELS back-end enables EIP authors and researchers to gain significantly more confidence in their EIPs by testing against a mature Ethereum JSON-RPC test suite.
- Goal 2: Reduce UX friction
- Description: Introduce utilities for common contract and encoding/decoding use cases.
- Expected Outcome: Similar to the ABI utilities, this effort intends to smooth out common headaches (e.g., subscribing to logs for a contract event) in these additional domains by exposing stable private utilities and/or adding new ones.
- Goal 3: Educate and inspire builders
- Description: Build and deliver an Ethereum Python workshop designed to take Python developers from from zero Ethereum experience to hackathon participant.
- Expected Outcome: Empowering newcomers in the Python ecosystem and getting a better handle on their sticking points. Learnings can be used to update resources to smooth out rough edges and keep the flywheel going.
Other Funding
- Grant Funding Received Since the Last Epoch: None
- Other Non-Grant Funding Sources: EF salaries
Future Plans for Financial Sustainability
The web3.py team still has no plan to monetize its tools, create a token, or sell services. The team relies on the Ethereum Foundation for funding today, but that is not guaranteed in perpetuity. We see initiatives like Octant as integral to the long-term sustainability of these Python libraries and are grateful for your support of our work.
2 Likes
@wolovim Thanks for the awesome update and the detail you put in
You noted that traffic to the docs is down and no recent submissions on the feedback form. Maybe consider looking into why that’s happening. Is there a way to engage users more actively or gather feedback in other ways?
It’s an interesting topic since you also mentioned there being an uptick library downloads.
Anyway just a minor point. Appreciate the update and keep up the awesome work
2 Likes
thanks @mat7ias - good question, which prompted a good discussion internally. we’re going to broaden the scope of that feedback form a bit, then start surfacing it more often: blog posts, discord announcements, README, etc. we have done an annual survey the last couple years, but the hope for the indefinite form is to collect desires or frustrations while they’re still burning. we’ll see if those tweaks make a difference.
re: the docs data point, can only make guesses as to that lack of correlation between installs and docs hits. it might suggest one or more big operations coming online or a misconfiguration of some CI processes + resources to burn? we may never know for sure. we’ll keep an eye on the numbers over time.
1 Like