tomaswolf commented on issue #564:
URL: https://github.com/apache/mina-sshd/issues/564#issuecomment-2254142413

   For 3.0.0, I have quite a few things that I'd like to do:
   
   * Break API big style :-) Seriously. There are a things in the list below 
that just cannot be done without breaking API.
   * Undo that awful sshd-common/sshd-core split. Instead, have 
sshd-common/sshd-client/sshd-server, _without split packages_. Make then all 
three proper OSGi bundles, and drop the sshd-osgi re-amalgamation.
   * A similar split might make sense on SFTP level 
(sshd-sftp-common/sshd-sftp-client/sshd-sftp-server).
   * Change the session initialization. Sessions should _not_ initiate 
communication in their constructor! Have an explicit `start()` method instead, 
and make sure it's called at an appropriate time.
   * Have a mechanism to configure a session after it has been instantiated, 
but before it starts. (Other than global properties on the SshClient!) There 
needs to be a simple way to configure sessions individually right after they 
have been created.
   * Refactor the SSH protocol implementation. It's a mess IMO, split over 
various levels of inheritance, which just feels wrong. Use composition instead. 
Give each session a filter chain. Implement the transport layer as a filter in 
that filter chain. Implement the authentication protocol as a filter atop. 
Implement the connection protocol atop. A callback from transportation layer to 
connection layer will be needed to handle getting "unsupported" replies 
(transport layer) to unknown global requests (connection layer).
   * Implement client-side proxy protocol (SOCKS, HTTP CONNECT) as a filter 
that can be inserted beneath the transport layer filter.
   * Don't require Bouncy Castle for EC keys. Java has built-in support for 
these even in Java 8.
   * Don't require net.i2p for ed25519/curve25519. It has a security flaw. Make 
our code work with any of Java ed25519 (since Java 15), BC ed25519, or net.i2p. 
(Tried already, but it's messy, and not possible without API breaks. Now that 
we require Java 17 for building, it would be easier to do.)
   * Have multi-release JARs (especially for the cipher algorithms and ed25519)
   * Rethink whether all the machinery for SecurityRegistrars is really needed 
and worth the maintenance effort. Can't we just use whatever Security providers 
are installed, and leave it at that? All that dynamic class loading is so 
fragile, and it might not always use the appropriate class loaders... (see e.g. 
GH issue 502)
   
   Plus umpteen little details changes that I can't enumerate all right now.
   
   Some of these ideas might need to be written down in more detail first. Do 
we have a wiki somewhere? (Confluence? GH wiki pages? Or collaborate in a 
Google doc?)


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: dev-unsubscr...@mina.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@mina.apache.org
For additional commands, e-mail: dev-h...@mina.apache.org

Reply via email to