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

🚀 Cmder's next major release backlog #2788

Open
26 tasks
DRSDavidSoft opened this issue Nov 25, 2022 · 2 comments · Fixed by #2779
Open
26 tasks

🚀 Cmder's next major release backlog #2788

DRSDavidSoft opened this issue Nov 25, 2022 · 2 comments · Fixed by #2779
Assignees
Milestone

Comments

@DRSDavidSoft
Copy link
Contributor

DRSDavidSoft commented Nov 25, 2022

Upcoming plans for the next major release of Cmder

Currently, there are some areas of Cmder that could benefit from a smoother experience for the first-time user.

TL;DR: Remove old 32-bit support. Installing to Program Files or any other path with spaces and/or lack of permissions will be correctly handled. Improvements to the speed, look and feel of the project.

📌 Please vote for your preferred Terminal to be used with Cmder in #2864
New! Cmder now comes in two flavors, Cmder + ConEmu (the classic terminal) and Cmder + Windows Terminal.
You can also choose to download a very slim version of Cmder, which doesn't come with a bundled terminal and is a great choice for using as a shell profile in any terminal you like.

Additional Notes

Note 1: We're in the process of improving Cmder's initialization speed. In the next major release, the loading time is expected to be optimized significantly.

Note 2: Cmder is in the process of dropping 32-bit support of x86 edition when the upstream projects (such as Git-for-Windows) do so. In the next major releases of Cmder, the minimum Windows requirement will be bumped from Windows 7 SP1 to Windows 10, as well.

@DRSDavidSoft DRSDavidSoft self-assigned this Nov 25, 2022
@DRSDavidSoft DRSDavidSoft added this to the 1.4 milestone Nov 25, 2022
@DRSDavidSoft DRSDavidSoft linked a pull request Nov 25, 2022 that will close this issue
@DRSDavidSoft DRSDavidSoft changed the title Improve First Run Experience Cmder's next major release backlog Jul 24, 2023
@DRSDavidSoft DRSDavidSoft pinned this issue Jul 24, 2023
@DRSDavidSoft DRSDavidSoft changed the title Cmder's next major release backlog 🚀 Cmder's next major release backlog Jul 24, 2023
@daxgames
Copy link
Member

