Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Server Architecture Rewrite #37

Open
lighth7015 opened this issue Apr 14, 2019 · 9 comments
Open

Server Architecture Rewrite #37

lighth7015 opened this issue Apr 14, 2019 · 9 comments

Comments

@lighth7015
Copy link

This thread was started to document the discussion, progress, viability, features and capabilities of a twin server rewrite, focusing on portability, maintainability and a modern, extensible core.

Everybody is encouraged to comment on this thread.

@lighth7015 lighth7015 changed the title Feature Enhancement: Rewrite Client/Server Feature Enhancement: Server Architecture Rewrite Apr 14, 2019
@lighth7015 lighth7015 changed the title Feature Enhancement: Server Architecture Rewrite [Feature Enhancement] Server Architecture Rewrite Apr 14, 2019
@lighth7015
Copy link
Author

One of the things I'd love to see, is a traditional login replacement, with it being able to start up over SSH in a manner very similar to RDP, so you could have like an unprivileged text desktop streamed over a PuTTy session- it would be great to be able to completely rival graphical desktop environments.

@cosmos72
Copy link
Owner

Wow, you really want to breathe new life into twin!
Did you already try twdm?

@lighth7015
Copy link
Author

I saw that; and ehhhh- honestly the whole thing needs a rewrite. For one, you should be able to mess around in the "root desktop" if you're trying to write an authentication UI.

@lighth7015
Copy link
Author

lighth7015 commented Apr 15, 2019

Also, instead of using a manual socket loop, we should move to something like libevent or libev or libuv for portability between POSIX implementations.

@dimitrik-fr
Copy link

Regarding "similar to RDP" (or VNC) access -- you can already do it with twdisplay !
personally I'm leaving TWIN running on remote server, after what then connecting to it via twdisplay only -- no more login required (similar to SSH with id keys), easy to re-connect if VPN was down, works like a charm ! Also, if you have to access your server via SSH gateway -- it's easy to start port forwarding via SSH connection and point it to 7754 port (default TWIN IP port)..

@cosmos72
Copy link
Owner

cosmos72 commented Apr 15, 2019

For reference: I am not very fond of adding dependencies to twin, unless there is a very good reason: I want to keep the minimal/lightweight approach.
Dependencies of specific modules (X11, X11+xpm, X11+xft) are less problematic, as in the worst case ./configure will disable the unsupported modules.

I agree the architecture would benefit from a refactoring - it's very old and it accumulated layers of cruft/patches and complications through the years. Beware that it's not always simple nor trivial to rewrite it.

Also: in 1992 I intentionally avoided C++ and sticked with ANSI C, but nowadays C++ is probably a better choice, because good & standardized C++ compilers are common and because I had to implement a lot of C tricks to emulate classes and inheritance.

@lighth7015
Copy link
Author

well if we're sticking with C, we should at least use C98, since it's much better supported by compilers thesedays.

@lighth7015
Copy link
Author

@dimitrik-fr And I was referring to being able to connect directly via SSH and having twin come up in-place of /bin/login.

@lighth7015
Copy link
Author

@cosmos72 Honestly, I think in this day and age maintainability and portability is preferred over doing everything yourself; and honestly, libevent isn't THAT big of a dependency; it's not like supporting systemd natively or anything IMO.

@cosmos72 cosmos72 changed the title [Feature Enhancement] Server Architecture Rewrite Server Architecture Rewrite Aug 5, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants