Application to Join the Polkadot Technical Fellowship - Josep M Sobrepere

18d ago
0

Background

I'm Josep M Sobrepere (@josepot), a software engineer based in Barcelona. I have been contributing to the Polkadot ecosystem since September 2021, when I joined Parity Technologies to work on substrate-connect and smoldot.

In early 2024, I left Parity to found Streamsphere Labs, a small company (3 people) dedicated full-time to the Polkadot ecosystem. Streamsphere Labs is the team behind Polkadot-API (PAPI), which has been continuously funded by the Polkadot Treasury since February 2024.

Motivation

I have spent the last ~5 years building the libraries and infrastructure that Polkadot developers rely on daily. Joining the Fellowship is a natural next step: it gives me a formal role in the technical governance of the protocol I am already deeply committed to, and ensures that the developer-facing layer of Polkadot evolves in step with the core protocol. I want to contribute more directly and consistently to Polkadot's technical evolution, not just by building the tools that consume the protocol, but by helping shape the protocol itself.

Areas of Interest

  • JSON-RPC interface specification: I have been one of the primary consumers and co-designers of the new JSON-RPC spec, raising issues, proposing changes, and contributing fixes that shaped the current API surface.
  • Light-client infrastructure: building dApps and libraries that treat the light client as a first-class runtime environment, reducing ecosystem dependence on centralized RPC providers.
  • Transaction and extrinsic formats: the boundary between the application layer and the runtime, including wallet interfaces, signed extension handling, and Extrinsic V5 adoption.
  • Developer tooling: type-safe, metadata-driven APIs that make it substantially easier to build correct, chain-agnostic applications on Polkadot.

Contributions

Polkadot-API (PAPI)

Primary author and technical lead - github.com/polkadot-api/polkadot-api

PAPI is the officially recommended successor to polkadot.js for building dApps on Polkadot and Substrate-based chains. I conceived, architected, and built PAPI from scratch while at Parity, and have continued leading its development full-time since founding Streamsphere Labs. Key design decisions I made:

  • Light-client first: built on the new JSON-RPC spec to natively support smoldot, dApps no longer need a trusted RPC provider.
  • Metadata-driven type generation: all TypeScript types are generated from on-chain metadata, making the API inherently chain-agnostic and runtime-upgrade-aware.
  • Modular architecture: libraries are composable and tree-shakeable, keeping bundle sizes under 50 KB.
  • Observable + Promise dual API: both reactive (RxJS) and async/await interfaces with shared internals.

The library has shipped 118+ releases, has 1,326 commits, and is used across the ecosystem by wallets, dApps, and tooling teams. It was transferred from Parity Technologies to the independent polkadot-api GitHub organization in February 2024.

Presented at Polkadot Decoded 2024: "Build a Modern dApp with Polkadot-API", youtube.com/watch?v=fj63gYJmuIk

JSON-RPC Interface Specification

Active contributor and co-designer - github.com/paritytech/json-rpc-interface-spec

As the primary implementer of the new JSON-RPC spec in PAPI, I identified issues and gaps in the spec itself and contributed fixes and proposals back upstream. Selected contributions:

  • #80: transaction: add searched event
  • #76: explicit guarantees on the finalized event of submitAndWatch
  • #65: fix: inaccessible event on chainHead_unstable_call
  • #129: fix: rpc_methods return value
  • #169: fix: archive_v1_storage wrong reference
  • Multiple RFCs and design issues: batching storage requests (#47, #48), chainHead_unstable_unpin accepting multiple hashes (#46), stop event semantics (#86), system_accountNextIndex alternative (#156)

These contributions came directly from building PAPI against the spec and discovering ambiguities or missing guarantees that would otherwise cause subtle client bugs.

createTransaction RFC: Wallet Interface Redesign

polkadot-js/api#6213

I authored a detailed RFC proposing createTransaction as a forward-compatible replacement for the signPayload interface used by all Polkadot wallet extensions. The core problem: signPayload predates Metadata V14, cannot support custom signed extensions, and breaks with every non-trivial chain upgrade (e.g. CheckMetadataHash, Extrinsic V5). My proposal defines a TxPayloadV1 structure that passes complete metadata and extension definitions, making it resilient to protocol evolution and compatible with both online and offline signers (hardware wallets, browser extensions).

This RFC has driven ecosystem-wide discussion around the wallet/dApp boundary and is informing how the extension communication protocol evolves.

substrate-connect

Significant contributor: github.com/paritytech/substrate-connect

During my time at Parity I made numerous contributions to substrate-connect, the browser extension and library that enables light-client connections for dApps. Selected PRs:

  • #909: remove createPolkadotJsScClient (API simplification)
  • #835: improve healthChecker API
  • #787: improvements and fixes on the Polkadot RPC Provider
  • #836: fixes usage in Node.js environments
  • Multiple dependency upgrades, CI improvements, and smoldot version bumps

smoldot

Contributor: github.com/paritytech/smoldot

  • #1710 smoldot light improvements: fixed TypeScript definition mismatches (downstream projects like substrate-connect were forced to use any types as a workaround) and standardized client.terminate() behavior between Node.js and browser environments, fixing memory leaks and race conditions.
  • #2171 fix: improve error handling on the browser
  • #2019 add name property to smoldot-light errors

polkadot-fellows/runtimes

  • #1117 Use chain-specific ExtrinsicBaseWeight in fee constants. A subtle but important correctness fix: the runtime was using a generic constant that didn't match the value in System.BlockWeights.per_class_normal.base_extrinsic, causing discrepancies in fee calculation tools. Merged March 2024.

polkadot-sdk

  • #7959 Treasury: update expire date on payout. Fixes the payout.expire_at field to reset with PayoutPeriod on each valid payout attempt.

Treasury-Funded PAPI Development

Since February 2024, PAPI has been fully funded by the Polkadot Treasury through a series of referenda. Starting with a modest 2-month proposal, we progressively earned the community's trust by consistently over-delivering and growing the library from early beta to the de-facto standard for Polkadot application development.

Contact

  • GitHub: github.com/josepot
  • On-chain address: 15roJ4ZrgrZam5BQWJgiGHpgp7ShFQBRNLq6qUfiNqXDZjMK
Applicant
Reply
Up
Share
Comments