completed

Oura v2

$44,640.00 Received
$44,640.00 Requested
Ideascale logo View on ideascale
Community Review Results (1 reviewers)
Impact / Alignment
Feasibility
Auditability
Solution

We'll assign a fixed development bandwidth to develop a new version of Oura that incorporates new features, improves performance and evolves the event model.

Problem:

Adoption of the open-source project "Oura" has increased and new feature / issues are being requested. Extra development bandwidth is required to add new features and keep up with code maintenance.

Yes Votes:
₳ 195,603,836
No Votes:
₳ 22,647,587
Votes Cast:
568

This proposal was approved and funded by the Cardano Community via Project F9: Developer Ecosystem Catalyst funding round.

[IMPACT] Please describe your proposed solution.

Oura v1 has received good level of adoption judging by the activity on the Github repository. High-profile projects are using Oura either as a base library or to fulfill specific data integration roles within their infrastructure.

Project maintainers have managed to complete most of the development roadmap initially defined and have kept the codebase updated with required bug-fixes and upstream changes.

Regardless of this effort, we have identified, with the help of the community, several improvements that would require a high-level of dedication:

  • Improve chain-sync performance by incorporating a new concurrency model at the multiplexer level. We expect at least 5x speed improvement in node-to-client connections.

  • An overhaul of the event data model that focuses on less type of events and more nested structures, allowing consumer to process the full Tx payloads.

  • A new type of filter / sink that allows user to run custom code by providing WebAssembly file. This will allow integrators to integrate their downstream services without the need of a broker.

  • New sinks that integrate directly with stream-processing services from Azure cloud provider.

  • Finalize the ongoing effort to include new sinks that integrate directly with stream-processing services from Google Cloud Platform, such as PubSub and Cloud Functions.

  • A new Kafka data source that would allow integrators to consume event from topics already populated with chain data. This opens the possibility to execute several Oura instances consuming from a single Kafka topic, without the need for a direct connection to the Cardano node.

  • A new AWS S3 data source that would allow Oura to read from a pre-populated bucket of raw block data. This is useful for workloads that require to traverse the whole history without impacting on the performance of their Cardano node.

    [IMPACT] Please describe how your proposed solution will address the Challenge that you have submitted it in.

Adding the described features to Oura will provide new data integration options. Having new tech-stacks and services integrated with Cardano data will widen the spectrum of tools available, improving the chances for developer adoption.

Improved performance and data model will open up the possibilities for new use-cases.

[IMPACT] What are the main risks that could prevent you from delivering the project successfully and please explain how you will mitigate each risk?

Our experience developing Oura v1 allows us to estimate the LoE for this proposal with a high level of accuracy. Regardless of this advantage, there are some known-unknowns that could present a risk:

  • Our development methodology is driven by community feedback. Committing to a strict and specific set of features in advance might limit the capacity to adapt to feedback during the development phase.

  • Proposed changes require breaking compatibility at the config, data and library levels. Communicating and supporting the existing Oura users during the migration to the new version will require effort. Estimating this effort is very difficult on an open-source project without strict knowledge of the existing implementations.

    [FEASIBILITY] Please provide a detailed plan, including timeline and key milestones for delivering your proposal.

Milestone #1: Data Model / Performance

  • 1 month development
  • 1 full-time Rust developer
  • 1 part-time technical writer
  • Deliverables
  • Oura v2.0
  • Performance improvements
  • Data-model overhaul
  • Updated docs

Milestone #2: New Sinks

  • 1 month development
  • 1 full-time Rust developer
  • 1 part-time technical writer
  • Deliverables
  • Oura v2.1
  • WebAssembly Sink
  • Azure Sink
  • GCP Sink
  • Updated docs

Milestone #3: New sources

  • 1 month development

  • 1 full-time Rust developer

  • 1 part-time technical writer

  • Deliverables

  • Oura v2.2

  • S3 Source

  • Kafka Source

  • Updated docs

    [FEASIBILITY] Please provide a detailed budget breakdown.

