xxB-2024-002: Matrix<>XX Network Chat Bridge Implementation

Bounty xxB-2024-002: Matrix<>XX Network Chat Bridge Implementation

Overview

This bounty rewards developers for implementing a bridge between Matrix and the xx network chat protocol, enabling seamless communication between the two networks. The implementation will be done in Go, utilizing the xxDK client library and gomatrix or equivalent library.

Prize Pool

Total Prize: 750,000 xx (~$37,500 USD)

Breakdown:

  • Milestone 1 - XX Network Chat Recording: 200,000 xx
  • Milestone 2 - Matrix Proof of Concept: 250,000 xx
  • Milestone 3 - Full Matrix Relay: 300,000 xx

Requirements

Eligibility

  • Participants must complete KYC verification
  • Participants from OFAC-sanctioned countries are not eligible
  • Multiple contributors may collaborate on submissions
  • Existing xx network contractors are eligible, but will not be permitted to be part of the curator process.

Technical Requirements

  1. Milestone 1 - XX Network Chat Recording
  • Implementation of chat message capture using xxDK
  • Message storage and indexing system
  • Support for group and direct messages
  • Message format conversion preparation
  • Complete documentation and test coverage
  1. Milestone 2 - Matrix Proof of Concept
  • Basic Matrix server integration using gomatrix
  • One-way message relay (xx network → Matrix)
  • Basic user mapping system
  • Simple room/channel mapping
  • Proof of concept documentation
  1. Milestone 3 - Full Matrix Relay
  • Bidirectional message relay
  • Complete user identity bridging
  • Full room/channel synchronization
  • Media file handling
  • Message formatting compatibility
  • High availability deployment support
  • Production-ready documentation

Implementation Requirements

  1. Technology Stack:
  • Go programming language
  • xxDK client library from git.xx.network/elixxir/client
  • gomatrix library
  • PostgreSQL or similar for message storage
  1. Features:
  • User identity copying that makes sense for our use case
  • Room/channel mapping
  • Message format conversion
  • Media file handling (mark it or link it)
  • Error handling and recovery

Submission Requirements

  1. Source code must be:
  • Open source (same license as xxDK preferred, BSD 2 Clause)
  • Submitted via merge request to appropriate repository or as a new repo
  • Well-documented
  • Include tests, Passing all tests
  • Following Go best practices and project standards
  1. Documentation must include:
  • API reference
  • Deployment guide
  • Configuration guide
  • Example deployment
  • Build/installation instructions
  • Operation manual

Judging Criteria

Submissions will be evaluated on:

  1. Completeness of implementation
  2. Code quality and maintainability
  3. Documentation quality
  4. Test coverage
  5. Performance and scalability
  6. Security considerations
  7. Ease of deployment

Timeline

  • Submissions accepted until completed or program ends
  • Reviews will occur within 2 weeks of submission
  • Prizes paid within 30 days of approval

Payment Terms

  • Prizes paid in XX tokens
  • Multiple submissions may split prize pool
  • Major awards (>50,000 XX) subject to 6-12 month linear vesting
  • All payments subject to KYC approval
  • Partial payments may be made at discretion
  • Payments may be locked in a linear vesting schedule for up to 1 year

Contact

Submit questions and proposals through:

  • Repository issues
  • Developer forum
  • Developer chat channels

Please respond in the forum if you are pursuing this bounty.

Legal

  • xx network reserves right to modify bounty terms
  • All submissions must comply with applicable laws
  • Participants retain rights to submitted code under project license
  • xx network not responsible for lost or invalid submissions
1 Like

I’m not very familiar with Matrix, but gomatrix doesn’t look maintained, at least at that link. mautrix/go looks actively maintained with 421 stars & last release 4 days ago, not sure if there are others.

1 Like

Good point, we added or equivalent library to it as the hard requirement is only that it be go native for the xxdk.

1 Like