cyd01 / KiTTY

:computer: KiTTY, a free telnet/ssh client for Windows
https://www.9bis.com/kitty
Other
1.55k stars 132 forks source link

Is this project dead? Search for alternatives #527

Open lars18th opened 5 months ago

lars18th commented 5 months ago

Hi,

First of all I want to give my congratulations to @cyd01 for the great effort made during several years to maintain this PuTTY fork. Without a doubt this is the best fork out there of our favorite SSH client.

However, it seems clear that the project is slipping. So we have to explore other options. For example, some time ago I proposed to change the way of providing the "changes" to PuTTY. My idea is to propose a "PATCH MODEL", like for example is doing this project with the portable mode: https://jakub.kotrla.net/putty/

So I propose to create a repository of patches for individual functions extracted from KiTTY to port them to the latest versions of PuTTY.

What you think?

Note: At time I recommend this alternative https://github.com/lalbornoz/PuTTie

yndx-melkov commented 5 months ago

Kitty is not exactly dead, I think @cyd01 appears here every 2 or 3 months. Seriously until Putty would incorporate reconnect and a couple of other key features, Kitty is still irreplaceable. Let us prepare some patches while the project owner is out.

Maintaining multiple patches in independent places seems more difficult than in one place here on github. It would require more work for the public and more work for IT security engineers.

Putty code base has changed too much these years, so replanting all the features at once would be discouraging. I believe that we just need two branches of Kitty, one based on Putty 0.76 with all the features + key security patches, and one based on the newest Putty 0.80, with key features only.

lars18th commented 5 months ago

Hi @yndx-melkov ,

Yes. The PuTTY code has changed a lot. And for this reason the strategy of "one extended feature --> one patch" is reasonable. Without that, it's impossible to continue maintaining KiTTY.

No. My suggestion is not to create a lot of different and independent places with multiple patches. My suggestion is to maintain a "fork" of KiTTY (not really a fork!), that consists of a series of different patches, and a compile tool to generate a binary from the stock PuTTY source. With this, when a new version of PuTTY will come we only need to update each patch independently (or remove patchs not required, or not use some not available, etc.).

And finally, I feel @cyd01 has ended supporting KiTTY.

yndx-melkov commented 5 months ago

Well I believe that the git repository is the storage for the patches. It might be nice to reassemble them by-feature, but the amount of work is the same or greater than that of porting Kitty as is on top of Putty 0.80.

lars18th commented 5 months ago

Hi @yndx-melkov ,

This git repository is the "master" for KiTTY. But at time KiTTY is not a group of patches but instead a one-full-rewrite-of-PuTTY. That's the problem: at every new iteration (aka release) of PuTTY, the author requires to start-from-zero. And this is a huge effort. So my idea is to spplit/extract some (useful) functionalites from KiTTY in indidivual patches. And use them to apply "multi-patches" to the last version of PuTTY. For sure, for each new version of PuTTY every patch will require to be updated/rewrited. But this will be more easy in small parts. And will offer the option of generate almost a version with some of them until the rest will be ported. Remember the ZMODEM support. At the end it was removed at some point. We can't continue maintaining the full PuTTY. Only small enhancements, like:

We need developers and reorganize the source code and the changes.

yndx-melkov commented 5 months ago

Hi! I'm not arguing about the state Kitty currently is. I only want to say that Kitty can be represented as a series of commits on top of a specific Putty version. Each of these commit could add a feature and be equivalent to a patch in your model.

Git-style rebase or cherry-picking of these commits on top of a newer Putty version would be equivalent to applying patches in your model.

What I'm concerned about is that splitting Kitty code into this set of patches is even more time-consuming than rebasing the Kitty code base on top of the newer Putty as a bulk.

lars18th commented 5 months ago

Hi @yndx-melkov ,

Sorry, but from your comments I can inference that:

Please don't think that I'm considering myself superior to you. That's not true in any case. I'm not the developer of KiTTY, and I don't know much of the source code (only minimal questions). But years ago I started to help with some comments, and I see the huge effort to migrate all the changes from one version to another. Please believe me: the current code is monolithic. And if we want to continue with this good fork it is necessary to change the methodology.

If you, or anyone else would like to further develop KiTTY, then please contact @cyd01. Regards.

opbod commented 2 months ago

Seriously until Putty would incorporate reconnect and a couple of other key features, Kitty is still irreplaceable.

The feature got implemented in PuTTie meanwhile. I'm sold and am moving over over given the critical PuTTY/KiTTY vulnerability is still not fixed. Thanks KiTTY devs for the work over the past years!

lars18th commented 2 months ago

Thank you @opbod . PuTTie (https://github.com/lalbornoz/PuTTie) seems a promissing fork that could substitute the venerable KiTTY.

dsl101 commented 2 months ago

Thanks for the pointers to PuTTie. Has anyone looked at converting KiTTy session files to PuTTie format? They look quite different sadly...

lars18th commented 2 months ago

Thanks for the pointers to PuTTie. Has anyone looked at converting KiTTy session files to PuTTie format? They look quite different sadly...

Yes, PuTTie is a good replacement. However, until now the options supported are very different. I feel you will need to export/import all of your sessions, and after edit them with the new options. Using the registry you can import from KiTTY as regular PuTTY sessions, and them export from it using PuTTie. I feel you can do that, right?

dsl101 commented 2 months ago

I currently have KiTTy portable set up so the data is in a sessions folder. They are text files, but not using the same syntax as PuTTie. I guess I could write some kind of hideous regex to convert them, but it would be prone to errors, and, for example, the KiTTy session file has 309 entries, whereas a PuTTie 'simple' test session I created has only 264. So mapping from one to the other is likely quite a challenge.

I'm not 100% sure what you meant by the export / import method...

lars18th commented 2 months ago

I'm not 100% sure what you meant by the export / import method...

You can import KiTTY sessions from disk to the REGISTRY as regular PuTTY sessions (discarding all extensions). And then using PuTTie you can export from the REGISTRY to disk.

dsl101 commented 2 months ago

I've not seen that option to go from disk to Registry in KiTTy, but maybe because I'm using the portable version?

lars18th commented 2 months ago

Hi @dsl101 ,

You're right, only the EXPORT functionality is supported (using -convert-dir ): https://www.9bis.net/kitty/index.html#!pages/Portability.md