Hourly rates:

  • Rust Developer: 75 usd / hs
  • Technical Writer: 36 usd / hs

Required Hours:

  • Rust Developer: 480 hs
  • Technical Writer: 240 hs

Total Budget:

  • Rust Developer: 36,000 USD

  • Technical Writer: 8,640 USD

    [FEASIBILITY] Please provide details of the people who will work on the project.

Santiago Carmuega will lead the software development effort. He is a senior developer with over 20 years of experience in software development and very active in Cardano Open Source ecosystem leading TxPipe.

Github: https://github.com/scarmuega

Twitter: https://twitter.com/santicarmuega

Lucas Rosa will contribute with the software development. He is a senior engineer with a diverse technical background and a passion for compilers. In addition to building toy languages he spent over a year helping build Roc a new functional programming language targeting backend development inspired by Elm.

https://github.com/rvcas

https://twitter.com/rvcas

Florencia Luna will be in charge of the technical writing. She is a junior developer with experience in technical writing.

[FEASIBILITY] If you are funded, will you return to Catalyst in a later round for further funding? Please explain why / why not.

If the project continues to gain adoption we plan on returning to get funding to implement a 3rd iteration of new features and improvements in response to community requests.

[AUDITABILITY] Please describe what you will measure to track your project's progress, and how will you measure these?

Progress of the project will be measured by released versions matching the scope of the predetermined milestones.

  • A detailed roadmap will be presented as part of the open source repository.

  • Each milestone will be presented as a partial but working "release" within the repository

  • Milestone and tasks will be tracked via Github using their project management tool.

  • Direct communication with the development team will be able through TxPipe's Discord server.

  • Weekly update summaries will be posted via TxPipe's Twitter account.

    [AUDITABILITY] What does success for this project look like?

Projects within the Cardano ecosystem continue to use Oura to integrate their data pipelines, community around the tools grows and the new features receive good feedback.

[AUDITABILITY] Please provide information on whether this proposal is a continuation of a previously funded project in Catalyst or an entirely new one.

This is an entirely new proposal.

Community Reviews (1)

Comments

Monthly Reports

This is our 1st report. Since we've started the development process, we've completed the following tasks:

  • Adjusted branching strategy for co-existence of v1 and v2 in same repo
  • Migration to new SEDA based architecture (WIP)
  • Re-organization of mapper stage as an optional concern at the end of the pipeline
  • Refactor of the daemon binary entry point to new pipeline
  • Incorporation of a new TUI option for progress reporting
Disbursed to Date
$44,640
Proposal
Oura v2
Status
Still in progress
Completion Target
2. In the next 3 months
Comments 0

Login or Register to leave a comment!

This is our 2n report. Since our last report, we've completed the following tasks:

  • Implemeted a new multiplexer comonent that works as an independent stage, improving concurrency and overal performance.
  • Refactored the existing chain-sync stage so that it works with the new multiplexer.
  • Refactored the existing block-fetch stage so that it works with the new multiplexer.
  • Introduce tracing mechanisms for asynchronous, structured log replacement
Disbursed to Date
$44,640
Proposal
Oura v2
Status
Still in progress
Completion Target
2. In the next 3 months
Comments 0

Login or Register to leave a comment!

close

Playlist

  • EP2: epoch_length

    Authored by: Darlington Kofa

    3m 24s
    Darlington Kofa
  • EP1: 'd' parameter

    Authored by: Darlington Kofa

    4m 3s
    Darlington Kofa
  • EP3: key_deposit

    Authored by: Darlington Kofa

    3m 48s
    Darlington Kofa
  • EP4: epoch_no

    Authored by: Darlington Kofa

    2m 16s
    Darlington Kofa
  • EP5: max_block_size

    Authored by: Darlington Kofa

    3m 14s
    Darlington Kofa
  • EP6: pool_deposit

    Authored by: Darlington Kofa

    3m 19s
    Darlington Kofa
  • EP7: max_tx_size

    Authored by: Darlington Kofa

    4m 59s
    Darlington Kofa
0:00
/
~0:00