gammazero / nexus

Full-feature WAMP v2 router and client written in Go
MIT License
266 stars 58 forks source link

Design goals for next major revision of nexus #315

Open gammazero opened 5 months ago

gammazero commented 5 months ago

Draft issue to collect ideas to consider for next major update

Motivation

Nexus was written years ago and has accumulated features and interfaces to support an evolving standard. Now that the WAMP specification is much more mature and stable, nexus could be given a more unified and modernized code base. This would involve changes to many APIs to improve usability and consistency, and updates to the core code to improve performance and scalability. Additional interfaces for metrics could be provided as well.

This new version would make nexus a current, full-featured, and valuable provider of WAMP protocol functionality.

Goals / Ideas

Simplified APIs

Performance

Durability

Router Scalability

Metrics interface

Core reorganization

Major Version Update or New Project

Such features will require breaking changes and code reorganization. This could be done as nexus v4.0.0, but may be better done as a new project/repo. Advantages of a new project:

A disadvantage of a new project/repo is possible confusion about what project is the most current nexus (or whatever it is called), but that can be addressed with clear documentation in the repo README.md. Another problem is the many pieces of code and documentation in the world that refer to the nexus repo that will need to be updated.

KSDaemon commented 5 months ago

Hehey! @gammazero Glad to hear from you!) Great idea! I support this!

My first comments are related to the new project/repo/version:

gammazero commented 5 months ago

@KSDaemon Thank you for the feedback. You make good points about keeping the same repo, so I am happy to do that. Even though changing import paths to "github.com/gammazero/nexus/v4/..." seems annoying, it is there for a reason. I would also prefer to develop in public, and we may even get some help/interest if people see the development happening.

I think that the next step is to create a set of more detailed development tasks, determine how important they are, and decide how best to order them. I am planning on starting that by creating a top level v4.0 issue containing a tree of child issues, and then dividing those into child issues. Comments on these issues may be a good way for the world to suggest more general changes to the project.

KSDaemon commented 5 months ago

@gammazero Yeah! Good idea! I'd be happy to participate as much as I can in that!