daxgames commented Dec 30, 2023

  • Properly handle spaces in CMDER_ROOT path in all areas (shells, launcher, etc

I was not aware this was a problem. I thought we handled spaces quite well

  • Detect and deal with lack of permissions

Just default to putting the config folder in the users home folder when this happens. More secure this way anyway given the possible content of this folder. If cmder is not in the user home folder the config folder should be by default.

  • Installer - WHY, ITS PORTABLE?

  • Update mechanism - WHY, ITS PORTABLE?

@DRSDavidSoft
Copy link
Contributor Author

@daxgames I just saw your comment now, sorry for replying late

  • Properly handle spaces in CMDER_ROOT path in all areas (shells, launcher, etc

    I was not aware this was a problem. I thought we handled spaces quite well

    I haven't seen any issues with Cmder itself behaving incorrectly with paths that contain spaces. However, there are some pointers in our docs (e.g. README and the Wiki) that states issues with spaces in paths, I believe those needs to be removed after some testing to make sure there is no issues whatsoever with spaces in paths. There are improvements to be done regarding integration docs with other tools when pointing users to use our scripts.

  • Detect and deal with lack of permissions

    Just default to putting the config folder in the users home folder when this happens. More secure this way anyway given the possible content of this folder. If cmder is not in the user home folder the config folder should be by default.

    This seems the correct approach to implement, I haven't yet started on it but I believe adding support for a pre-defined config path located in AppData would be a nice feature to have, especially if we add "installation" support like many people ask.

  • Installer

    WHY, ITS PORTABLE?

    Good question, currently Cmder is only offered as a "portable"-only application for users.

    This means that there are no installers to be used, the user needs to manually download the ZIP file containing Cmder, extract them to an arbitrary place of their choosing, and if needed, adjust the security settings, add a custom shortcut to Desktop, add profiles to WT, register the context menu handlers, and configure the prompt using the config files.

    When there is no need for Cmder, the user has to go through these steps in reverse: un register the context menu handler, delete any custom made shortcuts, remove the WT profiles, and so on.

    Essentially, the concept of installers and uninstallers where made as a wizard that would facilitate the steps I outlined for the average user. As a power user, I wouldn't mind doing many of the steps above manually. There are also cases where Cmder is truly used in a portable fashion: moved between machines, kept on a USB stick, a network share, or cloud software. The same can't be said about the people who prefer to actually install Cmder in a permanent way on their systems, they don't plan to move Cmder files around. They just expect a wizard to guide them through some configuration steps, and upon clicking the Next > buttons, be able to use Cmder instantaneously. It's part of the user experience they have come to expect.

    Think about ConEmu and Git for Windows. Wouldn't you say that those applications can also be used in a portable way? In fact, we are doing the same thing when we bundle them in Cmder. However, it's not to say that those are portable applications, per se. Git for Windows has an excellent installation wizard, which guide the user to allow them to configure many parts of their Git installation to their liking. The same goes for the ConEmu installer, it allows an easy and intuitive wizard to take care of adding the directories to Program Files and the shortcut to remove ConEmu on a later date. The ability to "uninstall" the program is seen as a feature by the end users, and the installers provide the utility to "uninstall" the programs.

  • Update mechanism

    WHY, ITS PORTABLE?

    That's another very good question. The reason is quite simple.

    Currently, when we publish newer versions of Cmder -- which might contain changes to the core code, such as the launcher, the batch scripts, and so on -- the user is expected to download and unpack a fresh ZIP archive each time.

    In the age of package managers, this is simply an unacceptable approach. Picture this: In a time where computers had limited network connectivity, it made sense to publish new installation packages for each software. When the internet connectivity sky rocketed and machines started to become always-online systems, people started to recognise the value of software that had the auto-update functionality: instead of the user manually checking if there is a newer version for the software, manually downloading and manually extracting the archive, the software itself would take care of this.

    If people had to download each new version of WT manually and extract them, it would make for an uncomfortable and unpleasant feeling, resulting in many users choosing not to update their WT installation, or doing so on a long interval basis.

    Both ConEmu and Clink has this feature. Even Git for Windows. This means that when users launch Cmder, they are bombarded with messages from different components of Cmder, asking them to update that particular component.

    This means the Cmder will be left out; if a user chooses to update Clink and ConEmu, they will for sure be missing on the great clink-completions additions that chris works so hard on. They will miss on the improvements to the Cmder core components and batch scripts.

    Even worse, in the age of package managers, many people simply opt for installing WT, VS Code, and maybe even WSL from some sort of a package manager, on Windows. They expect the package manager to manage the installed packages for them, including updating the package to benefit from all the great additions.

    Now, to a user that already has some sort of terminal setup, the features of Cmder might be useful, if those can be integrated into their terminal of choosing. Should they be forced to resort to downloading a ZIP package each time to benefit from updates?

    I argue, it would be beneficial, if Cmder also would contain some sort of small update mechanism to download the latest and greatest changes from the releases and unpack them for the user.


These are just my opinions on the matter, based on user input and the current experience. I would not ever suggest altering the current, nice portable package that we offer. That will stay. However, I suggest providing the users with the installer that they ask as well. This will be a separate CmderSetup.exe downloadable file that will present the user with the installation wizard and take them through the steps that they have come to expect.

Adding an update mechanism will be a huge time saver, allowing Cmder to benefit from a unified and concise approach to avoid visiting the Downloads page each time there is a nice addition to Cmder, or part of its bundled packages, such as clink-additions.

Thank you for listening to my opinions, sorry for the long wall of text.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants