Skip to content

Proposal: Modularize MasterDnsVPN into composable building blocks #172

@fortuna

Description

@fortuna

Thanks for your work on MasterDnsVPN! I'm reaching out because I see a lot of potential in the capabilities you've built, but the current monolithic architecture makes it difficult for the broader community to reuse or mix-and-match them.

In my recent talk at SplinterCon (From Gourmet Tools To Self-Serve Building Blocks), I discussed how our ecosystem needs to transition from monolithic "gourmet" tools to self-serve, composable capabilities. Currently, MasterDnsVPN conflates multiple distinct jobs, which limits its reusability.

A few specific thoughts on how separating these concerns could help:

  • Extracting the Routing Logic: The load balancing, multi-path, and adaptive routing seem to be core features. In our taxonomy, these is the "Choose" capability. If built as standalone components with common interfaces, they could easily be applied to other systems.
  • Separating Carry vs. Relay: The README's support table entries for SOCKS5 and Shadowsocks alongside DNSTT are a bit confusing. Architecturally, SOCKS5/Shadowsocks act as standard "Relay" mechanisms, whereas DNSTT is a reverse proxy functioning as a "Carry" mechanism. Keeping these strictly separated means you don't need to invent custom protocols or reinvent cryptography for the outer layer. You can swap the Carry and just use a standard Relay.
  • Design for Composability: By adopting the Single-Responsibility and Open-Closed principles—such as using dependency injection rather than tightly coupling components—the project could become a set of powerful, independent tools.

If you are open to splitting this into reusable components, we would love to feature them in the Outline Community Components Registry: https://github.com/OutlineFoundation/awesome-outline.

Let me know what you think!

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions